aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorNicolas Lœuillet <nicolas@loeuillet.org>2015-01-27 13:07:27 +0100
committerNicolas Lœuillet <nicolas@loeuillet.org>2015-01-27 13:07:27 +0100
commitd692b3b08d26d3f945d52f6cf5e9f90335d74cdd (patch)
treededa17330945a7ba0ece3162dfa5d5eae874c334 /src
parent6b767d1cc0e9697af95ec399fd612d203d10826a (diff)
downloadwallabag-d692b3b08d26d3f945d52f6cf5e9f90335d74cdd.tar.gz
wallabag-d692b3b08d26d3f945d52f6cf5e9f90335d74cdd.tar.zst
wallabag-d692b3b08d26d3f945d52f6cf5e9f90335d74cdd.zip
remove legacy code
Diffstat (limited to 'src')
-rwxr-xr-xsrc/Wallabag/Wallabag/Database.php606
-rw-r--r--src/Wallabag/Wallabag/Ebooks.php247
-rw-r--r--src/Wallabag/Wallabag/FlattrItem.php59
-rw-r--r--src/Wallabag/Wallabag/Language.php118
-rw-r--r--src/Wallabag/Wallabag/Picture.php169
-rw-r--r--src/Wallabag/Wallabag/Resources/translations/cs_CZ.utf8/LC_MESSAGES/cs_CZ.utf8.mobin4823 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/translations/cs_CZ.utf8/LC_MESSAGES/cs_CZ.utf8.po567
-rw-r--r--src/Wallabag/Wallabag/Resources/translations/de_DE.utf8/LC_MESSAGES/de_DE.utf8.mobin10620 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/translations/de_DE.utf8/LC_MESSAGES/de_DE.utf8.po658
-rw-r--r--src/Wallabag/Wallabag/Resources/translations/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mobin18368 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/translations/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po770
-rw-r--r--src/Wallabag/Wallabag/Resources/translations/en_US.utf8/LC_MESSAGES/en_US.utf8.mobin15793 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/translations/en_US.utf8/LC_MESSAGES/en_US.utf8.po682
-rw-r--r--src/Wallabag/Wallabag/Resources/translations/es_ES.utf8/LC_MESSAGES/es_ES.utf8.mobin4848 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/translations/es_ES.utf8/LC_MESSAGES/es_ES.utf8.po563
-rw-r--r--src/Wallabag/Wallabag/Resources/translations/fa_IR.utf8/LC_MESSAGES/fa_IR.utf8.mobin5632 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/translations/fa_IR.utf8/LC_MESSAGES/fa_IR.utf8.po563
-rw-r--r--src/Wallabag/Wallabag/Resources/translations/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mobin21037 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/translations/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po804
-rw-r--r--src/Wallabag/Wallabag/Resources/translations/it_IT.utf8/LC_MESSAGES/it_IT.utf8.mobin4897 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/translations/it_IT.utf8/LC_MESSAGES/it_IT.utf8.po568
-rw-r--r--src/Wallabag/Wallabag/Resources/translations/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.mobin12632 -> 0 bytes
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/translations/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.po553
-rw-r--r--src/Wallabag/Wallabag/Resources/translations/pt_BR.utf8/LC_MESSAGES/pt_BR.utf8.mobin12451 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/translations/pt_BR.utf8/LC_MESSAGES/pt_BR.utf8.po549
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/translations/ru_RU.utf8/LC_MESSAGES/ru_RU.utf8.mobin13552 -> 0 bytes
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/translations/ru_RU.utf8/LC_MESSAGES/ru_RU.utf8.po561
-rw-r--r--src/Wallabag/Wallabag/Resources/translations/sl_SI.utf8/LC_MESSAGES/sl_SI.utf8.mobin4927 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/translations/sl_SI.utf8/LC_MESSAGES/sl_SI.utf8.po568
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/translations/tools/fillCache.php59
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/translations/uk_UA.utf8/LC_MESSAGES/uk_UA.utf8.mobin15670 -> 0 bytes
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/translations/uk_UA.utf8/LC_MESSAGES/uk_UA.utf8.po534
-rw-r--r--src/Wallabag/Wallabag/Resources/views/_global/public/css/jquery-ui-1.10.4.custom.css560
-rw-r--r--src/Wallabag/Wallabag/Resources/views/_global/public/css/jquery-ui-1.10.4.custom.min.css7
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-114.pngbin2281 -> 0 bytes
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-120.pngbin2318 -> 0 bytes
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-144.pngbin2718 -> 0 bytes
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-152.pngbin2835 -> 0 bytes
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-57.pngbin1582 -> 0 bytes
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-72.pngbin1709 -> 0 bytes
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-76.pngbin1838 -> 0 bytes
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon.pngbin1579 -> 0 bytes
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/favicon.icobin34494 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/_global/public/img/icons/carrot-icon--black.pngbin1538 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/_global/public/img/icons/carrot-icon--white.pngbin1605 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/_global/public/img/icons/diaspora-icon--black.pngbin1555 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/_global/public/img/icons/diaspora-icon--white.pngbin612 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/_global/public/js/autoClose.js6
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/_global/public/js/autoCompleteTags.js47
-rw-r--r--src/Wallabag/Wallabag/Resources/views/_global/public/js/jquery-2.0.3.min.js1
-rw-r--r--src/Wallabag/Wallabag/Resources/views/_global/public/js/jquery-ui-1.10.4.custom.js2519
-rw-r--r--src/Wallabag/Wallabag/Resources/views/_global/public/js/jquery-ui-1.10.4.custom.min.js6
-rw-r--r--src/Wallabag/Wallabag/Resources/views/_global/public/js/popupForm.js72
-rw-r--r--src/Wallabag/Wallabag/Resources/views/_global/public/js/restoreScroll.js25
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/_global/public/js/saveLink.js109
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/baggy/README.md3
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/baggy/_display-mode.twig5
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/baggy/_head.twig39
-rw-r--r--src/Wallabag/Wallabag/Resources/views/baggy/_menu.twig17
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/baggy/_pocheit-form.twig10
-rw-r--r--src/Wallabag/Wallabag/Resources/views/baggy/_search-form.twig9
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/baggy/_top.twig7
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/baggy/about.twig84
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/baggy/config.twig187
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/baggy/edit-tags.twig29
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/baggy/home.twig81
-rw-r--r--src/Wallabag/Wallabag/Resources/views/baggy/layout-login.twig31
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/baggy/layout.twig34
-rw-r--r--src/Wallabag/Wallabag/Resources/views/baggy/login.twig34
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/baggy/public/css/font.css6
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/baggy/public/css/main.css1071
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/baggy/public/css/messages.css19
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/baggy/public/css/print.css62
-rw-r--r--src/Wallabag/Wallabag/Resources/views/baggy/public/css/ratatouille.css211
-rw-r--r--src/Wallabag/Wallabag/Resources/views/baggy/public/fonts/icomoon.eotbin3896 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/baggy/public/fonts/icomoon.svg41
-rw-r--r--src/Wallabag/Wallabag/Resources/views/baggy/public/fonts/icomoon.ttfbin3732 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/baggy/public/fonts/icomoon.woffbin3664 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/baggy/public/fonts/ptsans.woffbin24816 -> 0 bytes
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/baggy/public/img/baggy/blank.pngbin141 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/baggy/public/img/baggy/down.pngbin216 -> 0 bytes
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/baggy/public/img/baggy/list.pngbin201 -> 0 bytes
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/baggy/public/img/baggy/table.pngbin229 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/baggy/public/img/baggy/top.pngbin212 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/baggy/public/img/bg-select.pngbin1095 -> 0 bytes
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/baggy/public/img/logo-other_themes.pngbin3922 -> 0 bytes
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/baggy/public/img/logo-w.pngbin4916 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/baggy/public/img/logo-wallabag.svg300
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/baggy/public/img/logo.pngbin1350 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/baggy/public/img/logo.svg8
-rw-r--r--src/Wallabag/Wallabag/Resources/views/baggy/public/js/closeMessage.js17
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/baggy/public/js/init.js51
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/baggy/public/js/jquery.cookie.js117
-rw-r--r--src/Wallabag/Wallabag/Resources/views/baggy/public/js/restoreScroll.js25
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/baggy/screenshot.jpgbin256315 -> 0 bytes
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/baggy/tags.twig13
-rw-r--r--src/Wallabag/Wallabag/Resources/views/baggy/theme.ini3
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/baggy/view.twig102
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dark/README.md3
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dark/public/css/style-dark.css74
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/backtotop.pngbin250 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/bad-display.pngbin403 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/checkmark-off.pngbin339 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/checkmark-on.pngbin288 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/down.pngbin269 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/envelop.pngbin361 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/flattr.pngbin331 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/left.pngbin264 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/link.pngbin404 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/remove.pngbin300 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/rss.pngbin288 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/shaarli.pngbin841 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/star-off.pngbin382 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/star-on.pngbin327 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/top.pngbin250 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/twitter.pngbin375 -> 0 bytes
l---------src/Wallabag/Wallabag/Resources/views/dark/public/public1
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dark/screenshot.jpgbin664859 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dark/theme.ini2
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/_bookmarklet.twig3
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/_footer.twig4
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/default/_head.twig36
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/default/_highlight.twig4
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/default/_import.twig15
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/_menu.twig14
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/_messages.twig1
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/default/_pocheit-form.twig8
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/default/_search-form.twig9
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/default/_sorting.twig6
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/default/_top.twig7
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/default/about.twig74
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/default/config.twig188
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/default/edit-tags.twig35
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/error.twig14
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/export.twig1
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/default/home.twig82
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/install.twig28
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/layout.twig31
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/login.twig34
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/css/images/animated-overlay.gifbin1738 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_flat_0_aaaaaa_40x100.pngbin212 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_flat_75_ffffff_40x100.pngbin208 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_glass_55_fbf9ee_1x400.pngbin335 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_glass_65_ffffff_1x400.pngbin207 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_glass_75_dadada_1x400.pngbin262 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_glass_75_e6e6e6_1x400.pngbin262 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_glass_95_fef1ec_1x400.pngbin332 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_highlight-soft_75_cccccc_1x100.pngbin280 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-icons_222222_256x240.pngbin6922 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-icons_2e83ff_256x240.pngbin4549 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-icons_454545_256x240.pngbin6992 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-icons_888888_256x240.pngbin6999 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-icons_cd0a0a_256x240.pngbin4549 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/css/knacss.css1
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/css/messages.css75
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/css/print.css53
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/default/public/css/style-default.css69
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/default/public/css/style.css447
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/fonts/Roboto.woffbin22172 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/highlightjs/highlight.pack.js1
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/highlightjs/styles/default.css152
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/highlightjs/styles/github.css127
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/highlightjs/styles/googlecode.css148
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/img/default/backtotop.pngbin326 -> 0 bytes
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/default/public/img/default/bad-display.pngbin343 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/img/default/checkmark-off.pngbin277 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/img/default/checkmark-on.pngbin235 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/img/default/down.pngbin216 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/img/default/envelop.pngbin285 -> 0 bytes
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/default/public/img/default/flattr.pngbin270 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/img/default/left.pngbin196 -> 0 bytes
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/default/public/img/default/link.pngbin341 -> 0 bytes
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/default/public/img/default/print.pngbin321 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/img/default/remove.pngbin252 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/img/default/rss.pngbin288 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/img/default/shaarli.pngbin729 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/img/default/star-off.pngbin314 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/img/default/star-on.pngbin281 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/img/default/top.pngbin212 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/img/default/twitter.pngbin297 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/img/logo.svg8
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/img/messages/close.pngbin662 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/img/messages/cross.pngbin655 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/img/messages/help.pngbin786 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/img/messages/tick.pngbin537 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/img/messages/warning.pngbin666 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/public/js/closeMessage.js17
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/default/tags.twig18
-rw-r--r--src/Wallabag/Wallabag/Resources/views/default/theme.ini1
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/default/view.twig124
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dmagenta/README.md3
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dmagenta/public/css/style-dmagenta.css78
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/backtotop.pngbin326 -> 0 bytes
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/bad-display.pngbin343 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/checkmark-off.pngbin277 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/checkmark-on.pngbin235 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/down.pngbin216 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/envelop.pngbin285 -> 0 bytes
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/flattr.pngbin270 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/left.pngbin196 -> 0 bytes
-rwxr-xr-xsrc/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/link.pngbin341 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/remove.pngbin252 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/rss.pngbin288 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/shaarli.pngbin729 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/star-off.pngbin314 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/star-on.pngbin281 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/top.pngbin212 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/twitter.pngbin297 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dmagenta/screenshot.jpgbin731866 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/dmagenta/theme.ini2
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized-dark/README.md6
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized-dark/Solarized-LICENSE.txt19
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized-dark/public/css/style-solarized-dark.css232
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/backtotop.pngbin242 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/bad-display.pngbin419 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/checkmark-off.pngbin464 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/checkmark-on.pngbin164 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/down.pngbin186 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/envelop.pngbin335 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/flattr.pngbin314 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/left.pngbin148 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/link.pngbin424 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/remove.pngbin329 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/rss.pngbin288 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/shaarli.pngbin729 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/star-off.pngbin441 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/star-on.pngbin327 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/top.pngbin173 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/twitter.pngbin388 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized-dark/screenshot.jpgbin230456 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized-dark/theme.ini2
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized/README.md6
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized/Solarized-LICENSE.txt19
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized/public/css/style-solarized.css232
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/backtotop.pngbin249 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/bad-display.pngbin434 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/checkmark-off.pngbin475 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/checkmark-on.pngbin163 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/down.pngbin189 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/envelop.pngbin340 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/flattr.pngbin315 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/left.pngbin139 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/link.pngbin425 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/remove.pngbin332 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/rss.pngbin288 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/shaarli.pngbin729 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/star-off.pngbin455 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/star-on.pngbin332 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/top.pngbin172 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/twitter.pngbin407 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized/screenshot.jpgbin245928 -> 0 bytes
-rw-r--r--src/Wallabag/Wallabag/Resources/views/solarized/theme.ini2
-rwxr-xr-xsrc/Wallabag/Wallabag/Routing.php163
-rw-r--r--src/Wallabag/Wallabag/Template.php244
-rwxr-xr-xsrc/Wallabag/Wallabag/Tools.php425
-rw-r--r--src/Wallabag/Wallabag/Url.php33
-rw-r--r--src/Wallabag/Wallabag/User.php59
-rwxr-xr-xsrc/Wallabag/Wallabag/Wallabag.php866
258 files changed, 0 insertions, 19472 deletions
diff --git a/src/Wallabag/Wallabag/Database.php b/src/Wallabag/Wallabag/Database.php
deleted file mode 100755
index 29073108..00000000
--- a/src/Wallabag/Wallabag/Database.php
+++ /dev/null
@@ -1,606 +0,0 @@
1<?php
2/**
3 * wallabag, self hostable application allowing you to not miss any content anymore
4 *
5 * @category wallabag
6 * @author Nicolas Lœuillet <nicolas@loeuillet.org>
7 * @copyright 2013
8 * @license http://opensource.org/licenses/MIT see COPYING file
9 */
10
11namespace Wallabag\Wallabag;
12
13use \PDO;
14use CoreBundle\Entity;
15
16class Database {
17
18 var $handle;
19 private $order = array (
20 'ia' => 'ORDER BY entries.id',
21 'id' => 'ORDER BY entries.id DESC',
22 'ta' => 'ORDER BY lower(entries.title)',
23 'td' => 'ORDER BY lower(entries.title) DESC',
24 'default' => 'ORDER BY entries.id'
25 );
26
27 function __construct()
28 {
29 switch (STORAGE) {
30 case 'sqlite':
31 // Check if /db is writeable
32 if ( !is_writable(STORAGE_SQLITE) || !is_writable(dirname(STORAGE_SQLITE))) {
33 die('An error occured: ' . STORAGE_SQLITE . ' directory must be writeable for your web server user!');
34 }
35 $db_path = 'sqlite:' . STORAGE_SQLITE;
36 $this->handle = new PDO($db_path);
37 break;
38 case 'mysql':
39 $db_path = 'mysql:host=' . STORAGE_SERVER . ';dbname=' . STORAGE_DB . ';charset=utf8mb4';
40 $this->handle = new PDO($db_path, STORAGE_USER, STORAGE_PASSWORD, array(
41 PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4',
42 ));
43 break;
44 case 'postgres':
45 $db_path = 'pgsql:host=' . STORAGE_SERVER . ';dbname=' . STORAGE_DB;
46 $this->handle = new PDO($db_path, STORAGE_USER, STORAGE_PASSWORD);
47 break;
48 default:
49 die(STORAGE . ' is not a recognised database system !');
50 }
51
52 $this->handle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
53 $this->_checkTags();
54 Tools::logm('storage type ' . STORAGE);
55 }
56
57 private function getHandle()
58 {
59 return $this->handle;
60 }
61
62 private function _checkTags()
63 {
64
65 if (STORAGE == 'sqlite') {
66 $sql = '
67 CREATE TABLE IF NOT EXISTS tags (
68 id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE,
69 value TEXT
70 )';
71 }
72 elseif(STORAGE == 'mysql') {
73 $sql = '
74 CREATE TABLE IF NOT EXISTS `tags` (
75 `id` int(11) NOT NULL AUTO_INCREMENT,
76 `value` varchar(255) NOT NULL,
77 PRIMARY KEY (`id`)
78 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
79 ';
80 }
81 else {
82 $sql = '
83 CREATE TABLE IF NOT EXISTS tags (
84 id bigserial primary key,
85 value varchar(255) NOT NULL
86 );
87 ';
88 }
89
90 $query = $this->executeQuery($sql, array());
91
92 if (STORAGE == 'sqlite') {
93 $sql = '
94 CREATE TABLE IF NOT EXISTS tags_entries (
95 id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE,
96 entry_id INTEGER,
97 tag_id INTEGER,
98 FOREIGN KEY(entry_id) REFERENCES entries(id) ON DELETE CASCADE,
99 FOREIGN KEY(tag_id) REFERENCES tags(id) ON DELETE CASCADE
100 )';
101 }
102 elseif(STORAGE == 'mysql') {
103 $sql = '
104 CREATE TABLE IF NOT EXISTS `tags_entries` (
105 `id` int(11) NOT NULL AUTO_INCREMENT,
106 `entry_id` int(11) NOT NULL,
107 `tag_id` int(11) NOT NULL,
108 FOREIGN KEY(entry_id) REFERENCES entries(id) ON DELETE CASCADE,
109 FOREIGN KEY(tag_id) REFERENCES tags(id) ON DELETE CASCADE,
110 PRIMARY KEY (`id`)
111 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
112 ';
113 }
114 else {
115 $sql = '
116 CREATE TABLE IF NOT EXISTS tags_entries (
117 id bigserial primary key,
118 entry_id integer NOT NULL,
119 tag_id integer NOT NULL
120 )
121 ';
122 }
123
124 $query = $this->executeQuery($sql, array());
125 }
126
127 public function install($login, $password, $email = '')
128 {
129 $sql = 'INSERT INTO users ( username, password, name, email) VALUES (?, ?, ?, ?)';
130 $params = array($login, $password, $login, $email);
131 $query = $this->executeQuery($sql, $params);
132
133 $sequence = '';
134 if (STORAGE == 'postgres') {
135 $sequence = 'users_id_seq';
136 }
137
138 $id_user = intval($this->getLastId($sequence));
139
140 $sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)';
141 $params = array($id_user, 'pager', PAGINATION);
142 $query = $this->executeQuery($sql, $params);
143
144 $sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)';
145 $params = array($id_user, 'language', LANG);
146 $query = $this->executeQuery($sql, $params);
147
148 $sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)';
149 $params = array($id_user, 'theme', DEFAULT_THEME);
150 $query = $this->executeQuery($sql, $params);
151
152 return TRUE;
153 }
154
155 public function getConfigUser($id)
156 {
157 $sql = "SELECT * FROM users_config WHERE user_id = ?";
158 $query = $this->executeQuery($sql, array($id));
159 $result = $query->fetchAll();
160 $user_config = array();
161
162 foreach ($result as $key => $value) {
163 $user_config[$value['name']] = $value['value'];
164 }
165
166 return $user_config;
167 }
168
169 public function userExists($username)
170 {
171 $sql = "SELECT * FROM users WHERE username=?";
172 $query = $this->executeQuery($sql, array($username));
173 $login = $query->fetchAll();
174 if (isset($login[0])) {
175 return true;
176 } else {
177 return false;
178 }
179 }
180
181 public function login($username, $password, $isauthenticated = FALSE)
182 {
183 if ($isauthenticated) {
184 $sql = "SELECT * FROM users WHERE username=?";
185 $query = $this->executeQuery($sql, array($username));
186 } else {
187 $sql = "SELECT * FROM users WHERE username=? AND password=?";
188 $query = $this->executeQuery($sql, array($username, $password));
189 }
190 $login = $query->fetchAll();
191
192 $user = array();
193 if (isset($login[0])) {
194 $user['id'] = $login[0]['id'];
195 $user['username'] = $login[0]['username'];
196 $user['password'] = $login[0]['password'];
197 $user['name'] = $login[0]['name'];
198 $user['email'] = $login[0]['email'];
199 $user['config'] = $this->getConfigUser($login[0]['id']);
200 }
201
202 return $user;
203 }
204
205 public function updatePassword($userId, $password)
206 {
207 $sql_update = "UPDATE users SET password=? WHERE id=?";
208 $params_update = array($password, $userId);
209 $query = $this->executeQuery($sql_update, $params_update);
210 }
211
212 public function updateUserConfig($userId, $key, $value)
213 {
214 $config = $this->getConfigUser($userId);
215
216 if (! isset($config[$key])) {
217 $sql = "INSERT INTO users_config (value, user_id, name) VALUES (?, ?, ?)";
218 }
219 else {
220 $sql = "UPDATE users_config SET value=? WHERE user_id=? AND name=?";
221 }
222
223 $params = array($value, $userId, $key);
224 $query = $this->executeQuery($sql, $params);
225 }
226
227 private function executeQuery($sql, $params)
228 {
229 try
230 {
231 $query = $this->getHandle()->prepare($sql);
232 $query->execute($params);
233 return $query;
234 }
235 catch (Exception $e)
236 {
237 Tools::logm('execute query error : '.$e->getMessage());
238 return FALSE;
239 }
240 }
241
242 public function listUsers($username = NULL)
243 {
244 $sql = 'SELECT count(*) FROM users'.( $username ? ' WHERE username=?' : '');
245 $query = $this->executeQuery($sql, ( $username ? array($username) : array()));
246 list($count) = $query->fetch();
247 return $count;
248 }
249
250 public function getUserPassword($userID)
251 {
252 $sql = "SELECT * FROM users WHERE id=?";
253 $query = $this->executeQuery($sql, array($userID));
254 $password = $query->fetchAll();
255 return isset($password[0]['password']) ? $password[0]['password'] : null;
256 }
257
258 public function deleteUserConfig($userID)
259 {
260 $sql_action = 'DELETE from users_config WHERE user_id=?';
261 $params_action = array($userID);
262 $query = $this->executeQuery($sql_action, $params_action);
263 return $query;
264 }
265
266 public function deleteTagsEntriesAndEntries($userID)
267 {
268 $entries = $this->retrieveAll($userID);
269 foreach($entries as $entryid) {
270 $tags = $this->retrieveTagsByEntry($entryid);
271 foreach($tags as $tag) {
272 $this->removeTagForEntry($entryid,$tags);
273 }
274 $this->deleteById($entryid,$userID);
275 }
276 }
277
278 public function deleteUser($userID)
279 {
280 $sql_action = 'DELETE from users WHERE id=?';
281 $params_action = array($userID);
282 $query = $this->executeQuery($sql_action, $params_action);
283 }
284
285 public function updateContentAndTitle($id, $title, $body, $user_id)
286 {
287 $sql_action = 'UPDATE entries SET content = ?, title = ? WHERE id=? AND user_id=?';
288 $params_action = array($body, $title, $id, $user_id);
289 $query = $this->executeQuery($sql_action, $params_action);
290 return $query;
291 }
292
293 public function retrieveUnfetchedEntries($user_id, $limit)
294 {
295
296 $sql_limit = "LIMIT 0,".$limit;
297 if (STORAGE == 'postgres') {
298 $sql_limit = "LIMIT ".$limit." OFFSET 0";
299 }
300
301 $sql = "SELECT * FROM entries WHERE (content = '' OR content IS NULL) AND title LIKE 'Untitled - Import%' AND user_id=? ORDER BY id " . $sql_limit;
302 $query = $this->executeQuery($sql, array($user_id));
303 $entries = $query->fetchAll();
304
305 return $entries;
306 }
307
308 public function retrieveUnfetchedEntriesCount($user_id)
309 {
310 $sql = "SELECT count(*) FROM entries WHERE (content = '' OR content IS NULL) AND title LIKE 'Untitled - Import%' AND user_id=?";
311 $query = $this->executeQuery($sql, array($user_id));
312 list($count) = $query->fetch();
313
314 return $count;
315 }
316
317 public function retrieveAll($user_id)
318 {
319 $sql = "SELECT * FROM entries WHERE user_id=? ORDER BY id";
320 $query = $this->executeQuery($sql, array($user_id));
321 $entries = $query->fetchAll();
322
323 return $entries;
324 }
325
326 public function retrieveOneById($id, $user_id)
327 {
328 $entry = NULL;
329 $sql = "SELECT * FROM entries WHERE id=? AND user_id=?";
330 $params = array(intval($id), $user_id);
331 $query = $this->executeQuery($sql, $params);
332 $entry = $query->fetchAll();
333
334 return isset($entry[0]) ? $entry[0] : null;
335 }
336
337 public function retrieveOneByURL($url, $user_id)
338 {
339 $entry = NULL;
340 $sql = "SELECT * FROM entries WHERE url=? AND user_id=?";
341 $params = array($url, $user_id);
342 $query = $this->executeQuery($sql, $params);
343 $entry = $query->fetchAll();
344
345 return isset($entry[0]) ? $entry[0] : null;
346 }
347
348 public function reassignTags($old_entry_id, $new_entry_id)
349 {
350 $sql = "UPDATE tags_entries SET entry_id=? WHERE entry_id=?";
351 $params = array($new_entry_id, $old_entry_id);
352 $query = $this->executeQuery($sql, $params);
353 }
354
355 public function getEntriesByView($view, $user_id, $limit = '', $tag_id = 0)
356 {
357 switch ($view) {
358 case 'archive':
359 $sql = "SELECT * FROM entries WHERE user_id=? AND is_read=? ";
360 $params = array($user_id, 1);
361 break;
362 case 'fav' :
363 $sql = "SELECT * FROM entries WHERE user_id=? AND is_fav=? ";
364 $params = array($user_id, 1);
365 break;
366 case 'tag' :
367 $sql = "SELECT entries.* FROM entries
368 LEFT JOIN tags_entries ON tags_entries.entry_id=entries.id
369 WHERE entries.user_id=? AND tags_entries.tag_id = ? ";
370 $params = array($user_id, $tag_id);
371 break;
372 default:
373 $sql = "SELECT * FROM entries WHERE user_id=? AND is_read=? ";
374 $params = array($user_id, 0);
375 break;
376 }
377
378 $sql .= $this->getEntriesOrder().' ' . $limit;
379
380 $query = $this->executeQuery($sql, $params);
381 $entries = $query->fetchAll();
382
383 return $entries;
384 }
385
386 public function getEntriesByViewCount($view, $user_id, $tag_id = 0)
387 {
388 switch ($view) {
389 case 'archive':
390 $sql = "SELECT count(*) FROM entries WHERE user_id=? AND is_read=? ";
391 $params = array($user_id, 1);
392 break;
393 case 'fav' :
394 $sql = "SELECT count(*) FROM entries WHERE user_id=? AND is_fav=? ";
395 $params = array($user_id, 1);
396 break;
397 case 'tag' :
398 $sql = "SELECT count(*) FROM entries
399 LEFT JOIN tags_entries ON tags_entries.entry_id=entries.id
400 WHERE entries.user_id=? AND tags_entries.tag_id = ? ";
401 $params = array($user_id, $tag_id);
402 break;
403 default:
404 $sql = "SELECT count(*) FROM entries WHERE user_id=? AND is_read=? ";
405 $params = array($user_id, 0);
406 break;
407 }
408
409 $query = $this->executeQuery($sql, $params);
410 list($count) = $query->fetch();
411
412 return $count;
413 }
414
415 public function updateContent($id, $content, $user_id)
416 {
417 $sql_action = 'UPDATE entries SET content = ? WHERE id=? AND user_id=?';
418 $params_action = array($content, $id, $user_id);
419 $query = $this->executeQuery($sql_action, $params_action);
420 return $query;
421 }
422
423 /**
424 *
425 * @param string $url
426 * @param string $title
427 * @param string $content
428 * @param integer $user_id
429 * @return integer $id of inserted record
430 */
431 public function add($url, $title, $content, $user_id, $isFavorite=0, $isRead=0)
432 {
433 $sql_action = 'INSERT INTO entries ( url, title, content, user_id, is_fav, is_read ) VALUES (?, ?, ?, ?, ?, ?)';
434 $params_action = array($url, $title, $content, $user_id, $isFavorite, $isRead);
435
436 if ( !$this->executeQuery($sql_action, $params_action) ) {
437 $id = null;
438 }
439 else {
440 $id = intval($this->getLastId( (STORAGE == 'postgres') ? 'entries_id_seq' : '') );
441 }
442 return $id;
443 }
444
445 public function deleteById($id, $user_id)
446 {
447 $sql_action = "DELETE FROM entries WHERE id=? AND user_id=?";
448 $params_action = array($id, $user_id);
449 $query = $this->executeQuery($sql_action, $params_action);
450 return $query;
451 }
452
453 public function favoriteById($id, $user_id)
454 {
455 $sql_action = "UPDATE entries SET is_fav=NOT is_fav WHERE id=? AND user_id=?";
456 $params_action = array($id, $user_id);
457 $query = $this->executeQuery($sql_action, $params_action);
458 }
459
460 public function archiveById($id, $user_id)
461 {
462 $sql_action = "UPDATE entries SET is_read=NOT is_read WHERE id=? AND user_id=?";
463 $params_action = array($id, $user_id);
464 $query = $this->executeQuery($sql_action, $params_action);
465 }
466
467 public function archiveAll($user_id)
468 {
469 $sql_action = "UPDATE entries SET is_read=? WHERE user_id=? AND is_read=?";
470 $params_action = array($user_id, 1, 0);
471 $query = $this->executeQuery($sql_action, $params_action);
472 }
473
474 public function getLastId($column = '')
475 {
476 return $this->getHandle()->lastInsertId($column);
477 }
478
479 public function search($term, $user_id, $limit = '')
480 {
481 $search = '%'.$term.'%';
482 $sql_action = "SELECT * FROM entries WHERE user_id=? AND (content LIKE ? OR title LIKE ? OR url LIKE ?) "; //searches in content, title and URL
483 $sql_action .= $this->getEntriesOrder().' ' . $limit;
484 $params_action = array($user_id, $search, $search, $search);
485 $query = $this->executeQuery($sql_action, $params_action);
486 return $query->fetchAll();
487 }
488
489 public function retrieveAllTags($user_id, $term = NULL)
490 {
491 $sql = "SELECT DISTINCT tags.*, count(entries.id) AS entriescount FROM tags
492 LEFT JOIN tags_entries ON tags_entries.tag_id=tags.id
493 LEFT JOIN entries ON tags_entries.entry_id=entries.id
494 WHERE entries.user_id=?
495 ". (($term) ? "AND lower(tags.value) LIKE ?" : '') ."
496 GROUP BY tags.id, tags.value
497 ORDER BY tags.value";
498 $query = $this->executeQuery($sql, (($term)? array($user_id, strtolower('%'.$term.'%')) : array($user_id) ));
499 $tags = $query->fetchAll();
500
501 return $tags;
502 }
503
504 public function retrieveTag($id, $user_id)
505 {
506 $tag = NULL;
507 $sql = "SELECT DISTINCT tags.* FROM tags
508 LEFT JOIN tags_entries ON tags_entries.tag_id=tags.id
509 LEFT JOIN entries ON tags_entries.entry_id=entries.id
510 WHERE tags.id=? AND entries.user_id=?";
511 $params = array(intval($id), $user_id);
512 $query = $this->executeQuery($sql, $params);
513 $tag = $query->fetchAll();
514
515 return isset($tag[0]) ? $tag[0] : NULL;
516 }
517
518 public function retrieveEntriesByTag($tag_id, $user_id)
519 {
520 $sql =
521 "SELECT entries.* FROM entries
522 LEFT JOIN tags_entries ON tags_entries.entry_id=entries.id
523 WHERE tags_entries.tag_id = ? AND entries.user_id=? ORDER by entries.id DESC";
524 $query = $this->executeQuery($sql, array($tag_id, $user_id));
525 $entries = $query->fetchAll();
526
527 return $entries;
528 }
529
530 public function retrieveTagsByEntry($entry_id)
531 {
532 $sql =
533 "SELECT tags.* FROM tags
534 LEFT JOIN tags_entries ON tags_entries.tag_id=tags.id
535 WHERE tags_entries.entry_id = ?";
536 $query = $this->executeQuery($sql, array($entry_id));
537 $tags = $query->fetchAll();
538
539 return $tags;
540 }
541
542 public function removeTagForEntry($entry_id, $tag_id)
543 {
544 $sql_action = "DELETE FROM tags_entries WHERE tag_id=? AND entry_id=?";
545 $params_action = array($tag_id, $entry_id);
546 $query = $this->executeQuery($sql_action, $params_action);
547 return $query;
548 }
549
550 public function cleanUnusedTag($tag_id)
551 {
552 $sql_action = "SELECT tags.* FROM tags JOIN tags_entries ON tags_entries.tag_id=tags.id WHERE tags.id=?";
553 $query = $this->executeQuery($sql_action,array($tag_id));
554 $tagstokeep = $query->fetchAll();
555 $sql_action = "SELECT tags.* FROM tags LEFT JOIN tags_entries ON tags_entries.tag_id=tags.id WHERE tags.id=?";
556 $query = $this->executeQuery($sql_action,array($tag_id));
557 $alltags = $query->fetchAll();
558
559 foreach ($alltags as $tag) {
560 if ($tag && !in_array($tag,$tagstokeep)) {
561 $sql_action = "DELETE FROM tags WHERE id=?";
562 $params_action = array($tag[0]);
563 $this->executeQuery($sql_action, $params_action);
564 return true;
565 }
566 }
567
568 }
569
570 public function retrieveTagByValue($value)
571 {
572 $tag = NULL;
573 $sql = "SELECT * FROM tags WHERE value=?";
574 $params = array($value);
575 $query = $this->executeQuery($sql, $params);
576 $tag = $query->fetchAll();
577
578 return isset($tag[0]) ? $tag[0] : null;
579 }
580
581 public function createTag($value)
582 {
583 $sql_action = 'INSERT INTO tags ( value ) VALUES (?)';
584 $params_action = array($value);
585 $query = $this->executeQuery($sql_action, $params_action);
586 return $query;
587 }
588
589 public function setTagToEntry($tag_id, $entry_id)
590 {
591 $sql_action = 'INSERT INTO tags_entries ( tag_id, entry_id ) VALUES (?, ?)';
592 $params_action = array($tag_id, $entry_id);
593 $query = $this->executeQuery($sql_action, $params_action);
594 return $query;
595 }
596
597 private function getEntriesOrder()
598 {
599 if (isset($_SESSION['sort']) and array_key_exists($_SESSION['sort'], $this->order)) {
600 return $this->order[$_SESSION['sort']];
601 }
602 else {
603 return $this->order['default'];
604 }
605 }
606}
diff --git a/src/Wallabag/Wallabag/Ebooks.php b/src/Wallabag/Wallabag/Ebooks.php
deleted file mode 100644
index 2ad89a1c..00000000
--- a/src/Wallabag/Wallabag/Ebooks.php
+++ /dev/null
@@ -1,247 +0,0 @@
1<?php
2/**
3 * wallabag, self hostable application allowing you to not miss any content anymore
4 *
5 * @category wallabag
6 * @author Nicolas Lœuillet <nicolas@loeuillet.org>
7 * @copyright 2013
8 * @license http://opensource.org/licenses/MIT see COPYING file
9 */
10
11namespace Wallabag\Wallabag;
12
13class Ebooks
14{
15 protected $wallabag;
16 protected $method;
17 protected $value;
18 protected $entries;
19 protected $bookTitle;
20 protected $bookFileName;
21 protected $author = 'wallabag';
22
23 public function __construct(Wallabag $wallabag, $method, $value)
24 {
25 $this->wallabag = $wallabag;
26 $this->method = $method;
27 $this->value = $value;
28 }
29
30 public function prepareData()
31 {
32 switch ($this->method) {
33 case 'id':
34 $entryID = filter_var($this->value, FILTER_SANITIZE_NUMBER_INT);
35 $entry = $this->wallabag->store->retrieveOneById($entryID, $this->wallabag->user->getId());
36 $this->entries = array($entry);
37 $this->bookTitle = $entry['title'];
38 $this->bookFileName = substr($this->bookTitle, 0, 200);
39 $this->author = preg_replace('#^w{3}.#', '', Tools::getdomain($entry["url"])); # if only one article, set author to domain name (we strip the eventual www part)
40 Tools::logm('Producing ebook from article ' . $this->bookTitle);
41 break;
42 case 'all':
43 $this->entries = $this->wallabag->store->retrieveAll($this->wallabag->user->getId());
44 $this->bookTitle = sprintf(_('All my articles on %s'), date(_('d.m.y'))); #translatable because each country has it's own date format system
45 $this->bookFileName = _('Allarticles') . date(_('dmY'));
46 Tools::logm('Producing ebook from all articles');
47 break;
48 case 'tag':
49 $tag = filter_var($this->value, FILTER_SANITIZE_STRING);
50 $tags_id = $this->wallabag->store->retrieveAllTags($this->wallabag->user->getId(), $tag);
51 $tag_id = $tags_id[0]["id"]; // we take the first result, which is supposed to match perfectly. There must be a workaround.
52 $this->entries = $this->wallabag->store->retrieveEntriesByTag($tag_id, $this->wallabag->user->getId());
53 $this->bookTitle = sprintf(_('Articles tagged %s'), $tag);
54 $this->bookFileName = substr(sprintf(_('Tag %s'), $tag), 0, 200);
55 Tools::logm('Producing ebook from tag ' . $tag);
56 break;
57 case 'category':
58 $category = filter_var($this->value, FILTER_SANITIZE_STRING);
59 $this->entries = $this->wallabag->store->getEntriesByView($category, $this->wallabag->user->getId());
60 $this->bookTitle = sprintf(_('Articles in category %s'), $category);
61 $this->bookFileName = substr(sprintf(_('Category %s'), $category), 0, 200);
62 Tools::logm('Producing ebook from category ' . $category);
63 break;
64 case 'search':
65 $search = filter_var($this->value, FILTER_SANITIZE_STRING);
66 Tools::logm($search);
67 $this->entries = $this->wallabag->store->search($search, $this->wallabag->user->getId());
68 $this->bookTitle = sprintf(_('Articles for search %s'), $search);
69 $this->bookFileName = substr(sprintf(_('Search %s'), $search), 0, 200);
70 Tools::logm('Producing ebook from search ' . $search);
71 break;
72 case 'default':
73 die(_('Uh, there is a problem while generating eBook.'));
74 }
75 }
76}
77
78class WallabagEpub extends WallabagEBooks
79{
80 /**
81 * handle ePub
82 */
83 public function produceEpub()
84 {
85 Tools::logm('Starting to produce ePub 3 file');
86 $content_start =
87 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
88 . "<html xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:epub=\"http://www.idpf.org/2007/ops\">\n"
89 . "<head>"
90 . "<meta http-equiv=\"Default-Style\" content=\"text/html; charset=utf-8\" />\n"
91 . "<title>" . _("wallabag articles book") . "</title>\n"
92 . "</head>\n"
93 . "<body>\n";
94
95 $bookEnd = "</body>\n</html>\n";
96
97 $log = new Logger("wallabag", TRUE);
98 $fileDir = CACHE;
99
100 $book = new EPub(EPub::BOOK_VERSION_EPUB3, DEBUG_POCHE);
101 $log->logLine("new EPub()");
102 $log->logLine("EPub class version: " . EPub::VERSION);
103 $log->logLine("EPub Req. Zip version: " . EPub::REQ_ZIP_VERSION);
104 $log->logLine("Zip version: " . Zip::VERSION);
105 $log->logLine("getCurrentServerURL: " . $book->getCurrentServerURL());
106 $log->logLine("getCurrentPageURL..: " . $book->getCurrentPageURL());
107
108 Tools::logm('Filling metadata for ePub...');
109
110 $book->setTitle($this->bookTitle);
111 $book->setIdentifier("http://$_SERVER[HTTP_HOST]", EPub::IDENTIFIER_URI); // Could also be the ISBN number, prefered for published books, or a UUID.
112 //$book->setLanguage("en"); // Not needed, but included for the example, Language is mandatory, but EPub defaults to "en". Use RFC3066 Language codes, such as "en", "da", "fr" etc.
113 $book->setDescription(_("Some articles saved on my wallabag"));
114 $book->setAuthor($this->author,$this->author);
115 $book->setPublisher("wallabag", "wallabag"); // I hope this is a non existant address :)
116 $book->setDate(time()); // Strictly not needed as the book date defaults to time().
117 //$book->setRights("Copyright and licence information specific for the book."); // As this is generated, this _could_ contain the name or licence information of the user who purchased the book, if needed. If this is used that way, the identifier must also be made unique for the book.
118 $book->setSourceURL("http://$_SERVER[HTTP_HOST]");
119
120 $book->addDublinCoreMetadata(DublinCore::CONTRIBUTOR, "PHP");
121 $book->addDublinCoreMetadata(DublinCore::CONTRIBUTOR, "wallabag");
122
123 $cssData = "body {\n margin-left: .5em;\n margin-right: .5em;\n text-align: justify;\n}\n\np {\n font-family: serif;\n font-size: 10pt;\n text-align: justify;\n text-indent: 1em;\n margin-top: 0px;\n margin-bottom: 1ex;\n}\n\nh1, h2 {\n font-family: sans-serif;\n font-style: italic;\n text-align: center;\n background-color: #6b879c;\n color: white;\n width: 100%;\n}\n\nh1 {\n margin-bottom: 2px;\n}\n\nh2 {\n margin-top: -2px;\n margin-bottom: 2px;\n}\n";
124
125 $log->logLine("Add Cover");
126
127 $fullTitle = "<h1> " . $this->bookTitle . "</h1>\n";
128
129 $book->setCoverImage("Cover.png", file_get_contents("themes/_global/img/appicon/apple-touch-icon-152.png"), "image/png", $fullTitle);
130
131 $cover = $content_start . '<div style="text-align:center;"><p>' . _('Produced by wallabag with PHPePub') . '</p><p>'. _('Please open <a href="https://github.com/wallabag/wallabag/issues" >an issue</a> if you have trouble with the display of this E-Book on your device.') . '</p></div>' . $bookEnd;
132
133 //$book->addChapter("Table of Contents", "TOC.xhtml", NULL, false, EPub::EXTERNAL_REF_IGNORE);
134 $book->addChapter("Notices", "Cover2.html", $cover);
135
136 $book->buildTOC();
137
138 Tools::logm('Adding actual content...');
139
140 foreach ($this->entries as $entry) { //set tags as subjects
141 $tags = $this->wallabag->store->retrieveTagsByEntry($entry['id']);
142 foreach ($tags as $tag) {
143 $book->setSubject($tag['value']);
144 }
145
146 $log->logLine("Set up parameters");
147
148 $chapter = $content_start . $entry['content'] . $bookEnd;
149 $book->addChapter($entry['title'], htmlspecialchars($entry['title']) . ".html", $chapter, true, EPub::EXTERNAL_REF_ADD);
150 $log->logLine("Added chapter " . $entry['title']);
151 }
152
153 if (DEBUG_POCHE) {
154 $book->addChapter("Log", "Log.html", $content_start . $log->getLog() . "\n</pre>" . $bookEnd); // log generation
155 Tools::logm('Production log available in produced file');
156 }
157 $book->finalize();
158 $zipData = $book->sendBook($this->bookFileName);
159 Tools::logm('Ebook produced');
160 }
161}
162
163class WallabagMobi extends WallabagEBooks
164{
165 /**
166 * MOBI Class
167 * @author Sander Kromwijk
168 */
169
170 public function produceMobi()
171 {
172
173 Tools::logm('Starting to produce Mobi file');
174 $mobi = new MOBI();
175 $content = new MOBIFile();
176
177 $messages = new Messages(); // for later
178
179 Tools::logm('Filling metadata for Mobi...');
180
181 $content->set("title", $this->bookTitle);
182 $content->set("author", $this->author);
183 $content->set("subject", $this->bookTitle);
184
185 # introduction
186 $content->appendParagraph('<div style="text-align:center;" ><p>' . _('Produced by wallabag with PHPMobi') . '</p><p>'. _('Please open <a href="https://github.com/wallabag/wallabag/issues" >an issue</a> if you have trouble with the display of this E-Book on your device.') . '</p></div>');
187 $content->appendImage(imagecreatefrompng("themes/_global/img/appicon/apple-touch-icon-152.png"));
188 $content->appendPageBreak();
189
190 Tools::logm('Adding actual content...');
191
192 foreach ($this->entries as $item) {
193 $content->appendChapterTitle($item['title']);
194 $content->appendParagraph($item['content']);
195 $content->appendPageBreak();
196 }
197 $mobi->setContentProvider($content);
198
199 // we offer file to download
200 $mobi->download($this->bookFileName.'.mobi');
201 Tools::logm('Mobi file produced');
202 }
203}
204
205class WallabagPDF extends WallabagEbooks
206{
207 public function producePDF()
208 {
209
210 Tools::logm('Starting to produce PDF file');
211
212 $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
213
214 Tools::logm('Filling metadata for PDF...');
215 $pdf->SetCreator(PDF_CREATOR);
216 $pdf->SetAuthor('');
217 $pdf->SetTitle($this->bookTitle);
218 $pdf->SetSubject($this->bookTitle);
219
220 Tools::logm('Adding introduction...');
221 $pdf->AddPage();
222 $intro = '<h1>' . $this->bookTitle . '</h1><div style="text-align:center;" >
223 <p>' . _('Produced by wallabag with tcpdf') . '</p>
224 <p>'. _('Please open <a href="https://github.com/wallabag/wallabag/issues" >an issue</a> if you have trouble with the display of this E-Book on your device.') . '</p>
225 <img src="themes/_global/img/appicon/apple-touch-icon-152.png" /></div>';
226
227
228 $pdf->writeHTMLCell(0, 0, '', '', $intro, 0, 1, 0, true, '', true);
229
230 $i = 1;
231 Tools::logm('Adding actual content...');
232 foreach ($this->entries as $item) {
233 $pdf->AddPage();
234 $html = '<h1>' . $item['title'] . '</h1>';
235 $html .= $item['content'];
236 $pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);
237 $i = $i+1;
238 }
239
240 // set image scale factor
241 $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
242
243
244 $pdf->Output(CACHE . '/' . $this->bookFileName . '.pdf', 'FD');
245
246 }
247}
diff --git a/src/Wallabag/Wallabag/FlattrItem.php b/src/Wallabag/Wallabag/FlattrItem.php
deleted file mode 100644
index 17eccd3f..00000000
--- a/src/Wallabag/Wallabag/FlattrItem.php
+++ /dev/null
@@ -1,59 +0,0 @@
1<?php
2/**
3 * wallabag, self hostable application allowing you to not miss any content anymore
4 *
5 * @category wallabag
6 * @author Nicolas Lœuillet <nicolas@loeuillet.org>
7 * @copyright 2013
8 * @license http://opensource.org/licenses/MIT see COPYING file
9 */
10
11namespace Wallabag\Wallabag;
12
13class FlattrItem
14{
15 public $status;
16 public $urlToFlattr;
17 public $flattrItemURL;
18 public $numFlattrs;
19
20 public function checkItem($urlToFlattr, $id)
21 {
22 $this->_cacheFlattrFile($urlToFlattr, $id);
23 $flattrResponse = file_get_contents(CACHE . "/flattr/".$id.".cache");
24 if($flattrResponse != FALSE) {
25 $result = json_decode($flattrResponse);
26 if (isset($result->message)) {
27 if ($result->message == "flattrable") {
28 $this->status = FLATTRABLE;
29 }
30 }
31 elseif (is_object($result) && $result->link) {
32 $this->status = FLATTRED;
33 $this->flattrItemURL = $result->link;
34 $this->numFlattrs = $result->flattrs;
35 }
36 else {
37 $this->status = NOT_FLATTRABLE;
38 }
39 }
40 else {
41 $this->status = "FLATTR_ERR_CONNECTION";
42 }
43 }
44
45 private function _cacheFlattrFile($urlToFlattr, $id)
46 {
47 if (!is_dir(CACHE . '/flattr')) {
48 mkdir(CACHE . '/flattr', 0777);
49 }
50
51 // if a cache flattr file for this url already exists and it's been less than one day than it have been updated, see in /cache
52 if ((!file_exists(CACHE . "/flattr/".$id.".cache")) || (time() - filemtime(CACHE . "/flattr/".$id.".cache") > 86400)) {
53 $askForFlattr = Tools::getFile(FLATTR_API . $urlToFlattr);
54 $flattrCacheFile = fopen(CACHE . "/flattr/".$id.".cache", 'w+');
55 fwrite($flattrCacheFile, $askForFlattr);
56 fclose($flattrCacheFile);
57 }
58 }
59}
diff --git a/src/Wallabag/Wallabag/Language.php b/src/Wallabag/Wallabag/Language.php
deleted file mode 100644
index a8fbbc35..00000000
--- a/src/Wallabag/Wallabag/Language.php
+++ /dev/null
@@ -1,118 +0,0 @@
1<?php
2/**
3 * wallabag, self hostable application allowing you to not miss any content anymore
4 *
5 * @category wallabag
6 * @author Nicolas Lœuillet <nicolas@loeuillet.org>
7 * @copyright 2013
8 * @license http://opensource.org/licenses/MIT see COPYING file
9 */
10
11namespace Wallabag\Wallabag;
12
13use \Session;
14
15class Language
16{
17 protected $wallabag;
18
19 private $currentLanguage;
20
21 private $languageNames = array(
22 'cs_CZ.utf8' => 'čeština',
23 'de_DE.utf8' => 'German',
24 'en_EN.utf8' => 'English',
25 'en_US.utf8' => 'English (US)',
26 'es_ES.utf8' => 'Español',
27 'fa_IR.utf8' => 'فارسی',
28 'fr_FR.utf8' => 'Français',
29 'it_IT.utf8' => 'Italiano',
30 'pl_PL.utf8' => 'Polski',
31 'pt_BR.utf8' => 'Português (Brasil)',
32 'ru_RU.utf8' => 'Pусский',
33 'sl_SI.utf8' => 'Slovenščina',
34 'uk_UA.utf8' => 'Українська',
35 );
36
37 public function __construct(Wallabag $wallabag)
38 {
39 $this->wallabag = $wallabag;
40 $pocheUser = Session::getParam('poche_user');
41 $language = (is_null($pocheUser) ? LANG : $pocheUser->getConfigValue('language'));
42
43 putenv('LC_ALL=' . $language);
44 setlocale(LC_ALL, $language);
45 bindtextdomain($language, LOCALE);
46 textdomain($language);
47
48 $this->currentLanguage = $language;
49 }
50
51 public function getLanguage() {
52 return $this->currentLanguage;
53 }
54
55 public function getInstalledLanguages() {
56 $handle = opendir(LOCALE);
57 $languages = array();
58
59 while (($language = readdir($handle)) !== false) {
60 # Languages are stored in a directory, so all directory names are languages
61 # @todo move language installation data to database
62 if (! is_dir(LOCALE . '/' . $language) || in_array($language, array('..', '.', 'tools'))) {
63 continue;
64 }
65
66 $current = false;
67
68 if ($language === $this->getLanguage()) {
69 $current = true;
70 }
71
72 $languages[] = array('name' => (isset($this->languageNames[$language]) ? $this->languageNames[$language] : $language), 'value' => $language, 'current' => $current);
73 }
74
75 return $languages;
76 }
77
78
79 /**
80 * Update language for current user
81 *
82 * @param $newLanguage
83 */
84 public function updateLanguage($newLanguage)
85 {
86 # we are not going to change it to the current language
87 if ($newLanguage == $this->getLanguage()) {
88 $this->wallabag->messages->add('w', _('still using the "' . $this->getLanguage() . '" language!'));
89 Tools::redirect('?view=config');
90 }
91
92 $languages = $this->getInstalledLanguages();
93 $actualLanguage = false;
94
95 foreach ($languages as $language) {
96 if ($language['value'] == $newLanguage) {
97 $actualLanguage = true;
98 break;
99 }
100 }
101
102 if (!$actualLanguage) {
103 $this->wallabag->messages->add('e', _('that language does not seem to be installed'));
104 Tools::redirect('?view=config');
105 }
106
107 $this->wallabag->store->updateUserConfig($this->wallabag->user->getId(), 'language', $newLanguage);
108 $this->wallabag->messages->add('s', _('you have changed your language preferences'));
109
110 $currentConfig = $_SESSION['poche_user']->config;
111 $currentConfig['language'] = $newLanguage;
112
113 $_SESSION['poche_user']->setConfig($currentConfig);
114
115 Tools::emptyCache();
116 Tools::redirect('?view=config');
117 }
118}
diff --git a/src/Wallabag/Wallabag/Picture.php b/src/Wallabag/Wallabag/Picture.php
deleted file mode 100644
index 8a9cd764..00000000
--- a/src/Wallabag/Wallabag/Picture.php
+++ /dev/null
@@ -1,169 +0,0 @@
1<?php
2/**
3 * wallabag, self hostable application allowing you to not miss any content anymore
4 *
5 * @category wallabag
6 * @author Nicolas Lœuillet <nicolas@loeuillet.org>
7 * @copyright 2013
8 * @license http://opensource.org/licenses/MIT see COPYING file
9 */
10
11namespace Wallabag\Wallabag;
12
13final class Picture
14{
15 /**
16 * Changing pictures URL in article content
17 */
18 public static function filterPicture($content, $url, $id)
19 {
20 $matches = array();
21 $processing_pictures = array(); // list of processing image to avoid processing the same pictures twice
22 preg_match_all('#<\s*(img)[^>]+src="([^"]*)"[^>]*>#Si', $content, $matches, PREG_SET_ORDER);
23 foreach($matches as $i => $link) {
24 $link[1] = trim($link[1]);
25 if (!preg_match('#^(([a-z]+://)|(\#))#', $link[1])) {
26 $absolute_path = self::_getAbsoluteLink($link[2], $url);
27 $filename = basename(parse_url($absolute_path, PHP_URL_PATH));
28 $directory = self::_createAssetsDirectory($id);
29 $fullpath = $directory . '/' . $filename;
30
31 if (in_array($absolute_path, $processing_pictures) === true) {
32 // replace picture's URL only if processing is OK : already processing -> go to next picture
33 continue;
34 }
35
36 if (self::_downloadPictures($absolute_path, $fullpath) === true) {
37 $content = str_replace($matches[$i][2], Tools::getPocheUrl() . $fullpath, $content);
38 }
39
40 $processing_pictures[] = $absolute_path;
41 }
42 }
43
44 return $content;
45 }
46
47 /**
48 * Get absolute URL
49 */
50 private static function _getAbsoluteLink($relativeLink, $url)
51 {
52 /* return if already absolute URL */
53 if (parse_url($relativeLink, PHP_URL_SCHEME) != '') return $relativeLink;
54
55 /* queries and anchors */
56 if ($relativeLink[0]=='#' || $relativeLink[0]=='?') return $url . $relativeLink;
57
58 /* parse base URL and convert to local variables:
59 $scheme, $host, $path */
60 extract(parse_url($url));
61
62 /* remove non-directory element from path */
63 $path = preg_replace('#/[^/]*$#', '', $path);
64
65 /* destroy path if relative url points to root */
66 if ($relativeLink[0] == '/') $path = '';
67
68 /* dirty absolute URL */
69 $abs = $host . $path . '/' . $relativeLink;
70
71 /* replace '//' or '/./' or '/foo/../' with '/' */
72 $re = array('#(/\.?/)#', '#/(?!\.\.)[^/]+/\.\./#');
73 for($n=1; $n>0; $abs=preg_replace($re, '/', $abs, -1, $n)) {}
74
75 /* absolute URL is ready! */
76 return $scheme.'://'.$abs;
77 }
78
79 /**
80 * Downloading pictures
81 *
82 * @return bool true if the download and processing is OK, false else
83 */
84 private static function _downloadPictures($absolute_path, $fullpath)
85 {
86 $rawdata = Tools::getFile($absolute_path);
87 $fullpath = urldecode($fullpath);
88
89 if(file_exists($fullpath)) {
90 unlink($fullpath);
91 }
92
93 // check extension
94 $file_ext = strrchr($fullpath, '.');
95 $whitelist = array(".jpg",".jpeg",".gif",".png");
96 if (!(in_array($file_ext, $whitelist))) {
97 Tools::logm('processed image with not allowed extension. Skipping ' . $fullpath);
98 return false;
99 }
100
101 // check headers
102 $imageinfo = getimagesize($absolute_path);
103 if ($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg'&& $imageinfo['mime'] != 'image/jpg'&& $imageinfo['mime'] != 'image/png') {
104 Tools::logm('processed image with bad header. Skipping ' . $fullpath);
105 return false;
106 }
107
108 // regenerate image
109 $im = imagecreatefromstring($rawdata);
110 if ($im === false) {
111 Tools::logm('error while regenerating image ' . $fullpath);
112 return false;
113 }
114
115 switch ($imageinfo['mime']) {
116 case 'image/gif':
117 $result = imagegif($im, $fullpath);
118 break;
119 case 'image/jpeg':
120 case 'image/jpg':
121 $result = imagejpeg($im, $fullpath, REGENERATE_PICTURES_QUALITY);
122 break;
123 case 'image/png':
124 $result = imagepng($im, $fullpath, ceil(REGENERATE_PICTURES_QUALITY / 100 * 9));
125 break;
126 }
127 imagedestroy($im);
128
129 return $result;
130 }
131
132 /**
133 * Create a directory for an article
134 *
135 * @param $id ID of the article
136 * @return string
137 */
138 private static function _createAssetsDirectory($id)
139 {
140 $assets_path = ABS_PATH;
141 if (!is_dir($assets_path)) {
142 mkdir($assets_path, 0715);
143 }
144
145 $article_directory = $assets_path . $id;
146 if (!is_dir($article_directory)) {
147 mkdir($article_directory, 0715);
148 }
149
150 return $article_directory;
151 }
152
153 /**
154 * Remove the directory
155 *
156 * @param $directory
157 * @return bool
158 */
159 public static function removeDirectory($directory)
160 {
161 if (is_dir($directory)) {
162 $files = array_diff(scandir($directory), array('.','..'));
163 foreach ($files as $file) {
164 (is_dir("$directory/$file")) ? self::removeDirectory("$directory/$file") : unlink("$directory/$file");
165 }
166 return rmdir($directory);
167 }
168 }
169} \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/translations/cs_CZ.utf8/LC_MESSAGES/cs_CZ.utf8.mo b/src/Wallabag/Wallabag/Resources/translations/cs_CZ.utf8/LC_MESSAGES/cs_CZ.utf8.mo
deleted file mode 100644
index af0920d2..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/cs_CZ.utf8/LC_MESSAGES/cs_CZ.utf8.mo
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/translations/cs_CZ.utf8/LC_MESSAGES/cs_CZ.utf8.po b/src/Wallabag/Wallabag/Resources/translations/cs_CZ.utf8/LC_MESSAGES/cs_CZ.utf8.po
deleted file mode 100644
index cf727432..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/cs_CZ.utf8/LC_MESSAGES/cs_CZ.utf8.po
+++ /dev/null
@@ -1,567 +0,0 @@
1#
2# Translators:
3# David Štancl <dstancl@gmail.com>, 2013
4msgid ""
5msgstr ""
6"Project-Id-Version: poche\n"
7"Report-Msgid-Bugs-To: \n"
8"POT-Creation-Date: 2014-02-25 15:28+0300\n"
9"PO-Revision-Date: 2014-02-25 15:29+0300\n"
10"Last-Translator: Maryana <mariroz@mr.lviv.ua>\n"
11"Language-Team: Czech (http://www.transifex.com/projects/p/poche/language/cs/)\n"
12"Language: cs\n"
13"MIME-Version: 1.0\n"
14"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Transfer-Encoding: 8bit\n"
16"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
17"X-Generator: Poedit 1.5.4\n"
18"X-Poedit-Language: Czech\n"
19"X-Poedit-Basepath: .\n"
20"X-Poedit-SearchPath-0: /home/mariroz/_DEV/web/wallabag/wallabag-master-testing\n"
21
22msgid "wallabag, a read it later open source system"
23msgstr ""
24
25msgid "login failed: user doesn't exist"
26msgstr ""
27
28msgid "return home"
29msgstr ""
30
31msgid "config"
32msgstr "nastavení"
33
34msgid "Saving articles"
35msgstr ""
36
37msgid "There are several ways to save an article:"
38msgstr ""
39
40msgid "read the documentation"
41msgstr "číst dokumentaci"
42
43msgid "download the extension"
44msgstr ""
45
46msgid "via F-Droid"
47msgstr ""
48
49msgid " or "
50msgstr ""
51
52msgid "via Google Play"
53msgstr ""
54
55msgid "download the application"
56msgstr ""
57
58#, fuzzy
59msgid "By filling this field"
60msgstr "vyplněním tohoto pole"
61
62msgid "bag it!"
63msgstr ""
64
65msgid "Bookmarklet: drag & drop this link to your bookmarks bar"
66msgstr ""
67
68msgid "Upgrading wallabag"
69msgstr ""
70
71#, fuzzy
72msgid "Installed version"
73msgstr "poslední stabilní verze"
74
75#, fuzzy
76msgid "Latest stable version"
77msgstr "poslední stabilní verze"
78
79#, fuzzy
80msgid "A more recent stable version is available."
81msgstr "je k dispozici novější stabilní verze."
82
83#, fuzzy
84msgid "You are up to date."
85msgstr "je aktuální"
86
87#, fuzzy
88msgid "Latest dev version"
89msgstr "poslední vývojová verze"
90
91#, fuzzy
92msgid "A more recent development version is available."
93msgstr "je k dispozici novější vývojová verze."
94
95msgid "Feeds"
96msgstr ""
97
98msgid "Your feed token is currently empty and must first be generated to enable feeds. Click <a href='?feed&amp;action=generate'>here to generate it</a>."
99msgstr ""
100
101msgid "Unread feed"
102msgstr ""
103
104#, fuzzy
105msgid "Favorites feed"
106msgstr "oblíbené"
107
108#, fuzzy
109msgid "Archive feed"
110msgstr "archív"
111
112msgid "Your token:"
113msgstr ""
114
115msgid "Your user id:"
116msgstr ""
117
118msgid "You can regenerate your token: <a href='?feed&amp;action=generate'>generate!</a>."
119msgstr ""
120
121#, fuzzy
122msgid "Change your theme"
123msgstr "Změnit heslo"
124
125msgid "Theme:"
126msgstr ""
127
128msgid "Update"
129msgstr "Aktualizovat"
130
131#, fuzzy
132msgid "Change your language"
133msgstr "Změnit heslo"
134
135msgid "Language:"
136msgstr ""
137
138msgid "Change your password"
139msgstr "Změnit heslo"
140
141msgid "New password:"
142msgstr "Nové heslo:"
143
144msgid "Password"
145msgstr "Heslo"
146
147msgid "Repeat your new password:"
148msgstr "Znovu nové heslo:"
149
150msgid "Import"
151msgstr "Importovat"
152
153#, fuzzy
154msgid "Please execute the import script locally as it can take a very long time."
155msgstr "Spusťte importní skript lokálně, může to dlouho trvat."
156
157#, fuzzy
158msgid "More info in the official documentation:"
159msgstr "Více informací v oficiální dokumentaci:"
160
161#, fuzzy
162msgid "Import from Pocket"
163msgstr "importovat z Pocket"
164
165#, php-format
166msgid "(you must have a %s file on your server)"
167msgstr ""
168
169#, fuzzy
170msgid "Import from Readability"
171msgstr "importovat z Readability"
172
173#, fuzzy
174msgid "Import from Instapaper"
175msgstr "importovat z Instapaper"
176
177#, fuzzy
178msgid "Import from wallabag"
179msgstr "importovat z Readability"
180
181#, fuzzy
182msgid "Export your wallabag data"
183msgstr "Export dat"
184
185msgid "Click here"
186msgstr "Klikněte zde"
187
188msgid "to download your database."
189msgstr ""
190
191#, fuzzy
192msgid "to export your wallabag data."
193msgstr "pro export vašich dat."
194
195msgid "Cache"
196msgstr ""
197
198msgid "to delete cache."
199msgstr ""
200
201msgid "You can enter multiple tags, separated by commas."
202msgstr ""
203
204msgid "return to article"
205msgstr ""
206
207msgid "plop"
208msgstr ""
209
210msgid "You can <a href='wallabag_compatibility_test.php'>check your configuration here</a>."
211msgstr ""
212
213msgid "favoris"
214msgstr "oblíbené"
215
216msgid "archive"
217msgstr "archív"
218
219msgid "unread"
220msgstr "nepřečtené"
221
222msgid "by date asc"
223msgstr "podle data od nejstarších"
224
225msgid "by date"
226msgstr "podle data"
227
228msgid "by date desc"
229msgstr "podle data od nejnovějších"
230
231msgid "by title asc"
232msgstr "podle nadpisu vzestupně"
233
234msgid "by title"
235msgstr "podle nadpisu"
236
237msgid "by title desc"
238msgstr "podle nadpisu sestupně"
239
240msgid "Tag"
241msgstr ""
242
243msgid "No articles found."
244msgstr ""
245
246#, fuzzy
247msgid "Toggle mark as read"
248msgstr "označit jako přečtené"
249
250msgid "toggle favorite"
251msgstr "označit jako oblíbené"
252
253msgid "delete"
254msgstr "smazat"
255
256msgid "original"
257msgstr "originál"
258
259msgid "estimated reading time:"
260msgstr ""
261
262msgid "mark all the entries as read"
263msgstr ""
264
265msgid "results"
266msgstr "výsledky"
267
268msgid "installation"
269msgstr "instalace"
270
271#, fuzzy
272msgid "install your wallabag"
273msgstr "instalovat"
274
275#, fuzzy
276msgid "wallabag is still not installed. Please fill the below form to install it. Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation on wallabag website</a>."
277msgstr "poche ještě není nainstalováno. Pro instalaci vyplňte níže uvedený formulář. Nezapomeňte <a href='http://doc.inthepoche.com'>si přečíst dokumentaci</a> na stránkách programu."
278
279msgid "Login"
280msgstr "Jméno"
281
282msgid "Repeat your password"
283msgstr "Zopakujte heslo"
284
285msgid "Install"
286msgstr "Instalovat"
287
288#, fuzzy
289msgid "login to your wallabag"
290msgstr "přihlásit se k poche"
291
292msgid "Login to wallabag"
293msgstr ""
294
295msgid "you are in demo mode, some features may be disabled."
296msgstr "používáte ukázkový mód, některé funkce jsou zakázány."
297
298msgid "Username"
299msgstr ""
300
301msgid "Stay signed in"
302msgstr "Zůstat přihlášen(a)"
303
304msgid "(Do not check on public computers)"
305msgstr "(Nezaškrtávejte na veřejně dostupných počítačích)"
306
307msgid "Sign in"
308msgstr "Přihlásit se"
309
310msgid "favorites"
311msgstr "oblíbené"
312
313msgid "estimated reading time :"
314msgstr ""
315
316msgid "Mark all the entries as read"
317msgstr ""
318
319msgid "Return home"
320msgstr ""
321
322#, fuzzy
323msgid "Back to top"
324msgstr "zpět na začátek"
325
326#, fuzzy
327msgid "Mark as read"
328msgstr "označit jako přečtené"
329
330#, fuzzy
331msgid "Favorite"
332msgstr "oblíbené"
333
334#, fuzzy
335msgid "Toggle favorite"
336msgstr "označit jako oblíbené"
337
338#, fuzzy
339msgid "Delete"
340msgstr "smazat"
341
342#, fuzzy
343msgid "Tweet"
344msgstr "tweetnout"
345
346#, fuzzy
347msgid "Email"
348msgstr "email"
349
350msgid "shaarli"
351msgstr "shaarli"
352
353msgid "flattr"
354msgstr "flattr"
355
356#, fuzzy
357msgid "Does this article appear wrong?"
358msgstr "vypadá tento článek špatně?"
359
360msgid "tags:"
361msgstr ""
362
363msgid "Edit tags"
364msgstr ""
365
366msgid "save link!"
367msgstr ""
368
369msgid "home"
370msgstr "domů"
371
372msgid "tags"
373msgstr ""
374
375msgid "logout"
376msgstr "odhlásit se"
377
378msgid "powered by"
379msgstr "běží na"
380
381msgid "debug mode is on so cache is off."
382msgstr "je zapnut ladicí mód, proto je keš vypnuta."
383
384#, fuzzy
385msgid "your wallabag version:"
386msgstr "vaše verze"
387
388msgid "storage:"
389msgstr "úložiště:"
390
391msgid "save a link"
392msgstr ""
393
394msgid "back to home"
395msgstr "zpět na úvod"
396
397msgid "toggle mark as read"
398msgstr "označit jako přečtené"
399
400msgid "tweet"
401msgstr "tweetnout"
402
403msgid "email"
404msgstr "email"
405
406msgid "this article appears wrong?"
407msgstr "vypadá tento článek špatně?"
408
409msgid "No link available here!"
410msgstr "Není k dispozici žádný odkaz!"
411
412msgid "Poching a link"
413msgstr "Odkaz se ukládá"
414
415msgid "by filling this field"
416msgstr "vyplněním tohoto pole"
417
418msgid "bookmarklet: drag & drop this link to your bookmarks bar"
419msgstr ""
420
421msgid "your version"
422msgstr "vaše verze"
423
424msgid "latest stable version"
425msgstr "poslední stabilní verze"
426
427msgid "a more recent stable version is available."
428msgstr "je k dispozici novější stabilní verze."
429
430msgid "you are up to date."
431msgstr "je aktuální"
432
433msgid "latest dev version"
434msgstr "poslední vývojová verze"
435
436msgid "a more recent development version is available."
437msgstr "je k dispozici novější vývojová verze."
438
439msgid "Please execute the import script locally, it can take a very long time."
440msgstr "Spusťte importní skript lokálně, může to dlouho trvat."
441
442#, fuzzy
443msgid "More infos in the official doc:"
444msgstr "Více informací v oficiální dokumentaci:"
445
446msgid "import from Pocket"
447msgstr "importovat z Pocket"
448
449msgid "import from Readability"
450msgstr "importovat z Readability"
451
452msgid "import from Instapaper"
453msgstr "importovat z Instapaper"
454
455msgid "Tags"
456msgstr ""
457
458#, fuzzy
459msgid "Untitled"
460msgstr "podle nadpisu"
461
462msgid "the link has been added successfully"
463msgstr ""
464
465msgid "error during insertion : the link wasn't added"
466msgstr ""
467
468msgid "the link has been deleted successfully"
469msgstr ""
470
471msgid "the link wasn't deleted"
472msgstr ""
473
474msgid "Article not found!"
475msgstr ""
476
477msgid "previous"
478msgstr ""
479
480msgid "next"
481msgstr ""
482
483msgid "in demo mode, you can't update your password"
484msgstr ""
485
486msgid "your password has been updated"
487msgstr ""
488
489msgid "the two fields have to be filled & the password must be the same in the two fields"
490msgstr ""
491
492msgid "still using the \""
493msgstr ""
494
495msgid "that theme does not seem to be installed"
496msgstr ""
497
498msgid "you have changed your theme preferences"
499msgstr ""
500
501msgid "that language does not seem to be installed"
502msgstr ""
503
504msgid "you have changed your language preferences"
505msgstr ""
506
507msgid "login failed: you have to fill all fields"
508msgstr ""
509
510msgid "welcome to your wallabag"
511msgstr ""
512
513msgid "login failed: bad login or password"
514msgstr ""
515
516#, fuzzy
517msgid "import from instapaper completed"
518msgstr "importovat z Instapaper"
519
520#, fuzzy
521msgid "import from pocket completed"
522msgstr "importovat z Pocket"
523
524#, fuzzy
525msgid "import from Readability completed. "
526msgstr "importovat z Readability"
527
528#, fuzzy
529msgid "import from Poche completed. "
530msgstr "importovat z Pocket"
531
532msgid "Unknown import provider."
533msgstr ""
534
535msgid "Incomplete inc/poche/define.inc.php file, please define \""
536msgstr ""
537
538msgid "Could not find required \""
539msgstr ""
540
541msgid "Uh, there is a problem while generating feeds."
542msgstr ""
543
544#, fuzzy
545msgid "Cache deleted."
546msgstr "smazat"
547
548msgid "Oops, it seems you don't have PHP 5."
549msgstr ""
550
551#~ msgid "poche it!"
552#~ msgstr "uložit!"
553
554#~ msgid "Updating poche"
555#~ msgstr "Poche se aktualizuje"
556
557#~ msgid "create an issue"
558#~ msgstr "odeslat požadavek"
559
560#~ msgid "or"
561#~ msgstr "nebo"
562
563#~ msgid "contact us by mail"
564#~ msgstr "kontaktovat e-mailem"
565
566#~ msgid "your poche version:"
567#~ msgstr "verze:"
diff --git a/src/Wallabag/Wallabag/Resources/translations/de_DE.utf8/LC_MESSAGES/de_DE.utf8.mo b/src/Wallabag/Wallabag/Resources/translations/de_DE.utf8/LC_MESSAGES/de_DE.utf8.mo
deleted file mode 100644
index bd18817f..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/de_DE.utf8/LC_MESSAGES/de_DE.utf8.mo
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/translations/de_DE.utf8/LC_MESSAGES/de_DE.utf8.po b/src/Wallabag/Wallabag/Resources/translations/de_DE.utf8/LC_MESSAGES/de_DE.utf8.po
deleted file mode 100644
index 8b82721d..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/de_DE.utf8/LC_MESSAGES/de_DE.utf8.po
+++ /dev/null
@@ -1,658 +0,0 @@
1msgid ""
2msgstr ""
3"Project-Id-Version: Wallabag\n"
4"Report-Msgid-Bugs-To: \n"
5"POT-Creation-Date: 2014-03-27 13:41+0100\n"
6"PO-Revision-Date: \n"
7"Last-Translator: Kevin Meyer <wallabag@kevin-meyer.de>\n"
8"Language-Team: \n"
9"Language: de\n"
10"MIME-Version: 1.0\n"
11"Content-Type: text/plain; charset=UTF-8\n"
12"Content-Transfer-Encoding: 8bit\n"
13"X-Generator: Poedit 1.6.4\n"
14"X-Poedit-Basepath: .\n"
15"X-Poedit-SearchPath-0: /Users/kevinmeyer/Dropbox/dev_web/wallabag-dev\n"
16
17msgid "config"
18msgstr "Konfiguration"
19
20msgid "Saving articles"
21msgstr "Artikel speichern"
22
23msgid "There are several ways to save an article:"
24msgstr "Es gibt viele Methoden um Artikel zu speichern:"
25
26msgid "read the documentation"
27msgstr "Die Dokumentation lesen"
28
29msgid "download the extension"
30msgstr "installiere die Erweiterung"
31
32msgid "via F-Droid"
33msgstr "via F-Droid"
34
35msgid " or "
36msgstr " oder "
37
38msgid "via Google Play"
39msgstr "via Google Play"
40
41msgid "download the application"
42msgstr "lade die App"
43
44msgid "By filling this field"
45msgstr "Durch Ausfüllen dieses Feldes"
46
47msgid "bag it!"
48msgstr "bag it!"
49
50msgid "Bookmarklet: drag & drop this link to your bookmarks bar"
51msgstr "Bookmarklet: Ziehe diesen Link in deine Lesezeichen-Leiste"
52
53msgid "Upgrading wallabag"
54msgstr "wallabag aktualisieren"
55
56msgid "Installed version"
57msgstr "Installierte Version"
58
59msgid "Latest stable version"
60msgstr "Neuste stabile Version"
61
62msgid "A more recent stable version is available."
63msgstr "Eine neuere stabile Version ist verfügbar."
64
65msgid "You are up to date."
66msgstr "Du bist auf den neuesten Stand."
67
68msgid "Last check:"
69msgstr "Zuletzt geprüft:"
70
71msgid "Latest dev version"
72msgstr "Neuste Entwicklungsversion"
73
74msgid "A more recent development version is available."
75msgstr "Eine neuere Entwicklungsversion ist verfügbar."
76
77msgid "You can clear cache to check the latest release."
78msgstr "Leere den Cache um die neueste Version zu prüfen."
79
80msgid "Feeds"
81msgstr "Feeds"
82
83msgid ""
84"Your feed token is currently empty and must first be generated to enable "
85"feeds. Click <a href='?feed&amp;action=generate'>here to generate it</a>."
86msgstr ""
87"Dein Feed Token ist noch nicht vorhanden und muss zunächst generiert werden, "
88"um deine Feeds zu aktivieren. Klicke <a href='?feed&amp;"
89"action=generate'>hier um ihn zu generieren</a>."
90
91msgid "Unread feed"
92msgstr "Ungelesen Feed"
93
94msgid "Favorites feed"
95msgstr "Favoriten Feed"
96
97msgid "Archive feed"
98msgstr "Archiv Feed"
99
100msgid "Your token:"
101msgstr "Dein Token:"
102
103msgid "Your user id:"
104msgstr "Deine User ID:"
105
106msgid ""
107"You can regenerate your token: <a href='?feed&amp;action=generate'>generate!"
108"</a>."
109msgstr ""
110"Hier kannst du dein Token erzeugen: <a href='?feed&amp;"
111"action=generate'>Generieren!</a>."
112
113msgid "Change your theme"
114msgstr "Theme ändern"
115
116msgid "Theme:"
117msgstr "Theme:"
118
119msgid "Update"
120msgstr "Aktualisieren"
121
122msgid "Change your language"
123msgstr "Sprache ändern"
124
125msgid "Language:"
126msgstr "Sprache:"
127
128msgid "Change your password"
129msgstr "Passwort ändern"
130
131msgid "New password:"
132msgstr "Neues Passwort:"
133
134msgid "Password"
135msgstr "Passwort"
136
137msgid "Repeat your new password:"
138msgstr "Neues Passwort wiederholen:"
139
140msgid "Import"
141msgstr "Import"
142
143msgid ""
144"Importing from other services can be quite long, and webservers default "
145"configuration often prevents long scripts execution time, so it must be done "
146"in multiple parts."
147msgstr ""
148"Der Import von anderen Diensten kann sehr lange dauern. Deswegen bricht der "
149"Webserver diesen in vielen Konfigurationen ab. Daher muss der Import in "
150"mehrere Teile aufgeteilt werden."
151
152msgid "First, select the export file on your computer and upload it."
153msgstr "Wähle eine Datei von deinem Computer aus und lade sie hoch."
154
155msgid "File:"
156msgstr "Datei:"
157
158msgid "Upload"
159msgstr "Hochladen"
160
161msgid "Then, click on the right link below."
162msgstr "Klicke dann unten auf den entsprechenden Link."
163
164msgid "Import from Pocket"
165msgstr "Import aus Pocket"
166
167#, php-format
168msgid "(after uploaded %s file)"
169msgstr "(nach Upload der Datei %s)"
170
171msgid "Import from Readability"
172msgstr "Import aus Readability"
173
174msgid "Import from Instapaper"
175msgstr "Import aus Instapaper"
176
177msgid "Import from wallabag"
178msgstr "Import aus Readability"
179
180msgid ""
181"3. Your feed token is currently empty and must first be generated to fetch "
182"content. Click <a href='?feed&amp;action=generate'>here to generate it</a>."
183msgstr ""
184"3. Dein Feed Token ist noch nicht vorhanden und muss zunächst generiert "
185"werden, um Inhalt abrufen zu können. Klicke <a href='?feed&amp;"
186"action=generate'>hier um ihn zu generieren</a>."
187
188msgid "Finally, you have to fetch content for imported items."
189msgstr "Jetzt musst du den Inhalt der importierten Artikel abrufen."
190
191msgid "Click here"
192msgstr "Klicke hier"
193
194msgid "to fetch content for 10 articles"
195msgstr "um den Inhalt von 10 Artikeln abzurufen"
196
197msgid ""
198"If you have console access to your server, you can also create a cron task:"
199msgstr ""
200"Wenn du Konsolenzugang zu deinem Server hast kannst du auch einen cron "
201"erstellen:"
202
203msgid "Export your wallabag data"
204msgstr "Exportieren deine wallabag Daten"
205
206msgid "to download your database."
207msgstr "um deine Datenbank herunterzuladen"
208
209msgid "to export your wallabag data."
210msgstr "um deine Daten aus wallabag zu exportieren."
211
212msgid "Cache"
213msgstr "Cache"
214
215msgid "to delete cache."
216msgstr "um den Cache zu löschen."
217
218msgid "Tags"
219msgstr "Tags"
220
221msgid "by date asc"
222msgstr "nach Datum aufsteigend"
223
224msgid "by date"
225msgstr "nach Datum"
226
227msgid "by date desc"
228msgstr "nach Datum absteigend"
229
230msgid "by title asc"
231msgstr "nach Titel aufsteigend"
232
233msgid "by title"
234msgstr "nach Titel"
235
236msgid "by title desc"
237msgstr "nach Titel absteigend"
238
239#, fuzzy
240msgid "toggle view mode"
241msgstr "Favorit"
242
243msgid "home"
244msgstr "Start"
245
246msgid "favorites"
247msgstr "Favoriten"
248
249msgid "archive"
250msgstr "Archiv"
251
252msgid "tags"
253msgstr "Tags"
254
255msgid "save a link"
256msgstr "Speichere einen Link"
257
258msgid "search"
259msgstr "Suche"
260
261msgid "logout"
262msgstr "Logout"
263
264msgid "return home"
265msgstr "Zurück zum Start"
266
267#, fuzzy
268msgid "Search"
269msgstr "Archiv"
270
271msgid "powered by"
272msgstr "bereitgestellt von"
273
274msgid "debug mode is on so cache is off."
275msgstr "Debug Modus ist aktiviert, das Caching ist somit deaktiviert"
276
277msgid "your wallabag version:"
278msgstr "Deine wallabag Version"
279
280msgid "storage:"
281msgstr "Speicher:"
282
283msgid "Save a link"
284msgstr "Speichere einen Link"
285
286msgid "save link!"
287msgstr "Link speichern!"
288
289msgid "unread"
290msgstr "ungelesen"
291
292msgid "Tag"
293msgstr "Tag"
294
295msgid "No articles found."
296msgstr "Keine Artikel gefunden."
297
298msgid "estimated reading time:"
299msgstr "geschätzte Lesezeit:"
300
301msgid "estimated reading time :"
302msgstr "geschätzte Lesezeit:"
303
304msgid "Toggle mark as read"
305msgstr "Als gelesen markieren"
306
307msgid "toggle favorite"
308msgstr "Favorit"
309
310msgid "delete"
311msgstr "Löschen"
312
313msgid "original"
314msgstr "Original"
315
316msgid "Mark all the entries as read"
317msgstr "Markiere alle als gelesen"
318
319msgid "results"
320msgstr "Ergebnisse"
321
322msgid "Uh, there is a problem with the cron."
323msgstr "Oh, es gab ein Problem mit dem cron."
324
325msgid "Untitled"
326msgstr "Ohne Titel"
327
328msgid "the link has been added successfully"
329msgstr "Speichern des Links erfolgreich"
330
331msgid "error during insertion : the link wasn't added"
332msgstr "Fehler beim Einfügen: Der Link wurde nicht hinzugefügt"
333
334msgid "the link has been deleted successfully"
335msgstr "Löschen des Links erfolgreich"
336
337msgid "the link wasn't deleted"
338msgstr "Der Link wurde nicht entfernt"
339
340msgid "Article not found!"
341msgstr "Artikel nicht gefunden!"
342
343msgid "previous"
344msgstr "vorherige"
345
346msgid "next"
347msgstr "nächste"
348
349msgid "in demo mode, you can't update your password"
350msgstr "im Demo-Modus kann das Passwort nicht geändert werden"
351
352msgid "your password has been updated"
353msgstr "Dein Passwort wurde geändert"
354
355msgid ""
356"the two fields have to be filled & the password must be the same in the two "
357"fields"
358msgstr "Beide Felder müssen mit selbem Inhalt ausgefüllt sein"
359
360msgid "still using the \""
361msgstr "nutze immernoch die \""
362
363msgid "that theme does not seem to be installed"
364msgstr "dieses Theme scheint nicht installiert zu sein"
365
366msgid "you have changed your theme preferences"
367msgstr "Du hast deine Theme Einstellungen geändert"
368
369msgid "that language does not seem to be installed"
370msgstr "Diese Sprache scheint nicht installiert zu sein"
371
372msgid "you have changed your language preferences"
373msgstr "Du hast deine Spracheinstellungen geändert"
374
375msgid "login failed: you have to fill all fields"
376msgstr "Anmeldung fehlgeschlagen: Alle Felder müssen ausgefüllt werden"
377
378msgid "welcome to your wallabag"
379msgstr "Willkommen bei deiner wallabag"
380
381msgid "login failed: bad login or password"
382msgstr "Anmeldung fehlgeschlagen: Falscher Benutzername oder Passwort"
383
384msgid ""
385"import from instapaper completed. You have to execute the cron to fetch "
386"content."
387msgstr ""
388"Import aus Instapaper vollständig. Führe den cronjob aus um den Inhalt "
389"abzurufen."
390
391msgid ""
392"import from pocket completed. You have to execute the cron to fetch content."
393msgstr ""
394"Import aus Pocket vollständig. Führe den cronjob aus um den Inhalt abzurufen."
395
396msgid ""
397"import from Readability completed. You have to execute the cron to fetch "
398"content."
399msgstr ""
400"Import aus Readability vollständig. Führe den cronjob aus um den Inhalt "
401"abzurufen."
402
403msgid ""
404"import from Poche completed. You have to execute the cron to fetch content."
405msgstr ""
406"Import aus Poche vollständig. Führe den cronjob aus um den Inhalt abzurufen."
407
408msgid "Unknown import provider."
409msgstr "Unbekannter Import Anbieter."
410
411msgid "Could not find required \""
412msgstr "Nicht gefunden: \""
413
414msgid "File uploaded. You can now execute import."
415msgstr "Datei hochgeladen. Du kannst nun importieren."
416
417msgid "Error while importing file. Do you have access to upload it?"
418msgstr "Fehler beim Importieren. Hast du das Recht zum Hochladen?"
419
420msgid "User with this id ("
421msgstr "Nutzer mit dieser id ("
422
423msgid "Uh, there is a problem while generating feeds."
424msgstr "Oh, es gab ein Problem beim Erstellen des Feeds."
425
426msgid "Cache deleted."
427msgstr "Cache gelöscht"
428
429msgid "Oops, it seems you don't have PHP 5."
430msgstr "Oops, es scheint als würde PHP 5 fehlen."
431
432msgid "wallabag, a read it later open source system"
433msgstr "wallabag, ein Später-Lesen Open Source System"
434
435msgid "login failed: user doesn't exist"
436msgstr "Anmeldung fehlgeschlagen: Benutzer existiert nicht"
437
438#~ msgid "You can enter multiple tags, separated by commas."
439#~ msgstr "Du kannst mehrere Tags, durch Kommata getrennt, eingeben."
440
441#~ msgid "return to article"
442#~ msgstr "zurück zum Artikel"
443
444#, fuzzy
445#~ msgid "favoris"
446#~ msgstr "Favoriten"
447
448#~ msgid "mark all the entries as read"
449#~ msgstr "Markiere alle als gelesen"
450
451#~ msgid "Back to top"
452#~ msgstr "Nach Oben"
453
454#~ msgid "Mark as read"
455#~ msgstr "Als gelesen markieren"
456
457#~ msgid "Favorite"
458#~ msgstr "Favoriten"
459
460#~ msgid "Toggle favorite"
461#~ msgstr "Favorit"
462
463#~ msgid "Delete"
464#~ msgstr "Löschen"
465
466#~ msgid "Tweet"
467#~ msgstr "Twittern"
468
469#~ msgid "Email"
470#~ msgstr "per E-Mail senden"
471
472#~ msgid "shaarli"
473#~ msgstr "Shaarli"
474
475#~ msgid "flattr"
476#~ msgstr "flattr"
477
478#~ msgid "Does this article appear wrong?"
479#~ msgstr "Erscheint dieser Artikel falsch?"
480
481#~ msgid "Edit tags"
482#~ msgstr "Tags bearbeiten"
483
484#~ msgid "Start typing for auto complete."
485#~ msgstr "Beginne zu tippen für die Autovervollständigung."
486
487#~ msgid "Return home"
488#~ msgstr "Zurück zum Start"
489
490#~ msgid "tags:"
491#~ msgstr "Tags:"
492
493#~ msgid "login to your wallabag"
494#~ msgstr "Bei wallabag anmelden"
495
496#~ msgid "you are in demo mode, some features may be disabled."
497#~ msgstr ""
498#~ "Du befindest dich im Demomodus, einige Funktionen könnten deaktiviert "
499#~ "sein."
500
501#~ msgid "Login"
502#~ msgstr "Benutzername"
503
504#~ msgid "Stay signed in"
505#~ msgstr "Angemeldet bleiben"
506
507#~ msgid "(Do not check on public computers)"
508#~ msgstr "(nicht auf einem öffentlichen Computer anhaken)"
509
510#~ msgid "plop"
511#~ msgstr "plop"
512
513#~ msgid "Login to wallabag"
514#~ msgstr "Bei wallabag anmelden"
515
516#~ msgid "Username"
517#~ msgstr "Benutzername"
518
519#~ msgid "Sign in"
520#~ msgstr "Einloggen"
521
522#~ msgid "Enter your search here"
523#~ msgstr "Gib hier deine Suchanfrage ein"
524
525#~ msgid "installation"
526#~ msgstr "Installieren"
527
528#~ msgid "install your wallabag"
529#~ msgstr "Installiere deine wallabag"
530
531#~ msgid ""
532#~ "wallabag is still not installed. Please fill the below form to install "
533#~ "it. Don't hesitate to <a href='http://doc.wallabag.org/'>read the "
534#~ "documentation on wallabag website</a>."
535#~ msgstr ""
536#~ "wallabag ist noch nicht installiert. Bitte fülle die Felder unten aus, um "
537#~ "die Installation durchzuführen. Zögere nicht, <a href='http://doc."
538#~ "wallabag.org/'>die Dokumentation auf der Website von wallabag zu lesen, "
539#~ "falls du Probleme haben solltest."
540
541#~ msgid "Repeat your password"
542#~ msgstr "Wiederhole dein Passwort"
543
544#~ msgid "Install"
545#~ msgstr "Installieren"
546
547#~ msgid "No link available here!"
548#~ msgstr "Kein Link verfügbar!"
549
550#~ msgid "toggle mark as read"
551#~ msgstr "Als gelesen markieren"
552
553#~ msgid ""
554#~ "You can <a href='wallabag_compatibility_test.php'>check your "
555#~ "configuration here</a>."
556#~ msgstr ""
557#~ "Du kannst deine Konfiguration <a href='wallabag_compatibility_test."
558#~ "php'>hier testen</a>."
559
560#~ msgid "back to home"
561#~ msgstr "züruck zur Hauptseite"
562
563#~ msgid "tweet"
564#~ msgstr "Twittern"
565
566#~ msgid "email"
567#~ msgstr "senden per E-Mail"
568
569#~ msgid "this article appears wrong?"
570#~ msgstr "dieser Artikel erscheint falsch?"
571
572#~ msgid "Poching a link"
573#~ msgstr "Poche einen Link"
574
575#~ msgid "by filling this field"
576#~ msgstr "durch das ausfüllen dieses Feldes:"
577
578#~ msgid "bookmarklet: drag & drop this link to your bookmarks bar"
579#~ msgstr "Bookmarklet: Ziehe diesen Link in deine Lesezeichen-Leiste"
580
581#~ msgid "your version"
582#~ msgstr "Deine Version"
583
584#~ msgid "latest stable version"
585#~ msgstr "Neuste stabile Version"
586
587#~ msgid "a more recent stable version is available."
588#~ msgstr "Eine neuere stabile Version ist verfügbar."
589
590#~ msgid "you are up to date."
591#~ msgstr "Du bist auf den neuesten Stand."
592
593#~ msgid "latest dev version"
594#~ msgstr "Neuste Entwicklungsversion"
595
596#~ msgid "a more recent development version is available."
597#~ msgstr "Eine neuere Entwicklungsversion ist verfügbar."
598
599#~ msgid ""
600#~ "Please execute the import script locally, it can take a very long time."
601#~ msgstr ""
602#~ "Bitte führe das Import Script lokal aus, dies kann eine Weile dauern."
603
604#~ msgid "More infos in the official doc:"
605#~ msgstr "Mehr Informationen in der offiziellen Dokumentation:"
606
607#~ msgid "import from Pocket"
608#~ msgstr "Import aus Pocket"
609
610#~ msgid "(you must have a %s file on your server)"
611#~ msgstr "(du brauchst eine %s Datei auf deinem Server)"
612
613#~ msgid "import from Readability"
614#~ msgstr "Import aus Readability"
615
616#~ msgid "import from Instapaper"
617#~ msgstr "Import aus Instapaper"
618
619#~ msgid "You can also create a cron task:"
620#~ msgstr "Du kannst auch einen cronjob anlegen:"
621
622#~ msgid ""
623#~ "Please execute the import script locally as it can take a very long time."
624#~ msgstr ""
625#~ "Bitte führe das Import Script lokal aus, da dies eine Weile dauern kann."
626
627#~ msgid "More info in the official documentation:"
628#~ msgstr "Mehr Informationen in der offiziellen Dokumentation:"
629
630#~ msgid "import from instapaper completed"
631#~ msgstr "Import aus Instapaper erfolgreich"
632
633#~ msgid "import from pocket completed"
634#~ msgstr "Import aus Pocket erfolgreich"
635
636#~ msgid "import from Poche completed. "
637#~ msgstr "Import aus Poche erfolgreich"
638
639#~ msgid "Incomplete inc/poche/define.inc.php file, please define \""
640#~ msgstr "Unvollständige inc/poche/define.inc.php Datei, bitte setze \""
641
642#~ msgid "poche it!"
643#~ msgstr "Poche es!"
644
645#~ msgid "Updating poche"
646#~ msgstr "Poche aktualisieren"
647
648#~ msgid "create an issue"
649#~ msgstr "ein Ticket erstellen"
650
651#~ msgid "or"
652#~ msgstr "oder"
653
654#~ msgid "contact us by mail"
655#~ msgstr "kontaktieren Sie uns per E-Mail"
656
657#~ msgid "your poche version:"
658#~ msgstr "Deine Poche Version"
diff --git a/src/Wallabag/Wallabag/Resources/translations/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mo b/src/Wallabag/Wallabag/Resources/translations/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mo
deleted file mode 100644
index c9105ee6..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mo
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/translations/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po b/src/Wallabag/Wallabag/Resources/translations/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po
deleted file mode 100644
index 81f87342..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po
+++ /dev/null
@@ -1,770 +0,0 @@
1msgid ""
2msgstr ""
3"Project-Id-Version: wallabag\n"
4"Report-Msgid-Bugs-To: \n"
5"POT-Creation-Date: 2014-07-26 15:17+0300\n"
6"PO-Revision-Date: \n"
7"Last-Translator: Thomas Citharel <tcit@openmailbox.org>\n"
8"Language-Team: \n"
9"Language: en\n"
10"MIME-Version: 1.0\n"
11"Content-Type: text/plain; charset=UTF-8\n"
12"Content-Transfer-Encoding: 8bit\n"
13"X-Generator: Poedit 1.5.4\n"
14"X-Poedit-Basepath: .\n"
15
16msgid "wallabag, a read it later open source system"
17msgstr "wallabag, a read it later open source system"
18
19msgid "login failed: user doesn't exist"
20msgstr "Login failed: user doesn't exist"
21
22msgid "return home"
23msgstr "Return Home"
24
25msgid "config"
26msgstr "Config"
27
28msgid "Saving articles"
29msgstr "Saving articles"
30
31msgid "There are several ways to save an article:"
32msgstr "There are several ways to save an article:"
33
34msgid "read the documentation"
35msgstr "Read the documentation"
36
37msgid "download the extension"
38msgstr "Download the extension"
39
40msgid "Firefox Add-On"
41msgstr "Firefox Add-On"
42
43msgid "Chrome Extension"
44msgstr "Chrome Extension"
45
46msgid "via F-Droid"
47msgstr "via F-Droid"
48
49msgid " or "
50msgstr " or "
51
52msgid "via Google Play"
53msgstr "via Google Play"
54
55msgid "download the application"
56msgstr "Download the application"
57
58msgid "By filling this field"
59msgstr "By filling this field"
60
61msgid "bag it!"
62msgstr "bag it!"
63
64msgid "Bookmarklet: drag & drop this link to your bookmarks bar"
65msgstr "Bookmarklet: Drag & drop this link to your bookmarks bar"
66
67msgid "Upgrading wallabag"
68msgstr "Upgrading wallabag"
69
70msgid "Installed version"
71msgstr "Installed version"
72
73msgid "Latest stable version"
74msgstr "Latest stable version"
75
76msgid "A more recent stable version is available."
77msgstr "A more recent stable version is available."
78
79msgid "You are up to date."
80msgstr "You are up to date."
81
82msgid "Latest dev version"
83msgstr "Latest dev version"
84
85msgid "A more recent development version is available."
86msgstr "A more recent development version is available."
87
88msgid "Feeds"
89msgstr "Feeds"
90
91msgid ""
92"Your feed token is currently empty and must first be generated to enable "
93"feeds. Click <a href='?feed&amp;action=generate'>here to generate it</a>."
94msgstr ""
95"Your feed token is currently empty and must first be generated to enable "
96"feeds. Click <a href='?feed&amp;action=generate'>here to generate it</a>."
97
98msgid "Unread feed"
99msgstr "Unread feed"
100
101msgid "Favorites feed"
102msgstr "Favorites feed"
103
104msgid "Archive feed"
105msgstr "Archive feed"
106
107msgid "Your token:"
108msgstr "Your token:"
109
110msgid "Your user id:"
111msgstr "Your user ID:"
112
113msgid ""
114"You can regenerate your token: <a href='?feed&amp;action=generate'>generate!"
115"</a>."
116msgstr "<a href='?feed&amp;action=generate'>Regenerate Token</a>"
117
118msgid "Change your theme"
119msgstr "Change Your Theme"
120
121msgid "Theme:"
122msgstr "Theme:"
123
124msgid "Update"
125msgstr "Update"
126
127msgid "Change your language"
128msgstr "Change Your Language"
129
130msgid "Language:"
131msgstr "Language:"
132
133msgid "Change your password"
134msgstr "Change Your Password"
135
136msgid "New password:"
137msgstr "New password:"
138
139msgid "Password"
140msgstr "Password"
141
142msgid "Repeat your new password:"
143msgstr "Repeat your new password:"
144
145msgid "Import"
146msgstr "Import"
147
148msgid ""
149"You can import your Pocket, Readability, Instapaper, Wallabag or any data in "
150"appropriate json or html format."
151msgstr ""
152"You can import your Pocket, Readability, Instapaper, wallabag or any fil in "
153"appropriate JSON or HTML format."
154
155msgid ""
156"Please select export file on your computer and press \"Import\" button "
157"below. Wallabag will parse your file, insert all URLs and start fetching of "
158"articles if required."
159msgstr ""
160"Please select export file on your computer and press &ldquo;Import&rdquo; "
161"button below. wallabag will parse your file, insert all URLs and start "
162"fetching of articles if required.Please execute the import script locally as "
163"it can take a very long time."
164
165msgid "You can click here to fetch content for articles with no content."
166msgstr "Fetch content for articles with no content"
167
168msgid ""
169"Please execute the import script locally as it can take a very long time."
170msgstr ""
171"Please execute the import script locally as it can take a very long time."
172
173msgid "More info in the official documentation:"
174msgstr "More info in the official documentation:"
175
176msgid ""
177"(<a href=\"http://doc.wallabag.org/en/User_documentation/"
178"Save_your_first_article\" target=\"_blank\" title=\"Documentation\">?</a>)"
179msgstr ""
180"(<a href=\"http://doc.wallabag.org/en/User_documentation/"
181"Save_your_first_article\" target=\"_blank\" title=\"Documentation\">?</a>)"
182
183msgid "Import from Pocket"
184msgstr "Import from Pocket"
185
186#, php-format
187msgid "(you must have a %s file on your server)"
188msgstr "(you must have a %s file on your server)"
189
190msgid "Import from Readability"
191msgstr "Import from Readability"
192
193msgid "Import from Instapaper"
194msgstr "Import from Instapaper"
195
196msgid "Import from wallabag"
197msgstr "Import from wallabag"
198
199msgid "Export your wallabag data"
200msgstr "Export your wallabag data"
201
202msgid "Click here"
203msgstr "Click here"
204
205msgid "to download your database."
206msgstr "to download your database."
207
208msgid "to export your wallabag data."
209msgstr "to export your wallabag data."
210
211msgid "Export JSON"
212msgstr "Export JSON"
213
214msgid "Cache"
215msgstr "Cache"
216
217msgid "to delete cache."
218msgstr "to delete cache."
219
220msgid "Delete Cache"
221msgstr "Delete Cache"
222
223msgid "You can enter multiple tags, separated by commas."
224msgstr "You can enter multiple tags, separated by commas."
225
226msgid "Add tags:"
227msgstr "Add tags:"
228
229msgid "no tags"
230msgstr "no tags"
231
232msgid "The tag has been applied successfully"
233msgstr "The tag has been applied successfully"
234
235msgid "interview"
236msgstr "interview"
237
238msgid "editorial"
239msgstr "editorial"
240
241msgid "video"
242msgstr "video"
243
244msgid "return to article"
245msgstr "Return to article"
246
247msgid "plop"
248msgstr "plop"
249
250msgid ""
251"You can <a href='wallabag_compatibility_test.php'>check your configuration "
252"here</a>."
253msgstr ""
254"You can <a href='wallabag_compatibility_test.php'>check your configuration "
255"here</a>."
256
257msgid "favoris"
258msgstr "Favorites"
259
260msgid "archive"
261msgstr "Archive"
262
263msgid "unread"
264msgstr "Unread"
265
266msgid "by date asc"
267msgstr "by date asc"
268
269msgid "by date"
270msgstr "by date"
271
272msgid "by date desc"
273msgstr "by date desc"
274
275msgid "by title asc"
276msgstr "by title asc"
277
278msgid "by title"
279msgstr "by title"
280
281msgid "by title desc"
282msgstr "by title desc"
283
284msgid "Tag"
285msgstr "Tag"
286
287msgid "No articles found."
288msgstr "No articles found."
289
290msgid "Toggle mark as read"
291msgstr "Toggle mark as read"
292
293msgid "toggle favorite"
294msgstr "Toggle favorite"
295
296msgid "delete"
297msgstr "Delete"
298
299msgid "original"
300msgstr "Original"
301
302msgid "estimated reading time:"
303msgstr "Estimated reading time:"
304
305msgid "mark all the entries as read"
306msgstr "Mark all the entries as read"
307
308msgid "results"
309msgstr "Results"
310
311msgid "installation"
312msgstr "Installation"
313
314msgid "install your wallabag"
315msgstr "Install your wallabag"
316
317msgid ""
318"wallabag is still not installed. Please fill the below form to install it. "
319"Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation "
320"on wallabag website</a>."
321msgstr ""
322"wallabag is still not installed. Please fill the below form to install it. "
323"Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation "
324"on wallabag website</a>."
325
326msgid "Login"
327msgstr "Login"
328
329msgid "Repeat your password"
330msgstr "Repeat your password"
331
332msgid "Install"
333msgstr "Install"
334
335msgid "login to your wallabag"
336msgstr "Login to your wallabag"
337
338msgid "Login to wallabag"
339msgstr "Login to wallabag"
340
341msgid "you are in demo mode, some features may be disabled."
342msgstr "You are in demo mode; some features may be disabled."
343
344msgid "Username"
345msgstr "Username"
346
347msgid "Stay signed in"
348msgstr "Stay signed in"
349
350msgid "(Do not check on public computers)"
351msgstr "(Do not check on public computers)"
352
353msgid "Sign in"
354msgstr "Sign in"
355
356msgid "favorites"
357msgstr "Favorites"
358
359msgid "estimated reading time :"
360msgstr "Estimated reading time:"
361
362msgid "Mark all the entries as read"
363msgstr "Mark all the entries as read"
364
365msgid "Return home"
366msgstr "Return home"
367
368msgid "Back to top"
369msgstr "Back to top"
370
371msgid "Mark as read"
372msgstr "Mark as read"
373
374msgid "Favorite"
375msgstr "Favorite"
376
377msgid "Toggle favorite"
378msgstr "Toggle favorite"
379
380msgid "Delete"
381msgstr "Delete"
382
383msgid "Tweet"
384msgstr "Tweet"
385
386msgid "Email"
387msgstr "Email"
388
389msgid "shaarli"
390msgstr "shaarli"
391
392msgid "flattr"
393msgstr "flattr"
394
395msgid "Does this article appear wrong?"
396msgstr "Does this article appear wrong?"
397
398msgid "tags:"
399msgstr "tags:"
400
401msgid "Edit tags"
402msgstr "Edit Tags"
403
404msgid "save link!"
405msgstr "Save Link"
406
407msgid "home"
408msgstr "Home"
409
410msgid "tags"
411msgstr "Tags"
412
413msgid "logout"
414msgstr "Logout"
415
416msgid "powered by"
417msgstr "Powered by"
418
419msgid "debug mode is on so cache is off."
420msgstr "Debug mode is on, so cache is off."
421
422msgid "your wallabag version:"
423msgstr "Your wallabag version:"
424
425msgid "storage:"
426msgstr "Storage:"
427
428msgid "save a link"
429msgstr "Save a Link"
430
431msgid "back to home"
432msgstr "Back to Home"
433
434msgid "toggle mark as read"
435msgstr "Toggle mark as read"
436
437msgid "tweet"
438msgstr "Tweet"
439
440msgid "email"
441msgstr "Email"
442
443msgid "this article appears wrong?"
444msgstr "This article appears wrong?"
445
446msgid "No link available here!"
447msgstr "No link available here"
448
449msgid "Poching a link"
450msgstr "bagging a link"
451
452msgid "by filling this field"
453msgstr "by filling this field"
454
455msgid "bookmarklet: drag & drop this link to your bookmarks bar"
456msgstr "Bookmarklet: Drag & drop this link to your bookmarks bar"
457
458msgid "Drag &amp; drop this link to your bookmarks bar:"
459msgstr "Drag &amp; drop this link to your bookmarks bar:"
460
461msgid "your version"
462msgstr "your version"
463
464msgid "latest stable version"
465msgstr "latest stable version"
466
467msgid "a more recent stable version is available."
468msgstr "A more recent stable version is available."
469
470msgid "you are up to date."
471msgstr "You are up to date."
472
473msgid "latest dev version"
474msgstr "latest dev version"
475
476msgid "a more recent development version is available."
477msgstr "A more recent development version is available."
478
479msgid "You can clear cache to check the latest release."
480msgstr ""
481"You can <a href=\"#cache\">clear the cache</a> to check for the latest "
482"release."
483
484msgid "Please execute the import script locally, it can take a very long time."
485msgstr ""
486"Please execute the import script locally, it can take a very long time."
487
488msgid "More infos in the official doc:"
489msgstr "More information in the official doc:"
490
491msgid "import from Pocket"
492msgstr "Import from Pocket"
493
494msgid "import from Readability"
495msgstr "Import from Readability"
496
497msgid "import from Instapaper"
498msgstr "Import from Instapaper"
499
500msgid "Tags"
501msgstr "Tags"
502
503msgid "Untitled"
504msgstr "Untitled"
505
506msgid "the link has been added successfully"
507msgstr "The link has been added successfully."
508
509msgid "error during insertion : the link wasn't added"
510msgstr "Error during insertion: the link wasn't added."
511
512msgid "the link has been deleted successfully"
513msgstr "The link has been deleted successfully."
514
515msgid "the link wasn't deleted"
516msgstr "The link wasn't deleted."
517
518msgid "Article not found!"
519msgstr "Article not found."
520
521msgid "previous"
522msgstr "Previous"
523
524msgid "next"
525msgstr "Next"
526
527msgid "in demo mode, you can't update your password"
528msgstr "In demo mode, you can't update your password."
529
530msgid "your password has been updated"
531msgstr "Your password has been updated."
532
533msgid ""
534"the two fields have to be filled & the password must be the same in the two "
535"fields"
536msgstr ""
537"les deux champs doivent être remplis et le mot de passe doit être le même "
538"pour les deux champs"
539
540msgid "still using the \""
541msgstr "Still using the \""
542
543msgid "that theme does not seem to be installed"
544msgstr "That theme does not seem to be installed."
545
546msgid "you have changed your theme preferences"
547msgstr "You have changed your theme preferences."
548
549msgid "that language does not seem to be installed"
550msgstr "That language does not seem to be installed."
551
552msgid "you have changed your language preferences"
553msgstr "You have changed your language preferences."
554
555msgid "login failed: you have to fill all fields"
556msgstr "Login failed: you have to fill all fields."
557
558msgid "welcome to your wallabag"
559msgstr "Welcome to your wallabag."
560
561msgid "login failed: bad login or password"
562msgstr "Login failed: bad login or password."
563
564msgid "import from instapaper completed"
565msgstr "Import from Instapaper completed."
566
567msgid "import from pocket completed"
568msgstr "Import from Pocket completed."
569
570msgid "import from Readability completed. "
571msgstr "Import from Readability completed."
572
573msgid "import from Poche completed. "
574msgstr "Import from Poche completed. "
575
576msgid "Unknown import provider."
577msgstr "Unknown import provider."
578
579msgid "Incomplete inc/poche/define.inc.php file, please define \""
580msgstr "Incomplete inc/poche/define.inc.php file, please define \""
581
582msgid "Could not find required \""
583msgstr "Could not find required \""
584
585msgid "Uh, there is a problem while generating feeds."
586msgstr "There is a problem generating feeds."
587
588msgid "Cache deleted."
589msgstr "Cache deleted."
590
591msgid "Oops, it seems you don't have PHP 5."
592msgstr "Oops, it seems you don't have PHP 5."
593
594msgid "Add user"
595msgstr "Add User"
596
597msgid "Add a new user :"
598msgstr "Add a new user:"
599
600msgid "Login for new user"
601msgstr "Login for new user:"
602
603msgid "Password for new user"
604msgstr "Password for new user:"
605
606msgid "Email for new user (not required)"
607msgstr "Email for new user (not required):"
608
609msgid "Send"
610msgstr "Send"
611
612msgid "Delete account"
613msgstr "Delete Account"
614
615msgid "You can delete your account by entering your password and validating."
616msgstr "You can delete your account by entering your password and validating."
617
618msgid "Be careful, data will be erased forever (that is a very long time)."
619msgstr "Be careful, data will be erased forever (that is a very long time)."
620
621msgid "Type here your password"
622msgstr "Enter your password"
623
624msgid "You are the only user, you cannot delete your own account."
625msgstr "You are the only user, you cannot delete your own account."
626
627msgid ""
628"To completely remove wallabag, delete the wallabag folder on your web server "
629"(and eventual databases)."
630msgstr ""
631"To completely remove wallabag, delete the wallabag folder on your web server "
632"(and eventual databases)."
633
634msgid "Enter your search here"
635msgstr "Enter your search here"
636
637msgid "Tag these results as"
638msgstr "Tag these results as"
639
640# ebook
641msgid "Fancy an E-Book ?"
642msgstr "Fancy an E-Book?"
643
644msgid "Click to get all your articles in one ebook :"
645msgstr "Click to get all your articles in one ebook :"
646
647msgid "Generate ePub file"
648msgstr "Generate ePub file"
649
650msgid "Generate Mobi file"
651msgstr "Generate Mobi file"
652
653msgid "Generate PDF file"
654msgstr "Generate PDF file"
655
656msgid ""
657"This can <b>take a while</b> and can <b>even fail</b> if you have too many "
658"articles, depending on your server configuration."
659msgstr ""
660"This can <b>take a while</b> and can <b>even fail</b> if you have too many "
661"articles, depending on your server configuration."
662
663msgid "Download the articles from this tag in an ePub file"
664msgstr "Download the articles from this tag in an ePub file"
665
666msgid "Download the articles from this tag in an Mobi file"
667msgstr "Download the articles from this tag in an Mobi file"
668
669msgid "Download the articles from this tag in an PDF file"
670msgstr "Download the articles from this tag in an PDF file"
671
672msgid "Download the articles from this search in an ePub"
673msgstr "Download the articles from this search in an ePub"
674
675msgid "Download the articles from this search in a Mobi file"
676msgstr "Download the articles from this search in a Mobi file"
677
678msgid "Download the articles from this search in a PDF file"
679msgstr "Download the articles from this search in a PDF file"
680
681msgid "Download the articles from this category in an ePub"
682msgstr "Download the articles from this category in an ePub"
683
684msgid "Download the articles from this category in a Mobi file"
685msgstr "Download the articles from this category in a Mobi file"
686
687msgid "Download the articles from this category in a PDF file"
688msgstr "Download the articles from this category in a PDF file"
689
690msgid "Download as ePub3"
691msgstr "Download as ePub3"
692
693msgid "Download as Mobi"
694msgstr "Download as Mobi"
695
696msgid "Download as PDF"
697msgstr "Download as PDF"
698
699msgid "All my articles on %s"
700msgstr "All my articles on %s"
701
702msgid "Allarticles"
703msgstr "Allarticles"
704
705msgid "Articles tagged %s"
706msgstr "Articles tagged %s"
707
708msgid "Tag %s"
709msgstr "Tag %s"
710
711msgid "Articles in category %s"
712msgstr "All articles in category %s"
713
714msgid "Category %s"
715msgstr "Category %s"
716
717msgid "Articles for search %s"
718msgstr "All articles for search %s"
719
720msgid "Search %s"
721msgstr "Search %s"
722
723msgid "wallabag articles book"
724msgstr "wallabag articles book"
725
726msgid "Some articles saved on my wallabag"
727msgstr "Some articles saved on my wallabag"
728
729msgid "Produced by wallabag with PHPePub"
730msgstr "Produced by wallabag with PHPePub"
731
732msgid ""
733"Please open <a href='https://github.com/wallabag/wallabag/issues'>an issue</"
734"a> if you have trouble with the display of this E-Book on your device."
735msgstr ""
736"Please open <a href='https://github.com/wallabag/wallabag/issues'>an issue</"
737"a> if you have trouble with the display of this E-Book on your device."
738
739msgid "Produced by wallabag with PHPMobi"
740msgstr "Produced by wallabag with PHPMobi"
741
742msgid "Mail function is disabled. You can't send emails from your server"
743msgstr "Mail function is disabled. You can't send emails from your server"
744
745msgid "You didn't set your kindle's email adress !"
746msgstr "You didn't set your kindle's email adress !"
747
748msgid "The email has been sent to your kindle !"
749msgstr "The email has been sent to your kindle !"
750
751msgid "Produced by wallabag with mPDF"
752msgstr "Produced by wallabag with mPDF"
753
754#~ msgid "poche it!"
755#~ msgstr "poche it!"
756
757#~ msgid "Updating poche"
758#~ msgstr "Updating poche"
759
760#~ msgid "create an issue"
761#~ msgstr "create an issue"
762
763#~ msgid "or"
764#~ msgstr "or"
765
766#~ msgid "contact us by mail"
767#~ msgstr "contact us by mail"
768
769#~ msgid "your poche version:"
770#~ msgstr "your poche version:"
diff --git a/src/Wallabag/Wallabag/Resources/translations/en_US.utf8/LC_MESSAGES/en_US.utf8.mo b/src/Wallabag/Wallabag/Resources/translations/en_US.utf8/LC_MESSAGES/en_US.utf8.mo
deleted file mode 100644
index 77dee070..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/en_US.utf8/LC_MESSAGES/en_US.utf8.mo
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/translations/en_US.utf8/LC_MESSAGES/en_US.utf8.po b/src/Wallabag/Wallabag/Resources/translations/en_US.utf8/LC_MESSAGES/en_US.utf8.po
deleted file mode 100644
index 579d1aca..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/en_US.utf8/LC_MESSAGES/en_US.utf8.po
+++ /dev/null
@@ -1,682 +0,0 @@
1msgid ""
2msgstr ""
3"Project-Id-Version: wallabag\n"
4"Report-Msgid-Bugs-To: \n"
5"POT-Creation-Date: 2014-02-25 15:17+0300\n"
6"PO-Revision-Date: \n"
7"Last-Translator: Thomas Citharel <tcit@openmailbox.org>\n"
8"Language-Team: \n"
9"Language: en_US\n"
10"MIME-Version: 1.0\n"
11"Content-Type: text/plain; charset=UTF-8\n"
12"Content-Transfer-Encoding: 8bit\n"
13"X-Generator: Poedit 1.5.4\n"
14"X-Poedit-Basepath: .\n"
15
16msgid "wallabag, a read it later open source system"
17msgstr "wallabag, a read it later open source system"
18
19msgid "login failed: user doesn't exist"
20msgstr "Login failed: user doesn't exist"
21
22msgid "return home"
23msgstr "Return Home"
24
25msgid "config"
26msgstr "Config"
27
28msgid "Saving articles"
29msgstr "Saving articles"
30
31msgid "There are several ways to save an article:"
32msgstr "There are several ways to save an article:"
33
34msgid "read the documentation"
35msgstr "Read the documentation"
36
37msgid "download the extension"
38msgstr "Download the extension"
39
40msgid "Firefox Add-On"
41msgstr "Firefox Add-On"
42
43msgid "Chrome Extension"
44msgstr "Chrome Extension"
45
46msgid "via F-Droid"
47msgstr "via F-Droid"
48
49msgid " or "
50msgstr " or "
51
52msgid "via Google Play"
53msgstr "via Google Play"
54
55msgid "download the application"
56msgstr "Download the application"
57
58msgid "By filling this field"
59msgstr "By filling this field"
60
61msgid "bag it!"
62msgstr "bag it!"
63
64msgid "Bookmarklet: drag & drop this link to your bookmarks bar"
65msgstr "Bookmarklet: Drag & drop this link to your bookmarks bar"
66
67msgid "Upgrading wallabag"
68msgstr "Upgrading wallabag"
69
70msgid "Installed version"
71msgstr "Installed version"
72
73msgid "Latest stable version"
74msgstr "Latest stable version"
75
76msgid "A more recent stable version is available."
77msgstr "A more recent stable version is available."
78
79msgid "You are up to date."
80msgstr "You are up to date."
81
82msgid "Latest dev version"
83msgstr "Latest dev version"
84
85msgid "A more recent development version is available."
86msgstr "A more recent development version is available."
87
88msgid "You can clear cache to check the latest release."
89msgstr ""
90"You can <a href=\"#cache\">clear the cache</a> to check for the latest "
91"release."
92
93msgid "Feeds"
94msgstr "Feeds"
95
96msgid ""
97"Your feed token is currently empty and must first be generated to enable "
98"feeds. Click <a href='?feed&amp;action=generate'>here to generate it</a>."
99msgstr ""
100"Your feed token is currently empty and must first be generated to enable "
101"feeds. Click <a href='?feed&amp;action=generate'>here to generate it</a>."
102
103msgid "Unread feed"
104msgstr "Unread feed"
105
106msgid "Favorites feed"
107msgstr "Favorites feed"
108
109msgid "Archive feed"
110msgstr "Archive feed"
111
112msgid "Your token:"
113msgstr "Your token:"
114
115msgid "Your user id:"
116msgstr "Your user ID:"
117
118msgid ""
119"You can regenerate your token: <a href='?feed&amp;action=generate'>generate!"
120"</a>."
121msgstr "<a href='?feed&amp;action=generate'>Regenerate Token</a>"
122
123msgid "Change your theme"
124msgstr "Change Your Theme"
125
126msgid "Theme:"
127msgstr "Theme:"
128
129msgid "Update"
130msgstr "Update"
131
132msgid "Change your language"
133msgstr "Change Your Language"
134
135msgid "Language:"
136msgstr "Language:"
137
138msgid "Change your password"
139msgstr "Change Your Password"
140
141msgid "New password:"
142msgstr "New password:"
143
144msgid "Password"
145msgstr "Password"
146
147msgid "Repeat your new password:"
148msgstr "Repeat your new password:"
149
150msgid "Import"
151msgstr "Import"
152
153msgid ""
154"You can import your Pocket, Readability, Instapaper, Wallabag or any data in "
155"appropriate json or html format."
156msgstr ""
157"You can import your Pocket, Readability, Instapaper, wallabag or any file in "
158"appropriate JSON or HTML format."
159
160msgid ""
161"Please execute the import script locally as it can take a very long time."
162msgstr ""
163"Please execute the import script locally as it can take a very long time."
164
165msgid ""
166"Please select export file on your computer and press \"Import\" button "
167"below. Wallabag will parse your file, insert all URLs and start fetching of "
168"articles if required."
169msgstr ""
170"Please select export file on your computer and press &ldquo;Import&rdquo; "
171"button below. wallabag will parse your file, insert all URLs and start "
172"fetching of articles if required."
173
174msgid "You can click here to fetch content for articles with no content."
175msgstr "Fetch content for articles with no content"
176
177msgid "More info in the official documentation:"
178msgstr "More info in the official documentation:"
179
180msgid ""
181"(<a href=\"http://doc.wallabag.org/en/User_documentation/"
182"Save_your_first_article\" target=\"_blank\" title=\"Documentation\">?</a>)"
183msgstr ""
184"(<a href=\"http://doc.wallabag.org/en/User_documentation/"
185"Save_your_first_article\" target=\"_blank\" title=\"Documentation\">?</a>)"
186
187msgid "Import from Pocket"
188msgstr "Import from Pocket"
189
190#, php-format
191msgid "(you must have a %s file on your server)"
192msgstr "(you must have a %s file on your server)"
193
194msgid "Import from Readability"
195msgstr "Import from Readability"
196
197msgid "Import from Instapaper"
198msgstr "Import from Instapaper"
199
200msgid "Import from wallabag"
201msgstr "Import from wallabag"
202
203msgid "Export your wallabag data"
204msgstr "Export your wallabag data"
205
206msgid "Click here"
207msgstr "Click here"
208
209msgid "to download your database."
210msgstr "to download your database."
211
212msgid "to export your wallabag data."
213msgstr "to export your wallabag data."
214
215msgid "Export JSON"
216msgstr "Export JSON"
217
218msgid "Cache"
219msgstr "Cache"
220
221msgid "to delete cache."
222msgstr "to delete cache."
223
224msgid "Delete Cache"
225msgstr "Delete Cache"
226
227msgid "You can enter multiple tags, separated by commas."
228msgstr "You can enter multiple tags, separated by commas."
229
230msgid "Add tags:"
231msgstr "Add tags:"
232
233msgid "no tags"
234msgstr "no tags"
235
236msgid "The tag has been applied successfully"
237msgstr "The tag has been applied successfully"
238
239msgid "interview"
240msgstr "interview"
241
242msgid "editorial"
243msgstr "editorial"
244
245msgid "video"
246msgstr "video"
247
248msgid "return to article"
249msgstr "Return to article"
250
251msgid "plop"
252msgstr "plop"
253
254msgid ""
255"You can <a href='wallabag_compatibility_test.php'>check your configuration "
256"here</a>."
257msgstr ""
258"You can <a href='wallabag_compatibility_test.php'>check your configuration "
259"here</a>."
260
261msgid "favoris"
262msgstr "Favorites"
263
264msgid "archive"
265msgstr "Archive"
266
267msgid "unread"
268msgstr "Unread"
269
270msgid "by date asc"
271msgstr "by date asc"
272
273msgid "by date"
274msgstr "by date"
275
276msgid "by date desc"
277msgstr "by date desc"
278
279msgid "by title asc"
280msgstr "by title asc"
281
282msgid "by title"
283msgstr "by title"
284
285msgid "by title desc"
286msgstr "by title desc"
287
288msgid "Tag"
289msgstr "Tag"
290
291msgid "No articles found."
292msgstr "No articles found."
293
294msgid "Toggle mark as read"
295msgstr "Toggle mark as read"
296
297msgid "toggle favorite"
298msgstr "Toggle favorite"
299
300msgid "delete"
301msgstr "Delete"
302
303msgid "original"
304msgstr "Original"
305
306msgid "estimated reading time:"
307msgstr "Estimated reading time:"
308
309msgid "mark all the entries as read"
310msgstr "Mark all the entries as read"
311
312msgid "results"
313msgstr "Results"
314
315msgid "installation"
316msgstr "Installation"
317
318msgid "install your wallabag"
319msgstr "Install your wallabag"
320
321msgid ""
322"wallabag is still not installed. Please fill the below form to install it. "
323"Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation "
324"on wallabag website</a>."
325msgstr ""
326"wallabag is still not installed. Please fill the below form to install it. "
327"Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation "
328"on wallabag website</a>."
329
330msgid "Login"
331msgstr "Login"
332
333msgid "Repeat your password"
334msgstr "Repeat your password"
335
336msgid "Install"
337msgstr "Install"
338
339msgid "login to your wallabag"
340msgstr "Login to your wallabag"
341
342msgid "Login to wallabag"
343msgstr "Login to wallabag"
344
345msgid "you are in demo mode, some features may be disabled."
346msgstr "You are in demo mode; some features may be disabled."
347
348msgid "Username"
349msgstr "Username"
350
351msgid "Stay signed in"
352msgstr "Stay signed in"
353
354msgid "(Do not check on public computers)"
355msgstr "(Do not check on public computers)"
356
357msgid "Sign in"
358msgstr "Sign in"
359
360msgid "favorites"
361msgstr "Favorites"
362
363msgid "estimated reading time :"
364msgstr "Estimated reading time:"
365
366msgid "Mark all the entries as read"
367msgstr "Mark all the entries as read"
368
369msgid "Return home"
370msgstr "Return home"
371
372msgid "Back to top"
373msgstr "Back to top"
374
375msgid "Mark as read"
376msgstr "Mark as read"
377
378msgid "Favorite"
379msgstr "Favorite"
380
381msgid "Toggle favorite"
382msgstr "Toggle favorite"
383
384msgid "Delete"
385msgstr "Delete"
386
387msgid "Tweet"
388msgstr "Tweet"
389
390msgid "Email"
391msgstr "Email"
392
393msgid "shaarli"
394msgstr "shaarli"
395
396msgid "flattr"
397msgstr "flattr"
398
399msgid "Does this article appear wrong?"
400msgstr "Does this article appear wrong?"
401
402msgid "tags:"
403msgstr "tags:"
404
405msgid "Edit tags"
406msgstr "Edit Tags"
407
408msgid "save link!"
409msgstr "Save Link"
410
411msgid "home"
412msgstr "Home"
413
414msgid "tags"
415msgstr "Tags"
416
417msgid "logout"
418msgstr "Logout"
419
420msgid "powered by"
421msgstr "Powered by"
422
423msgid "debug mode is on so cache is off."
424msgstr "Debug mode is on, so cache is off."
425
426msgid "your wallabag version:"
427msgstr "Your wallabag version:"
428
429msgid "storage:"
430msgstr "Storage:"
431
432msgid "save a link"
433msgstr "Save a Link"
434
435msgid "back to home"
436msgstr "Back to Home"
437
438msgid "toggle mark as read"
439msgstr "Toggle mark as read"
440
441msgid "tweet"
442msgstr "Tweet"
443
444msgid "email"
445msgstr "Email"
446
447msgid "this article appears wrong?"
448msgstr "This article appears wrong?"
449
450msgid "No link available here!"
451msgstr "No link available here"
452
453msgid "Poching a link"
454msgstr "bagging a link"
455
456msgid "by filling this field"
457msgstr "by filling this field"
458
459msgid "bookmarklet: drag & drop this link to your bookmarks bar"
460msgstr "Bookmarklet: Drag & drop this link to your bookmarks bar"
461
462msgid "Drag &amp; drop this link to your bookmarks bar:"
463msgstr "Drag &amp; drop this link to your bookmarks bar:"
464
465msgid "your version"
466msgstr "your version"
467
468msgid "latest stable version"
469msgstr "latest stable version"
470
471msgid "a more recent stable version is available."
472msgstr "A more recent stable version is available."
473
474msgid "you are up to date."
475msgstr "You are up to date."
476
477msgid "latest dev version"
478msgstr "latest dev version"
479
480msgid "a more recent development version is available."
481msgstr "A more recent development version is available."
482
483msgid "Please execute the import script locally, it can take a very long time."
484msgstr ""
485"Please execute the import script locally, it can take a very long time."
486
487msgid "More infos in the official doc:"
488msgstr "More information in the official doc:"
489
490msgid "import from Pocket"
491msgstr "Import from Pocket"
492
493msgid "import from Readability"
494msgstr "Import from Readability"
495
496msgid "import from Instapaper"
497msgstr "Import from Instapaper"
498
499msgid "Tags"
500msgstr "Tags"
501
502msgid "Untitled"
503msgstr "Untitled"
504
505msgid "the link has been added successfully"
506msgstr "The link has been added successfully."
507
508msgid "error during insertion : the link wasn't added"
509msgstr "Error during insertion: the link wasn't added."
510
511msgid "the link has been deleted successfully"
512msgstr "The link has been deleted successfully."
513
514msgid "the link wasn't deleted"
515msgstr "The link wasn't deleted."
516
517msgid "Article not found!"
518msgstr "Article not found."
519
520msgid "previous"
521msgstr "Previous"
522
523msgid "next"
524msgstr "Next"
525
526msgid "in demo mode, you can't update your password"
527msgstr "In demo mode, you can't update your password."
528
529msgid "your password has been updated"
530msgstr "Your password has been updated."
531
532msgid ""
533"the two fields have to be filled & the password must be the same in the two "
534"fields"
535msgstr ""
536"The two fields must be filled, and the password must be the same in both "
537"fields"
538
539msgid "still using the \""
540msgstr "Still using the \""
541
542msgid "that theme does not seem to be installed"
543msgstr "That theme does not seem to be installed."
544
545msgid "you have changed your theme preferences"
546msgstr "You have changed your theme preferences."
547
548msgid "that language does not seem to be installed"
549msgstr "That language does not seem to be installed."
550
551msgid "you have changed your language preferences"
552msgstr "You have changed your language preferences."
553
554msgid "login failed: you have to fill all fields"
555msgstr "Login failed: you have to fill all fields."
556
557msgid "welcome to your wallabag"
558msgstr "Welcome to your wallabag."
559
560msgid "login failed: bad login or password"
561msgstr "Login failed: bad login or password."
562
563msgid "import from instapaper completed"
564msgstr "Import from Instapaper completed."
565
566msgid "import from pocket completed"
567msgstr "Import from Pocket completed."
568
569msgid "import from Readability completed. "
570msgstr "Import from Readability completed."
571
572msgid "import from Poche completed. "
573msgstr "Import from Poche completed. "
574
575msgid "Unknown import provider."
576msgstr "Unknown import provider."
577
578msgid "Incomplete inc/poche/define.inc.php file, please define \""
579msgstr "Incomplete inc/poche/define.inc.php file, please define \""
580
581msgid "Could not find required \""
582msgstr "Could not find required \""
583
584msgid "Uh, there is a problem while generating feeds."
585msgstr "There is a problem generating feeds."
586
587msgid "Cache deleted."
588msgstr "Cache deleted."
589
590msgid "Oops, it seems you don't have PHP 5."
591msgstr "Oops, it seems you don't have PHP 5."
592
593msgid "Add user"
594msgstr "Add User"
595
596msgid "Add a new user :"
597msgstr "Add a new user:"
598
599msgid "Login for new user"
600msgstr "Login for new user:"
601
602msgid "Password for new user"
603msgstr "Password for new user:"
604
605msgid "Email for new user (not required)"
606msgstr "Email for new user (not required):"
607
608msgid "Send"
609msgstr "Send"
610
611msgid "Delete account"
612msgstr "Delete Account"
613
614msgid "You can delete your account by entering your password and validating."
615msgstr "You can delete your account by entering your password and validating."
616
617msgid "Be careful, data will be erased forever (that is a very long time)."
618msgstr "Be careful, data will be erased forever (that is a very long time)."
619
620msgid "Type here your password"
621msgstr "Enter your password"
622
623msgid "You are the only user, you cannot delete your own account."
624msgstr "You cannot delete your account because you are the only user."
625
626msgid ""
627"To completely remove wallabag, delete the wallabag folder on your web server "
628"(and eventual databases)."
629msgstr ""
630"To completely remove wallabag, delete the wallabag folder and database(s) "
631"from your web server."
632
633msgid "Enter your search here"
634msgstr "Enter your search here"
635
636msgid "Tag these results as"
637msgstr "Tag these results as"
638
639# ebook
640msgid "Fancy an E-Book ?"
641msgstr "Fancy an E-Book?"
642
643msgid ""
644"Click on <a href=\"./?epub&amp;method=all\" title=\"Generate ePub\">this "
645"link</a> to get all your articles in one ebook (ePub 3 format)."
646msgstr ""
647"Click on <a href=\"./?epub&amp;method=all\" title=\"Generate EPUB\">this "
648"link</a> to get all your articles in one ebook (EPUB 3 format)."
649
650msgid ""
651"This can <b>take a while</b> and can <b>even fail</b> if you have too many "
652"articles, depending on your server configuration."
653msgstr ""
654"This can <b>take a while</b> and can <b>even fail</b> if you have too many "
655"articles, depending on your server configuration."
656
657msgid "Download the articles from this tag in an epub"
658msgstr "Download the articles from this tag in an EPUB"
659
660msgid "Download the articles from this search in an epub"
661msgstr "Download the articles from this search in an EPUB"
662
663msgid "Download the articles from this category in an epub"
664msgstr "Download the articles from this category in an EPUB"
665
666#~ msgid "poche it!"
667#~ msgstr "poche it!"
668
669#~ msgid "Updating poche"
670#~ msgstr "Updating poche"
671
672#~ msgid "create an issue"
673#~ msgstr "create an issue"
674
675#~ msgid "or"
676#~ msgstr "or"
677
678#~ msgid "contact us by mail"
679#~ msgstr "contact us by mail"
680
681#~ msgid "your poche version:"
682#~ msgstr "your poche version:"
diff --git a/src/Wallabag/Wallabag/Resources/translations/es_ES.utf8/LC_MESSAGES/es_ES.utf8.mo b/src/Wallabag/Wallabag/Resources/translations/es_ES.utf8/LC_MESSAGES/es_ES.utf8.mo
deleted file mode 100644
index f4309896..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/es_ES.utf8/LC_MESSAGES/es_ES.utf8.mo
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/translations/es_ES.utf8/LC_MESSAGES/es_ES.utf8.po b/src/Wallabag/Wallabag/Resources/translations/es_ES.utf8/LC_MESSAGES/es_ES.utf8.po
deleted file mode 100644
index c08decfe..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/es_ES.utf8/LC_MESSAGES/es_ES.utf8.po
+++ /dev/null
@@ -1,563 +0,0 @@
1msgid ""
2msgstr ""
3"Project-Id-Version: \n"
4"Report-Msgid-Bugs-To: \n"
5"POT-Creation-Date: 2014-02-25 15:16+0300\n"
6"PO-Revision-Date: \n"
7"Last-Translator: Maryana <mariroz@mr.lviv.ua>\n"
8"Language-Team: \n"
9"Language: \n"
10"MIME-Version: 1.0\n"
11"Content-Type: text/plain; charset=UTF-8\n"
12"Content-Transfer-Encoding: 8bit\n"
13"X-Generator: Poedit 1.5.4\n"
14"X-Poedit-Language: Spanish\n"
15"X-Poedit-Basepath: .\n"
16"X-Poedit-SearchPath-0: /home/mariroz/_DEV/web/wallabag/wallabag-master-testing\n"
17
18msgid "wallabag, a read it later open source system"
19msgstr ""
20
21msgid "login failed: user doesn't exist"
22msgstr ""
23
24msgid "return home"
25msgstr ""
26
27msgid "config"
28msgstr "configuración"
29
30msgid "Saving articles"
31msgstr ""
32
33msgid "There are several ways to save an article:"
34msgstr ""
35
36msgid "read the documentation"
37msgstr "leer la documentación"
38
39msgid "download the extension"
40msgstr ""
41
42msgid "via F-Droid"
43msgstr ""
44
45msgid " or "
46msgstr ""
47
48msgid "via Google Play"
49msgstr ""
50
51msgid "download the application"
52msgstr ""
53
54#, fuzzy
55msgid "By filling this field"
56msgstr "rellenando este campo"
57
58msgid "bag it!"
59msgstr ""
60
61msgid "Bookmarklet: drag & drop this link to your bookmarks bar"
62msgstr ""
63
64msgid "Upgrading wallabag"
65msgstr ""
66
67#, fuzzy
68msgid "Installed version"
69msgstr "ultima versión estable"
70
71#, fuzzy
72msgid "Latest stable version"
73msgstr "ultima versión estable"
74
75#, fuzzy
76msgid "A more recent stable version is available."
77msgstr "una versión estable más reciente está disponible."
78
79#, fuzzy
80msgid "You are up to date."
81msgstr "estás actualizado."
82
83#, fuzzy
84msgid "Latest dev version"
85msgstr "ultima versión de desarollo"
86
87#, fuzzy
88msgid "A more recent development version is available."
89msgstr "una versión de desarollo más reciente está disponible."
90
91msgid "Feeds"
92msgstr ""
93
94msgid "Your feed token is currently empty and must first be generated to enable feeds. Click <a href='?feed&amp;action=generate'>here to generate it</a>."
95msgstr ""
96
97msgid "Unread feed"
98msgstr ""
99
100#, fuzzy
101msgid "Favorites feed"
102msgstr "preferidos"
103
104#, fuzzy
105msgid "Archive feed"
106msgstr "archivos"
107
108msgid "Your token:"
109msgstr ""
110
111msgid "Your user id:"
112msgstr ""
113
114msgid "You can regenerate your token: <a href='?feed&amp;action=generate'>generate!</a>."
115msgstr ""
116
117#, fuzzy
118msgid "Change your theme"
119msgstr "Modificar tu contraseña"
120
121msgid "Theme:"
122msgstr ""
123
124msgid "Update"
125msgstr "Actualizar"
126
127#, fuzzy
128msgid "Change your language"
129msgstr "Modificar tu contraseña"
130
131msgid "Language:"
132msgstr ""
133
134msgid "Change your password"
135msgstr "Modificar tu contraseña"
136
137msgid "New password:"
138msgstr "Nueva contraseña :"
139
140msgid "Password"
141msgstr "Contraseña"
142
143msgid "Repeat your new password:"
144msgstr "Repetir la nueva contraseña :"
145
146msgid "Import"
147msgstr "Importar"
148
149#, fuzzy
150msgid "Please execute the import script locally as it can take a very long time."
151msgstr "Por favor, ejecute la importación en local, esto puede demorar un tiempo."
152
153#, fuzzy
154msgid "More info in the official documentation:"
155msgstr "Más información en la documentación oficial :"
156
157#, fuzzy
158msgid "Import from Pocket"
159msgstr "importación desde Pocket"
160
161#, php-format
162msgid "(you must have a %s file on your server)"
163msgstr ""
164
165#, fuzzy
166msgid "Import from Readability"
167msgstr "importación desde Readability"
168
169#, fuzzy
170msgid "Import from Instapaper"
171msgstr "importación desde Instapaper"
172
173#, fuzzy
174msgid "Import from wallabag"
175msgstr "importación desde Readability"
176
177#, fuzzy
178msgid "Export your wallabag data"
179msgstr "Exportar sus datos de poche"
180
181msgid "Click here"
182msgstr "Haga clic aquí"
183
184msgid "to download your database."
185msgstr ""
186
187#, fuzzy
188msgid "to export your wallabag data."
189msgstr "para exportar sus datos de poche."
190
191msgid "Cache"
192msgstr ""
193
194msgid "to delete cache."
195msgstr ""
196
197msgid "You can enter multiple tags, separated by commas."
198msgstr ""
199
200msgid "return to article"
201msgstr ""
202
203msgid "plop"
204msgstr "plop"
205
206msgid "You can <a href='wallabag_compatibility_test.php'>check your configuration here</a>."
207msgstr ""
208
209msgid "favoris"
210msgstr "preferidos"
211
212msgid "archive"
213msgstr "archivos"
214
215msgid "unread"
216msgstr "sin leer"
217
218msgid "by date asc"
219msgstr "por fecha ascendiente"
220
221msgid "by date"
222msgstr "por fecha"
223
224msgid "by date desc"
225msgstr "por fecha descendiente"
226
227msgid "by title asc"
228msgstr "por titulo ascendiente"
229
230msgid "by title"
231msgstr "por título"
232
233msgid "by title desc"
234msgstr "por título descendiente"
235
236msgid "Tag"
237msgstr ""
238
239msgid "No articles found."
240msgstr ""
241
242#, fuzzy
243msgid "Toggle mark as read"
244msgstr "marcar como leído"
245
246msgid "toggle favorite"
247msgstr "preferido"
248
249msgid "delete"
250msgstr "eliminar"
251
252msgid "original"
253msgstr "original"
254
255msgid "estimated reading time:"
256msgstr ""
257
258msgid "mark all the entries as read"
259msgstr ""
260
261msgid "results"
262msgstr "resultados"
263
264msgid "installation"
265msgstr "instalación"
266
267#, fuzzy
268msgid "install your wallabag"
269msgstr "instala tu Poche"
270
271#, fuzzy
272msgid "wallabag is still not installed. Please fill the below form to install it. Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation on wallabag website</a>."
273msgstr "Poche todavia no està instalado. Por favor, completa los campos siguientes para instalarlo. No dudes de <a href='http://doc.inthepoche.com'>leer la documentación en el sitio de Poche</a>."
274
275msgid "Login"
276msgstr "Nombre de usuario"
277
278msgid "Repeat your password"
279msgstr "Repita su contraseña"
280
281msgid "Install"
282msgstr "Instalar"
283
284#, fuzzy
285msgid "login to your wallabag"
286msgstr "conectarse a tu Poche"
287
288msgid "Login to wallabag"
289msgstr ""
290
291msgid "you are in demo mode, some features may be disabled."
292msgstr "este es el modo de demostración, algunas funcionalidades pueden estar desactivadas."
293
294msgid "Username"
295msgstr ""
296
297msgid "Stay signed in"
298msgstr "Seguir conectado"
299
300msgid "(Do not check on public computers)"
301msgstr "(no marcar en un ordenador público)"
302
303msgid "Sign in"
304msgstr "Iniciar sesión"
305
306msgid "favorites"
307msgstr "preferidos"
308
309msgid "estimated reading time :"
310msgstr ""
311
312msgid "Mark all the entries as read"
313msgstr ""
314
315msgid "Return home"
316msgstr ""
317
318#, fuzzy
319msgid "Back to top"
320msgstr "volver arriba"
321
322#, fuzzy
323msgid "Mark as read"
324msgstr "marcar como leído"
325
326#, fuzzy
327msgid "Favorite"
328msgstr "preferidos"
329
330#, fuzzy
331msgid "Toggle favorite"
332msgstr "preferido"
333
334#, fuzzy
335msgid "Delete"
336msgstr "eliminar"
337
338#, fuzzy
339msgid "Tweet"
340msgstr "tweetear"
341
342#, fuzzy
343msgid "Email"
344msgstr "enviar por mail"
345
346msgid "shaarli"
347msgstr "shaarli"
348
349msgid "flattr"
350msgstr "flattr"
351
352#, fuzzy
353msgid "Does this article appear wrong?"
354msgstr "este articulo no se ve bien?"
355
356msgid "tags:"
357msgstr ""
358
359msgid "Edit tags"
360msgstr ""
361
362msgid "save link!"
363msgstr ""
364
365msgid "home"
366msgstr "inicio"
367
368msgid "tags"
369msgstr ""
370
371msgid "logout"
372msgstr "cerrar sesión"
373
374msgid "powered by"
375msgstr "hecho con"
376
377msgid "debug mode is on so cache is off."
378msgstr "el modo de depuración está activado, así que la cache está desactivada."
379
380#, fuzzy
381msgid "your wallabag version:"
382msgstr "su versión"
383
384msgid "storage:"
385msgstr "almacenamiento:"
386
387msgid "save a link"
388msgstr ""
389
390msgid "back to home"
391msgstr "volver a la página de inicio"
392
393msgid "toggle mark as read"
394msgstr "marcar como leído"
395
396msgid "tweet"
397msgstr "tweetear"
398
399msgid "email"
400msgstr "enviar por mail"
401
402msgid "this article appears wrong?"
403msgstr "este articulo no se ve bien?"
404
405msgid "No link available here!"
406msgstr "¡No hay ningún enlace disponible por aquí!"
407
408msgid "Poching a link"
409msgstr "Pochear un enlace"
410
411msgid "by filling this field"
412msgstr "rellenando este campo"
413
414msgid "bookmarklet: drag & drop this link to your bookmarks bar"
415msgstr ""
416
417msgid "your version"
418msgstr "su versión"
419
420msgid "latest stable version"
421msgstr "ultima versión estable"
422
423msgid "a more recent stable version is available."
424msgstr "una versión estable más reciente está disponible."
425
426msgid "you are up to date."
427msgstr "estás actualizado."
428
429msgid "latest dev version"
430msgstr "ultima versión de desarollo"
431
432msgid "a more recent development version is available."
433msgstr "una versión de desarollo más reciente está disponible."
434
435msgid "Please execute the import script locally, it can take a very long time."
436msgstr "Por favor, ejecute la importación en local, esto puede demorar un tiempo."
437
438#, fuzzy
439msgid "More infos in the official doc:"
440msgstr "Más información en la documentación oficial :"
441
442msgid "import from Pocket"
443msgstr "importación desde Pocket"
444
445msgid "import from Readability"
446msgstr "importación desde Readability"
447
448msgid "import from Instapaper"
449msgstr "importación desde Instapaper"
450
451msgid "Tags"
452msgstr ""
453
454#, fuzzy
455msgid "Untitled"
456msgstr "por título"
457
458msgid "the link has been added successfully"
459msgstr ""
460
461msgid "error during insertion : the link wasn't added"
462msgstr ""
463
464msgid "the link has been deleted successfully"
465msgstr ""
466
467msgid "the link wasn't deleted"
468msgstr ""
469
470msgid "Article not found!"
471msgstr ""
472
473msgid "previous"
474msgstr ""
475
476msgid "next"
477msgstr ""
478
479msgid "in demo mode, you can't update your password"
480msgstr ""
481
482msgid "your password has been updated"
483msgstr ""
484
485msgid "the two fields have to be filled & the password must be the same in the two fields"
486msgstr ""
487
488msgid "still using the \""
489msgstr ""
490
491msgid "that theme does not seem to be installed"
492msgstr ""
493
494msgid "you have changed your theme preferences"
495msgstr ""
496
497msgid "that language does not seem to be installed"
498msgstr ""
499
500msgid "you have changed your language preferences"
501msgstr ""
502
503msgid "login failed: you have to fill all fields"
504msgstr ""
505
506msgid "welcome to your wallabag"
507msgstr ""
508
509msgid "login failed: bad login or password"
510msgstr ""
511
512#, fuzzy
513msgid "import from instapaper completed"
514msgstr "importación desde Instapaper"
515
516#, fuzzy
517msgid "import from pocket completed"
518msgstr "importación desde Pocket"
519
520#, fuzzy
521msgid "import from Readability completed. "
522msgstr "importación desde Readability"
523
524#, fuzzy
525msgid "import from Poche completed. "
526msgstr "importación desde Pocket"
527
528msgid "Unknown import provider."
529msgstr ""
530
531msgid "Incomplete inc/poche/define.inc.php file, please define \""
532msgstr ""
533
534msgid "Could not find required \""
535msgstr ""
536
537msgid "Uh, there is a problem while generating feeds."
538msgstr ""
539
540#, fuzzy
541msgid "Cache deleted."
542msgstr "eliminar"
543
544msgid "Oops, it seems you don't have PHP 5."
545msgstr ""
546
547#~ msgid "poche it!"
548#~ msgstr "pochéalo!"
549
550#~ msgid "Updating poche"
551#~ msgstr "Actualizar"
552
553#~ msgid "create an issue"
554#~ msgstr "crear un ticket"
555
556#~ msgid "or"
557#~ msgstr "o"
558
559#~ msgid "contact us by mail"
560#~ msgstr "contactarnos por mail"
561
562#~ msgid "your poche version:"
563#~ msgstr "tu versión de Poche:"
diff --git a/src/Wallabag/Wallabag/Resources/translations/fa_IR.utf8/LC_MESSAGES/fa_IR.utf8.mo b/src/Wallabag/Wallabag/Resources/translations/fa_IR.utf8/LC_MESSAGES/fa_IR.utf8.mo
deleted file mode 100644
index be6ebc57..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/fa_IR.utf8/LC_MESSAGES/fa_IR.utf8.mo
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/translations/fa_IR.utf8/LC_MESSAGES/fa_IR.utf8.po b/src/Wallabag/Wallabag/Resources/translations/fa_IR.utf8/LC_MESSAGES/fa_IR.utf8.po
deleted file mode 100644
index f24814d5..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/fa_IR.utf8/LC_MESSAGES/fa_IR.utf8.po
+++ /dev/null
@@ -1,563 +0,0 @@
1msgid ""
2msgstr ""
3"Project-Id-Version: \n"
4"Report-Msgid-Bugs-To: \n"
5"POT-Creation-Date: 2014-02-25 15:15+0300\n"
6"PO-Revision-Date: \n"
7"Last-Translator: Maryana <mariroz@mr.lviv.ua>\n"
8"Language-Team: \n"
9"Language: \n"
10"MIME-Version: 1.0\n"
11"Content-Type: text/plain; charset=UTF-8\n"
12"Content-Transfer-Encoding: 8bit\n"
13"X-Generator: Poedit 1.5.4\n"
14"X-Poedit-Language: Persian\n"
15"X-Poedit-Basepath: .\n"
16"X-Poedit-SearchPath-0: /home/mariroz/_DEV/web/wallabag/wallabag-master-testing\n"
17
18msgid "wallabag, a read it later open source system"
19msgstr ""
20
21msgid "login failed: user doesn't exist"
22msgstr ""
23
24msgid "return home"
25msgstr ""
26
27msgid "config"
28msgstr "تنظیمات"
29
30msgid "Saving articles"
31msgstr ""
32
33msgid "There are several ways to save an article:"
34msgstr ""
35
36msgid "read the documentation"
37msgstr "راهنما را بخوانید"
38
39msgid "download the extension"
40msgstr ""
41
42msgid "via F-Droid"
43msgstr ""
44
45msgid " or "
46msgstr ""
47
48msgid "via Google Play"
49msgstr ""
50
51msgid "download the application"
52msgstr ""
53
54#, fuzzy
55msgid "By filling this field"
56msgstr "با پرکردن این بخش"
57
58msgid "bag it!"
59msgstr ""
60
61msgid "Bookmarklet: drag & drop this link to your bookmarks bar"
62msgstr ""
63
64msgid "Upgrading wallabag"
65msgstr ""
66
67#, fuzzy
68msgid "Installed version"
69msgstr "آخرین نسخهٔ پایدار"
70
71#, fuzzy
72msgid "Latest stable version"
73msgstr "آخرین نسخهٔ پایدار"
74
75#, fuzzy
76msgid "A more recent stable version is available."
77msgstr "نسخهٔ پایدار تازه‌ای منتشر شده است."
78
79#, fuzzy
80msgid "You are up to date."
81msgstr "شما به‌روز هستید."
82
83#, fuzzy
84msgid "Latest dev version"
85msgstr "آخرین نسخهٔ آزمایشی"
86
87#, fuzzy
88msgid "A more recent development version is available."
89msgstr "نسخهٔ آزمایشی تازه‌ای منتشر شده است."
90
91msgid "Feeds"
92msgstr ""
93
94msgid "Your feed token is currently empty and must first be generated to enable feeds. Click <a href='?feed&amp;action=generate'>here to generate it</a>."
95msgstr ""
96
97msgid "Unread feed"
98msgstr ""
99
100#, fuzzy
101msgid "Favorites feed"
102msgstr "بهترین‌ها"
103
104#, fuzzy
105msgid "Archive feed"
106msgstr "بایگانی"
107
108msgid "Your token:"
109msgstr ""
110
111msgid "Your user id:"
112msgstr ""
113
114msgid "You can regenerate your token: <a href='?feed&amp;action=generate'>generate!</a>."
115msgstr ""
116
117#, fuzzy
118msgid "Change your theme"
119msgstr "گذرواژهٔ خود را تغییر دهید"
120
121msgid "Theme:"
122msgstr ""
123
124msgid "Update"
125msgstr "به‌روزرسانی"
126
127#, fuzzy
128msgid "Change your language"
129msgstr "گذرواژهٔ خود را تغییر دهید"
130
131msgid "Language:"
132msgstr ""
133
134msgid "Change your password"
135msgstr "گذرواژهٔ خود را تغییر دهید"
136
137msgid "New password:"
138msgstr "گذرواژهٔ تازه:"
139
140msgid "Password"
141msgstr "گذرواژه"
142
143msgid "Repeat your new password:"
144msgstr "گذرواژهٔ تازه را دوباره وارد کنید"
145
146msgid "Import"
147msgstr "درون‌ریزی"
148
149#, fuzzy
150msgid "Please execute the import script locally as it can take a very long time."
151msgstr "لطفاً برنامهٔ درون‌ریزی را به‌طور محلی اجرا کنید، شاید خیلی طول بکشد."
152
153#, fuzzy
154msgid "More info in the official documentation:"
155msgstr "اطلاعات بیشتر در راهنمای رسمی:"
156
157#, fuzzy
158msgid "Import from Pocket"
159msgstr "درون‌ریزی از Pocket"
160
161#, php-format
162msgid "(you must have a %s file on your server)"
163msgstr ""
164
165#, fuzzy
166msgid "Import from Readability"
167msgstr "درون‌ریزی از Readability"
168
169#, fuzzy
170msgid "Import from Instapaper"
171msgstr "درون‌ریزی از Instapaper"
172
173#, fuzzy
174msgid "Import from wallabag"
175msgstr "درون‌ریزی از Readability"
176
177#, fuzzy
178msgid "Export your wallabag data"
179msgstr "داده‌های poche خود را برون‌بری کنید"
180
181msgid "Click here"
182msgstr "اینجا را کلیک کنید"
183
184msgid "to download your database."
185msgstr ""
186
187#, fuzzy
188msgid "to export your wallabag data."
189msgstr "برای برون‌بری داده‌های poche شما"
190
191msgid "Cache"
192msgstr ""
193
194msgid "to delete cache."
195msgstr ""
196
197msgid "You can enter multiple tags, separated by commas."
198msgstr ""
199
200msgid "return to article"
201msgstr ""
202
203msgid "plop"
204msgstr "plop"
205
206msgid "You can <a href='wallabag_compatibility_test.php'>check your configuration here</a>."
207msgstr ""
208
209msgid "favoris"
210msgstr "بهترین‌ها"
211
212msgid "archive"
213msgstr "بایگانی"
214
215msgid "unread"
216msgstr "خوانده‌نشده"
217
218msgid "by date asc"
219msgstr "قدیمی‌ترها بالا"
220
221msgid "by date"
222msgstr "با تاریخ"
223
224msgid "by date desc"
225msgstr "تازه‌ترها بالا"
226
227msgid "by title asc"
228msgstr "با عنوان (الفبایی)"
229
230msgid "by title"
231msgstr "با عنوان"
232
233msgid "by title desc"
234msgstr "با عنوان (الفبایی معکوس)"
235
236msgid "Tag"
237msgstr ""
238
239msgid "No articles found."
240msgstr ""
241
242#, fuzzy
243msgid "Toggle mark as read"
244msgstr "خوانده‌شده/خوانده‌نشده"
245
246msgid "toggle favorite"
247msgstr "جزء بهترین‌ها هست/نیست"
248
249msgid "delete"
250msgstr "پاک‌کردن"
251
252msgid "original"
253msgstr "اصلی"
254
255msgid "estimated reading time:"
256msgstr ""
257
258msgid "mark all the entries as read"
259msgstr ""
260
261msgid "results"
262msgstr "نتایج"
263
264msgid "installation"
265msgstr "نصب"
266
267#, fuzzy
268msgid "install your wallabag"
269msgstr "poche خود را نصب کنید"
270
271#, fuzzy
272msgid "wallabag is still not installed. Please fill the below form to install it. Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation on wallabag website</a>."
273msgstr "poche هنوز نصب نیست. برای نصب لطفاً فرم زیر را پر کنید. خواندن <a href='http://doc.inthepoche.com'>راهنما در وبگاه poche</a> را از یاد نبرید."
274
275msgid "Login"
276msgstr "ورود"
277
278msgid "Repeat your password"
279msgstr "گذرواژه را دوباره وارد کنید"
280
281msgid "Install"
282msgstr "نصب"
283
284#, fuzzy
285msgid "login to your wallabag"
286msgstr "به poche خود وارد شوید"
287
288msgid "Login to wallabag"
289msgstr ""
290
291msgid "you are in demo mode, some features may be disabled."
292msgstr "این تنها نسخهٔ نمایشی است، برخی از ویژگی‌ها کار نمی‌کنند."
293
294msgid "Username"
295msgstr ""
296
297msgid "Stay signed in"
298msgstr "مرا به خاطر بسپار"
299
300msgid "(Do not check on public computers)"
301msgstr "(روی رایانه‌های عمومی این کار را نکنید)"
302
303msgid "Sign in"
304msgstr "ورود"
305
306msgid "favorites"
307msgstr "بهترین‌ها"
308
309msgid "estimated reading time :"
310msgstr ""
311
312msgid "Mark all the entries as read"
313msgstr ""
314
315msgid "Return home"
316msgstr ""
317
318#, fuzzy
319msgid "Back to top"
320msgstr "بازگشت به بالای صفحه"
321
322#, fuzzy
323msgid "Mark as read"
324msgstr "خوانده‌شده/خوانده‌نشده"
325
326#, fuzzy
327msgid "Favorite"
328msgstr "بهترین‌ها"
329
330#, fuzzy
331msgid "Toggle favorite"
332msgstr "جزء بهترین‌ها هست/نیست"
333
334#, fuzzy
335msgid "Delete"
336msgstr "پاک‌کردن"
337
338#, fuzzy
339msgid "Tweet"
340msgstr "توییت"
341
342#, fuzzy
343msgid "Email"
344msgstr "ایمیل"
345
346msgid "shaarli"
347msgstr "shaarli"
348
349msgid "flattr"
350msgstr "flattr"
351
352#, fuzzy
353msgid "Does this article appear wrong?"
354msgstr "این مطلب اشتباه نمایش داده شده؟"
355
356msgid "tags:"
357msgstr ""
358
359msgid "Edit tags"
360msgstr ""
361
362msgid "save link!"
363msgstr ""
364
365msgid "home"
366msgstr "خانه"
367
368msgid "tags"
369msgstr ""
370
371msgid "logout"
372msgstr "بیرون رفتن"
373
374msgid "powered by"
375msgstr "نیروگرفته از"
376
377msgid "debug mode is on so cache is off."
378msgstr "حالت عیب‌یابی فعال است، پس کاشه خاموش است."
379
380#, fuzzy
381msgid "your wallabag version:"
382msgstr "نسخهٔ شما"
383
384msgid "storage:"
385msgstr "ذخیره‌سازی:"
386
387msgid "save a link"
388msgstr ""
389
390msgid "back to home"
391msgstr "بازگشت به خانه"
392
393msgid "toggle mark as read"
394msgstr "خوانده‌شده/خوانده‌نشده"
395
396msgid "tweet"
397msgstr "توییت"
398
399msgid "email"
400msgstr "ایمیل"
401
402msgid "this article appears wrong?"
403msgstr "این مطلب اشتباه نمایش داده شده؟"
404
405msgid "No link available here!"
406msgstr "اینجا پیوندی موجود نیست!"
407
408msgid "Poching a link"
409msgstr "پیوندی را poche کنید"
410
411msgid "by filling this field"
412msgstr "با پرکردن این بخش"
413
414msgid "bookmarklet: drag & drop this link to your bookmarks bar"
415msgstr ""
416
417msgid "your version"
418msgstr "نسخهٔ شما"
419
420msgid "latest stable version"
421msgstr "آخرین نسخهٔ پایدار"
422
423msgid "a more recent stable version is available."
424msgstr "نسخهٔ پایدار تازه‌ای منتشر شده است."
425
426msgid "you are up to date."
427msgstr "شما به‌روز هستید."
428
429msgid "latest dev version"
430msgstr "آخرین نسخهٔ آزمایشی"
431
432msgid "a more recent development version is available."
433msgstr "نسخهٔ آزمایشی تازه‌ای منتشر شده است."
434
435msgid "Please execute the import script locally, it can take a very long time."
436msgstr "لطفاً برنامهٔ درون‌ریزی را به‌طور محلی اجرا کنید، شاید خیلی طول بکشد."
437
438#, fuzzy
439msgid "More infos in the official doc:"
440msgstr "اطلاعات بیشتر در راهنمای رسمی:"
441
442msgid "import from Pocket"
443msgstr "درون‌ریزی از Pocket"
444
445msgid "import from Readability"
446msgstr "درون‌ریزی از Readability"
447
448msgid "import from Instapaper"
449msgstr "درون‌ریزی از Instapaper"
450
451msgid "Tags"
452msgstr ""
453
454#, fuzzy
455msgid "Untitled"
456msgstr "با عنوان"
457
458msgid "the link has been added successfully"
459msgstr ""
460
461msgid "error during insertion : the link wasn't added"
462msgstr ""
463
464msgid "the link has been deleted successfully"
465msgstr ""
466
467msgid "the link wasn't deleted"
468msgstr ""
469
470msgid "Article not found!"
471msgstr ""
472
473msgid "previous"
474msgstr ""
475
476msgid "next"
477msgstr ""
478
479msgid "in demo mode, you can't update your password"
480msgstr ""
481
482msgid "your password has been updated"
483msgstr ""
484
485msgid "the two fields have to be filled & the password must be the same in the two fields"
486msgstr ""
487
488msgid "still using the \""
489msgstr ""
490
491msgid "that theme does not seem to be installed"
492msgstr ""
493
494msgid "you have changed your theme preferences"
495msgstr ""
496
497msgid "that language does not seem to be installed"
498msgstr ""
499
500msgid "you have changed your language preferences"
501msgstr ""
502
503msgid "login failed: you have to fill all fields"
504msgstr ""
505
506msgid "welcome to your wallabag"
507msgstr ""
508
509msgid "login failed: bad login or password"
510msgstr ""
511
512#, fuzzy
513msgid "import from instapaper completed"
514msgstr "درون‌ریزی از Instapaper"
515
516#, fuzzy
517msgid "import from pocket completed"
518msgstr "درون‌ریزی از Pocket"
519
520#, fuzzy
521msgid "import from Readability completed. "
522msgstr "درون‌ریزی از Readability"
523
524#, fuzzy
525msgid "import from Poche completed. "
526msgstr "درون‌ریزی از Pocket"
527
528msgid "Unknown import provider."
529msgstr ""
530
531msgid "Incomplete inc/poche/define.inc.php file, please define \""
532msgstr ""
533
534msgid "Could not find required \""
535msgstr ""
536
537msgid "Uh, there is a problem while generating feeds."
538msgstr ""
539
540#, fuzzy
541msgid "Cache deleted."
542msgstr "پاک‌کردن"
543
544msgid "Oops, it seems you don't have PHP 5."
545msgstr ""
546
547#~ msgid "poche it!"
548#~ msgstr "poche کنید!"
549
550#~ msgid "Updating poche"
551#~ msgstr "به‌روزرسانی poche"
552
553#~ msgid "create an issue"
554#~ msgstr "یک درخواست رفع‌مشکل بنویسید"
555
556#~ msgid "or"
557#~ msgstr "یا"
558
559#~ msgid "contact us by mail"
560#~ msgstr "به ما ایمیل بزنید"
561
562#~ msgid "your poche version:"
563#~ msgstr "نسخهٔ poche شما:"
diff --git a/src/Wallabag/Wallabag/Resources/translations/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo b/src/Wallabag/Wallabag/Resources/translations/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo
deleted file mode 100644
index 83f397a0..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/translations/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po b/src/Wallabag/Wallabag/Resources/translations/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po
deleted file mode 100644
index fef31208..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po
+++ /dev/null
@@ -1,804 +0,0 @@
1msgid ""
2msgstr ""
3"Project-Id-Version: wallabag 1.7.2\n"
4"Report-Msgid-Bugs-To: \n"
5"POT-Creation-Date: 2014-07-26 20:09+0100\n"
6"PO-Revision-Date: \n"
7"Last-Translator: Thomas Citharel <tcit@openmailbox.org>\n"
8"Language-Team: \n"
9"Language: fr_FR\n"
10"MIME-Version: 1.0\n"
11"Content-Type: text/plain; charset=UTF-8\n"
12"Content-Transfer-Encoding: 8bit\n"
13"X-Poedit-KeywordsList: _;gettext;gettext_noop\n"
14"X-Poedit-SourceCharset: UTF-8\n"
15"X-Generator: Poedit 1.5.4\n"
16"Plural-Forms: nplurals=2; plural=(n != 1);\n"
17
18msgid "wallabag, a read it later open source system"
19msgstr "wallabag, un système open source de lecture différé"
20
21msgid "login failed: user doesn't exist"
22msgstr "échec de l'identification : cet utilisateur n'existe pas"
23
24msgid "save link!"
25msgstr "enregistrer le lien !"
26
27msgid "plop"
28msgstr "plop"
29
30msgid "powered by"
31msgstr "propulsé par"
32
33msgid "debug mode is on so cache is off."
34msgstr "le mode de debug est actif, le cache est donc désactivé."
35
36msgid "your wallabag version:"
37msgstr "votre version de wallabag :"
38
39msgid "storage:"
40msgstr "stockage :"
41
42msgid "login to your wallabag"
43msgstr "se connecter à votre wallabag"
44
45msgid "Login to wallabag"
46msgstr "Se connecter à wallabag"
47
48msgid "you are in demo mode, some features may be disabled."
49msgstr ""
50"vous êtes en mode démo, certaines fonctionnalités peuvent être désactivées."
51
52msgid "Username"
53msgstr "Nom d'utilisateur"
54
55msgid "Password"
56msgstr "Mot de passe"
57
58msgid "Stay signed in"
59msgstr "Rester connecté"
60
61msgid "(Do not check on public computers)"
62msgstr "(Ne pas cocher sur un ordinateur public)"
63
64msgid "Sign in"
65msgstr "Se connecter"
66
67msgid "back to home"
68msgstr "retour à l'accueil"
69
70msgid "favorites"
71msgstr "favoris"
72
73msgid "archive"
74msgstr "archive"
75
76msgid "unread"
77msgstr "non lus"
78
79msgid "Tag"
80msgstr "Tag"
81
82msgid "No articles found."
83msgstr "Aucun article trouvé."
84
85msgid "estimated reading time:"
86msgstr "temps de lecture estimé :"
87
88msgid "estimated reading time :"
89msgstr "temps de lecture estimé :"
90
91msgid "Toggle mark as read"
92msgstr "Marquer comme lu / non lu"
93
94msgid "toggle favorite"
95msgstr "marquer / enlever comme favori"
96
97msgid "delete"
98msgstr "supprimer"
99
100msgid "original"
101msgstr "original"
102
103msgid "Mark all the entries as read"
104msgstr "Marquer tous les articles comme lus"
105
106msgid "results"
107msgstr "résultats"
108
109msgid " found for « "
110msgstr "trouvé pour « "
111
112msgid "Only one result found for "
113msgstr "Seulement un résultat trouvé pour "
114
115msgid "config"
116msgstr "configuration"
117
118msgid "Saving articles"
119msgstr "Sauvegarde des articles"
120
121msgid "There are several ways to save an article:"
122msgstr "Il y a plusieurs façons d'enregistrer un article :"
123
124msgid "read the documentation"
125msgstr "lisez la documentation"
126
127msgid "download the extension"
128msgstr "téléchargez l'extension"
129
130msgid "via F-Droid"
131msgstr "via F-Droid"
132
133msgid " or "
134msgstr " ou "
135
136msgid "via Google Play"
137msgstr "via Google PlayStore"
138
139msgid "download the application"
140msgstr "téléchargez l'application"
141
142msgid "By filling this field"
143msgstr "En remplissant ce champ"
144
145msgid "bag it!"
146msgstr "bag it !"
147
148msgid "Bookmarklet: drag & drop this link to your bookmarks bar"
149msgstr "Bookmarklet : glissez-déposez ce lien dans votre barre de favoris"
150
151msgid "Upgrading wallabag"
152msgstr "Mise à jour de wallabag"
153
154msgid "Installed version"
155msgstr "Version installée"
156
157msgid "Latest stable version"
158msgstr "Dernière version stable"
159
160msgid "A more recent stable version is available."
161msgstr "Une version stable plus récente est disponible."
162
163msgid "You are up to date."
164msgstr "Vous êtes à jour."
165
166msgid "Last check:"
167msgstr "Dernière vérification: "
168
169msgid "Latest dev version"
170msgstr "Dernière version de développement"
171
172msgid "A more recent development version is available."
173msgstr "Une version de développement plus récente est disponible."
174
175msgid "You can clear cache to check the latest release."
176msgstr ""
177"Vous pouvez vider le cache pour vérifier que vous avez la dernière version."
178
179msgid "Feeds"
180msgstr "Flux"
181
182msgid ""
183"Your feed token is currently empty and must first be generated to enable "
184"feeds. Click <a href='?feed&amp;action=generate'>here to generate it</a>."
185msgstr ""
186"Votre jeton de flux est actuellement vide et doit d'abord être généré pour "
187"activer les flux. Cliquez <a href='?feed&amp;action=generate'>ici</a> pour "
188"le générer."
189
190msgid "Unread feed"
191msgstr "Flux des non lus"
192
193msgid "Favorites feed"
194msgstr "Flux des favoris"
195
196msgid "Archive feed"
197msgstr "Flux des archives"
198
199msgid "Your token:"
200msgstr "Votre jeton :"
201
202msgid "Your user id:"
203msgstr "Votre ID utilisateur :"
204
205msgid ""
206"You can regenerate your token: <a href='?feed&amp;action=generate'>generate!"
207"</a>."
208msgstr ""
209"Vous pouvez regénérer votre jeton : <a href='?feed&amp;"
210"action=generate'>génération !</a>."
211
212msgid "Change your theme"
213msgstr "Changer votre thème"
214
215msgid "Theme:"
216msgstr "Thème :"
217
218msgid "Update"
219msgstr "Mettre à jour"
220
221msgid "Change your language"
222msgstr "Changer votre langue"
223
224msgid "Language:"
225msgstr "Langue :"
226
227msgid "Change your password"
228msgstr "Modifier votre mot de passe"
229
230msgid "New password:"
231msgstr "Nouveau mot de passe :"
232
233msgid "Repeat your new password:"
234msgstr "Répétez votre nouveau mot de passe :"
235
236msgid "Import"
237msgstr "Importer"
238
239msgid ""
240"You can import your Pocket, Readability, Instapaper, Wallabag or any data in "
241"appropriate json or html format."
242msgstr ""
243"Vous pouvez importer depuis Pocket, Readability, Instapaper, wallabag, ou "
244"n'importe quel fichier au format JSON ou HTML approprié."
245
246msgid ""
247"Please select export file on your computer and press \"Import\" button below."
248"<br>Wallabag will parse your file, insert all URLs and start fetching of "
249"articles if required.<br>Fetching process is controlled by two constants in "
250"your config file: IMPORT_LIMIT (how many articles are fetched at once) and "
251"IMPORT_DELAY (delay between fetch of next batch of articles)."
252msgstr ""
253"Sélectionnez le fichier à importer sur votre disque dur, et pressez la "
254"bouton « Importer » ci-dessous.<br />wallabag analysera votre fichier, "
255"ajoutera toutes les URL trouvées et commencera à télécharger les contenus si "
256"nécessaire.<br />Le processus de téléchargement est contrôlé par deux "
257"constantes dans votre fichier de configuration:<wbr /><code>IMPORT_LIMIT</"
258"code> (nombre d'éléments téléchargés à la fois) et <code>IMPORT_DELAY</code> "
259"(le délai d'attente entre deux séquences de téléchargement)."
260
261msgid "File:"
262msgstr "Fichier : "
263
264msgid "You can click here to fetch content for articles with no content."
265msgstr ""
266"Vous pouvez cliquer ici pour télécharger le contenu des articles vides."
267
268msgid "Export your wallabag data"
269msgstr "Exporter vos données de wallabag"
270
271msgid "Click here"
272msgstr "Cliquez ici"
273
274msgid "to download your database."
275msgstr "pour télécharger votre base de données."
276
277msgid "to export your wallabag data."
278msgstr "pour exporter vos données de wallabag."
279
280msgid "Cache"
281msgstr "Cache"
282
283msgid "to delete cache."
284msgstr "pour effacer le cache."
285
286msgid "Add user"
287msgstr "Ajouter un utilisateur"
288
289msgid "Add a new user :"
290msgstr "Ajouter un nouvel utilisateur : "
291
292msgid "Login for new user"
293msgstr "Identifiant du nouvel utilisateur"
294
295msgid "Login"
296msgstr "Nom d'utilisateur"
297
298msgid "Password for new user"
299msgstr "Mot de passe du nouvel utilisateur"
300
301msgid "Email for new user (not required)"
302msgstr "E-mail pour le nouvel utilisateur (facultatif)"
303
304msgid "Send"
305msgstr "Envoyer"
306
307msgid "Delete account"
308msgstr "Supprimer le compte"
309
310msgid "You can delete your account by entering your password and validating."
311msgstr ""
312"Vous pouvez supprimer votre compte en entrant votre mot de passe et en "
313"validant."
314
315msgid "Be careful, data will be erased forever (that is a very long time)."
316msgstr "Attention, les données seront perdues pour toujours."
317
318msgid "Type here your password"
319msgstr "Entrez votre mot de passe ici"
320
321msgid "You are the only user, you cannot delete your own account."
322msgstr ""
323"Vous êtes l'unique utilisateur, vous ne pouvez pas supprimer votre compte."
324
325msgid ""
326"To completely remove wallabag, delete the wallabag folder on your web server "
327"(and eventual databases)."
328msgstr ""
329"Pour désinstaller complètement wallabag, supprimez le répertoire "
330"<code>wallabag</code> de votre serveur Web (ainsi que les bases de données "
331"éventuelles)."
332
333msgid "Save a link"
334msgstr "Ajouter un lien"
335
336msgid "Return home"
337msgstr "Retour accueil"
338
339msgid "Back to top"
340msgstr "Haut de page"
341
342msgid "Mark as read"
343msgstr "Marquer comme lu"
344
345msgid "Favorite"
346msgstr "Favoris"
347
348msgid "Toggle favorite"
349msgstr "Marquer / enlever comme favori"
350
351msgid "Delete"
352msgstr "Effacer"
353
354msgid "Tweet"
355msgstr "Tweet"
356
357msgid "Email"
358msgstr "E-mail"
359
360msgid "shaarli"
361msgstr "Shaarli"
362
363msgid "flattr"
364msgstr "Flattr"
365
366msgid "Print"
367msgstr "Imprimer"
368
369msgid "Does this article appear wrong?"
370msgstr "Cet article s'affiche mal ?"
371
372msgid "tags:"
373msgstr "tags :"
374
375msgid "Add tags:"
376msgstr "Ajouter des tags :"
377
378msgid "no tags"
379msgstr "pas de tags"
380
381msgid "The tag has been applied successfully"
382msgstr "Le tag a été appliqué avec succès"
383
384msgid "interview"
385msgstr "interview"
386
387msgid "editorial"
388msgstr "éditorial"
389
390msgid "video"
391msgstr "vidéo"
392
393msgid "Edit tags"
394msgstr "Modifier les tags"
395
396msgid "favoris"
397msgstr "favoris"
398
399msgid "mark all the entries as read"
400msgstr "marquer tous les articles comme lus"
401
402msgid "toggle view mode"
403msgstr "changer de mode de visualisation"
404
405msgid "return home"
406msgstr "retour à l'accueil"
407
408msgid "Poching a link"
409msgstr "Enregistrer un lien"
410
411msgid "by filling this field"
412msgstr "en remplissant ce champ"
413
414msgid "bookmarklet: drag & drop this link to your bookmarks bar"
415msgstr "bookmarklet : glissez-déposez ce lien dans votre barre de favoris"
416
417msgid "your version"
418msgstr "votre version"
419
420msgid "latest stable version"
421msgstr "dernière version stable"
422
423msgid "a more recent stable version is available."
424msgstr "une version stable plus récente est disponible."
425
426msgid "you are up to date."
427msgstr "vous êtes à jour."
428
429msgid "latest dev version"
430msgstr "dernière version de développement"
431
432msgid "a more recent development version is available."
433msgstr "une version de développement plus récente est disponible."
434
435msgid "Please execute the import script locally, it can take a very long time."
436msgstr ""
437"Merci d'exécuter le script d'importation en local car cela peut prendre du "
438"temps."
439
440msgid "More infos in the official doc:"
441msgstr "Plus d'infos dans la documentation officielle :"
442
443msgid "import from Pocket"
444msgstr "importer depuis Pocket"
445
446#, php-format
447msgid "(you must have a %s file on your server)"
448msgstr "(le fichier %s doit être présent sur le serveur)"
449
450msgid "import from Readability"
451msgstr "importer depuis Readability"
452
453msgid "import from Instapaper"
454msgstr "importer depuis Instapaper"
455
456msgid "Start typing for auto complete."
457msgstr "Commencez à taper pour activer l'auto-complétion."
458
459msgid "You can enter multiple tags, separated by commas."
460msgstr "Vous pouvez entrer plusieurs tags, séparés par des virgules."
461
462msgid "return to article"
463msgstr "retourner à l'article"
464
465msgid "by date asc"
466msgstr "par date asc"
467
468msgid "by date"
469msgstr "par date"
470
471msgid "by date desc"
472msgstr "par date desc"
473
474msgid "by title asc"
475msgstr "par titre asc"
476
477msgid "by title"
478msgstr "par titre"
479
480msgid "by title desc"
481msgstr "par titre desc"
482
483msgid "home"
484msgstr "accueil"
485
486msgid "tags"
487msgstr "tags"
488
489msgid "save a link"
490msgstr "sauver un lien"
491
492msgid "search"
493msgstr "rechercher"
494
495msgid "logout"
496msgstr "déconnexion"
497
498msgid "installation"
499msgstr "installation"
500
501msgid "install your wallabag"
502msgstr "installez votre wallabag"
503
504msgid ""
505"wallabag is still not installed. Please fill the below form to install it. "
506"Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation "
507"on wallabag website</a>."
508msgstr ""
509"wallabag n'est pas encore installé. Merci de remplir le formulaire suivant "
510"pour l'installer. N'hésitez pas à <a href='http://doc.wallabag.org'>lire la "
511"documentation sur le site de wallabag</a>."
512
513msgid "Repeat your password"
514msgstr "Répétez votre mot de passe"
515
516msgid "Install"
517msgstr "Installer"
518
519msgid ""
520"You can <a href='wallabag_compatibility_test.php'>check your configuration "
521"here</a>."
522msgstr ""
523"Vous pouvez vérifier votre configuration <a "
524"href='wallabag_compatibility_test.php'>ici</a>."
525
526msgid "Tags"
527msgstr "Tags"
528
529msgid "No link available here!"
530msgstr "Aucun lien n'est disponible ici !"
531
532msgid "toggle mark as read"
533msgstr "marquer comme lu / non lu"
534
535msgid "tweet"
536msgstr "tweet"
537
538msgid "email"
539msgstr "e-mail"
540
541msgid "this article appears wrong?"
542msgstr "cet article s'affiche mal ?"
543
544msgid "Search"
545msgstr "Rechercher"
546
547msgid "Download required for "
548msgstr "Téléchargement requis pour "
549
550msgid "records"
551msgstr " articles"
552
553msgid "Downloading next "
554msgstr "Téléchargement des "
555
556msgid "articles, please wait"
557msgstr " articles suivants, veuillez patienter..."
558
559msgid "Enter your search here"
560msgstr "Entrez votre recherche ici"
561
562#, php-format
563msgid ""
564"The new user %s has been installed. Do you want to <a href=\"?logout"
565"\">logout ?</a>"
566msgstr ""
567"Le nouvel utilisateur « %s » a été ajouté. Voulez-vous vous <a href=\"?"
568"logout\">déconnecter ?</a>"
569
570#, php-format
571msgid "Error : An user with the name %s already exists !"
572msgstr "Erreur : Un utilisateur avec le nom « %s » existe déjà !"
573
574#, php-format
575msgid "User %s has been successfully deleted !"
576msgstr "L'utilisateur « %s » a été supprimé avec succès !"
577
578msgid "Error : The password is wrong !"
579msgstr "Erreur : le mot de passe est incorrect !"
580
581msgid "Error : You are the only user, you cannot delete your account !"
582msgstr ""
583"Erreur : Vous êtes l'unique utilisateur, vous ne pouvez pas supprimer votre "
584"compte !"
585
586msgid "Untitled"
587msgstr "Sans titre"
588
589msgid "the link has been added successfully"
590msgstr "le lien a été ajouté avec succès"
591
592msgid "error during insertion : the link wasn't added"
593msgstr "erreur pendant l'insertion : le lien n'a pas été ajouté"
594
595msgid "the link has been deleted successfully"
596msgstr "le lien a été effacé avec succès"
597
598msgid "the link wasn't deleted"
599msgstr "le lien n'a pas été effacé"
600
601msgid "Article not found!"
602msgstr "Article non trouvé !"
603
604msgid "previous"
605msgstr "précédent"
606
607msgid "next"
608msgstr "suivant"
609
610msgid "in demo mode, you can't update your password"
611msgstr "en mode démo, vous ne pouvez pas mettre à jour votre mot de passe"
612
613msgid "your password has been updated"
614msgstr "votre mot de passe a été mis à jour"
615
616msgid ""
617"the two fields have to be filled & the password must be the same in the two "
618"fields"
619msgstr ""
620"les deux champs doivent être remplis & le mot de passe doit être le même "
621"dans les deux"
622
623msgid "still using the \""
624msgstr "vous utilisez toujours \""
625
626msgid "that theme does not seem to be installed"
627msgstr "ce thème ne semble pas installé"
628
629msgid "you have changed your theme preferences"
630msgstr "vous avez changé vos préférences de thème"
631
632msgid "that language does not seem to be installed"
633msgstr "cette langue ne semble pas être installée"
634
635msgid "you have changed your language preferences"
636msgstr "vous avez changé vos préférences de langue"
637
638msgid "login failed: you have to fill all fields"
639msgstr "échec de l'identification : vous devez remplir tous les champs"
640
641msgid "welcome to your wallabag"
642msgstr "bienvenue dans votre wallabag"
643
644msgid "login failed: bad login or password"
645msgstr "échec de l'identification : mauvais identifiant ou mot de passe"
646
647msgid "Untitled - Import - "
648msgstr "Sans titre - Importer - "
649
650msgid "click to finish import"
651msgstr "cliquez pour terminer l'importation"
652
653msgid "Articles inserted: "
654msgstr "Articles ajoutés : "
655
656msgid ". Please note, that some may be marked as \"read\"."
657msgstr ". Notez que certains pourraient être marqués comme \"lus\"."
658
659msgid "Import finished."
660msgstr "Importation terminée."
661
662msgid "Undefined"
663msgstr "Non défini"
664
665msgid "User with this id ("
666msgstr "Utilisateur avec cet identifiant ("
667
668msgid "Uh, there is a problem while generating feeds."
669msgstr "Hum, il y a un problème lors de la génération des flux."
670
671msgid "Cache deleted."
672msgstr "Cache effacé."
673
674msgid "Oops, it seems you don't have PHP 5."
675msgstr "Oups, vous ne semblez pas avoir PHP 5."
676
677msgid "Tag these results as"
678msgstr "Appliquer à ces résultats le tag"
679
680# ebook
681msgid "Fancy an E-Book ?"
682msgstr "Envie d'un E-Book ?"
683
684msgid "Click to get all your articles in one ebook :"
685msgstr "Cliquez pour obtenir tous vos articles dans un E-Book :"
686
687msgid "Generate ePub file"
688msgstr "Générer fichier ePub"
689
690msgid "Generate Mobi file"
691msgstr "Générer fichier Mobi"
692
693msgid "Generate PDF file"
694msgstr "Générer fichier PDF"
695
696msgid ""
697"This can <b>take a while</b> and can <b>even fail</b> if you have too many "
698"articles, depending on your server configuration."
699msgstr ""
700"Ceci peut <b>prendre un moment</b> et même <b>échouer</b> si vous avez trop "
701"d'articles, selon la configuration matérielle de votre serveur."
702
703msgid "Download the articles from this tag in an epub"
704msgstr "Télécharger les articles de ce tag dans un epub"
705
706msgid "Download the articles from this search in an epub"
707msgstr "Télécharger les articles de cette recherche dans un epub"
708
709msgid "Download the articles from this category in an epub"
710msgstr "Télécharger les articles de cette catégorie dans un epub"
711
712msgid "Download the articles from this tag in an ePub file"
713msgstr "Télécharger les articles de ce tag dans un fichier ePub"
714
715msgid "Download the articles from this tag in an Mobi file"
716msgstr "Télécharger les articles de ce tag dans un fichier Mobi"
717
718msgid "Download the articles from this tag in an PDF file"
719msgstr "Télécharger les articles de ce tag dans un fichier PDF"
720
721msgid "Download the articles from this search in an ePub"
722msgstr "Télécharger les articles de cette recherche dans un fichier ePub"
723
724msgid "Download the articles from this search in a Mobi file"
725msgstr "Télécharger les articles de cette recherche dans un fichier Mobi"
726
727msgid "Download the articles from this search in a PDF file"
728msgstr "Télécharger les articles de cette recherche dans un fichier PDF"
729
730msgid "Download the articles from this category in an ePub"
731msgstr "Télécharger les articles de cette catégorie dans un fichier ePub"
732
733msgid "Download the articles from this category in a Mobi file"
734msgstr "Télécharger les articles de cette catégorie dans un fichier Mobi"
735
736msgid "Download the articles from this category in a PDF file"
737msgstr "Télécharger les articles de cette catégorie dans un fichier PDF"
738
739msgid "Download as ePub3"
740msgstr "Télécharger en ePub3"
741
742msgid "Download as Mobi"
743msgstr "Télécharger en Mobi"
744
745msgid "Download as PDF"
746msgstr "Télécharger en PDF"
747
748msgid "All my articles on %s"
749msgstr "Tous mes articles le %s"
750
751msgid "Allarticles"
752msgstr "TousArticles"
753
754msgid "Articles tagged %s"
755msgstr "Articles avec le tag %s"
756
757msgid "Tag %s"
758msgstr "Tag %s"
759
760msgid "Articles in category %s"
761msgstr "Articles de la catégorie %s"
762
763msgid "Category %s"
764msgstr "Catégorie %s"
765
766msgid "Articles for search %s"
767msgstr "Articles pour la recherche %s"
768
769msgid "Search %s"
770msgstr "Recherche %s"
771
772msgid "wallabag articles book"
773msgstr "Livre d'articles issus de wallabag"
774
775msgid "Some articles saved on my wallabag"
776msgstr "Des articles sauvegardés sur wallabag"
777
778msgid "Produced by wallabag with PHPePub"
779msgstr "Produit par wallabag avec PHPePub"
780
781msgid ""
782"Please open <a href='https://github.com/wallabag/wallabag/issues'>an issue</"
783"a> if you have trouble with the display of this E-Book on your device."
784msgstr ""
785"Merci d'ouvrir <a href='https://github.com/wallabag/wallabag/issues'>un "
786"ticket</a> si vous avez des problèmes d'affichage de cet E-Book sur votre "
787"appareil."
788
789msgid "Produced by wallabag with PHPMobi"
790msgstr "Produit par wallabag avec PHPMobi"
791
792msgid "Mail function is disabled. You can't send emails from your server"
793msgstr ""
794"La fonction mail est désactivée. Vous ne pouvez pas envoyer d'E-mails depuis "
795"votre serveur"
796
797msgid "You didn't set your kindle's email adress !"
798msgstr "Vous n'avez pas renseigné l'adresse E-mail de votre Kindle !"
799
800msgid "The email has been sent to your kindle !"
801msgstr "L'E-mail a été envoyé à votre Kindle !"
802
803msgid "Produced by wallabag with mPDF"
804msgstr "Produit par wallabag avec mPDF"
diff --git a/src/Wallabag/Wallabag/Resources/translations/it_IT.utf8/LC_MESSAGES/it_IT.utf8.mo b/src/Wallabag/Wallabag/Resources/translations/it_IT.utf8/LC_MESSAGES/it_IT.utf8.mo
deleted file mode 100644
index 42e26ba0..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/it_IT.utf8/LC_MESSAGES/it_IT.utf8.mo
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/translations/it_IT.utf8/LC_MESSAGES/it_IT.utf8.po b/src/Wallabag/Wallabag/Resources/translations/it_IT.utf8/LC_MESSAGES/it_IT.utf8.po
deleted file mode 100644
index 41cc01e0..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/it_IT.utf8/LC_MESSAGES/it_IT.utf8.po
+++ /dev/null
@@ -1,568 +0,0 @@
1#
2# Translators:
3# Damtux <sun_lion@live.com>, 2013
4msgid ""
5msgstr ""
6"Project-Id-Version: poche\n"
7"Report-Msgid-Bugs-To: \n"
8"POT-Creation-Date: 2014-02-25 15:13+0300\n"
9"PO-Revision-Date: 2014-02-25 15:13+0300\n"
10"Last-Translator: Maryana <mariroz@mr.lviv.ua>\n"
11"Language-Team: Italian (http://www.transifex.com/projects/p/poche/language/it/)\n"
12"Language: it\n"
13"MIME-Version: 1.0\n"
14"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Transfer-Encoding: 8bit\n"
16"Plural-Forms: nplurals=2; plural=(n != 1);\n"
17"X-Generator: Poedit 1.5.4\n"
18"X-Poedit-Language: Italian\n"
19"X-Poedit-Country: ITALY\n"
20"X-Poedit-Basepath: .\n"
21"X-Poedit-SearchPath-0: /home/mariroz/_DEV/web/wallabag/wallabag-master-testing\n"
22
23msgid "wallabag, a read it later open source system"
24msgstr ""
25
26msgid "login failed: user doesn't exist"
27msgstr ""
28
29msgid "return home"
30msgstr ""
31
32msgid "config"
33msgstr "configurazione"
34
35msgid "Saving articles"
36msgstr ""
37
38msgid "There are several ways to save an article:"
39msgstr ""
40
41msgid "read the documentation"
42msgstr "leggi la documentazione"
43
44msgid "download the extension"
45msgstr ""
46
47msgid "via F-Droid"
48msgstr ""
49
50msgid " or "
51msgstr ""
52
53msgid "via Google Play"
54msgstr ""
55
56msgid "download the application"
57msgstr ""
58
59#, fuzzy
60msgid "By filling this field"
61msgstr "compilando questo campo"
62
63msgid "bag it!"
64msgstr ""
65
66msgid "Bookmarklet: drag & drop this link to your bookmarks bar"
67msgstr ""
68
69msgid "Upgrading wallabag"
70msgstr ""
71
72#, fuzzy
73msgid "Installed version"
74msgstr "ultima versione stabile"
75
76#, fuzzy
77msgid "Latest stable version"
78msgstr "ultima versione stabile"
79
80#, fuzzy
81msgid "A more recent stable version is available."
82msgstr "è disponibile una versione stabile più recente."
83
84#, fuzzy
85msgid "You are up to date."
86msgstr "sei aggiornato."
87
88#, fuzzy
89msgid "Latest dev version"
90msgstr "ultima versione di sviluppo"
91
92#, fuzzy
93msgid "A more recent development version is available."
94msgstr "è disponibile una versione di sviluppo più recente."
95
96msgid "Feeds"
97msgstr ""
98
99msgid "Your feed token is currently empty and must first be generated to enable feeds. Click <a href='?feed&amp;action=generate'>here to generate it</a>."
100msgstr ""
101
102msgid "Unread feed"
103msgstr ""
104
105#, fuzzy
106msgid "Favorites feed"
107msgstr "preferiti"
108
109#, fuzzy
110msgid "Archive feed"
111msgstr "archivio"
112
113msgid "Your token:"
114msgstr ""
115
116msgid "Your user id:"
117msgstr ""
118
119msgid "You can regenerate your token: <a href='?feed&amp;action=generate'>generate!</a>."
120msgstr ""
121
122#, fuzzy
123msgid "Change your theme"
124msgstr "Cambia la tua password"
125
126msgid "Theme:"
127msgstr ""
128
129msgid "Update"
130msgstr "Aggiorna"
131
132#, fuzzy
133msgid "Change your language"
134msgstr "Cambia la tua password"
135
136msgid "Language:"
137msgstr ""
138
139msgid "Change your password"
140msgstr "Cambia la tua password"
141
142msgid "New password:"
143msgstr "Nuova password:"
144
145msgid "Password"
146msgstr "Password"
147
148msgid "Repeat your new password:"
149msgstr "Ripeti la nuova password:"
150
151msgid "Import"
152msgstr "Importa"
153
154#, fuzzy
155msgid "Please execute the import script locally as it can take a very long time."
156msgstr "Si prega di eseguire lo script di importazione a livello locale, può richiedere un tempo molto lungo."
157
158#, fuzzy
159msgid "More info in the official documentation:"
160msgstr "Maggiori info nella documentazione ufficiale"
161
162#, fuzzy
163msgid "Import from Pocket"
164msgstr "Importa da Pocket"
165
166#, php-format
167msgid "(you must have a %s file on your server)"
168msgstr ""
169
170#, fuzzy
171msgid "Import from Readability"
172msgstr "Importa da Readability"
173
174#, fuzzy
175msgid "Import from Instapaper"
176msgstr "Importa da Instapaper"
177
178#, fuzzy
179msgid "Import from wallabag"
180msgstr "Importa da Readability"
181
182#, fuzzy
183msgid "Export your wallabag data"
184msgstr "Esporta i tuoi dati di poche"
185
186msgid "Click here"
187msgstr "Fai clic qui"
188
189msgid "to download your database."
190msgstr ""
191
192#, fuzzy
193msgid "to export your wallabag data."
194msgstr "per esportare i tuoi dati di poche."
195
196msgid "Cache"
197msgstr ""
198
199msgid "to delete cache."
200msgstr ""
201
202msgid "You can enter multiple tags, separated by commas."
203msgstr ""
204
205msgid "return to article"
206msgstr ""
207
208msgid "plop"
209msgstr "plop"
210
211msgid "You can <a href='wallabag_compatibility_test.php'>check your configuration here</a>."
212msgstr ""
213
214msgid "favoris"
215msgstr "preferiti"
216
217msgid "archive"
218msgstr "archivio"
219
220msgid "unread"
221msgstr "non letti"
222
223msgid "by date asc"
224msgstr "per data cresc"
225
226msgid "by date"
227msgstr "per data"
228
229msgid "by date desc"
230msgstr "per data decr"
231
232msgid "by title asc"
233msgstr "per titolo cresc"
234
235msgid "by title"
236msgstr "per titolo"
237
238msgid "by title desc"
239msgstr "per titolo decr"
240
241msgid "Tag"
242msgstr ""
243
244msgid "No articles found."
245msgstr ""
246
247#, fuzzy
248msgid "Toggle mark as read"
249msgstr "segna come letto / non letto"
250
251msgid "toggle favorite"
252msgstr "segna come preferito"
253
254msgid "delete"
255msgstr "elimina"
256
257msgid "original"
258msgstr "originale"
259
260msgid "estimated reading time:"
261msgstr ""
262
263msgid "mark all the entries as read"
264msgstr ""
265
266msgid "results"
267msgstr "risultati"
268
269msgid "installation"
270msgstr "installazione"
271
272#, fuzzy
273msgid "install your wallabag"
274msgstr "installa il tuo poche"
275
276#, fuzzy
277msgid "wallabag is still not installed. Please fill the below form to install it. Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation on wallabag website</a>."
278msgstr "poche non è ancora installato. Si prega di riempire il modulo sottostante per completare l'installazione. <a href='http://doc.inthepoche.com'>Leggere la documentazione sul sito di poche</a>."
279
280msgid "Login"
281msgstr "Nome utente"
282
283msgid "Repeat your password"
284msgstr "Ripeti la tua password"
285
286msgid "Install"
287msgstr "Installa"
288
289#, fuzzy
290msgid "login to your wallabag"
291msgstr "accedi al tuo poche"
292
293msgid "Login to wallabag"
294msgstr ""
295
296msgid "you are in demo mode, some features may be disabled."
297msgstr "sei in modalità dimostrazione, alcune funzionalità potrebbero essere disattivate."
298
299msgid "Username"
300msgstr ""
301
302msgid "Stay signed in"
303msgstr "Resta connesso"
304
305msgid "(Do not check on public computers)"
306msgstr "(non selezionare su computer pubblici)"
307
308msgid "Sign in"
309msgstr "Accedi"
310
311msgid "favorites"
312msgstr "preferiti"
313
314msgid "estimated reading time :"
315msgstr ""
316
317msgid "Mark all the entries as read"
318msgstr ""
319
320msgid "Return home"
321msgstr ""
322
323#, fuzzy
324msgid "Back to top"
325msgstr "torna a inizio pagina"
326
327#, fuzzy
328msgid "Mark as read"
329msgstr "segna come letto / non letto"
330
331#, fuzzy
332msgid "Favorite"
333msgstr "preferiti"
334
335#, fuzzy
336msgid "Toggle favorite"
337msgstr "segna come preferito"
338
339#, fuzzy
340msgid "Delete"
341msgstr "elimina"
342
343#, fuzzy
344msgid "Tweet"
345msgstr "twitta"
346
347#, fuzzy
348msgid "Email"
349msgstr "email"
350
351msgid "shaarli"
352msgstr "shaarli"
353
354msgid "flattr"
355msgstr "flattr"
356
357#, fuzzy
358msgid "Does this article appear wrong?"
359msgstr "articolo non visualizzato correttamente?"
360
361msgid "tags:"
362msgstr ""
363
364msgid "Edit tags"
365msgstr ""
366
367msgid "save link!"
368msgstr ""
369
370msgid "home"
371msgstr "home"
372
373msgid "tags"
374msgstr ""
375
376msgid "logout"
377msgstr "esci"
378
379msgid "powered by"
380msgstr "realizzato con"
381
382msgid "debug mode is on so cache is off."
383msgstr "modalità di debug attiva, cache disattivata."
384
385#, fuzzy
386msgid "your wallabag version:"
387msgstr "la tua versione"
388
389msgid "storage:"
390msgstr "memoria:"
391
392msgid "save a link"
393msgstr ""
394
395msgid "back to home"
396msgstr "torna alla home"
397
398msgid "toggle mark as read"
399msgstr "segna come letto / non letto"
400
401msgid "tweet"
402msgstr "twitta"
403
404msgid "email"
405msgstr "email"
406
407msgid "this article appears wrong?"
408msgstr "articolo non visualizzato correttamente?"
409
410msgid "No link available here!"
411msgstr "Nessun link disponibile!"
412
413msgid "Poching a link"
414msgstr "Pochare un link"
415
416msgid "by filling this field"
417msgstr "compilando questo campo"
418
419msgid "bookmarklet: drag & drop this link to your bookmarks bar"
420msgstr ""
421
422msgid "your version"
423msgstr "la tua versione"
424
425msgid "latest stable version"
426msgstr "ultima versione stabile"
427
428msgid "a more recent stable version is available."
429msgstr "è disponibile una versione stabile più recente."
430
431msgid "you are up to date."
432msgstr "sei aggiornato."
433
434msgid "latest dev version"
435msgstr "ultima versione di sviluppo"
436
437msgid "a more recent development version is available."
438msgstr "è disponibile una versione di sviluppo più recente."
439
440msgid "Please execute the import script locally, it can take a very long time."
441msgstr "Si prega di eseguire lo script di importazione a livello locale, può richiedere un tempo molto lungo."
442
443#, fuzzy
444msgid "More infos in the official doc:"
445msgstr "Maggiori info nella documentazione ufficiale"
446
447msgid "import from Pocket"
448msgstr "Importa da Pocket"
449
450msgid "import from Readability"
451msgstr "Importa da Readability"
452
453msgid "import from Instapaper"
454msgstr "Importa da Instapaper"
455
456msgid "Tags"
457msgstr ""
458
459#, fuzzy
460msgid "Untitled"
461msgstr "per titolo"
462
463msgid "the link has been added successfully"
464msgstr ""
465
466msgid "error during insertion : the link wasn't added"
467msgstr ""
468
469msgid "the link has been deleted successfully"
470msgstr ""
471
472msgid "the link wasn't deleted"
473msgstr ""
474
475msgid "Article not found!"
476msgstr ""
477
478msgid "previous"
479msgstr ""
480
481msgid "next"
482msgstr ""
483
484msgid "in demo mode, you can't update your password"
485msgstr ""
486
487msgid "your password has been updated"
488msgstr ""
489
490msgid "the two fields have to be filled & the password must be the same in the two fields"
491msgstr ""
492
493msgid "still using the \""
494msgstr ""
495
496msgid "that theme does not seem to be installed"
497msgstr ""
498
499msgid "you have changed your theme preferences"
500msgstr ""
501
502msgid "that language does not seem to be installed"
503msgstr ""
504
505msgid "you have changed your language preferences"
506msgstr ""
507
508msgid "login failed: you have to fill all fields"
509msgstr ""
510
511msgid "welcome to your wallabag"
512msgstr ""
513
514msgid "login failed: bad login or password"
515msgstr ""
516
517#, fuzzy
518msgid "import from instapaper completed"
519msgstr "Importa da Instapaper"
520
521#, fuzzy
522msgid "import from pocket completed"
523msgstr "Importa da Pocket"
524
525#, fuzzy
526msgid "import from Readability completed. "
527msgstr "Importa da Readability"
528
529#, fuzzy
530msgid "import from Poche completed. "
531msgstr "Importa da Pocket"
532
533msgid "Unknown import provider."
534msgstr ""
535
536msgid "Incomplete inc/poche/define.inc.php file, please define \""
537msgstr ""
538
539msgid "Could not find required \""
540msgstr ""
541
542msgid "Uh, there is a problem while generating feeds."
543msgstr ""
544
545#, fuzzy
546msgid "Cache deleted."
547msgstr "elimina"
548
549msgid "Oops, it seems you don't have PHP 5."
550msgstr ""
551
552#~ msgid "poche it!"
553#~ msgstr "pochalo!"
554
555#~ msgid "Updating poche"
556#~ msgstr "Aggiornamento poche"
557
558#~ msgid "create an issue"
559#~ msgstr "crea una segnalazione"
560
561#~ msgid "or"
562#~ msgstr "oppure"
563
564#~ msgid "contact us by mail"
565#~ msgstr "contattaci via email"
566
567#~ msgid "your poche version:"
568#~ msgstr "la tua versione di poche:"
diff --git a/src/Wallabag/Wallabag/Resources/translations/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.mo b/src/Wallabag/Wallabag/Resources/translations/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.mo
deleted file mode 100644
index 297516c0..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.mo
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/translations/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.po b/src/Wallabag/Wallabag/Resources/translations/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.po
deleted file mode 100755
index e39156e6..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.po
+++ /dev/null
@@ -1,553 +0,0 @@
1msgid ""
2msgstr ""
3"Project-Id-Version: wallabag\n"
4"Report-Msgid-Bugs-To: \n"
5"POT-Creation-Date: 2014-02-25 15:17+0300\n"
6"PO-Revision-Date: \n"
7"Last-Translator: skibbipl <skibbipl@users.noreply.github.com>\n"
8"Language-Team: \n"
9"Language: pl\n"
10"MIME-Version: 1.0\n"
11"Content-Type: text/plain; charset=UTF-8\n"
12"Content-Transfer-Encoding: 8bit\n"
13"X-Generator: Poedit 1.6.6\n"
14"X-Poedit-Basepath: .\n"
15"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
16"|| n%100>=20) ? 1 : 2);\n"
17"X-Poedit-SourceCharset: UTF-8\n"
18"X-Poedit-SearchPath-0: /home/mariroz/_DEV/web/wallabag/wallabag-master-"
19"testing\n"
20
21msgid "wallabag, a read it later open source system"
22msgstr "wallabag, open source'owy system typu \"przeczytaj to później\""
23
24msgid "login failed: user doesn't exist"
25msgstr "logowanie się nie powiodło: użytkownik nie istnieje"
26
27msgid "return home"
28msgstr "powrót do strony domowej"
29
30msgid "config"
31msgstr "konfiguracja"
32
33msgid "Saving articles"
34msgstr "Zapisywanie artykułów"
35
36msgid "There are several ways to save an article:"
37msgstr "Istnieje kilka sposobów aby zapisać artykuł:"
38
39msgid "read the documentation"
40msgstr "przeczytaj dokumentację"
41
42msgid "download the extension"
43msgstr "pobierz rozszerzenie"
44
45msgid "via F-Droid"
46msgstr "przez F-Droid"
47
48msgid " or "
49msgstr "albo "
50
51msgid "via Google Play"
52msgstr "przez Google Play"
53
54msgid "download the application"
55msgstr "pobierz aplikację"
56
57msgid "By filling this field"
58msgstr "Poprzez wypełnienie tego pola"
59
60msgid "bag it!"
61msgstr "zapisz!"
62
63msgid "Bookmarklet: drag & drop this link to your bookmarks bar"
64msgstr "Skryptozakładka: przeciągnij i upuść ten link na twój pasek zakładek"
65
66msgid "Upgrading wallabag"
67msgstr "Aktualizacja wallabag"
68
69msgid "Installed version"
70msgstr "Zainstalowana wersja"
71
72msgid "Latest stable version"
73msgstr "Najnowsza stabilna wersja"
74
75msgid "A more recent stable version is available."
76msgstr "Nowsza stabilna wersja jest dostępna."
77
78msgid "You are up to date."
79msgstr "Posiadasz najnowszą wersję."
80
81msgid "Latest dev version"
82msgstr "Najnowsza wersja developerska"
83
84msgid "A more recent development version is available."
85msgstr "Nowsza developerska wersja jest dostępna."
86
87msgid "Feeds"
88msgstr "Kanały"
89
90msgid ""
91"Your feed token is currently empty and must first be generated to enable "
92"feeds. Click <a href='?feed&amp;action=generate'>here to generate it</a>."
93msgstr ""
94"Twój token kanału jest aktualnie pusty i musi zostać wygenerowany, aby "
95"włączyć kanały. Kliknij <a href='?feed&amp;action=generate'>tutaj, aby go "
96"wygenerować</a>."
97
98msgid "Unread feed"
99msgstr "Nieprzeczytane kanały"
100
101msgid "Favorites feed"
102msgstr "Ulubione kanały"
103
104msgid "Archive feed"
105msgstr "Kanały archiwum"
106
107msgid "Your token:"
108msgstr "Twój token:"
109
110msgid "Your user id:"
111msgstr "Twój id użytkownika:"
112
113msgid ""
114"You can regenerate your token: <a href='?feed&amp;action=generate'>generate!"
115"</a>."
116msgstr ""
117"Możesz wygenewrować ponownie swój token: <a href='?feed&amp;"
118"action=generate'>generuj!</a>."
119
120msgid "Change your theme"
121msgstr "Zmień swój motyw"
122
123msgid "Theme:"
124msgstr "Motyw:"
125
126msgid "Update"
127msgstr "Aktualizuj"
128
129msgid "Change your language"
130msgstr "Zmień język"
131
132msgid "Language:"
133msgstr "Język:"
134
135msgid "Change your password"
136msgstr "Zmień swoje hasło"
137
138msgid "New password:"
139msgstr "Nowe hasło:"
140
141msgid "Password"
142msgstr "Hasło"
143
144msgid "Repeat your new password:"
145msgstr "Powtórz twoje nowe hasło:"
146
147msgid "Import"
148msgstr "Import"
149
150msgid ""
151"Please execute the import script locally as it can take a very long time."
152msgstr ""
153"Proszę wykonaj skrypt importu lokalnie, ponieważ może to trwać bardzo długo."
154
155msgid "More info in the official documentation:"
156msgstr "Więcej informacji znajdziesz w oficjalnej dokumentacji:"
157
158msgid "Import from Pocket"
159msgstr "Importuj z Pocket"
160
161#, php-format
162msgid "(you must have a %s file on your server)"
163msgstr "(musisz mieć plik %s na swoim serwerze)"
164
165msgid "Import from Readability"
166msgstr "Importuj z Readability"
167
168msgid "Import from Instapaper"
169msgstr "Importuj z Instapaper"
170
171msgid "Import from wallabag"
172msgstr "Importuj z wallabag"
173
174msgid "Export your wallabag data"
175msgstr "Wyeksportuj swoje dane wallabag"
176
177msgid "Click here"
178msgstr "Kliknij tu"
179
180msgid "to download your database."
181msgstr "aby pobrać twoją bazę danych."
182
183msgid "to export your wallabag data."
184msgstr "aby wyeksportować dane wallabag."
185
186msgid "Cache"
187msgstr "Cache"
188
189msgid "to delete cache."
190msgstr "aby wyczyścić cache."
191
192msgid "You can enter multiple tags, separated by commas."
193msgstr "Możesz wprowadzić wiele tagów, oddzielonych przecinkami."
194
195msgid "return to article"
196msgstr "powrót do artykułu"
197
198msgid "plop"
199msgstr "plop"
200
201msgid ""
202"You can <a href='wallabag_compatibility_test.php'>check your configuration "
203"here</a>."
204msgstr ""
205"Możesz <a href='wallabag_compatibility_test.php'>sprawdzić swoją "
206"konfigurację tutaj</a>."
207
208msgid "favoris"
209msgstr "favoris"
210
211msgid "archive"
212msgstr "archiwum"
213
214msgid "unread"
215msgstr "nieprzeczytane"
216
217msgid "by date asc"
218msgstr "po dacie rosnąco"
219
220msgid "by date"
221msgstr "po dacie"
222
223msgid "by date desc"
224msgstr "po dacie malejąco"
225
226msgid "by title asc"
227msgstr "po tytule rosnąco"
228
229msgid "by title"
230msgstr "po tytule"
231
232msgid "by title desc"
233msgstr "po tytule malejąco"
234
235msgid "Tag"
236msgstr "Otaguj"
237
238msgid "No articles found."
239msgstr "Nie znaleziono artykułów."
240
241msgid "Toggle mark as read"
242msgstr "Przełącz jako przeczytane"
243
244msgid "toggle favorite"
245msgstr "przełącz ulubione"
246
247msgid "delete"
248msgstr "usuń"
249
250msgid "original"
251msgstr "oryginał"
252
253msgid "estimated reading time:"
254msgstr "szacowany czas czytania:"
255
256msgid "mark all the entries as read"
257msgstr "zaznacz wszystkie wpisy jako przeczytane"
258
259msgid "results"
260msgstr "rezultaty"
261
262msgid "installation"
263msgstr "instalacja"
264
265msgid "install your wallabag"
266msgstr "zainstauj wallabag"
267
268msgid ""
269"wallabag is still not installed. Please fill the below form to install it. "
270"Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation "
271"on wallabag website</a>."
272msgstr ""
273"wallabag wciąż nie jest zainstalowany. Proszę wypełnij poniższy formularz "
274"aby go zainstalować. Nie wahaj się <a href='http://doc.wallabag."
275"org/'>przeczytać dokumentacji na stronie wallabag</a>."
276
277msgid "Login"
278msgstr "Login"
279
280msgid "Repeat your password"
281msgstr "Powtórz swoje hasło"
282
283msgid "Install"
284msgstr "Zainstauj"
285
286msgid "login to your wallabag"
287msgstr "zaloguj się do twojego wallabag"
288
289msgid "Login to wallabag"
290msgstr "Logowanie do wallabag"
291
292msgid "you are in demo mode, some features may be disabled."
293msgstr "jesteś w trybie demo, niektóre funkcjonalności mogą być wyłączone."
294
295msgid "Username"
296msgstr "Nazwa użytkownika"
297
298msgid "Stay signed in"
299msgstr "Pozostań zalogowany"
300
301msgid "(Do not check on public computers)"
302msgstr "(Nie zaznaczaj na komputerach z publicznym dostępem)"
303
304msgid "Sign in"
305msgstr "Zaloguj się"
306
307msgid "favorites"
308msgstr "ulubione"
309
310msgid "estimated reading time :"
311msgstr "szacowany czas czytania :"
312
313msgid "Mark all the entries as read"
314msgstr "Zaznacz wszystkie wpisy jako przeczytane"
315
316msgid "Return home"
317msgstr "Powrót na stronę domową"
318
319msgid "Back to top"
320msgstr "Powrót na górę"
321
322msgid "Mark as read"
323msgstr "Oznacz jako przeczytane"
324
325msgid "Favorite"
326msgstr "Ulubione"
327
328msgid "Toggle favorite"
329msgstr "Przełącz ulubione"
330
331msgid "Delete"
332msgstr "Usuń"
333
334msgid "Tweet"
335msgstr "Tweet"
336
337msgid "Email"
338msgstr "Email"
339
340msgid "shaarli"
341msgstr "shaarli"
342
343msgid "flattr"
344msgstr "flattr"
345
346msgid "Does this article appear wrong?"
347msgstr "Czy ten artykuł jest wyświetlany niepoprawnie?"
348
349msgid "tags:"
350msgstr "tagi:"
351
352msgid "Edit tags"
353msgstr "Edytuj tagi"
354
355msgid "save link!"
356msgstr "zapisz link!"
357
358msgid "home"
359msgstr "strona domowa"
360
361msgid "tags"
362msgstr "tagi"
363
364msgid "logout"
365msgstr "wyloguj"
366
367msgid "powered by"
368msgstr "w oparciu o"
369
370msgid "debug mode is on so cache is off."
371msgstr "tryb debug jest włączony zatem cache jest wyłączony."
372
373msgid "your wallabag version:"
374msgstr "wersja twojego wallabag:"
375
376msgid "storage:"
377msgstr "storage:"
378
379msgid "save a link"
380msgstr "zapisz link"
381
382msgid "back to home"
383msgstr "powrót do strony domowej"
384
385msgid "toggle mark as read"
386msgstr "przełącz jako przeczytane"
387
388msgid "tweet"
389msgstr "tweet"
390
391msgid "email"
392msgstr "email"
393
394msgid "this article appears wrong?"
395msgstr "ten artykuł wygląda niepoprawnie?"
396
397msgid "No link available here!"
398msgstr "No link available here!"
399
400#, fuzzy
401msgid "Poching a link"
402msgstr "Poching a link"
403
404msgid "by filling this field"
405msgstr "przez wypełnienie tego pola"
406
407msgid "bookmarklet: drag & drop this link to your bookmarks bar"
408msgstr "skryptozakładka: przeciągnij i upuść ten link na twój pasek zakładek"
409
410msgid "your version"
411msgstr "twoja wersja"
412
413msgid "latest stable version"
414msgstr "najnowsza stabilna wersja"
415
416msgid "a more recent stable version is available."
417msgstr "nowsza wersja stabilna jest dostępna."
418
419msgid "you are up to date."
420msgstr "posiadasz najnowszą wersję."
421
422msgid "latest dev version"
423msgstr "najnowsza wersja developerska"
424
425msgid "a more recent development version is available."
426msgstr "nowsza wersja developerska jest dostępna."
427
428msgid "Please execute the import script locally, it can take a very long time."
429msgstr ""
430"Please execute the import script locally, it can take a very long time."
431
432msgid "More infos in the official doc:"
433msgstr "More infos in the official doc:"
434
435msgid "import from Pocket"
436msgstr "import from Pocket"
437
438msgid "import from Readability"
439msgstr "import from Readability"
440
441msgid "import from Instapaper"
442msgstr "import from Instapaper"
443
444msgid "Tags"
445msgstr "Tagi"
446
447msgid "Untitled"
448msgstr "Untitled"
449
450msgid "the link has been added successfully"
451msgstr "link został dodany pomyślnie"
452
453msgid "error during insertion : the link wasn't added"
454msgstr "błąd podczas dodawania : link nie został dodany"
455
456msgid "the link has been deleted successfully"
457msgstr "link został usunięty pomyślnie"
458
459msgid "the link wasn't deleted"
460msgstr "link nie został usunięty"
461
462msgid "Article not found!"
463msgstr "Artykuł nie znaleziony!"
464
465msgid "previous"
466msgstr "poprzedni"
467
468msgid "next"
469msgstr "następny"
470
471msgid "in demo mode, you can't update your password"
472msgstr "w trybie demo nie możesz zaktualizować swojego hasła"
473
474msgid "your password has been updated"
475msgstr "twoje hasło zostało zaktualizowane"
476
477msgid ""
478"the two fields have to be filled & the password must be the same in the two "
479"fields"
480msgstr ""
481"oba pola muszą być wypełnione oraz hasło musi być takie same w obu polach"
482
483msgid "still using the \""
484msgstr "wciąż używam \""
485
486msgid "that theme does not seem to be installed"
487msgstr "ten motyw nie wygląda na zainstalowany"
488
489msgid "you have changed your theme preferences"
490msgstr "zmieniłeś swoje preferencje motywu"
491
492msgid "that language does not seem to be installed"
493msgstr "ten język nie wygląda na zainstalowany"
494
495msgid "you have changed your language preferences"
496msgstr "zmieniłeś swoje preferencje językowe"
497
498msgid "login failed: you have to fill all fields"
499msgstr "logowanie się nie powiodło: musisz wypełnić wszystkie pola"
500
501msgid "welcome to your wallabag"
502msgstr "witaj w twoim wallabag"
503
504msgid "login failed: bad login or password"
505msgstr "logowanie się nie powiodło: nieprawidłowy login lub hasło"
506
507msgid "import from instapaper completed"
508msgstr "import z instapaper zakończony"
509
510msgid "import from pocket completed"
511msgstr "import z pocket zakończony"
512
513msgid "import from Readability completed. "
514msgstr "import z Readability zakończony. "
515
516msgid "import from Poche completed. "
517msgstr "import z Poche zakończony. "
518
519msgid "Unknown import provider."
520msgstr "Nieznany dostawca importu."
521
522msgid "Incomplete inc/poche/define.inc.php file, please define \""
523msgstr "Niekompletny plik inc/poche/define.inc.php, proszę zdefiniuj \""
524
525msgid "Could not find required \""
526msgstr "Nie znaleziono wymaganego \""
527
528msgid "Uh, there is a problem while generating feeds."
529msgstr "Ah, wystąpił problem podczas generowania kanałów."
530
531msgid "Cache deleted."
532msgstr "Cache usunięty."
533
534msgid "Oops, it seems you don't have PHP 5."
535msgstr "Oops, wygląda na to że nie masz PHP 5."
536
537#~ msgid "poche it!"
538#~ msgstr "poche it!"
539
540#~ msgid "Updating poche"
541#~ msgstr "Updating poche"
542
543#~ msgid "create an issue"
544#~ msgstr "create an issue"
545
546#~ msgid "or"
547#~ msgstr "or"
548
549#~ msgid "contact us by mail"
550#~ msgstr "contact us by mail"
551
552#~ msgid "your poche version:"
553#~ msgstr "your poche version:"
diff --git a/src/Wallabag/Wallabag/Resources/translations/pt_BR.utf8/LC_MESSAGES/pt_BR.utf8.mo b/src/Wallabag/Wallabag/Resources/translations/pt_BR.utf8/LC_MESSAGES/pt_BR.utf8.mo
deleted file mode 100644
index c1ce317f..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/pt_BR.utf8/LC_MESSAGES/pt_BR.utf8.mo
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/translations/pt_BR.utf8/LC_MESSAGES/pt_BR.utf8.po b/src/Wallabag/Wallabag/Resources/translations/pt_BR.utf8/LC_MESSAGES/pt_BR.utf8.po
deleted file mode 100644
index e1453922..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/pt_BR.utf8/LC_MESSAGES/pt_BR.utf8.po
+++ /dev/null
@@ -1,549 +0,0 @@
1msgid ""
2msgstr ""
3"Project-Id-Version: wallabag\n"
4"Report-Msgid-Bugs-To: \n"
5"POT-Creation-Date: 2014-02-25 15:17+0300\n"
6"PO-Revision-Date: \n"
7"Last-Translator: @iancamporez <ian@camporez.com>\n"
8"Language-Team: @iancamporez <ian@camporez.com>\n"
9"Language: pt_BR\n"
10"MIME-Version: 1.0\n"
11"Content-Type: text/plain; charset=UTF-8\n"
12"Content-Transfer-Encoding: 8bit\n"
13"X-Generator: Poedit 1.6.4\n"
14"X-Poedit-Basepath: .\n"
15"X-Poedit-SearchPath-0: /home/ian/Projetos/wallabag/locale/en_EN.utf8/"
16"LC_MESSAGES\n"
17
18msgid "wallabag, a read it later open source system"
19msgstr "wallabag, um \"read it later\" de código aberto"
20
21msgid "login failed: user doesn't exist"
22msgstr "falha ao entrar: o usuário não existe"
23
24msgid "return home"
25msgstr "retornar à página inicial"
26
27msgid "config"
28msgstr "configurar"
29
30msgid "Saving articles"
31msgstr "Salvando artigos"
32
33msgid "There are several ways to save an article:"
34msgstr "Existem várias maneiras de salvar um artigo:"
35
36msgid "read the documentation"
37msgstr "ler a documentação"
38
39msgid "download the extension"
40msgstr "baixar a extensão"
41
42msgid "via F-Droid"
43msgstr "via F-Droid"
44
45msgid " or "
46msgstr "ou "
47
48msgid "via Google Play"
49msgstr "via Google Play"
50
51msgid "download the application"
52msgstr "baixar o aplicativo"
53
54msgid "By filling this field"
55msgstr "Preenchendo esse campo"
56
57msgid "bag it!"
58msgstr "adicionar ao wallabag"
59
60msgid "Bookmarklet: drag & drop this link to your bookmarks bar"
61msgstr "Bookmarklet: arraste esse link para sua barra de favoritos"
62
63msgid "Upgrading wallabag"
64msgstr "Atualizando o wallabag"
65
66msgid "Installed version"
67msgstr "Versão instalada"
68
69msgid "Latest stable version"
70msgstr "Última versão estável"
71
72msgid "A more recent stable version is available."
73msgstr "Uma versão estável mais nova está disponível"
74
75msgid "You are up to date."
76msgstr "Você está atualizado."
77
78msgid "Latest dev version"
79msgstr "Última versão em desenvolvimento"
80
81msgid "A more recent development version is available."
82msgstr "Uma versão em desenvolvimento mais recente está disponível"
83
84msgid "Feeds"
85msgstr "Feeds"
86
87msgid ""
88"Your feed token is currently empty and must first be generated to enable "
89"feeds. Click <a href='?feed&amp;action=generate'>here to generate it</a>."
90msgstr ""
91"Seu token do feed e precisa ser gerado para ativar os feeds. Clique <a "
92"href='?feed&amp;action=generate'>aqui para gerar um token</a>."
93
94msgid "Unread feed"
95msgstr "Feed de artigos não lidos"
96
97msgid "Favorites feed"
98msgstr "Feed dos favoritos"
99
100msgid "Archive feed"
101msgstr "Feed de arquivados"
102
103msgid "Your token:"
104msgstr "Seu token:"
105
106msgid "Your user id:"
107msgstr "Seu código de usuário:"
108
109msgid ""
110"You can regenerate your token: <a href='?feed&amp;action=generate'>generate!"
111"</a>."
112msgstr ""
113"Você pode regerar seu token: <a href='?feed&amp;action=generate'>gerar!</a>."
114
115msgid "Change your theme"
116msgstr "Mudar seu tema"
117
118msgid "Theme:"
119msgstr "Tema:"
120
121msgid "Update"
122msgstr "Atualizar"
123
124msgid "Change your language"
125msgstr "Alterar seu idioma"
126
127msgid "Language:"
128msgstr "Idioma:"
129
130msgid "Change your password"
131msgstr "Alterar sua senha"
132
133msgid "New password:"
134msgstr "Nova senha:"
135
136msgid "Password"
137msgstr "Senha"
138
139msgid "Repeat your new password:"
140msgstr "Repetir sua nova senha:"
141
142msgid "Import"
143msgstr "Importar"
144
145msgid ""
146"Please execute the import script locally as it can take a very long time."
147msgstr ""
148"Por favor, execute o script de importação localmente, pois pode demorar "
149"muito tempo."
150
151msgid "More info in the official documentation:"
152msgstr "Mais informações na documentação oficial:"
153
154msgid "Import from Pocket"
155msgstr "Importar do Pocket"
156
157#, php-format
158msgid "(you must have a %s file on your server)"
159msgstr "(você deve ter um arquivo %s no seu servidor)"
160
161msgid "Import from Readability"
162msgstr "Importar do Readability"
163
164msgid "Import from Instapaper"
165msgstr "Importar do Instapaper"
166
167msgid "Import from wallabag"
168msgstr "Importar do wallabag"
169
170msgid "Export your wallabag data"
171msgstr "Exportar seus dados do wallabag"
172
173msgid "Click here"
174msgstr "Clique aqui"
175
176msgid "to download your database."
177msgstr "para baixar seu banco de dados."
178
179msgid "to export your wallabag data."
180msgstr "para exportar seus dados do wallabag."
181
182msgid "Cache"
183msgstr "Cache"
184
185msgid "to delete cache."
186msgstr "para apagar o cache."
187
188msgid "You can enter multiple tags, separated by commas."
189msgstr "Você pode inserir várias tags, separadas por vírgulas."
190
191msgid "return to article"
192msgstr "retornar ao artigo"
193
194msgid "plop"
195msgstr "plop"
196
197msgid ""
198"You can <a href='wallabag_compatibility_test.php'>check your configuration "
199"here</a>."
200msgstr ""
201"Você pode <a href='wallabag_compatibility_test.php'>checar suas "
202"configurações aqui</a>."
203
204msgid "favoris"
205msgstr "favoritos"
206
207msgid "archive"
208msgstr "arquivo"
209
210msgid "unread"
211msgstr "não lidos"
212
213msgid "by date asc"
214msgstr "por data (cresc.)"
215
216msgid "by date"
217msgstr "por data"
218
219msgid "by date desc"
220msgstr "por data (decr.)"
221
222msgid "by title asc"
223msgstr "por título (cresc.)"
224
225msgid "by title"
226msgstr "por título"
227
228msgid "by title desc"
229msgstr "por título (decr.)"
230
231msgid "Tag"
232msgstr "Tag"
233
234msgid "No articles found."
235msgstr "Nenhum artigo encontrado."
236
237msgid "Toggle mark as read"
238msgstr "Alterar \"marcar como lido\""
239
240msgid "toggle favorite"
241msgstr "alterar \"favorito\""
242
243msgid "delete"
244msgstr "deletar"
245
246msgid "original"
247msgstr "original"
248
249msgid "estimated reading time:"
250msgstr "tempo estimado de leitura:"
251
252msgid "mark all the entries as read"
253msgstr "marcar todas as entradas como lidas"
254
255msgid "results"
256msgstr "resultados"
257
258msgid "installation"
259msgstr "instalação"
260
261msgid "install your wallabag"
262msgstr "instalar seu wallabag"
263
264msgid ""
265"wallabag is still not installed. Please fill the below form to install it. "
266"Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation "
267"on wallabag website</a>."
268msgstr ""
269"O wallabag ainda não está instalado. Preencha o formulário abaixo para "
270"instalá-lo. Não hesite em <a href='http://doc.wallabag.org/'>ler a "
271"documentação no site do wallabag</a>."
272
273msgid "Login"
274msgstr "Login"
275
276msgid "Repeat your password"
277msgstr "Repetir sua senha"
278
279msgid "Install"
280msgstr "Instalar"
281
282msgid "login to your wallabag"
283msgstr "entrar no seu wallabag"
284
285msgid "Login to wallabag"
286msgstr "Entrar no wallabag"
287
288msgid "you are in demo mode, some features may be disabled."
289msgstr "você está no modo demo, alguns recursos podem estar desativados."
290
291msgid "Username"
292msgstr "Nome de usuário"
293
294msgid "Stay signed in"
295msgstr "Continuar conectado"
296
297msgid "(Do not check on public computers)"
298msgstr "(Não marque em computadores públicos)"
299
300msgid "Sign in"
301msgstr "Entrar"
302
303msgid "favorites"
304msgstr "favoritos"
305
306msgid "estimated reading time :"
307msgstr "tempo estimado de leitura :"
308
309msgid "Mark all the entries as read"
310msgstr "Marcar todas as entradas como lidas"
311
312msgid "Return home"
313msgstr "Retornar à página inicial"
314
315msgid "Back to top"
316msgstr "Voltar ao topo"
317
318msgid "Mark as read"
319msgstr "Marcar como lido"
320
321msgid "Favorite"
322msgstr "Favoritar"
323
324msgid "Toggle favorite"
325msgstr "Alterar \"favorito\""
326
327msgid "Delete"
328msgstr "Deletar"
329
330msgid "Tweet"
331msgstr "Tweetar"
332
333msgid "Email"
334msgstr "Email"
335
336msgid "shaarli"
337msgstr "shaarli"
338
339msgid "flattr"
340msgstr "flattr"
341
342msgid "Does this article appear wrong?"
343msgstr "Esse artigo está sendo exibido incorretamente?"
344
345msgid "tags:"
346msgstr "tags:"
347
348msgid "Edit tags"
349msgstr "Editar tags"
350
351msgid "save link!"
352msgstr "salvar link!"
353
354msgid "home"
355msgstr "início"
356
357msgid "tags"
358msgstr "tags"
359
360msgid "logout"
361msgstr "sair"
362
363msgid "powered by"
364msgstr "powered by"
365
366msgid "debug mode is on so cache is off."
367msgstr "o modo debug está ativo, então o cache foi desativado."
368
369msgid "your wallabag version:"
370msgstr "sua versão do wallabag:"
371
372msgid "storage:"
373msgstr "armazenamento:"
374
375msgid "save a link"
376msgstr "salvar link"
377
378msgid "back to home"
379msgstr "voltar à página inicial"
380
381msgid "toggle mark as read"
382msgstr "alterar \"marcar como lido\""
383
384msgid "tweet"
385msgstr "tweetar"
386
387msgid "email"
388msgstr "email"
389
390msgid "this article appears wrong?"
391msgstr "esse artigo está sendo mostrado incorretamente?"
392
393msgid "No link available here!"
394msgstr "Nenhum link disponível aqui!"
395
396msgid "Poching a link"
397msgstr "Pocheando um link"
398
399msgid "by filling this field"
400msgstr "preenchendo esse campo"
401
402msgid "bookmarklet: drag & drop this link to your bookmarks bar"
403msgstr "bookmarklet: arraste esse link para a sua barra de favoritos"
404
405msgid "your version"
406msgstr "sua versão"
407
408msgid "latest stable version"
409msgstr "última versão estável"
410
411msgid "a more recent stable version is available."
412msgstr "uma versão estável mais nova está disponível"
413
414msgid "you are up to date."
415msgstr "você está atualizado."
416
417msgid "latest dev version"
418msgstr "última versão em desenvolvimento"
419
420msgid "a more recent development version is available."
421msgstr "uma versão em desenvolvimento mais nova está disponível"
422
423msgid "Please execute the import script locally, it can take a very long time."
424msgstr ""
425"Por favor, execute o script de importação localmente, pois pode demorar "
426"muito tempo."
427
428msgid "More infos in the official doc:"
429msgstr "Mais informações na documentação oficial:"
430
431msgid "import from Pocket"
432msgstr "importar do Pocket"
433
434msgid "import from Readability"
435msgstr "importar do Readability"
436
437msgid "import from Instapaper"
438msgstr "importar do Instapaper"
439
440msgid "Tags"
441msgstr "Tags"
442
443msgid "Untitled"
444msgstr "Sem título"
445
446msgid "the link has been added successfully"
447msgstr "o link foi adicionado com sucesso"
448
449msgid "error during insertion : the link wasn't added"
450msgstr "erro durante a inserção: o link não foi adicionado"
451
452msgid "the link has been deleted successfully"
453msgstr "o link foi deletado com sucesso"
454
455msgid "the link wasn't deleted"
456msgstr "o link não foi deletado"
457
458msgid "Article not found!"
459msgstr "Artigo não encontrado!"
460
461msgid "previous"
462msgstr "anterior"
463
464msgid "next"
465msgstr "próximo"
466
467msgid "in demo mode, you can't update your password"
468msgstr "você não pode alterar a senha no modo demo"
469
470msgid "your password has been updated"
471msgstr "sua senha foi atualizada"
472
473msgid ""
474"the two fields have to be filled & the password must be the same in the two "
475"fields"
476msgstr ""
477"os dois campos devem estar preenchidos e as senhas devem ser iguais em ambos"
478
479msgid "still using the \""
480msgstr "ainda usando o \""
481
482msgid "that theme does not seem to be installed"
483msgstr "esse tema aparentemente não está instalado"
484
485msgid "you have changed your theme preferences"
486msgstr "você alterou suas preferências de tema"
487
488msgid "that language does not seem to be installed"
489msgstr "esse idioma aparentemente não está instalado"
490
491msgid "you have changed your language preferences"
492msgstr "você alterou suas preferências de idioma"
493
494msgid "login failed: you have to fill all fields"
495msgstr "falha ao entrar: você deve preencher todos os campos"
496
497msgid "welcome to your wallabag"
498msgstr "bem-vindo ao seu wallabag"
499
500msgid "login failed: bad login or password"
501msgstr "falha ao entrar: login ou senha incorretos"
502
503msgid "import from instapaper completed"
504msgstr "importação do instapaper completa"
505
506msgid "import from pocket completed"
507msgstr "importação do pocket completa"
508
509msgid "import from Readability completed. "
510msgstr "importação do Readability completa. "
511
512msgid "import from Poche completed. "
513msgstr "importação do Poche completa. "
514
515msgid "Unknown import provider."
516msgstr "Serviço de importação desconhecido."
517
518msgid "Incomplete inc/poche/define.inc.php file, please define \""
519msgstr "Arquivo inc/poche/define.inc.php incompleto, por favor defina \""
520
521msgid "Could not find required \""
522msgstr "Não foi possível encontrar o requerido \""
523
524msgid "Uh, there is a problem while generating feeds."
525msgstr "Uh, houve um problema ao gerar os feeds."
526
527msgid "Cache deleted."
528msgstr "Cache deletado."
529
530msgid "Oops, it seems you don't have PHP 5."
531msgstr "Oops, parece que você não tem o PHP 5."
532
533#~ msgid "poche it!"
534#~ msgstr "poche it!"
535
536#~ msgid "Updating poche"
537#~ msgstr "Updating poche"
538
539#~ msgid "create an issue"
540#~ msgstr "create an issue"
541
542#~ msgid "or"
543#~ msgstr "or"
544
545#~ msgid "contact us by mail"
546#~ msgstr "contact us by mail"
547
548#~ msgid "your poche version:"
549#~ msgstr "your poche version:"
diff --git a/src/Wallabag/Wallabag/Resources/translations/ru_RU.utf8/LC_MESSAGES/ru_RU.utf8.mo b/src/Wallabag/Wallabag/Resources/translations/ru_RU.utf8/LC_MESSAGES/ru_RU.utf8.mo
deleted file mode 100755
index 5cbfad16..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/ru_RU.utf8/LC_MESSAGES/ru_RU.utf8.mo
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/translations/ru_RU.utf8/LC_MESSAGES/ru_RU.utf8.po b/src/Wallabag/Wallabag/Resources/translations/ru_RU.utf8/LC_MESSAGES/ru_RU.utf8.po
deleted file mode 100755
index 08f12b7c..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/ru_RU.utf8/LC_MESSAGES/ru_RU.utf8.po
+++ /dev/null
@@ -1,561 +0,0 @@
1msgid ""
2msgstr ""
3"Project-Id-Version: \n"
4"Report-Msgid-Bugs-To: \n"
5"POT-Creation-Date: 2014-02-25 15:09+0300\n"
6"PO-Revision-Date: \n"
7"Last-Translator: Maryana <mariroz@mr.lviv.ua>\n"
8"Language-Team: \n"
9"Language: \n"
10"MIME-Version: 1.0\n"
11"Content-Type: text/plain; charset=UTF-8\n"
12"Content-Transfer-Encoding: 8bit\n"
13"X-Generator: Poedit 1.5.4\n"
14"X-Poedit-Language: Russian\n"
15"X-Poedit-Country: RUSSIA\n"
16"X-Poedit-SourceCharset: utf-8\n"
17"X-Poedit-SearchPath-0: /home/mariroz/_DEV/web/wallabag/wallabag-master-testing\n"
18
19msgid "wallabag, a read it later open source system"
20msgstr "wallabag, сервис отложенного чтения с открытым исходным кодом"
21
22msgid "login failed: user doesn't exist"
23msgstr "войти не удалось: пользователь не существует"
24
25msgid "return home"
26msgstr "на главную"
27
28msgid "config"
29msgstr "настройки"
30
31msgid "Saving articles"
32msgstr "Сохранение статей"
33
34#, fuzzy
35msgid "There are several ways to save an article:"
36msgstr "Существует несколько способов сохранить ссылку:"
37
38msgid "read the documentation"
39msgstr "читать инструкцию"
40
41msgid "download the extension"
42msgstr "скачать расширение"
43
44msgid "via F-Droid"
45msgstr "с F-Droid"
46
47msgid " or "
48msgstr "или"
49
50msgid "via Google Play"
51msgstr "с Google Play"
52
53msgid "download the application"
54msgstr "скачать приложение"
55
56msgid "By filling this field"
57msgstr "Заполнением этого поля"
58
59msgid "bag it!"
60msgstr "прикарманить!"
61
62msgid "Bookmarklet: drag & drop this link to your bookmarks bar"
63msgstr "Закладка: перетащите и опустите ссылку на панель закладок"
64
65msgid "Upgrading wallabag"
66msgstr "Обновление wallabag"
67
68msgid "Installed version"
69msgstr "Установленная версия"
70
71msgid "Latest stable version"
72msgstr "Последняя стабильная версия"
73
74msgid "A more recent stable version is available."
75msgstr "Доступна новая стабильная версия."
76
77msgid "You are up to date."
78msgstr "У вас всё самое новое."
79
80#, fuzzy
81msgid "Latest dev version"
82msgstr "последняя версия в разработке"
83
84#, fuzzy
85msgid "A more recent development version is available."
86msgstr "есть более свежая версия в разработке."
87
88msgid "Feeds"
89msgstr "Ленты (feeds)"
90
91msgid "Your feed token is currently empty and must first be generated to enable feeds. Click <a href='?feed&amp;action=generate'>here to generate it</a>."
92msgstr "Ваш маркер ленты (feed token) не определен, для того, чтобы активировать ленту, сначала создайте его. Нажмите <a href='?feed&action=generate'>здесь для его генерации</ а>."
93
94msgid "Unread feed"
95msgstr "Лента непрочитанного"
96
97msgid "Favorites feed"
98msgstr "Лента избранного"
99
100msgid "Archive feed"
101msgstr "Лента архива"
102
103msgid "Your token:"
104msgstr "Ваш маркер (token):"
105
106msgid "Your user id:"
107msgstr "Ваш идентификатор пользователя (user id):"
108
109msgid "You can regenerate your token: <a href='?feed&amp;action=generate'>generate!</a>."
110msgstr "Вы можете создать новый ​​маркер: <a href='?feed&action=generate'>сгенерировать!</a>."
111
112msgid "Change your theme"
113msgstr "Изменить тему"
114
115msgid "Theme:"
116msgstr "Тема:"
117
118msgid "Update"
119msgstr "Обновить"
120
121msgid "Change your language"
122msgstr "Изменить язык"
123
124msgid "Language:"
125msgstr "Язык:"
126
127msgid "Change your password"
128msgstr "Смена пароля"
129
130msgid "New password:"
131msgstr "Новый пароль:"
132
133msgid "Password"
134msgstr "Пароль"
135
136msgid "Repeat your new password:"
137msgstr "Ещё раз новый пароль:"
138
139msgid "Import"
140msgstr "Импортировать"
141
142msgid "Please execute the import script locally as it can take a very long time."
143msgstr "Пожалуйста, выполните сценарий импорта локально - это может занять слишком много времени."
144
145#, fuzzy
146msgid "More info in the official documentation:"
147msgstr "Больше сведений в официальной документации:"
148
149msgid "Import from Pocket"
150msgstr "Импортировать из Pocket"
151
152#, php-format
153msgid "(you must have a %s file on your server)"
154msgstr "(файл %s должен присутствовать на вашем сервере)"
155
156msgid "Import from Readability"
157msgstr "Импортировать из Readability"
158
159msgid "Import from Instapaper"
160msgstr "Импортировать из Instapaper"
161
162msgid "Import from wallabag"
163msgstr "Импортировать из wallabag"
164
165msgid "Export your wallabag data"
166msgstr "Экспортировать данные wallabag"
167
168msgid "Click here"
169msgstr "Кликните здесь"
170
171msgid "to download your database."
172msgstr "чтобы скачать вашу базу данных"
173
174msgid "to export your wallabag data."
175msgstr "чтобы экспортировать свои записи из wallabag."
176
177msgid "Cache"
178msgstr "Кэш"
179
180msgid "to delete cache."
181msgstr "чтобы сбросить кэш."
182
183msgid "You can enter multiple tags, separated by commas."
184msgstr "Вы можете ввести несколько тегов, разделяя их запятой."
185
186msgid "return to article"
187msgstr "вернуться к статье"
188
189msgid "plop"
190msgstr "plop"
191
192msgid "You can <a href='wallabag_compatibility_test.php'>check your configuration here</a>."
193msgstr "Вы можете <a href='wallabag_compatibility_test.php'>проверить конфигурацию здесь</a>."
194
195msgid "favoris"
196msgstr "избранное"
197
198msgid "archive"
199msgstr "архив"
200
201msgid "unread"
202msgstr "непрочитанное"
203
204msgid "by date asc"
205msgstr "по дате, сперва старые"
206
207msgid "by date"
208msgstr "по дате"
209
210msgid "by date desc"
211msgstr "по дате, сперва новые"
212
213msgid "by title asc"
214msgstr "по заголовку (прямой)"
215
216msgid "by title"
217msgstr "по заголовку"
218
219msgid "by title desc"
220msgstr "по заголовку (обратный)"
221
222msgid "Tag"
223msgstr "Тег"
224
225msgid "No articles found."
226msgstr "Статей не найдено."
227
228msgid "Toggle mark as read"
229msgstr "Изменить отметку 'прочитано'"
230
231msgid "toggle favorite"
232msgstr "изменить метку избранного"
233
234msgid "delete"
235msgstr "удалить"
236
237msgid "original"
238msgstr "источник"
239
240msgid "estimated reading time:"
241msgstr "ориентировочное время чтения:"
242
243msgid "mark all the entries as read"
244msgstr "отметить все статьи как прочитанные "
245
246msgid "results"
247msgstr "найдено"
248
249msgid "installation"
250msgstr "установка"
251
252msgid "install your wallabag"
253msgstr "установка wallabag"
254
255msgid "wallabag is still not installed. Please fill the below form to install it. Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation on wallabag website</a>."
256msgstr "wallabag всё ещё не установлен. Надо заполнить форму ниже, чтобы установить его. Неплохо также <a href='http://doc.wallabag.org'>прочесть документацию на сайте wallabag</a>."
257
258msgid "Login"
259msgstr "Имя пользователя"
260
261msgid "Repeat your password"
262msgstr "Повторите пароль"
263
264msgid "Install"
265msgstr "Установить"
266
267msgid "login to your wallabag"
268msgstr "войти в свой wallabag"
269
270msgid "Login to wallabag"
271msgstr "Войдите в wallabag"
272
273msgid "you are in demo mode, some features may be disabled."
274msgstr "демонстрационный режим - работают не все возможности."
275
276msgid "Username"
277msgstr "Имя пользователя"
278
279msgid "Stay signed in"
280msgstr "Запомнить меня"
281
282msgid "(Do not check on public computers)"
283msgstr "(Не отмечайте на чужих компьютерах)"
284
285msgid "Sign in"
286msgstr "Зарегистрироваться"
287
288msgid "favorites"
289msgstr "избранное"
290
291#, fuzzy
292msgid "estimated reading time :"
293msgstr "ориентировочное время чтения:"
294
295msgid "Mark all the entries as read"
296msgstr "Отметить все как прочитанное"
297
298msgid "Return home"
299msgstr "На главную"
300
301msgid "Back to top"
302msgstr "Наверх"
303
304msgid "Mark as read"
305msgstr "Отметить как прочитанное"
306
307msgid "Favorite"
308msgstr "Избранное"
309
310msgid "Toggle favorite"
311msgstr "Изменить метку избранного"
312
313msgid "Delete"
314msgstr "Удалить"
315
316msgid "Tweet"
317msgstr "Твитнуть"
318
319msgid "Email"
320msgstr "Отправить по почте"
321
322msgid "shaarli"
323msgstr "shaarli"
324
325msgid "flattr"
326msgstr "проспонсировать"
327
328msgid "Does this article appear wrong?"
329msgstr "Статья выглядит криво?"
330
331msgid "tags:"
332msgstr "теги:"
333
334msgid "Edit tags"
335msgstr "Редактировать теги"
336
337msgid "save link!"
338msgstr "сохранить ссылку!"
339
340msgid "home"
341msgstr "главная"
342
343msgid "tags"
344msgstr "теги"
345
346msgid "logout"
347msgstr "выход"
348
349msgid "powered by"
350msgstr "при поддержке"
351
352msgid "debug mode is on so cache is off."
353msgstr "включён режим отладки - кеш выключен."
354
355msgid "your wallabag version:"
356msgstr "Ваша версия wallabag:"
357
358msgid "storage:"
359msgstr "хранилище:"
360
361msgid "save a link"
362msgstr "сохранить ссылку"
363
364msgid "back to home"
365msgstr "домой"
366
367msgid "toggle mark as read"
368msgstr "изменить отметку 'прочитано'"
369
370msgid "tweet"
371msgstr "твитнуть"
372
373msgid "email"
374msgstr "email"
375
376#, fuzzy
377msgid "this article appears wrong?"
378msgstr "Статья выглядит криво?"
379
380msgid "No link available here!"
381msgstr "Здесь нет ссылки!"
382
383#, fuzzy
384msgid "Poching a link"
385msgstr "Сохранение ссылок"
386
387#, fuzzy
388msgid "by filling this field"
389msgstr "Заполнением этого поля"
390
391#, fuzzy
392msgid "bookmarklet: drag & drop this link to your bookmarks bar"
393msgstr "Закладка: перетащите и опустите ссылку на панель закладок"
394
395msgid "your version"
396msgstr "Ваша версия"
397
398#, fuzzy
399msgid "latest stable version"
400msgstr "Последняя стабильная версия"
401
402#, fuzzy
403msgid "a more recent stable version is available."
404msgstr "Доступна новая стабильная версия."
405
406msgid "you are up to date."
407msgstr "у вас всё самое новое."
408
409msgid "latest dev version"
410msgstr "последняя версия в разработке"
411
412msgid "a more recent development version is available."
413msgstr "есть более свежая версия в разработке."
414
415#, fuzzy
416msgid "Please execute the import script locally, it can take a very long time."
417msgstr "Пожалуйста, выполните сценарий импорта локально - это может занять слишком много времени."
418
419#, fuzzy
420msgid "More infos in the official doc:"
421msgstr "Больше сведений в официальной документации:"
422
423#, fuzzy
424msgid "import from Pocket"
425msgstr "Импортировать из Pocket"
426
427#, fuzzy
428msgid "import from Readability"
429msgstr "Импортировать из Readability"
430
431#, fuzzy
432msgid "import from Instapaper"
433msgstr "Импортировать из Instapaper"
434
435msgid "Tags"
436msgstr "Теги"
437
438msgid "Untitled"
439msgstr "Без названия"
440
441msgid "the link has been added successfully"
442msgstr "ссылка успешно добавлена"
443
444msgid "error during insertion : the link wasn't added"
445msgstr "ошибка во время вставки: ссылка не добавлена"
446
447msgid "the link has been deleted successfully"
448msgstr "ссылка успешно удалена"
449
450msgid "the link wasn't deleted"
451msgstr "ссылка не удалена"
452
453msgid "Article not found!"
454msgstr "Статью не найдено."
455
456msgid "previous"
457msgstr "предыдущая"
458
459msgid "next"
460msgstr "следующая"
461
462msgid "in demo mode, you can't update your password"
463msgstr "в демонстрационном режиме смена пароля не разрешена"
464
465msgid "your password has been updated"
466msgstr "ваш пароль обновлен"
467
468msgid "the two fields have to be filled & the password must be the same in the two fields"
469msgstr "необходимо заполнить оба поля и пароль в обоих должен совпадать"
470
471msgid "still using the \""
472msgstr "все еще используется \""
473
474msgid "that theme does not seem to be installed"
475msgstr "кажется, эта тема не установлена"
476
477msgid "you have changed your theme preferences"
478msgstr "вы изменили свои настройки темы"
479
480msgid "that language does not seem to be installed"
481msgstr "кажется, что этот язык не установлен"
482
483msgid "you have changed your language preferences"
484msgstr "вы изменили свои настройки языка"
485
486msgid "login failed: you have to fill all fields"
487msgstr "войти не удалось: вы должны заполнить все поля"
488
489msgid "welcome to your wallabag"
490msgstr "добро пожаловать в wallabag"
491
492msgid "login failed: bad login or password"
493msgstr "войти не удалось: неправильное имя пользователя или пароль"
494
495msgid "import from instapaper completed"
496msgstr "импорт из instapaper завершен"
497
498msgid "import from pocket completed"
499msgstr "импорт из pocket завершен"
500
501msgid "import from Readability completed. "
502msgstr "импорт из Readability завершен"
503
504msgid "import from Poche completed. "
505msgstr "импорт из Poche завершен."
506
507msgid "Unknown import provider."
508msgstr "Неизвестный провайдер импорта."
509
510msgid "Incomplete inc/poche/define.inc.php file, please define \""
511msgstr "Незавершенный файл inc/poche/define.inc.php file, пожалуйста определите \""
512
513msgid "Could not find required \""
514msgstr "Не удалось найти требуемый \""
515
516msgid "Uh, there is a problem while generating feeds."
517msgstr "Ох, возникла проблема при создании ленты."
518
519msgid "Cache deleted."
520msgstr "Кэш очищен. "
521
522msgid "Oops, it seems you don't have PHP 5."
523msgstr "Упс, кажется у вас не установлен PHP 5."
524
525#~ msgid "You can poche a link by several methods:"
526#~ msgstr "Вы можете сохранить ссылку несколькими путями:"
527
528#~ msgid "poche it!"
529#~ msgstr "прикарманить!"
530
531#~ msgid "Updating poche"
532#~ msgstr "Обновления poche"
533
534#, fuzzy
535#~ msgid "Export your poche datas"
536#~ msgstr "Экспортировать данные poche"
537
538#, fuzzy
539#~ msgid "to export your poche datas."
540#~ msgstr "чтобы экспортировать свои записи из poche."
541
542#~ msgid "your poche version:"
543#~ msgstr "ваша версия poche:"
544
545#~ msgid "Import from poche"
546#~ msgstr "Импортировать из poche"
547
548#~ msgid "welcome to your poche"
549#~ msgstr "добро пожаловать в ваш poche"
550
551#~ msgid "see you soon!"
552#~ msgstr "увидимся!"
553
554#~ msgid "create an issue"
555#~ msgstr "оповестить об ошибке"
556
557#~ msgid "or"
558#~ msgstr "или"
559
560#~ msgid "contact us by mail"
561#~ msgstr "связаться по почте"
diff --git a/src/Wallabag/Wallabag/Resources/translations/sl_SI.utf8/LC_MESSAGES/sl_SI.utf8.mo b/src/Wallabag/Wallabag/Resources/translations/sl_SI.utf8/LC_MESSAGES/sl_SI.utf8.mo
deleted file mode 100644
index 5518fad1..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/sl_SI.utf8/LC_MESSAGES/sl_SI.utf8.mo
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/translations/sl_SI.utf8/LC_MESSAGES/sl_SI.utf8.po b/src/Wallabag/Wallabag/Resources/translations/sl_SI.utf8/LC_MESSAGES/sl_SI.utf8.po
deleted file mode 100644
index 8ad2eded..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/sl_SI.utf8/LC_MESSAGES/sl_SI.utf8.po
+++ /dev/null
@@ -1,568 +0,0 @@
1#
2# Translators:
3# bungabunga, 2014
4msgid ""
5msgstr ""
6"Project-Id-Version: wallabag\n"
7"Report-Msgid-Bugs-To: \n"
8"POT-Creation-Date: 2014-02-25 15:12+0300\n"
9"PO-Revision-Date: 2014-02-25 15:12+0300\n"
10"Last-Translator: Maryana <mariroz@mr.lviv.ua>\n"
11"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/projects/p/wallabag/language/sl_SI/)\n"
12"Language: sl_SI\n"
13"MIME-Version: 1.0\n"
14"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Transfer-Encoding: 8bit\n"
16"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
17"X-Generator: Poedit 1.5.4\n"
18"X-Poedit-Language: Slovenian\n"
19"X-Poedit-Country: SLOVENIA\n"
20"X-Poedit-Basepath: .\n"
21"X-Poedit-SearchPath-0: /home/mariroz/_DEV/web/wallabag/wallabag-master-testing\n"
22
23msgid "wallabag, a read it later open source system"
24msgstr ""
25
26msgid "login failed: user doesn't exist"
27msgstr ""
28
29msgid "return home"
30msgstr ""
31
32msgid "config"
33msgstr "nastavitve"
34
35msgid "Saving articles"
36msgstr ""
37
38msgid "There are several ways to save an article:"
39msgstr ""
40
41msgid "read the documentation"
42msgstr "preberite dokumentacijo"
43
44msgid "download the extension"
45msgstr ""
46
47msgid "via F-Droid"
48msgstr ""
49
50msgid " or "
51msgstr ""
52
53msgid "via Google Play"
54msgstr ""
55
56msgid "download the application"
57msgstr ""
58
59#, fuzzy
60msgid "By filling this field"
61msgstr "z vnosom v to polje"
62
63msgid "bag it!"
64msgstr ""
65
66msgid "Bookmarklet: drag & drop this link to your bookmarks bar"
67msgstr ""
68
69msgid "Upgrading wallabag"
70msgstr ""
71
72#, fuzzy
73msgid "Installed version"
74msgstr "zadnja stabilna različica"
75
76#, fuzzy
77msgid "Latest stable version"
78msgstr "zadnja stabilna različica"
79
80#, fuzzy
81msgid "A more recent stable version is available."
82msgstr "na voljo je nova stabilna različica."
83
84#, fuzzy
85msgid "You are up to date."
86msgstr "imate najnovejšo različico."
87
88#, fuzzy
89msgid "Latest dev version"
90msgstr "zadnja razvojna različica"
91
92#, fuzzy
93msgid "A more recent development version is available."
94msgstr "na voljo je nova razvojna različica."
95
96msgid "Feeds"
97msgstr ""
98
99msgid "Your feed token is currently empty and must first be generated to enable feeds. Click <a href='?feed&amp;action=generate'>here to generate it</a>."
100msgstr ""
101
102msgid "Unread feed"
103msgstr ""
104
105#, fuzzy
106msgid "Favorites feed"
107msgstr "priljubljeni"
108
109#, fuzzy
110msgid "Archive feed"
111msgstr "arhiv"
112
113msgid "Your token:"
114msgstr ""
115
116msgid "Your user id:"
117msgstr ""
118
119msgid "You can regenerate your token: <a href='?feed&amp;action=generate'>generate!</a>."
120msgstr ""
121
122#, fuzzy
123msgid "Change your theme"
124msgstr "Zamenjava gesla"
125
126msgid "Theme:"
127msgstr ""
128
129msgid "Update"
130msgstr "Posodobi"
131
132#, fuzzy
133msgid "Change your language"
134msgstr "Zamenjava gesla"
135
136msgid "Language:"
137msgstr ""
138
139msgid "Change your password"
140msgstr "Zamenjava gesla"
141
142msgid "New password:"
143msgstr "Novo geslo:"
144
145msgid "Password"
146msgstr "Geslo"
147
148msgid "Repeat your new password:"
149msgstr "Ponovite novo geslo:"
150
151msgid "Import"
152msgstr "Uvozi"
153
154#, fuzzy
155msgid "Please execute the import script locally as it can take a very long time."
156msgstr "Prosimo poženite skripto za uvoz lokalno, saj lahko postopek traja precej časa."
157
158#, fuzzy
159msgid "More info in the official documentation:"
160msgstr "Več informacij v uradni dokumentaciji:"
161
162#, fuzzy
163msgid "Import from Pocket"
164msgstr "Uvoz iz aplikacije Pocket"
165
166#, php-format
167msgid "(you must have a %s file on your server)"
168msgstr ""
169
170#, fuzzy
171msgid "Import from Readability"
172msgstr "Uvoz iz aplikacije Readability"
173
174#, fuzzy
175msgid "Import from Instapaper"
176msgstr "Uvoz iz aplikacije Instapaper"
177
178#, fuzzy
179msgid "Import from wallabag"
180msgstr "Uvoz iz aplikacije Readability"
181
182#, fuzzy
183msgid "Export your wallabag data"
184msgstr "Izvoz vsebine"
185
186msgid "Click here"
187msgstr "Kliknite tukaj"
188
189#, fuzzy
190msgid "to download your database."
191msgstr "za izvoz vsebine aplikacije Poche."
192
193#, fuzzy
194msgid "to export your wallabag data."
195msgstr "za izvoz vsebine aplikacije Poche."
196
197msgid "Cache"
198msgstr ""
199
200msgid "to delete cache."
201msgstr ""
202
203msgid "You can enter multiple tags, separated by commas."
204msgstr ""
205
206msgid "return to article"
207msgstr ""
208
209msgid "plop"
210msgstr "štrbunk"
211
212msgid "You can <a href='wallabag_compatibility_test.php'>check your configuration here</a>."
213msgstr ""
214
215msgid "favoris"
216msgstr "priljubljeni"
217
218msgid "archive"
219msgstr "arhiv"
220
221msgid "unread"
222msgstr "neprebrano"
223
224msgid "by date asc"
225msgstr "po datumu - naraščajoče"
226
227msgid "by date"
228msgstr "po datumu"
229
230msgid "by date desc"
231msgstr "po datumu - padajoče"
232
233msgid "by title asc"
234msgstr "po naslovu - naraščajoče"
235
236msgid "by title"
237msgstr "po naslovu"
238
239msgid "by title desc"
240msgstr "po naslovu - padajoče"
241
242msgid "Tag"
243msgstr ""
244
245msgid "No articles found."
246msgstr ""
247
248#, fuzzy
249msgid "Toggle mark as read"
250msgstr "označi kot prebrano"
251
252msgid "toggle favorite"
253msgstr "označi kot priljubljeno"
254
255msgid "delete"
256msgstr "zavrzi"
257
258msgid "original"
259msgstr "izvirnik"
260
261msgid "estimated reading time:"
262msgstr ""
263
264msgid "mark all the entries as read"
265msgstr ""
266
267msgid "results"
268msgstr "rezultati"
269
270msgid "installation"
271msgstr "Namestitev"
272
273#, fuzzy
274msgid "install your wallabag"
275msgstr "Namestitev aplikacije Poche"
276
277#, fuzzy
278msgid "wallabag is still not installed. Please fill the below form to install it. Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation on wallabag website</a>."
279msgstr "Poche še vedno ni nameščen. Za namestitev izpolnite spodnji obrazec. Za več informacij <a href='http://inthepoche.com/doc'>preberite dokumentacijo na spletni strani</a>."
280
281msgid "Login"
282msgstr "Prijava"
283
284msgid "Repeat your password"
285msgstr "Ponovite geslo"
286
287msgid "Install"
288msgstr "Namesti"
289
290#, fuzzy
291msgid "login to your wallabag"
292msgstr "prijavite se v svoj Poche"
293
294msgid "Login to wallabag"
295msgstr ""
296
297msgid "you are in demo mode, some features may be disabled."
298msgstr "uporabljate vzorčno različico programa, zato so lahko nekatere funkcije izklopljene."
299
300msgid "Username"
301msgstr ""
302
303msgid "Stay signed in"
304msgstr "Ostani prijavljen"
305
306msgid "(Do not check on public computers)"
307msgstr "(Ne označi na javnih napravah)"
308
309msgid "Sign in"
310msgstr "Prijava"
311
312msgid "favorites"
313msgstr "priljubljeni"
314
315msgid "estimated reading time :"
316msgstr ""
317
318msgid "Mark all the entries as read"
319msgstr ""
320
321msgid "Return home"
322msgstr ""
323
324#, fuzzy
325msgid "Back to top"
326msgstr "nazaj na vrh"
327
328#, fuzzy
329msgid "Mark as read"
330msgstr "označi kot prebrano"
331
332#, fuzzy
333msgid "Favorite"
334msgstr "priljubljeni"
335
336#, fuzzy
337msgid "Toggle favorite"
338msgstr "označi kot priljubljeno"
339
340#, fuzzy
341msgid "Delete"
342msgstr "zavrzi"
343
344#, fuzzy
345msgid "Tweet"
346msgstr "tvitni"
347
348#, fuzzy
349msgid "Email"
350msgstr "pošlji po e-pošti"
351
352msgid "shaarli"
353msgstr "shaarli"
354
355msgid "flattr"
356msgstr "flattr"
357
358#, fuzzy
359msgid "Does this article appear wrong?"
360msgstr "napaka?"
361
362msgid "tags:"
363msgstr ""
364
365msgid "Edit tags"
366msgstr ""
367
368msgid "save link!"
369msgstr ""
370
371msgid "home"
372msgstr "domov"
373
374msgid "tags"
375msgstr ""
376
377msgid "logout"
378msgstr "odjava"
379
380msgid "powered by"
381msgstr "stran poganja"
382
383msgid "debug mode is on so cache is off."
384msgstr "vklopljen je način odpravljanja napak, zato je predpomnilnik izključen."
385
386#, fuzzy
387msgid "your wallabag version:"
388msgstr "vaša različica"
389
390msgid "storage:"
391msgstr "pomnilnik:"
392
393msgid "save a link"
394msgstr ""
395
396msgid "back to home"
397msgstr "Nazaj domov"
398
399msgid "toggle mark as read"
400msgstr "označi kot prebrano"
401
402msgid "tweet"
403msgstr "tvitni"
404
405msgid "email"
406msgstr "pošlji po e-pošti"
407
408msgid "this article appears wrong?"
409msgstr "napaka?"
410
411msgid "No link available here!"
412msgstr "Povezava ni na voljo!"
413
414msgid "Poching a link"
415msgstr "Shrani povezavo"
416
417msgid "by filling this field"
418msgstr "z vnosom v to polje"
419
420msgid "bookmarklet: drag & drop this link to your bookmarks bar"
421msgstr ""
422
423msgid "your version"
424msgstr "vaša različica"
425
426msgid "latest stable version"
427msgstr "zadnja stabilna različica"
428
429msgid "a more recent stable version is available."
430msgstr "na voljo je nova stabilna različica."
431
432msgid "you are up to date."
433msgstr "imate najnovejšo različico."
434
435msgid "latest dev version"
436msgstr "zadnja razvojna različica"
437
438msgid "a more recent development version is available."
439msgstr "na voljo je nova razvojna različica."
440
441msgid "Please execute the import script locally, it can take a very long time."
442msgstr "Prosimo poženite skripto za uvoz lokalno, saj lahko postopek traja precej časa."
443
444msgid "More infos in the official doc:"
445msgstr "Več informacij v uradni dokumentaciji:"
446
447msgid "import from Pocket"
448msgstr "Uvoz iz aplikacije Pocket"
449
450msgid "import from Readability"
451msgstr "Uvoz iz aplikacije Readability"
452
453msgid "import from Instapaper"
454msgstr "Uvoz iz aplikacije Instapaper"
455
456msgid "Tags"
457msgstr ""
458
459#, fuzzy
460msgid "Untitled"
461msgstr "po naslovu"
462
463msgid "the link has been added successfully"
464msgstr ""
465
466msgid "error during insertion : the link wasn't added"
467msgstr ""
468
469msgid "the link has been deleted successfully"
470msgstr ""
471
472msgid "the link wasn't deleted"
473msgstr ""
474
475msgid "Article not found!"
476msgstr ""
477
478msgid "previous"
479msgstr ""
480
481msgid "next"
482msgstr ""
483
484msgid "in demo mode, you can't update your password"
485msgstr ""
486
487msgid "your password has been updated"
488msgstr ""
489
490msgid "the two fields have to be filled & the password must be the same in the two fields"
491msgstr ""
492
493msgid "still using the \""
494msgstr ""
495
496msgid "that theme does not seem to be installed"
497msgstr ""
498
499msgid "you have changed your theme preferences"
500msgstr ""
501
502msgid "that language does not seem to be installed"
503msgstr ""
504
505msgid "you have changed your language preferences"
506msgstr ""
507
508msgid "login failed: you have to fill all fields"
509msgstr ""
510
511msgid "welcome to your wallabag"
512msgstr ""
513
514msgid "login failed: bad login or password"
515msgstr ""
516
517#, fuzzy
518msgid "import from instapaper completed"
519msgstr "Uvoz iz aplikacije Instapaper"
520
521#, fuzzy
522msgid "import from pocket completed"
523msgstr "Uvoz iz aplikacije Pocket"
524
525#, fuzzy
526msgid "import from Readability completed. "
527msgstr "Uvoz iz aplikacije Readability"
528
529#, fuzzy
530msgid "import from Poche completed. "
531msgstr "Uvoz iz aplikacije Pocket"
532
533msgid "Unknown import provider."
534msgstr ""
535
536msgid "Incomplete inc/poche/define.inc.php file, please define \""
537msgstr ""
538
539msgid "Could not find required \""
540msgstr ""
541
542msgid "Uh, there is a problem while generating feeds."
543msgstr ""
544
545#, fuzzy
546msgid "Cache deleted."
547msgstr "zavrzi"
548
549msgid "Oops, it seems you don't have PHP 5."
550msgstr ""
551
552#~ msgid "poche it!"
553#~ msgstr "shrani!"
554
555#~ msgid "Updating poche"
556#~ msgstr "Posodabljam Poche"
557
558#~ msgid "create an issue"
559#~ msgstr "prijavi napako"
560
561#~ msgid "or"
562#~ msgstr "ali"
563
564#~ msgid "contact us by mail"
565#~ msgstr "pošlji e-pošto razvijalcem"
566
567#~ msgid "your poche version:"
568#~ msgstr "vaša verzija Poche:"
diff --git a/src/Wallabag/Wallabag/Resources/translations/tools/fillCache.php b/src/Wallabag/Wallabag/Resources/translations/tools/fillCache.php
deleted file mode 100755
index bdd9cc58..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/tools/fillCache.php
+++ /dev/null
@@ -1,59 +0,0 @@
1<?php
2
3// this script compile all twig templates and put it in cahce to get Poedit (or xgettext) to extract phrases fron chached templates.
4
5// gettext command line tools:
6// msgunfmt - get po from mo
7// msgfmt - get mo from po
8// xgettext - extract phrases from files
9
10
11 $siteRoot = dirname(__FILE__) . '/../..';
12
13 require_once $siteRoot . '/vendor/twig/twig/lib/Twig/Autoloader.php';
14 Twig_Autoloader::register();
15
16 require_once $siteRoot . '/vendor/twig/extensions/lib/Twig/Extensions/Autoloader.php';
17 Twig_Extensions_Autoloader::register();
18
19 //$tplDir = $siteRoot.'/themes/default';
20 $tplDirRoot = $siteRoot.'/themes/';
21 $tmpDir = $siteRoot. '/cache/';
22
23 foreach (new IteratorIterator(new DirectoryIterator($tplDirRoot)) as $tplDir) {
24
25 if ($tplDir->isDir() and $tplDir!='.' and $tplDir!='..') {
26 echo "\n$tplDir\n";
27
28 $loader = new Twig_Loader_Filesystem($tplDirRoot.$tplDir);
29
30 // force auto-reload to always have the latest version of the template
31 $twig = new Twig_Environment($loader, array(
32 'cache' => $tmpDir,
33 'auto_reload' => true
34 ));
35
36 $twig->addExtension(new Twig_Extensions_Extension_I18n());
37
38 $filter = new Twig_SimpleFilter('getDomain', 'Tools::getDomain');
39 $twig->addFilter($filter);
40
41 $filter = new Twig_SimpleFilter('getReadingTime', 'Tools::getReadingTime');
42 $twig->addFilter($filter);
43
44 $filter = new Twig_SimpleFilter('getPrettyFilename', function($string) { return str_replace($siteRoot, '', $string); });
45 $twig->addFilter($filter);
46
47// // iterate over all your templates
48 foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($tplDirRoot.$tplDir), RecursiveIteratorIterator::LEAVES_ONLY) as $file) {
49 // force compilation
50 if ($file->isFile() and pathinfo($file, PATHINFO_EXTENSION)=='twig') {
51 echo "\t$file\n";
52 $twig->loadTemplate(str_replace($tplDirRoot.$tplDir.'/', '', $file));
53 }
54 }
55
56 }
57
58 }
59
diff --git a/src/Wallabag/Wallabag/Resources/translations/uk_UA.utf8/LC_MESSAGES/uk_UA.utf8.mo b/src/Wallabag/Wallabag/Resources/translations/uk_UA.utf8/LC_MESSAGES/uk_UA.utf8.mo
deleted file mode 100755
index 4884abf5..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/uk_UA.utf8/LC_MESSAGES/uk_UA.utf8.mo
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/translations/uk_UA.utf8/LC_MESSAGES/uk_UA.utf8.po b/src/Wallabag/Wallabag/Resources/translations/uk_UA.utf8/LC_MESSAGES/uk_UA.utf8.po
deleted file mode 100755
index 08797705..00000000
--- a/src/Wallabag/Wallabag/Resources/translations/uk_UA.utf8/LC_MESSAGES/uk_UA.utf8.po
+++ /dev/null
@@ -1,534 +0,0 @@
1msgid ""
2msgstr ""
3"Project-Id-Version: wballabag\n"
4"Report-Msgid-Bugs-To: \n"
5"POT-Creation-Date: 2014-02-25 15:06+0300\n"
6"PO-Revision-Date: 2014-02-25 15:08+0300\n"
7"Last-Translator: Maryana <mariroz@mr.lviv.ua>\n"
8"Language-Team: \n"
9"Language: \n"
10"MIME-Version: 1.0\n"
11"Content-Type: text/plain; charset=UTF-8\n"
12"Content-Transfer-Encoding: 8bit\n"
13"X-Poedit-KeywordsList: _;gettext;gettext_noop\n"
14"X-Poedit-Basepath: .\n"
15"X-Poedit-Language: Ukrainian\n"
16"X-Poedit-Country: UKRAINE\n"
17"X-Poedit-SourceCharset: utf-8\n"
18"X-Poedit-SearchPath-0: /home/mariroz/_DEV/web/wallabag/wallabag-master-testing\n"
19
20msgid "wallabag, a read it later open source system"
21msgstr "wallabag, сервіс відкладеного читання з відкритим кодом"
22
23msgid "login failed: user doesn't exist"
24msgstr "увійти не вдалося: користувач не існує"
25
26msgid "return home"
27msgstr "повернутися на головну"
28
29msgid "config"
30msgstr "налаштування"
31
32msgid "Saving articles"
33msgstr "Зберігання посилань"
34
35msgid "There are several ways to save an article:"
36msgstr "Є кілька способів зберегти статтю:"
37
38msgid "read the documentation"
39msgstr "читати документацію"
40
41msgid "download the extension"
42msgstr "завантажити розширення"
43
44msgid "via F-Droid"
45msgstr "через F-Droid"
46
47msgid " or "
48msgstr "або"
49
50msgid "via Google Play"
51msgstr "через Google Play"
52
53msgid "download the application"
54msgstr "завантажити додаток"
55
56msgid "By filling this field"
57msgstr "Заповнивши це поле"
58
59msgid "bag it!"
60msgstr "зберегти!"
61
62msgid "Bookmarklet: drag & drop this link to your bookmarks bar"
63msgstr "З допомогою закладки: перетягніть і відпустіть посилання на панель закладок"
64
65msgid "Upgrading wallabag"
66msgstr "Оновлення wallabag"
67
68msgid "Installed version"
69msgstr "Встановлено ​​версію"
70
71msgid "Latest stable version"
72msgstr "Остання стабільна версія"
73
74msgid "A more recent stable version is available."
75msgstr "Є новіша стабільна версія."
76
77msgid "You are up to date."
78msgstr "У вас остання версія."
79
80msgid "Latest dev version"
81msgstr "Остання версія в розробці"
82
83msgid "A more recent development version is available."
84msgstr "Доступна новіша версія в розробці."
85
86msgid "Feeds"
87msgstr "Завантаження (feeds)"
88
89msgid "Your feed token is currently empty and must first be generated to enable feeds. Click <a href='?feed&amp;action=generate'>here to generate it</a>."
90msgstr "Ваш маркер завантажень (feed token) не визначено, ви повинні спочатку згенерувати його для того, щоб активувати завантаження. Натисніть <a href='?feed&action=generate'>тут для його генерації</ A>."
91
92msgid "Unread feed"
93msgstr "Завантаження непрочитаного"
94
95msgid "Favorites feed"
96msgstr "Завантаження вибраного"
97
98msgid "Archive feed"
99msgstr "Завантаження архіву"
100
101msgid "Your token:"
102msgstr "Ваш маркер (token): "
103
104msgid "Your user id:"
105msgstr "Ваш ідентифікатор користувача (user id):"
106
107msgid "You can regenerate your token: <a href='?feed&amp;action=generate'>generate!</a>."
108msgstr "Ви можете перестворити ваш маркер: натисніть <a href='?feed&amp;action=generate'>згенерувати!</a>."
109
110msgid "Change your theme"
111msgstr "Змінити тему"
112
113msgid "Theme:"
114msgstr "Тема:"
115
116msgid "Update"
117msgstr "Оновити"
118
119msgid "Change your language"
120msgstr "Змінити мову"
121
122msgid "Language:"
123msgstr "Мова:"
124
125msgid "Change your password"
126msgstr "Зміна паролю"
127
128msgid "New password:"
129msgstr "Новий пароль:"
130
131msgid "Password"
132msgstr "Пароль"
133
134msgid "Repeat your new password:"
135msgstr "Новий пароль ще раз:"
136
137msgid "Import"
138msgstr "Імпортування"
139
140msgid "Please execute the import script locally as it can take a very long time."
141msgstr "Будь ласка, виконайте сценарій імпорту локально, оскільки це може тривати досить довго."
142
143msgid "More info in the official documentation:"
144msgstr "Більше інформації в офіційній документації:"
145
146msgid "Import from Pocket"
147msgstr "Імпорт з Pocket-а"
148
149#, php-format
150msgid "(you must have a %s file on your server)"
151msgstr "(файл %s повинен бути присутнім на вашому сервері)"
152
153msgid "Import from Readability"
154msgstr "Імпорт з Readability"
155
156msgid "Import from Instapaper"
157msgstr "Імпорт з Instapaper"
158
159msgid "Import from wallabag"
160msgstr "Імпорт з wallabag"
161
162msgid "Export your wallabag data"
163msgstr "Експортувати ваші дані з wallabag"
164
165msgid "Click here"
166msgstr "Клікніть тут"
167
168msgid "to download your database."
169msgstr "щоб завантажити вашу базу даних."
170
171msgid "to export your wallabag data."
172msgstr "щоб експортувати ваші дані wallabag."
173
174msgid "Cache"
175msgstr "Кеш"
176
177msgid "to delete cache."
178msgstr "щоб очистити кеш."
179
180msgid "You can enter multiple tags, separated by commas."
181msgstr "Ви можете ввести декілька тегів, розділених комами."
182
183msgid "return to article"
184msgstr "повернутися до статті"
185
186msgid "plop"
187msgstr "plop"
188
189msgid "You can <a href='wallabag_compatibility_test.php'>check your configuration here</a>."
190msgstr "Ви можете <a href='wallabag_compatibility_test.php'>перевірити вашу конфігурацію тут</a>."
191
192msgid "favoris"
193msgstr "вибране"
194
195msgid "archive"
196msgstr "архів"
197
198msgid "unread"
199msgstr "непрочитане"
200
201msgid "by date asc"
202msgstr "за датою по зростанню"
203
204msgid "by date"
205msgstr "за датою"
206
207msgid "by date desc"
208msgstr "за датою по спаданню"
209
210msgid "by title asc"
211msgstr "за назвою по зростанню"
212
213msgid "by title"
214msgstr "за назвою"
215
216msgid "by title desc"
217msgstr "за назвою по спаданню"
218
219msgid "Tag"
220msgstr "Тег"
221
222msgid "No articles found."
223msgstr "Статей не знайдено."
224
225msgid "Toggle mark as read"
226msgstr "змінити мітку прочитаного"
227
228msgid "toggle favorite"
229msgstr "змінити мітку вибраного"
230
231msgid "delete"
232msgstr "видалити"
233
234msgid "original"
235msgstr "оригінал"
236
237msgid "estimated reading time:"
238msgstr "приблизний час читання:"
239
240msgid "mark all the entries as read"
241msgstr "відмітити всі статті як прочитані"
242
243msgid "results"
244msgstr "результат(ів)"
245
246msgid "installation"
247msgstr "інсталяція"
248
249msgid "install your wallabag"
250msgstr "встановити wallabag"
251
252msgid "wallabag is still not installed. Please fill the below form to install it. Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation on wallabag website</a>."
253msgstr "wallabag ще не встановлено. Будь ласка, заповніть форму нижче, щоб його встановити. Ви можете <a href='http://doc.wallabag.org/'>звертутися до документації на сайті wallabag</ A>."
254
255msgid "Login"
256msgstr "Логін"
257
258msgid "Repeat your password"
259msgstr "Пароль ще раз"
260
261msgid "Install"
262msgstr "Встановити"
263
264msgid "login to your wallabag"
265msgstr "увійти до wallabag"
266
267msgid "Login to wallabag"
268msgstr "Увійти до wallabag"
269
270msgid "you are in demo mode, some features may be disabled."
271msgstr "ви в демонстраційному режимі, деякі функції можуть бути відключені."
272
273msgid "Username"
274msgstr "Ім’я користувача"
275
276msgid "Stay signed in"
277msgstr "Запам'ятати мене"
278
279msgid "(Do not check on public computers)"
280msgstr "(Не відмічайте на загальнодоступних комп'ютерах)"
281
282msgid "Sign in"
283msgstr "Увійти"
284
285msgid "favorites"
286msgstr "вибране"
287
288msgid "estimated reading time :"
289msgstr "приблизний час читання:"
290
291msgid "Mark all the entries as read"
292msgstr "Відмітити все як прочитане"
293
294msgid "Return home"
295msgstr "Повернутися на головну"
296
297msgid "Back to top"
298msgstr "Догори"
299
300msgid "Mark as read"
301msgstr "Відмітити як прочитано/не прочитано"
302
303msgid "Favorite"
304msgstr "Вибране"
305
306msgid "Toggle favorite"
307msgstr "Відмітити як вибране/не вибране"
308
309msgid "Delete"
310msgstr "Видалити"
311
312msgid "Tweet"
313msgstr "Твітнути"
314
315msgid "Email"
316msgstr "Надіслати по e-mail"
317
318msgid "shaarli"
319msgstr "shaarli"
320
321msgid "flattr"
322msgstr "flattr"
323
324msgid "Does this article appear wrong?"
325msgstr "Ця стаття виглядає не так, як треба?"
326
327msgid "tags:"
328msgstr "теги:"
329
330msgid "Edit tags"
331msgstr "Редагувати теги"
332
333msgid "save link!"
334msgstr "зберегти лінк!"
335
336msgid "home"
337msgstr "головна"
338
339msgid "tags"
340msgstr "теги"
341
342msgid "logout"
343msgstr "вихід"
344
345msgid "powered by"
346msgstr "за підтримки"
347
348msgid "debug mode is on so cache is off."
349msgstr "режим відладки включено, отже кеш виключено."
350
351msgid "your wallabag version:"
352msgstr "версія вашого wallabag:"
353
354msgid "storage:"
355msgstr "сховище:"
356
357msgid "save a link"
358msgstr "зберегти лінк"
359
360msgid "back to home"
361msgstr "назад на головну"
362
363msgid "toggle mark as read"
364msgstr "змінити мітку на прочитано"
365
366msgid "tweet"
367msgstr "твітнути"
368
369msgid "email"
370msgstr "email"
371
372msgid "this article appears wrong?"
373msgstr "ця стаття виглядає не так, як треба?"
374
375msgid "No link available here!"
376msgstr "Немає доступних посилань!"
377
378msgid "Poching a link"
379msgstr "Зберігання посилання"
380
381msgid "by filling this field"
382msgstr "заповнивши це поле"
383
384msgid "bookmarklet: drag & drop this link to your bookmarks bar"
385msgstr "з допомогою закладки: перетягніть і відпустіть посилання на панель закладок"
386
387msgid "your version"
388msgstr "ваша версія:"
389
390msgid "latest stable version"
391msgstr "остання стабільна версія"
392
393msgid "a more recent stable version is available."
394msgstr "є новіша стабільна версія."
395
396msgid "you are up to date."
397msgstr "у вас остання версія."
398
399msgid "latest dev version"
400msgstr "остання версія в розробці"
401
402msgid "a more recent development version is available."
403msgstr "доступна новіша версія в розробці."
404
405msgid "Please execute the import script locally, it can take a very long time."
406msgstr "Будь ласка, виконайте сценарій імпорту локально, оскільки це може тривати досить довго."
407
408msgid "More infos in the official doc:"
409msgstr "Більше інформації в офіційній документації:"
410
411msgid "import from Pocket"
412msgstr "імпорт з Pocket-а"
413
414msgid "import from Readability"
415msgstr "імпорт з Readability"
416
417msgid "import from Instapaper"
418msgstr "імпорт з Instapaper"
419
420msgid "Tags"
421msgstr "Теги"
422
423msgid "Untitled"
424msgstr "Без назви"
425
426msgid "the link has been added successfully"
427msgstr "посилання успішно додано"
428
429msgid "error during insertion : the link wasn't added"
430msgstr "помилка при вставці: посилання не додано"
431
432msgid "the link has been deleted successfully"
433msgstr "посилання успішно видалено"
434
435msgid "the link wasn't deleted"
436msgstr "посилання не було видалено"
437
438msgid "Article not found!"
439msgstr "Статтю не знайдено!"
440
441msgid "previous"
442msgstr "попередня"
443
444msgid "next"
445msgstr "наступна"
446
447msgid "in demo mode, you can't update your password"
448msgstr "в демонстраційному режимі ви не можете змінювати свій пароль"
449
450msgid "your password has been updated"
451msgstr "ваш пароль змінено"
452
453msgid "the two fields have to be filled & the password must be the same in the two fields"
454msgstr "обидва поля повинні бути заповнені і пароль повинен співпадати в обох"
455
456msgid "still using the \""
457msgstr "досі використовується \""
458
459msgid "that theme does not seem to be installed"
460msgstr "виглядає, що цю тему не було встановлено"
461
462msgid "you have changed your theme preferences"
463msgstr "ви змінили налаштування своєї теми"
464
465msgid "that language does not seem to be installed"
466msgstr "виглядає, що цю мову не було встановлено"
467
468msgid "you have changed your language preferences"
469msgstr "ви змінили свої налаштування мови"
470
471msgid "login failed: you have to fill all fields"
472msgstr "увійти не вдалося: ви повинні заповнити всі поля"
473
474msgid "welcome to your wallabag"
475msgstr "ласкаво просимо до вашого wallabag"
476
477msgid "login failed: bad login or password"
478msgstr "увійти не вдалося: не вірний логін або пароль"
479
480msgid "import from instapaper completed"
481msgstr "імпорт з instapaper-а завершено"
482
483msgid "import from pocket completed"
484msgstr "імпорт з pocket-а завершено"
485
486msgid "import from Readability completed. "
487msgstr "імпорт з Readability завершено"
488
489msgid "import from Poche completed. "
490msgstr "імпорт з Poche завершено."
491
492msgid "Unknown import provider."
493msgstr "Невідомий провайдер імпорту."
494
495msgid "Incomplete inc/poche/define.inc.php file, please define \""
496msgstr "Неповний файл inc/poche/define.inc.php, будь ласка, визначте \""
497
498msgid "Could not find required \""
499msgstr "Не вдалося знайти потрібний \""
500
501msgid "Uh, there is a problem while generating feeds."
502msgstr "Ох, є проблема при створенні завантажень (feeds)."
503
504msgid "Cache deleted."
505msgstr "Кеш очищено."
506
507msgid "Oops, it seems you don't have PHP 5."
508msgstr "Упс, здається, у вас немає PHP 5."
509
510#~ msgid "You can poche a link by several methods:"
511#~ msgstr "Ви можете зберегти посилання кількома способами:"
512
513#~ msgid "poche it!"
514#~ msgstr "зберегти!"
515
516#~ msgid "Updating poche"
517#~ msgstr "Оновлення poche"
518
519#, fuzzy
520#~ msgid "Export your poche datas"
521#~ msgstr "Експортувати ваші дані з poche"
522
523#, fuzzy
524#~ msgid "to export your poche datas."
525#~ msgstr "щоб експортувати ваші дані poche."
526
527#~ msgid "Import from poche"
528#~ msgstr "Імпорт з poche"
529
530#~ msgid "welcome to your poche"
531#~ msgstr "ласкаво просимо до вашого poche"
532
533#~ msgid "see you soon!"
534#~ msgstr "бувайте, ще побачимось!"
diff --git a/src/Wallabag/Wallabag/Resources/views/_global/public/css/jquery-ui-1.10.4.custom.css b/src/Wallabag/Wallabag/Resources/views/_global/public/css/jquery-ui-1.10.4.custom.css
deleted file mode 100644
index 5690172f..00000000
--- a/src/Wallabag/Wallabag/Resources/views/_global/public/css/jquery-ui-1.10.4.custom.css
+++ /dev/null
@@ -1,560 +0,0 @@
1/*! jQuery UI - v1.10.4 - 2014-03-09
2* http://jqueryui.com
3* Includes: jquery.ui.core.css, jquery.ui.autocomplete.css, jquery.ui.menu.css, jquery.ui.theme.css
4* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
5* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
6
7/* Layout helpers
8----------------------------------*/
9.ui-helper-hidden {
10 display: none;
11}
12.ui-helper-hidden-accessible {
13 border: 0;
14 clip: rect(0 0 0 0);
15 height: 1px;
16 margin: -1px;
17 overflow: hidden;
18 padding: 0;
19 position: absolute;
20 width: 1px;
21}
22.ui-helper-reset {
23 margin: 0;
24 padding: 0;
25 border: 0;
26 outline: 0;
27 line-height: 1.3;
28 text-decoration: none;
29 font-size: 100%;
30 list-style: none;
31}
32.ui-helper-clearfix:before,
33.ui-helper-clearfix:after {
34 content: "";
35 display: table;
36 border-collapse: collapse;
37}
38.ui-helper-clearfix:after {
39 clear: both;
40}
41.ui-helper-clearfix {
42 min-height: 0; /* support: IE7 */
43}
44.ui-helper-zfix {
45 width: 100%;
46 height: 100%;
47 top: 0;
48 left: 0;
49 position: absolute;
50 opacity: 0;
51 filter:Alpha(Opacity=0);
52}
53
54.ui-front {
55 z-index: 100;
56}
57
58
59/* Interaction Cues
60----------------------------------*/
61.ui-state-disabled {
62 cursor: default !important;
63}
64
65
66/* Icons
67----------------------------------*/
68
69/* states and images */
70.ui-icon {
71 display: block;
72 text-indent: -99999px;
73 overflow: hidden;
74 background-repeat: no-repeat;
75}
76
77
78/* Misc visuals
79----------------------------------*/
80
81/* Overlays */
82.ui-widget-overlay {
83 position: fixed;
84 top: 0;
85 left: 0;
86 width: 100%;
87 height: 100%;
88}
89.ui-autocomplete {
90 position: absolute;
91 top: 0;
92 left: 0;
93 cursor: default;
94}
95.ui-menu {
96 list-style: none;
97 padding: 2px;
98 margin: 0;
99 display: block;
100 outline: none;
101}
102.ui-menu .ui-menu {
103 margin-top: -3px;
104 position: absolute;
105}
106.ui-menu .ui-menu-item {
107 margin: 0;
108 padding: 0;
109 width: 100%;
110 /* support: IE10, see #8844 */
111 list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
112}
113.ui-menu .ui-menu-divider {
114 margin: 5px -2px 5px -2px;
115 height: 0;
116 font-size: 0;
117 line-height: 0;
118 border-width: 1px 0 0 0;
119}
120.ui-menu .ui-menu-item a {
121 text-decoration: none;
122 display: block;
123 padding: 2px .4em;
124 line-height: 1.5;
125 min-height: 0; /* support: IE7 */
126 font-weight: normal;
127}
128.ui-menu .ui-menu-item a.ui-state-focus,
129.ui-menu .ui-menu-item a.ui-state-active {
130 font-weight: normal;
131 margin: -1px;
132}
133
134.ui-menu .ui-state-disabled {
135 font-weight: normal;
136 margin: .4em 0 .2em;
137 line-height: 1.5;
138}
139.ui-menu .ui-state-disabled a {
140 cursor: default;
141}
142
143/* icon support */
144.ui-menu-icons {
145 position: relative;
146}
147.ui-menu-icons .ui-menu-item a {
148 position: relative;
149 padding-left: 2em;
150}
151
152/* left-aligned */
153.ui-menu .ui-icon {
154 position: absolute;
155 top: .2em;
156 left: .2em;
157}
158
159/* right-aligned */
160.ui-menu .ui-menu-icon {
161 position: static;
162 float: right;
163}
164
165/* Component containers
166----------------------------------*/
167.ui-widget {
168 font-family: Verdana,Arial,sans-serif;
169 font-size: 1.1em;
170}
171.ui-widget .ui-widget {
172 font-size: 1em;
173}
174.ui-widget input,
175.ui-widget select,
176.ui-widget textarea,
177.ui-widget button {
178 font-family: Verdana,Arial,sans-serif;
179 font-size: 1em;
180}
181.ui-widget-content {
182 border: 1px solid #aaaaaa;
183 background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;
184 color: #222222;
185}
186.ui-widget-content a {
187 color: #222222;
188}
189.ui-widget-header {
190 border: 1px solid #aaaaaa;
191 background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;
192 color: #222222;
193 font-weight: bold;
194}
195.ui-widget-header a {
196 color: #222222;
197}
198
199/* Interaction states
200----------------------------------*/
201.ui-state-default,
202.ui-widget-content .ui-state-default,
203.ui-widget-header .ui-state-default {
204 border: 1px solid #d3d3d3;
205 background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;
206 font-weight: normal;
207 color: #555555;
208}
209.ui-state-default a,
210.ui-state-default a:link,
211.ui-state-default a:visited {
212 color: #555555;
213 text-decoration: none;
214}
215.ui-state-hover,
216.ui-widget-content .ui-state-hover,
217.ui-widget-header .ui-state-hover,
218.ui-state-focus,
219.ui-widget-content .ui-state-focus,
220.ui-widget-header .ui-state-focus {
221 border: 1px solid #999999;
222 background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;
223 font-weight: normal;
224 color: #212121;
225}
226.ui-state-hover a,
227.ui-state-hover a:hover,
228.ui-state-hover a:link,
229.ui-state-hover a:visited,
230.ui-state-focus a,
231.ui-state-focus a:hover,
232.ui-state-focus a:link,
233.ui-state-focus a:visited {
234 color: #212121;
235 text-decoration: none;
236}
237.ui-state-active,
238.ui-widget-content .ui-state-active,
239.ui-widget-header .ui-state-active {
240 border: 1px solid #aaaaaa;
241 background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;
242 font-weight: normal;
243 color: #212121;
244}
245.ui-state-active a,
246.ui-state-active a:link,
247.ui-state-active a:visited {
248 color: #212121;
249 text-decoration: none;
250}
251
252/* Interaction Cues
253----------------------------------*/
254.ui-state-highlight,
255.ui-widget-content .ui-state-highlight,
256.ui-widget-header .ui-state-highlight {
257 border: 1px solid #fcefa1;
258 background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;
259 color: #363636;
260}
261.ui-state-highlight a,
262.ui-widget-content .ui-state-highlight a,
263.ui-widget-header .ui-state-highlight a {
264 color: #363636;
265}
266.ui-state-error,
267.ui-widget-content .ui-state-error,
268.ui-widget-header .ui-state-error {
269 border: 1px solid #cd0a0a;
270 background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;
271 color: #cd0a0a;
272}
273.ui-state-error a,
274.ui-widget-content .ui-state-error a,
275.ui-widget-header .ui-state-error a {
276 color: #cd0a0a;
277}
278.ui-state-error-text,
279.ui-widget-content .ui-state-error-text,
280.ui-widget-header .ui-state-error-text {
281 color: #cd0a0a;
282}
283.ui-priority-primary,
284.ui-widget-content .ui-priority-primary,
285.ui-widget-header .ui-priority-primary {
286 font-weight: bold;
287}
288.ui-priority-secondary,
289.ui-widget-content .ui-priority-secondary,
290.ui-widget-header .ui-priority-secondary {
291 opacity: .7;
292 filter:Alpha(Opacity=70);
293 font-weight: normal;
294}
295.ui-state-disabled,
296.ui-widget-content .ui-state-disabled,
297.ui-widget-header .ui-state-disabled {
298 opacity: .35;
299 filter:Alpha(Opacity=35);
300 background-image: none;
301}
302.ui-state-disabled .ui-icon {
303 filter:Alpha(Opacity=35); /* For IE8 - See #6059 */
304}
305
306/* Icons
307----------------------------------*/
308
309/* states and images */
310.ui-icon {
311 width: 16px;
312 height: 16px;
313}
314.ui-icon,
315.ui-widget-content .ui-icon {
316 background-image: url(images/ui-icons_222222_256x240.png);
317}
318.ui-widget-header .ui-icon {
319 background-image: url(images/ui-icons_222222_256x240.png);
320}
321.ui-state-default .ui-icon {
322 background-image: url(images/ui-icons_888888_256x240.png);
323}
324.ui-state-hover .ui-icon,
325.ui-state-focus .ui-icon {
326 background-image: url(images/ui-icons_454545_256x240.png);
327}
328.ui-state-active .ui-icon {
329 background-image: url(images/ui-icons_454545_256x240.png);
330}
331.ui-state-highlight .ui-icon {
332 background-image: url(images/ui-icons_2e83ff_256x240.png);
333}
334.ui-state-error .ui-icon,
335.ui-state-error-text .ui-icon {
336 background-image: url(images/ui-icons_cd0a0a_256x240.png);
337}
338
339/* positioning */
340.ui-icon-blank { background-position: 16px 16px; }
341.ui-icon-carat-1-n { background-position: 0 0; }
342.ui-icon-carat-1-ne { background-position: -16px 0; }
343.ui-icon-carat-1-e { background-position: -32px 0; }
344.ui-icon-carat-1-se { background-position: -48px 0; }
345.ui-icon-carat-1-s { background-position: -64px 0; }
346.ui-icon-carat-1-sw { background-position: -80px 0; }
347.ui-icon-carat-1-w { background-position: -96px 0; }
348.ui-icon-carat-1-nw { background-position: -112px 0; }
349.ui-icon-carat-2-n-s { background-position: -128px 0; }
350.ui-icon-carat-2-e-w { background-position: -144px 0; }
351.ui-icon-triangle-1-n { background-position: 0 -16px; }
352.ui-icon-triangle-1-ne { background-position: -16px -16px; }
353.ui-icon-triangle-1-e { background-position: -32px -16px; }
354.ui-icon-triangle-1-se { background-position: -48px -16px; }
355.ui-icon-triangle-1-s { background-position: -64px -16px; }
356.ui-icon-triangle-1-sw { background-position: -80px -16px; }
357.ui-icon-triangle-1-w { background-position: -96px -16px; }
358.ui-icon-triangle-1-nw { background-position: -112px -16px; }
359.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
360.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
361.ui-icon-arrow-1-n { background-position: 0 -32px; }
362.ui-icon-arrow-1-ne { background-position: -16px -32px; }
363.ui-icon-arrow-1-e { background-position: -32px -32px; }
364.ui-icon-arrow-1-se { background-position: -48px -32px; }
365.ui-icon-arrow-1-s { background-position: -64px -32px; }
366.ui-icon-arrow-1-sw { background-position: -80px -32px; }
367.ui-icon-arrow-1-w { background-position: -96px -32px; }
368.ui-icon-arrow-1-nw { background-position: -112px -32px; }
369.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
370.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
371.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
372.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
373.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
374.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
375.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
376.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
377.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
378.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
379.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
380.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
381.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
382.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
383.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
384.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
385.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
386.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
387.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
388.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
389.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
390.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
391.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
392.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
393.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
394.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
395.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
396.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
397.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
398.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
399.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
400.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
401.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
402.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
403.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
404.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
405.ui-icon-arrow-4 { background-position: 0 -80px; }
406.ui-icon-arrow-4-diag { background-position: -16px -80px; }
407.ui-icon-extlink { background-position: -32px -80px; }
408.ui-icon-newwin { background-position: -48px -80px; }
409.ui-icon-refresh { background-position: -64px -80px; }
410.ui-icon-shuffle { background-position: -80px -80px; }
411.ui-icon-transfer-e-w { background-position: -96px -80px; }
412.ui-icon-transferthick-e-w { background-position: -112px -80px; }
413.ui-icon-folder-collapsed { background-position: 0 -96px; }
414.ui-icon-folder-open { background-position: -16px -96px; }
415.ui-icon-document { background-position: -32px -96px; }
416.ui-icon-document-b { background-position: -48px -96px; }
417.ui-icon-note { background-position: -64px -96px; }
418.ui-icon-mail-closed { background-position: -80px -96px; }
419.ui-icon-mail-open { background-position: -96px -96px; }
420.ui-icon-suitcase { background-position: -112px -96px; }
421.ui-icon-comment { background-position: -128px -96px; }
422.ui-icon-person { background-position: -144px -96px; }
423.ui-icon-print { background-position: -160px -96px; }
424.ui-icon-trash { background-position: -176px -96px; }
425.ui-icon-locked { background-position: -192px -96px; }
426.ui-icon-unlocked { background-position: -208px -96px; }
427.ui-icon-bookmark { background-position: -224px -96px; }
428.ui-icon-tag { background-position: -240px -96px; }
429.ui-icon-home { background-position: 0 -112px; }
430.ui-icon-flag { background-position: -16px -112px; }
431.ui-icon-calendar { background-position: -32px -112px; }
432.ui-icon-cart { background-position: -48px -112px; }
433.ui-icon-pencil { background-position: -64px -112px; }
434.ui-icon-clock { background-position: -80px -112px; }
435.ui-icon-disk { background-position: -96px -112px; }
436.ui-icon-calculator { background-position: -112px -112px; }
437.ui-icon-zoomin { background-position: -128px -112px; }
438.ui-icon-zoomout { background-position: -144px -112px; }
439.ui-icon-search { background-position: -160px -112px; }
440.ui-icon-wrench { background-position: -176px -112px; }
441.ui-icon-gear { background-position: -192px -112px; }
442.ui-icon-heart { background-position: -208px -112px; }
443.ui-icon-star { background-position: -224px -112px; }
444.ui-icon-link { background-position: -240px -112px; }
445.ui-icon-cancel { background-position: 0 -128px; }
446.ui-icon-plus { background-position: -16px -128px; }
447.ui-icon-plusthick { background-position: -32px -128px; }
448.ui-icon-minus { background-position: -48px -128px; }
449.ui-icon-minusthick { background-position: -64px -128px; }
450.ui-icon-close { background-position: -80px -128px; }
451.ui-icon-closethick { background-position: -96px -128px; }
452.ui-icon-key { background-position: -112px -128px; }
453.ui-icon-lightbulb { background-position: -128px -128px; }
454.ui-icon-scissors { background-position: -144px -128px; }
455.ui-icon-clipboard { background-position: -160px -128px; }
456.ui-icon-copy { background-position: -176px -128px; }
457.ui-icon-contact { background-position: -192px -128px; }
458.ui-icon-image { background-position: -208px -128px; }
459.ui-icon-video { background-position: -224px -128px; }
460.ui-icon-script { background-position: -240px -128px; }
461.ui-icon-alert { background-position: 0 -144px; }
462.ui-icon-info { background-position: -16px -144px; }
463.ui-icon-notice { background-position: -32px -144px; }
464.ui-icon-help { background-position: -48px -144px; }
465.ui-icon-check { background-position: -64px -144px; }
466.ui-icon-bullet { background-position: -80px -144px; }
467.ui-icon-radio-on { background-position: -96px -144px; }
468.ui-icon-radio-off { background-position: -112px -144px; }
469.ui-icon-pin-w { background-position: -128px -144px; }
470.ui-icon-pin-s { background-position: -144px -144px; }
471.ui-icon-play { background-position: 0 -160px; }
472.ui-icon-pause { background-position: -16px -160px; }
473.ui-icon-seek-next { background-position: -32px -160px; }
474.ui-icon-seek-prev { background-position: -48px -160px; }
475.ui-icon-seek-end { background-position: -64px -160px; }
476.ui-icon-seek-start { background-position: -80px -160px; }
477/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
478.ui-icon-seek-first { background-position: -80px -160px; }
479.ui-icon-stop { background-position: -96px -160px; }
480.ui-icon-eject { background-position: -112px -160px; }
481.ui-icon-volume-off { background-position: -128px -160px; }
482.ui-icon-volume-on { background-position: -144px -160px; }
483.ui-icon-power { background-position: 0 -176px; }
484.ui-icon-signal-diag { background-position: -16px -176px; }
485.ui-icon-signal { background-position: -32px -176px; }
486.ui-icon-battery-0 { background-position: -48px -176px; }
487.ui-icon-battery-1 { background-position: -64px -176px; }
488.ui-icon-battery-2 { background-position: -80px -176px; }
489.ui-icon-battery-3 { background-position: -96px -176px; }
490.ui-icon-circle-plus { background-position: 0 -192px; }
491.ui-icon-circle-minus { background-position: -16px -192px; }
492.ui-icon-circle-close { background-position: -32px -192px; }
493.ui-icon-circle-triangle-e { background-position: -48px -192px; }
494.ui-icon-circle-triangle-s { background-position: -64px -192px; }
495.ui-icon-circle-triangle-w { background-position: -80px -192px; }
496.ui-icon-circle-triangle-n { background-position: -96px -192px; }
497.ui-icon-circle-arrow-e { background-position: -112px -192px; }
498.ui-icon-circle-arrow-s { background-position: -128px -192px; }
499.ui-icon-circle-arrow-w { background-position: -144px -192px; }
500.ui-icon-circle-arrow-n { background-position: -160px -192px; }
501.ui-icon-circle-zoomin { background-position: -176px -192px; }
502.ui-icon-circle-zoomout { background-position: -192px -192px; }
503.ui-icon-circle-check { background-position: -208px -192px; }
504.ui-icon-circlesmall-plus { background-position: 0 -208px; }
505.ui-icon-circlesmall-minus { background-position: -16px -208px; }
506.ui-icon-circlesmall-close { background-position: -32px -208px; }
507.ui-icon-squaresmall-plus { background-position: -48px -208px; }
508.ui-icon-squaresmall-minus { background-position: -64px -208px; }
509.ui-icon-squaresmall-close { background-position: -80px -208px; }
510.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
511.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
512.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
513.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
514.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
515.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
516
517
518/* Misc visuals
519----------------------------------*/
520
521/* Corner radius */
522.ui-corner-all,
523.ui-corner-top,
524.ui-corner-left,
525.ui-corner-tl {
526 border-top-left-radius: 4px;
527}
528.ui-corner-all,
529.ui-corner-top,
530.ui-corner-right,
531.ui-corner-tr {
532 border-top-right-radius: 4px;
533}
534.ui-corner-all,
535.ui-corner-bottom,
536.ui-corner-left,
537.ui-corner-bl {
538 border-bottom-left-radius: 4px;
539}
540.ui-corner-all,
541.ui-corner-bottom,
542.ui-corner-right,
543.ui-corner-br {
544 border-bottom-right-radius: 4px;
545}
546
547/* Overlays */
548.ui-widget-overlay {
549 background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
550 opacity: .3;
551 filter: Alpha(Opacity=30);
552}
553.ui-widget-shadow {
554 margin: -8px 0 0 -8px;
555 padding: 8px;
556 background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
557 opacity: .3;
558 filter: Alpha(Opacity=30);
559 border-radius: 8px;
560}
diff --git a/src/Wallabag/Wallabag/Resources/views/_global/public/css/jquery-ui-1.10.4.custom.min.css b/src/Wallabag/Wallabag/Resources/views/_global/public/css/jquery-ui-1.10.4.custom.min.css
deleted file mode 100644
index 4dba92a8..00000000
--- a/src/Wallabag/Wallabag/Resources/views/_global/public/css/jquery-ui-1.10.4.custom.min.css
+++ /dev/null
@@ -1,7 +0,0 @@
1/*! jQuery UI - v1.10.4 - 2014-03-09
2* http://jqueryui.com
3* Includes: jquery.ui.core.css, jquery.ui.autocomplete.css, jquery.ui.menu.css, jquery.ui.theme.css
4* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
5* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
6
7.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:normal}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}.ui-menu .ui-state-disabled{font-weight:normal;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png)}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px} \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-114.png b/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-114.png
deleted file mode 100755
index 0e96edd5..00000000
--- a/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-114.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-120.png b/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-120.png
deleted file mode 100755
index dc5aab1c..00000000
--- a/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-120.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-144.png b/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-144.png
deleted file mode 100755
index 1d005db6..00000000
--- a/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-144.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-152.png b/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-152.png
deleted file mode 100755
index f915231f..00000000
--- a/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-152.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-57.png b/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-57.png
deleted file mode 100755
index 5aa19ed9..00000000
--- a/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-57.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-72.png b/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-72.png
deleted file mode 100755
index b8b48e1b..00000000
--- a/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-72.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-76.png b/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-76.png
deleted file mode 100755
index 9f9dba27..00000000
--- a/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon-76.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon.png b/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon.png
deleted file mode 100755
index 9cf29e2b..00000000
--- a/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/apple-touch-icon.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/favicon.ico b/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/favicon.ico
deleted file mode 100755
index 0346558b..00000000
--- a/src/Wallabag/Wallabag/Resources/views/_global/public/img/appicon/favicon.ico
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/_global/public/img/icons/carrot-icon--black.png b/src/Wallabag/Wallabag/Resources/views/_global/public/img/icons/carrot-icon--black.png
deleted file mode 100644
index 6da7925b..00000000
--- a/src/Wallabag/Wallabag/Resources/views/_global/public/img/icons/carrot-icon--black.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/_global/public/img/icons/carrot-icon--white.png b/src/Wallabag/Wallabag/Resources/views/_global/public/img/icons/carrot-icon--white.png
deleted file mode 100644
index a70044b6..00000000
--- a/src/Wallabag/Wallabag/Resources/views/_global/public/img/icons/carrot-icon--white.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/_global/public/img/icons/diaspora-icon--black.png b/src/Wallabag/Wallabag/Resources/views/_global/public/img/icons/diaspora-icon--black.png
deleted file mode 100644
index 32bca194..00000000
--- a/src/Wallabag/Wallabag/Resources/views/_global/public/img/icons/diaspora-icon--black.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/_global/public/img/icons/diaspora-icon--white.png b/src/Wallabag/Wallabag/Resources/views/_global/public/img/icons/diaspora-icon--white.png
deleted file mode 100644
index fc48d47c..00000000
--- a/src/Wallabag/Wallabag/Resources/views/_global/public/img/icons/diaspora-icon--white.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/_global/public/js/autoClose.js b/src/Wallabag/Wallabag/Resources/views/_global/public/js/autoClose.js
deleted file mode 100644
index e9145b7e..00000000
--- a/src/Wallabag/Wallabag/Resources/views/_global/public/js/autoClose.js
+++ /dev/null
@@ -1,6 +0,0 @@
1$(document).ready(function() {
2 current_url = window.location.href
3 if (current_url.match("&closewin=true")) {
4 window.close();
5 }
6});
diff --git a/src/Wallabag/Wallabag/Resources/views/_global/public/js/autoCompleteTags.js b/src/Wallabag/Wallabag/Resources/views/_global/public/js/autoCompleteTags.js
deleted file mode 100755
index 90bc982c..00000000
--- a/src/Wallabag/Wallabag/Resources/views/_global/public/js/autoCompleteTags.js
+++ /dev/null
@@ -1,47 +0,0 @@
1jQuery(function($) {
2
3 function split( val ) {
4 return val.split( /,\s*/ );
5 }
6 function extractLast( term ) {
7 return split( term ).pop();
8 }
9
10
11 $("#value").bind("keydown", function(event) {
12 if (event.keyCode === $.ui.keyCode.TAB && $(this).data("ui-autocomplete").menu.active) {
13 event.preventDefault();
14 }
15 }).autocomplete({
16 source : function(request, response) {
17 $.getJSON("./?view=tags", {
18 term : extractLast(request.term),
19 //id: $(':hidden#entry_id').val()
20 }, response);
21 },
22 search : function() {
23 // custom minLength
24 var term = extractLast(this.value);
25 if (term.length < 1) {
26 return false;
27 }
28 },
29 focus : function() {
30 // prevent value inserted on focus
31 return false;
32 },
33 select : function(event, ui) {
34 var terms = split(this.value);
35 // remove the current input
36 terms.pop();
37 // add the selected item
38 terms.push(ui.item.value);
39 // add placeholder to get the comma-and-space at the end
40 terms.push("");
41 this.value = terms.join(", ");
42 return false;
43 }
44 });
45
46
47});
diff --git a/src/Wallabag/Wallabag/Resources/views/_global/public/js/jquery-2.0.3.min.js b/src/Wallabag/Wallabag/Resources/views/_global/public/js/jquery-2.0.3.min.js
deleted file mode 100644
index a4dd0a2f..00000000
--- a/src/Wallabag/Wallabag/Resources/views/_global/public/js/jquery-2.0.3.min.js
+++ /dev/null
@@ -1 +0,0 @@
1(function(e,undefined){var t,n,r=typeof undefined,i=e.location,o=e.document,s=o.documentElement,a=e.jQuery,u=e.$,l={},c=[],p="2.0.3",f=c.concat,h=c.push,d=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,x=function(e,n){return new x.fn.init(e,n,t)},b=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^-ms-/,N=/-([\da-z])/gi,E=function(e,t){return t.toUpperCase()},S=function(){o.removeEventListener("DOMContentLoaded",S,!1),e.removeEventListener("load",S,!1),x.ready()};x.fn=x.prototype={jquery:p,constructor:x,init:function(e,t,n){var r,i;if(!e)return this;if("string"==typeof e){if(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:T.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof x?t[0]:t,x.merge(this,x.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:o,!0)),C.test(r[1])&&x.isPlainObject(t))for(r in t)x.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return i=o.getElementById(r[2]),i&&i.parentNode&&(this.length=1,this[0]=i),this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?n.ready(e):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return d.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,t,n,r,i,o,s=arguments[0]||{},a=1,u=arguments.length,l=!1;for("boolean"==typeof s&&(l=s,s=arguments[1]||{},a=2),"object"==typeof s||x.isFunction(s)||(s={}),u===a&&(s=this,--a);u>a;a++)if(null!=(e=arguments[a]))for(t in e)n=s[t],r=e[t],s!==r&&(l&&r&&(x.isPlainObject(r)||(i=x.isArray(r)))?(i?(i=!1,o=n&&x.isArray(n)?n:[]):o=n&&x.isPlainObject(n)?n:{},s[t]=x.extend(l,o,r)):r!==undefined&&(s[t]=r));return s},x.extend({expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=a),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){(e===!0?--x.readyWait:x.isReady)||(x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(o,[x]),x.fn.trigger&&x(o).trigger("ready").off("ready")))},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray,isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if("object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(t){return!1}return!0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:JSON.parse,parseXML:function(e){var t,n;if(!e||"string"!=typeof e)return null;try{n=new DOMParser,t=n.parseFromString(e,"text/xml")}catch(r){t=undefined}return(!t||t.getElementsByTagName("parsererror").length)&&x.error("Invalid XML: "+e),t},noop:function(){},globalEval:function(e){var t,n=eval;e=x.trim(e),e&&(1===e.indexOf("use strict")?(t=o.createElement("script"),t.text=e,o.head.appendChild(t).parentNode.removeChild(t)):n(e))},camelCase:function(e){return e.replace(k,"ms-").replace(N,E)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,s=j(e);if(n){if(s){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(s){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:function(e){return null==e?"":v.call(e)},makeArray:function(e,t){var n=t||[];return null!=e&&(j(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:g.call(t,e,n)},merge:function(e,t){var n=t.length,r=e.length,i=0;if("number"==typeof n)for(;n>i;i++)e[r++]=t[i];else while(t[i]!==undefined)e[r++]=t[i++];return e.length=r,e},grep:function(e,t,n){var r,i=[],o=0,s=e.length;for(n=!!n;s>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,s=j(e),a=[];if(s)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(a[a.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(a[a.length]=r);return f.apply([],a)},guid:1,proxy:function(e,t){var n,r,i;return"string"==typeof t&&(n=e[t],t=e,e=n),x.isFunction(e)?(r=d.call(arguments,2),i=function(){return e.apply(t||this,r.concat(d.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):undefined},access:function(e,t,n,r,i,o,s){var a=0,u=e.length,l=null==n;if("object"===x.type(n)){i=!0;for(a in n)x.access(e,t,a,n[a],!0,o,s)}else if(r!==undefined&&(i=!0,x.isFunction(r)||(s=!0),l&&(s?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(x(e),n)})),t))for(;u>a;a++)t(e[a],n,s?r:r.call(e[a],a,t(e[a],n)));return i?e:l?t.call(e):u?t(e[0],n):o},now:Date.now,swap:function(e,t,n,r){var i,o,s={};for(o in t)s[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=s[o];return i}}),x.ready.promise=function(t){return n||(n=x.Deferred(),"complete"===o.readyState?setTimeout(x.ready):(o.addEventListener("DOMContentLoaded",S,!1),e.addEventListener("load",S,!1))),n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function j(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}t=x(o),function(e,undefined){var t,n,r,i,o,s,a,u,l,c,p,f,h,d,g,m,y,v="sizzle"+-new Date,b=e.document,w=0,T=0,C=st(),k=st(),N=st(),E=!1,S=function(e,t){return e===t?(E=!0,0):0},j=typeof undefined,D=1<<31,A={}.hasOwnProperty,L=[],q=L.pop,H=L.push,O=L.push,F=L.slice,P=L.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",W="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",$=W.replace("w","w#"),B="\\["+M+"*("+W+")"+M+"*(?:([*^$|!~]?=)"+M+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+$+")|)|)"+M+"*\\]",I=":("+W+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+B.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=RegExp("^"+M+"*,"+M+"*"),X=RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=RegExp(M+"*[+~]"),Y=RegExp("="+M+"*([^\\]'\"]*)"+M+"*\\]","g"),V=RegExp(I),G=RegExp("^"+$+"$"),J={ID:RegExp("^#("+W+")"),CLASS:RegExp("^\\.("+W+")"),TAG:RegExp("^("+W.replace("w","w*")+")"),ATTR:RegExp("^"+B),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:RegExp("^(?:"+R+")$","i"),needsContext:RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Q=/^[^{]+\{\s*\[native \w/,K=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Z=/^(?:input|select|textarea|button)$/i,et=/^h\d$/i,tt=/'|\\/g,nt=RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),rt=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{O.apply(L=F.call(b.childNodes),b.childNodes),L[b.childNodes.length].nodeType}catch(it){O={apply:L.length?function(e,t){H.apply(e,F.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function ot(e,t,r,i){var o,s,a,u,l,f,g,m,x,w;if((t?t.ownerDocument||t:b)!==p&&c(t),t=t||p,r=r||[],!e||"string"!=typeof e)return r;if(1!==(u=t.nodeType)&&9!==u)return[];if(h&&!i){if(o=K.exec(e))if(a=o[1]){if(9===u){if(s=t.getElementById(a),!s||!s.parentNode)return r;if(s.id===a)return r.push(s),r}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(a))&&y(t,s)&&s.id===a)return r.push(s),r}else{if(o[2])return O.apply(r,t.getElementsByTagName(e)),r;if((a=o[3])&&n.getElementsByClassName&&t.getElementsByClassName)return O.apply(r,t.getElementsByClassName(a)),r}if(n.qsa&&(!d||!d.test(e))){if(m=g=v,x=t,w=9===u&&e,1===u&&"object"!==t.nodeName.toLowerCase()){f=gt(e),(g=t.getAttribute("id"))?m=g.replace(tt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",l=f.length;while(l--)f[l]=m+mt(f[l]);x=U.test(e)&&t.parentNode||t,w=f.join(",")}if(w)try{return O.apply(r,x.querySelectorAll(w)),r}catch(T){}finally{g||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,r,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>i.cacheLength&&delete t[e.shift()],t[n]=r}return t}function at(e){return e[v]=!0,e}function ut(e){var t=p.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function lt(e,t){var n=e.split("|"),r=e.length;while(r--)i.attrHandle[n[r]]=t}function ct(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return at(function(t){return t=+t,at(function(n,r){var i,o=e([],n.length,t),s=o.length;while(s--)n[i=o[s]]&&(n[i]=!(r[i]=n[i]))})})}s=ot.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},n=ot.support={},c=ot.setDocument=function(e){var t=e?e.ownerDocument||e:b,r=t.defaultView;return t!==p&&9===t.nodeType&&t.documentElement?(p=t,f=t.documentElement,h=!s(t),r&&r.attachEvent&&r!==r.top&&r.attachEvent("onbeforeunload",function(){c()}),n.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ut(function(e){return e.appendChild(t.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),n.getById=ut(function(e){return f.appendChild(e).id=v,!t.getElementsByName||!t.getElementsByName(v).length}),n.getById?(i.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(nt,rt);return function(e){return e.getAttribute("id")===t}}):(delete i.find.ID,i.filter.ID=function(e){var t=e.replace(nt,rt);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=n.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==j?t.getElementsByTagName(e):undefined}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.CLASS=n.getElementsByClassName&&function(e,t){return typeof t.getElementsByClassName!==j&&h?t.getElementsByClassName(e):undefined},g=[],d=[],(n.qsa=Q.test(t.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||d.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll(":checked").length||d.push(":checked")}),ut(function(e){var n=t.createElement("input");n.setAttribute("type","hidden"),e.appendChild(n).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&d.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||d.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),d.push(",.*:")})),(n.matchesSelector=Q.test(m=f.webkitMatchesSelector||f.mozMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&ut(function(e){n.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",I)}),d=d.length&&RegExp(d.join("|")),g=g.length&&RegExp(g.join("|")),y=Q.test(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},S=f.compareDocumentPosition?function(e,r){if(e===r)return E=!0,0;var i=r.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(r);return i?1&i||!n.sortDetached&&r.compareDocumentPosition(e)===i?e===t||y(b,e)?-1:r===t||y(b,r)?1:l?P.call(l,e)-P.call(l,r):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,n){var r,i=0,o=e.parentNode,s=n.parentNode,a=[e],u=[n];if(e===n)return E=!0,0;if(!o||!s)return e===t?-1:n===t?1:o?-1:s?1:l?P.call(l,e)-P.call(l,n):0;if(o===s)return ct(e,n);r=e;while(r=r.parentNode)a.unshift(r);r=n;while(r=r.parentNode)u.unshift(r);while(a[i]===u[i])i++;return i?ct(a[i],u[i]):a[i]===b?-1:u[i]===b?1:0},t):p},ot.matches=function(e,t){return ot(e,null,null,t)},ot.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Y,"='$1']"),!(!n.matchesSelector||!h||g&&g.test(t)||d&&d.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return ot(t,p,null,[e]).length>0},ot.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},ot.attr=function(e,t){(e.ownerDocument||e)!==p&&c(e);var r=i.attrHandle[t.toLowerCase()],o=r&&A.call(i.attrHandle,t.toLowerCase())?r(e,t,!h):undefined;return o===undefined?n.attributes||!h?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null:o},ot.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},ot.uniqueSort=function(e){var t,r=[],i=0,o=0;if(E=!n.detectDuplicates,l=!n.sortStable&&e.slice(0),e.sort(S),E){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return e},o=ot.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=ot.selectors={cacheLength:50,createPseudo:at,match:J,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(nt,rt),e[3]=(e[4]||e[5]||"").replace(nt,rt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||ot.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&ot.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return J.CHILD.test(e[0])?null:(e[3]&&e[4]!==undefined?e[2]=e[4]:n&&V.test(n)&&(t=gt(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(nt,rt).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=C[e+" "];return t||(t=RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&C(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=ot.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,h,d,g=o!==s?"nextSibling":"previousSibling",m=t.parentNode,y=a&&t.nodeName.toLowerCase(),x=!u&&!a;if(m){if(o){while(g){p=t;while(p=p[g])if(a?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;d=g="only"===e&&!d&&"nextSibling"}return!0}if(d=[s?m.firstChild:m.lastChild],s&&x){c=m[v]||(m[v]={}),l=c[e]||[],h=l[0]===w&&l[1],f=l[0]===w&&l[2],p=h&&m.childNodes[h];while(p=++h&&p&&p[g]||(f=h=0)||d.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[w,h,f];break}}else if(x&&(l=(t[v]||(t[v]={}))[e])&&l[0]===w)f=l[1];else while(p=++h&&p&&p[g]||(f=h=0)||d.pop())if((a?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(x&&((p[v]||(p[v]={}))[e]=[w,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||ot.error("unsupported pseudo: "+e);return r[v]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?at(function(e,n){var i,o=r(e,t),s=o.length;while(s--)i=P.call(e,o[s]),e[i]=!(n[i]=o[s])}):function(e){return r(e,0,n)}):r}},pseudos:{not:at(function(e){var t=[],n=[],r=a(e.replace(z,"$1"));return r[v]?at(function(e,t,n,i){var o,s=r(e,null,i,[]),a=e.length;while(a--)(o=s[a])&&(e[a]=!(t[a]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:at(function(e){return function(t){return ot(e,t).length>0}}),contains:at(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:at(function(e){return G.test(e||"")||ot.error("unsupported lang: "+e),e=e.replace(nt,rt).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return et.test(e.nodeName)},input:function(e){return Z.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},i.pseudos.nth=i.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[t]=pt(t);for(t in{submit:!0,reset:!0})i.pseudos[t]=ft(t);function dt(){}dt.prototype=i.filters=i.pseudos,i.setFilters=new dt;function gt(e,t){var n,r,o,s,a,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);a=e,u=[],l=i.preFilter;while(a){(!n||(r=_.exec(a)))&&(r&&(a=a.slice(r[0].length)||a),u.push(o=[])),n=!1,(r=X.exec(a))&&(n=r.shift(),o.push({value:n,type:r[0].replace(z," ")}),a=a.slice(n.length));for(s in i.filter)!(r=J[s].exec(a))||l[s]&&!(r=l[s](r))||(n=r.shift(),o.push({value:n,type:s,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?ot.error(e):k(e,u).slice(0)}function mt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function yt(e,t,n){var i=t.dir,o=n&&"parentNode"===i,s=T++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,a){var u,l,c,p=w+" "+s;if(a){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,a))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[v]||(t[v]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,a)||r,l[1]===!0)return!0}}function vt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,s=[],a=0,u=e.length,l=null!=t;for(;u>a;a++)(o=e[a])&&(!n||n(o,r,i))&&(s.push(o),l&&t.push(a));return s}function bt(e,t,n,r,i,o){return r&&!r[v]&&(r=bt(r)),i&&!i[v]&&(i=bt(i,o)),at(function(o,s,a,u){var l,c,p,f=[],h=[],d=s.length,g=o||Ct(t||"*",a.nodeType?[a]:a,[]),m=!e||!o&&t?g:xt(g,f,e,a,u),y=n?i||(o?e:d||r)?[]:s:m;if(n&&n(m,y,a,u),r){l=xt(y,h),r(l,[],a,u),c=l.length;while(c--)(p=l[c])&&(y[h[c]]=!(m[h[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?P.call(o,p):f[c])>-1&&(o[l]=!(s[l]=p))}}else y=xt(y===s?y.splice(d,y.length):y),i?i(null,s,y,u):O.apply(s,y)})}function wt(e){var t,n,r,o=e.length,s=i.relative[e[0].type],a=s||i.relative[" "],l=s?1:0,c=yt(function(e){return e===t},a,!0),p=yt(function(e){return P.call(t,e)>-1},a,!0),f=[function(e,n,r){return!s&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>l;l++)if(n=i.relative[e[l].type])f=[yt(vt(f),n)];else{if(n=i.filter[e[l].type].apply(null,e[l].matches),n[v]){for(r=++l;o>r;r++)if(i.relative[e[r].type])break;return bt(l>1&&vt(f),l>1&&mt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&wt(e.slice(l,r)),o>r&&wt(e=e.slice(r)),o>r&&mt(e))}f.push(n)}return vt(f)}function Tt(e,t){var n=0,o=t.length>0,s=e.length>0,a=function(a,l,c,f,h){var d,g,m,y=[],v=0,x="0",b=a&&[],T=null!=h,C=u,k=a||s&&i.find.TAG("*",h&&l.parentNode||l),N=w+=null==C?1:Math.random()||.1;for(T&&(u=l!==p&&l,r=n);null!=(d=k[x]);x++){if(s&&d){g=0;while(m=e[g++])if(m(d,l,c)){f.push(d);break}T&&(w=N,r=++n)}o&&((d=!m&&d)&&v--,a&&b.push(d))}if(v+=x,o&&x!==v){g=0;while(m=t[g++])m(b,y,l,c);if(a){if(v>0)while(x--)b[x]||y[x]||(y[x]=q.call(f));y=xt(y)}O.apply(f,y),T&&!a&&y.length>0&&v+t.length>1&&ot.uniqueSort(f)}return T&&(w=N,u=C),b};return o?at(a):a}a=ot.compile=function(e,t){var n,r=[],i=[],o=N[e+" "];if(!o){t||(t=gt(e)),n=t.length;while(n--)o=wt(t[n]),o[v]?r.push(o):i.push(o);o=N(e,Tt(i,r))}return o};function Ct(e,t,n){var r=0,i=t.length;for(;i>r;r++)ot(e,t[r],n);return n}function kt(e,t,r,o){var s,u,l,c,p,f=gt(e);if(!o&&1===f.length){if(u=f[0]=f[0].slice(0),u.length>2&&"ID"===(l=u[0]).type&&n.getById&&9===t.nodeType&&h&&i.relative[u[1].type]){if(t=(i.find.ID(l.matches[0].replace(nt,rt),t)||[])[0],!t)return r;e=e.slice(u.shift().value.length)}s=J.needsContext.test(e)?0:u.length;while(s--){if(l=u[s],i.relative[c=l.type])break;if((p=i.find[c])&&(o=p(l.matches[0].replace(nt,rt),U.test(u[0].type)&&t.parentNode||t))){if(u.splice(s,1),e=o.length&&mt(u),!e)return O.apply(r,o),r;break}}}return a(e,f)(o,t,!h,r,U.test(e)),r}n.sortStable=v.split("").sort(S).join("")===v,n.detectDuplicates=E,c(),n.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(p.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||lt("type|href|height|width",function(e,t,n){return n?undefined:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||lt("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?undefined:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||lt(R,function(e,t,n){var r;return n?undefined:(r=e.getAttributeNode(t))&&r.specified?r.value:e[t]===!0?t.toLowerCase():null}),x.find=ot,x.expr=ot.selectors,x.expr[":"]=x.expr.pseudos,x.unique=ot.uniqueSort,x.text=ot.getText,x.isXMLDoc=ot.isXML,x.contains=ot.contains}(e);var D={};function A(e){var t=D[e]={};return x.each(e.match(w)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?D[e]||A(e):x.extend({},e);var t,n,r,i,o,s,a=[],u=!e.once&&[],l=function(p){for(t=e.memory&&p,n=!0,s=i||0,i=0,o=a.length,r=!0;a&&o>s;s++)if(a[s].apply(p[0],p[1])===!1&&e.stopOnFalse){t=!1;break}r=!1,a&&(u?u.length&&l(u.shift()):t?a=[]:c.disable())},c={add:function(){if(a){var n=a.length;(function s(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&c.has(n)||a.push(n):n&&n.length&&"string"!==r&&s(n)})})(arguments),r?o=a.length:t&&(i=n,l(t))}return this},remove:function(){return a&&x.each(arguments,function(e,t){var n;while((n=x.inArray(t,a,n))>-1)a.splice(n,1),r&&(o>=n&&o--,s>=n&&s--)}),this},has:function(e){return e?x.inArray(e,a)>-1:!(!a||!a.length)},empty:function(){return a=[],o=0,this},disable:function(){return a=u=t=undefined,this},disabled:function(){return!a},lock:function(){return u=undefined,t||c.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!a||n&&!u||(t=t||[],t=[e,t.slice?t.slice():t],r?u.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!n}};return c},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var s=o[0],a=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var s=o[2],a=o[3];r[o[1]]=s.add,a&&s.add(function(){n=a},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=s.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=d.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),s=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?d.call(arguments):r,n===a?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},a,u,l;if(r>1)for(a=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(s(t,l,n)).fail(o.reject).progress(s(t,u,a)):--i;return i||o.resolveWith(l,n),o.promise()}}),x.support=function(t){var n=o.createElement("input"),r=o.createDocumentFragment(),i=o.createElement("div"),s=o.createElement("select"),a=s.appendChild(o.createElement("option"));return n.type?(n.type="checkbox",t.checkOn=""!==n.value,t.optSelected=a.selected,t.reliableMarginRight=!0,t.boxSizingReliable=!0,t.pixelPosition=!1,n.checked=!0,t.noCloneChecked=n.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!a.disabled,n=o.createElement("input"),n.value="t",n.type="radio",t.radioValue="t"===n.value,n.setAttribute("checked","t"),n.setAttribute("name","t"),r.appendChild(n),t.checkClone=r.cloneNode(!0).cloneNode(!0).lastChild.checked,t.focusinBubbles="onfocusin"in e,i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===i.style.backgroundClip,x(function(){var n,r,s="padding:0;margin:0;border:0;display:block;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box",a=o.getElementsByTagName("body")[0];a&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",a.appendChild(n).appendChild(i),i.innerHTML="",i.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%",x.swap(a,null!=a.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===i.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(i,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(i,null)||{width:"4px"}).width,r=i.appendChild(o.createElement("div")),r.style.cssText=i.style.cssText=s,r.style.marginRight=r.style.width="0",i.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),a.removeChild(n))}),t):t}({});var L,q,H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,O=/([A-Z])/g;function F(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=x.expando+Math.random()}F.uid=1,F.accepts=function(e){return e.nodeType?1===e.nodeType||9===e.nodeType:!0},F.prototype={key:function(e){if(!F.accepts(e))return 0;var t={},n=e[this.expando];if(!n){n=F.uid++;try{t[this.expando]={value:n},Object.defineProperties(e,t)}catch(r){t[this.expando]=n,x.extend(e,t)}}return this.cache[n]||(this.cache[n]={}),n},set:function(e,t,n){var r,i=this.key(e),o=this.cache[i];if("string"==typeof t)o[t]=n;else if(x.isEmptyObject(o))x.extend(this.cache[i],t);else for(r in t)o[r]=t[r];return o},get:function(e,t){var n=this.cache[this.key(e)];return t===undefined?n:n[t]},access:function(e,t,n){var r;return t===undefined||t&&"string"==typeof t&&n===undefined?(r=this.get(e,t),r!==undefined?r:this.get(e,x.camelCase(t))):(this.set(e,t,n),n!==undefined?n:t)},remove:function(e,t){var n,r,i,o=this.key(e),s=this.cache[o];if(t===undefined)this.cache[o]={};else{x.isArray(t)?r=t.concat(t.map(x.camelCase)):(i=x.camelCase(t),t in s?r=[t,i]:(r=i,r=r in s?[r]:r.match(w)||[])),n=r.length;while(n--)delete s[r[n]]}},hasData:function(e){return!x.isEmptyObject(this.cache[e[this.expando]]||{})},discard:function(e){e[this.expando]&&delete this.cache[e[this.expando]]}},L=new F,q=new F,x.extend({acceptData:F.accepts,hasData:function(e){return L.hasData(e)||q.hasData(e)},data:function(e,t,n){return L.access(e,t,n)},removeData:function(e,t){L.remove(e,t)},_data:function(e,t,n){return q.access(e,t,n)},_removeData:function(e,t){q.remove(e,t)}}),x.fn.extend({data:function(e,t){var n,r,i=this[0],o=0,s=null;if(e===undefined){if(this.length&&(s=L.get(i),1===i.nodeType&&!q.get(i,"hasDataAttrs"))){for(n=i.attributes;n.length>o;o++)r=n[o].name,0===r.indexOf("data-")&&(r=x.camelCase(r.slice(5)),P(i,r,s[r]));q.set(i,"hasDataAttrs",!0)}return s}return"object"==typeof e?this.each(function(){L.set(this,e)}):x.access(this,function(t){var n,r=x.camelCase(e);if(i&&t===undefined){if(n=L.get(i,e),n!==undefined)return n;if(n=L.get(i,r),n!==undefined)return n;if(n=P(i,r,undefined),n!==undefined)return n}else this.each(function(){var n=L.get(this,r);L.set(this,r,t),-1!==e.indexOf("-")&&n!==undefined&&L.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){L.remove(this,e)})}});function P(e,t,n){var r;if(n===undefined&&1===e.nodeType)if(r="data-"+t.replace(O,"-$1").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:H.test(n)?JSON.parse(n):n}catch(i){}L.set(e,t,n)}else n=undefined;return n}x.extend({queue:function(e,t,n){var r;return e?(t=(t||"fx")+"queue",r=q.get(e,t),n&&(!r||x.isArray(n)?r=q.access(e,t,x.makeArray(n)):r.push(n)),r||[]):undefined},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),s=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,s,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return q.get(e,n)||q.access(e,n,{empty:x.Callbacks("once memory").add(function(){q.remove(e,[t+"queue",n])})})}}),x.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),n>arguments.length?x.queue(this[0],e):t===undefined?this:this.each(function(){var n=x.queue(this,e,t);x._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=x.Deferred(),o=this,s=this.length,a=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=undefined),e=e||"fx";while(s--)n=q.get(o[s],e+"queueHooks"),n&&n.empty&&(r++,n.empty.add(a));return a(),i.promise(t)}});var R,M,W=/[\t\r\n\f]/g,$=/\r/g,B=/^(?:input|select|textarea|button)$/i;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[x.propFix[e]||e]})},addClass:function(e){var t,n,r,i,o,s=0,a=this.length,u="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,s=0,a=this.length,u=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,i=0,o=x(this),s=e.match(w)||[];while(t=s[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===r||"boolean"===n)&&(this.className&&q.set(this,"__className__",this.className),this.className=this.className||e===!1?"":q.get(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(W," ").indexOf(t)>=0)return!0;return!1},val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=x.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,x(this).val()):e,null==i?i="":"number"==typeof i?i+="":x.isArray(i)&&(i=x.map(i,function(e){return null==e?"":e+""})),t=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&t.set(this,i,"value")!==undefined||(this.value=i))});if(i)return t=x.valHooks[i.type]||x.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&(n=t.get(i,"value"))!==undefined?n:(n=i.value,"string"==typeof n?n.replace($,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,s=o?null:[],a=o?i+1:r.length,u=0>i?a:o?i:0;for(;a>u;u++)if(n=r[u],!(!n.selected&&u!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),s=i.length;while(s--)r=i[s],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,t,n){var i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===r?x.prop(e,t,n):(1===s&&x.isXMLDoc(e)||(t=t.toLowerCase(),i=x.attrHooks[t]||(x.expr.match.bool.test(t)?M:R)),n===undefined?i&&"get"in i&&null!==(o=i.get(e,t))?o:(o=x.find.attr(e,t),null==o?undefined:o):null!==n?i&&"set"in i&&(o=i.set(e,n,t))!==undefined?o:(e.setAttribute(t,n+""),n):(x.removeAttr(e,t),undefined))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)&&(e[r]=!1),e.removeAttribute(n)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,t,n){var r,i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return o=1!==s||!x.isXMLDoc(e),o&&(t=x.propFix[t]||t,i=x.propHooks[t]),n!==undefined?i&&"set"in i&&(r=i.set(e,n,t))!==undefined?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){return e.hasAttribute("tabindex")||B.test(e.nodeName)||e.href?e.tabIndex:-1}}}}),M={set:function(e,t,n){return t===!1?x.removeAttr(e,n):e.setAttribute(n,n),n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,t){var n=x.expr.attrHandle[t]||x.find.attr;x.expr.attrHandle[t]=function(e,t,r){var i=x.expr.attrHandle[t],o=r?undefined:(x.expr.attrHandle[t]=undefined)!=n(e,t,r)?t.toLowerCase():null;return x.expr.attrHandle[t]=i,o}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,t){return x.isArray(t)?e.checked=x.inArray(x(e).val(),t)>=0:undefined}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var I=/^key/,z=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,X=/^([^.]*)(?:\.(.+)|)$/;function U(){return!0}function Y(){return!1}function V(){try{return o.activeElement}catch(e){}}x.event={global:{},add:function(e,t,n,i,o){var s,a,u,l,c,p,f,h,d,g,m,y=q.get(e);if(y){n.handler&&(s=n,n=s.handler,o=s.selector),n.guid||(n.guid=x.guid++),(l=y.events)||(l=y.events={}),(a=y.handle)||(a=y.handle=function(e){return typeof x===r||e&&x.event.triggered===e.type?undefined:x.event.dispatch.apply(a.elem,arguments)},a.elem=e),t=(t||"").match(w)||[""],c=t.length;while(c--)u=X.exec(t[c])||[],d=m=u[1],g=(u[2]||"").split(".").sort(),d&&(f=x.event.special[d]||{},d=(o?f.delegateType:f.bindType)||d,f=x.event.special[d]||{},p=x.extend({type:d,origType:m,data:i,handler:n,guid:n.guid,selector:o,needsContext:o&&x.expr.match.needsContext.test(o),namespace:g.join(".")},s),(h=l[d])||(h=l[d]=[],h.delegateCount=0,f.setup&&f.setup.call(e,i,g,a)!==!1||e.addEventListener&&e.addEventListener(d,a,!1)),f.add&&(f.add.call(e,p),p.handler.guid||(p.handler.guid=n.guid)),o?h.splice(h.delegateCount++,0,p):h.push(p),x.event.global[d]=!0);e=null}},remove:function(e,t,n,r,i){var o,s,a,u,l,c,p,f,h,d,g,m=q.hasData(e)&&q.get(e);if(m&&(u=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(a=X.exec(t[l])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h){p=x.event.special[h]||{},h=(r?p.delegateType:p.bindType)||h,f=u[h]||[],a=a[2]&&RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=f.length;while(o--)c=f[o],!i&&g!==c.origType||n&&n.guid!==c.guid||a&&!a.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(f.splice(o,1),c.selector&&f.delegateCount--,p.remove&&p.remove.call(e,c));s&&!f.length&&(p.teardown&&p.teardown.call(e,d,m.handle)!==!1||x.removeEvent(e,h,m.handle),delete u[h])}else for(h in u)x.event.remove(e,h+t[l],n,r,!0);x.isEmptyObject(u)&&(delete m.handle,q.remove(e,"events"))}},trigger:function(t,n,r,i){var s,a,u,l,c,p,f,h=[r||o],d=y.call(t,"type")?t.type:t,g=y.call(t,"namespace")?t.namespace.split("."):[];if(a=u=r=r||o,3!==r.nodeType&&8!==r.nodeType&&!_.test(d+x.event.triggered)&&(d.indexOf(".")>=0&&(g=d.split("."),d=g.shift(),g.sort()),c=0>d.indexOf(":")&&"on"+d,t=t[x.expando]?t:new x.Event(d,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=g.join("."),t.namespace_re=t.namespace?RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=undefined,t.target||(t.target=r),n=null==n?[t]:x.makeArray(n,[t]),f=x.event.special[d]||{},i||!f.trigger||f.trigger.apply(r,n)!==!1)){if(!i&&!f.noBubble&&!x.isWindow(r)){for(l=f.delegateType||d,_.test(l+d)||(a=a.parentNode);a;a=a.parentNode)h.push(a),u=a;u===(r.ownerDocument||o)&&h.push(u.defaultView||u.parentWindow||e)}s=0;while((a=h[s++])&&!t.isPropagationStopped())t.type=s>1?l:f.bindType||d,p=(q.get(a,"events")||{})[t.type]&&q.get(a,"handle"),p&&p.apply(a,n),p=c&&a[c],p&&x.acceptData(a)&&p.apply&&p.apply(a,n)===!1&&t.preventDefault();return t.type=d,i||t.isDefaultPrevented()||f._default&&f._default.apply(h.pop(),n)!==!1||!x.acceptData(r)||c&&x.isFunction(r[d])&&!x.isWindow(r)&&(u=r[c],u&&(r[c]=null),x.event.triggered=d,r[d](),x.event.triggered=undefined,u&&(r[c]=u)),t.result}},dispatch:function(e){e=x.event.fix(e);var t,n,r,i,o,s=[],a=d.call(arguments),u=(q.get(this,"events")||{})[e.type]||[],l=x.event.special[e.type]||{};if(a[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),t=0;while((i=s[t++])&&!e.isPropagationStopped()){e.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(o.namespace))&&(e.handleObj=o,e.data=o.data,r=((x.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,a),r!==undefined&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,s=[],a=t.delegateCount,u=e.target;if(a&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!==this;u=u.parentNode||this)if(u.disabled!==!0||"click"!==e.type){for(r=[],n=0;a>n;n++)o=t[n],i=o.selector+" ",r[i]===undefined&&(r[i]=o.needsContext?x(i,this).index(u)>=0:x.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&s.push({elem:u,handlers:r})}return t.length>a&&s.push({elem:this,handlers:t.slice(a)}),s},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,r,i,s=t.button;return null==e.pageX&&null!=t.clientX&&(n=e.target.ownerDocument||o,r=n.documentElement,i=n.body,e.pageX=t.clientX+(r&&r.scrollLeft||i&&i.scrollLeft||0)-(r&&r.clientLeft||i&&i.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||i&&i.scrollTop||0)-(r&&r.clientTop||i&&i.clientTop||0)),e.which||s===undefined||(e.which=1&s?1:2&s?3:4&s?2:0),e}},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,s=e,a=this.fixHooks[i];a||(this.fixHooks[i]=a=z.test(i)?this.mouseHooks:I.test(i)?this.keyHooks:{}),r=a.props?this.props.concat(a.props):this.props,e=new x.Event(s),t=r.length;while(t--)n=r[t],e[n]=s[n];return e.target||(e.target=o),3===e.target.nodeType&&(e.target=e.target.parentNode),a.filter?a.filter(e,s):e},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==V()&&this.focus?(this.focus(),!1):undefined},delegateType:"focusin"},blur:{trigger:function(){return this===V()&&this.blur?(this.blur(),!1):undefined},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&x.nodeName(this,"input")?(this.click(),!1):undefined},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==undefined&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)},x.Event=function(e,t){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.getPreventDefault&&e.getPreventDefault()?U:Y):this.type=e,t&&x.extend(this,t),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,undefined):new x.Event(e,t)},x.Event.prototype={isDefaultPrevented:Y,isPropagationStopped:Y,isImmediatePropagationStopped:Y,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=U,e&&e.preventDefault&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=U,e&&e.stopPropagation&&e.stopPropagation()},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=U,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,t,n,r,i){var o,s;if("object"==typeof e){"string"!=typeof t&&(n=n||t,t=undefined);for(s in e)this.on(s,t,n,e[s],i);return this}if(null==n&&null==r?(r=t,n=t=undefined):null==r&&("string"==typeof t?(r=n,n=undefined):(r=n,n=t,t=undefined)),r===!1)r=Y;else if(!r)return this;return 1===i&&(o=r,r=function(e){return x().off(e),o.apply(this,arguments)},r.guid=o.guid||(o.guid=x.guid++)),this.each(function(){x.event.add(this,e,r,n,t)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,x(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return(t===!1||"function"==typeof t)&&(n=t,t=undefined),n===!1&&(n=Y),this.each(function(){x.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?x.event.trigger(e,t,n,!0):undefined}});var G=/^.[^:#\[\.,]*$/,J=/^(?:parents|prev(?:Until|All))/,Q=x.expr.match.needsContext,K={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t=x(e,this),n=t.length;return this.filter(function(){var e=0;for(;n>e;e++)if(x.contains(this,t[e]))return!0})},not:function(e){return this.pushStack(et(this,e||[],!0))},filter:function(e){return this.pushStack(et(this,e||[],!1))},is:function(e){return!!et(this,"string"==typeof e&&Q.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],s=Q.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(s?s.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?g.call(x(e),this[0]):g.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function Z(e,t){while((e=e[t])&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return Z(e,"nextSibling")},prev:function(e){return Z(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return e.contentDocument||x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(K[e]||x.unique(i),J.test(e)&&i.reverse()),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,t,n){var r=[],i=n!==undefined;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&x(e).is(n))break;r.push(e)}return r},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function et(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(G.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return g.call(t,e)>=0!==n})}var tt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,nt=/<([\w:]+)/,rt=/<|&#?\w+;/,it=/<(?:script|style|link)/i,ot=/^(?:checkbox|radio)$/i,st=/checked\s*(?:[^=]|=\s*.checked.)/i,at=/^$|\/(?:java|ecma)script/i,ut=/^true\/(.*)/,lt=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ct={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ct.optgroup=ct.option,ct.tbody=ct.tfoot=ct.colgroup=ct.caption=ct.thead,ct.th=ct.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===undefined?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(mt(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&dt(mt(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++)1===e.nodeType&&(x.cleanData(mt(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!it.test(e)&&!ct[(nt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(tt,"<$1></$2>");try{for(;r>n;n++)t=this[n]||{},1===t.nodeType&&(x.cleanData(mt(t,!1)),t.innerHTML=e);t=0}catch(i){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=f.apply([],e);var r,i,o,s,a,u,l=0,c=this.length,p=this,h=c-1,d=e[0],g=x.isFunction(d);if(g||!(1>=c||"string"!=typeof d||x.support.checkClone)&&st.test(d))return this.each(function(r){var i=p.eq(r);g&&(e[0]=d.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(r=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),i=r.firstChild,1===r.childNodes.length&&(r=i),i)){for(o=x.map(mt(r,"script"),ft),s=o.length;c>l;l++)a=r,l!==h&&(a=x.clone(a,!0,!0),s&&x.merge(o,mt(a,"script"))),t.call(this[l],a,l);if(s)for(u=o[o.length-1].ownerDocument,x.map(o,ht),l=0;s>l;l++)a=o[l],at.test(a.type||"")&&!q.access(a,"globalEval")&&x.contains(u,a)&&(a.src?x._evalUrl(a.src):x.globalEval(a.textContent.replace(lt,"")))}return this}}),x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=[],i=x(e),o=i.length-1,s=0;for(;o>=s;s++)n=s===o?this:this.clone(!0),x(i[s])[t](n),h.apply(r,n.get());return this.pushStack(r)}}),x.extend({clone:function(e,t,n){var r,i,o,s,a=e.cloneNode(!0),u=x.contains(e.ownerDocument,e);if(!(x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(s=mt(a),o=mt(e),r=0,i=o.length;i>r;r++)yt(o[r],s[r]);if(t)if(n)for(o=o||mt(e),s=s||mt(a),r=0,i=o.length;i>r;r++)gt(o[r],s[r]);else gt(e,a);return s=mt(a,"script"),s.length>0&&dt(s,!u&&mt(e,"script")),a},buildFragment:function(e,t,n,r){var i,o,s,a,u,l,c=0,p=e.length,f=t.createDocumentFragment(),h=[];for(;p>c;c++)if(i=e[c],i||0===i)if("object"===x.type(i))x.merge(h,i.nodeType?[i]:i);else if(rt.test(i)){o=o||f.appendChild(t.createElement("div")),s=(nt.exec(i)||["",""])[1].toLowerCase(),a=ct[s]||ct._default,o.innerHTML=a[1]+i.replace(tt,"<$1></$2>")+a[2],l=a[0];while(l--)o=o.lastChild;x.merge(h,o.childNodes),o=f.firstChild,o.textContent=""}else h.push(t.createTextNode(i));f.textContent="",c=0;while(i=h[c++])if((!r||-1===x.inArray(i,r))&&(u=x.contains(i.ownerDocument,i),o=mt(f.appendChild(i),"script"),u&&dt(o),n)){l=0;while(i=o[l++])at.test(i.type||"")&&n.push(i)}return f},cleanData:function(e){var t,n,r,i,o,s,a=x.event.special,u=0;for(;(n=e[u])!==undefined;u++){if(F.accepts(n)&&(o=n[q.expando],o&&(t=q.cache[o]))){if(r=Object.keys(t.events||{}),r.length)for(s=0;(i=r[s])!==undefined;s++)a[i]?x.event.remove(n,i):x.removeEvent(n,i,t.handle);q.cache[o]&&delete q.cache[o]}delete L.cache[n[L.expando]]}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}});function pt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function ft(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function ht(e){var t=ut.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function dt(e,t){var n=e.length,r=0;for(;n>r;r++)q.set(e[r],"globalEval",!t||q.get(t[r],"globalEval"))}function gt(e,t){var n,r,i,o,s,a,u,l;if(1===t.nodeType){if(q.hasData(e)&&(o=q.access(e),s=q.set(t,o),l=o.events)){delete s.handle,s.events={};for(i in l)for(n=0,r=l[i].length;r>n;n++)x.event.add(t,i,l[i][n])}L.hasData(e)&&(a=L.access(e),u=x.extend({},a),L.set(t,u))}}function mt(e,t){var n=e.getElementsByTagName?e.getElementsByTagName(t||"*"):e.querySelectorAll?e.querySelectorAll(t||"*"):[];return t===undefined||t&&x.nodeName(e,t)?x.merge([e],n):n}function yt(e,t){var n=t.nodeName.toLowerCase();"input"===n&&ot.test(e.type)?t.checked=e.checked:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}x.fn.extend({wrapAll:function(e){var t;return x.isFunction(e)?this.each(function(t){x(this).wrapAll(e.call(this,t))}):(this[0]&&(t=x(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this)},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var vt,xt,bt=/^(none|table(?!-c[ea]).+)/,wt=/^margin/,Tt=RegExp("^("+b+")(.*)$","i"),Ct=RegExp("^("+b+")(?!px)[a-z%]+$","i"),kt=RegExp("^([+-])=("+b+")","i"),Nt={BODY:"block"},Et={position:"absolute",visibility:"hidden",display:"block"},St={letterSpacing:0,fontWeight:400},jt=["Top","Right","Bottom","Left"],Dt=["Webkit","O","Moz","ms"];function At(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Dt.length;while(i--)if(t=Dt[i]+n,t in e)return t;return r}function Lt(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function qt(t){return e.getComputedStyle(t,null)}function Ht(e,t){var n,r,i,o=[],s=0,a=e.length;for(;a>s;s++)r=e[s],r.style&&(o[s]=q.get(r,"olddisplay"),n=r.style.display,t?(o[s]||"none"!==n||(r.style.display=""),""===r.style.display&&Lt(r)&&(o[s]=q.access(r,"olddisplay",Rt(r.nodeName)))):o[s]||(i=Lt(r),(n&&"none"!==n||!i)&&q.set(r,"olddisplay",i?n:x.css(r,"display"))));for(s=0;a>s;s++)r=e[s],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[s]||"":"none"));return e}x.fn.extend({css:function(e,t){return x.access(this,function(e,t,n){var r,i,o={},s=0;if(x.isArray(t)){for(r=qt(e),i=t.length;i>s;s++)o[t[s]]=x.css(e,t[s],!1,r);return o}return n!==undefined?x.style(e,t,n):x.css(e,t)},e,t,arguments.length>1)},show:function(){return Ht(this,!0)},hide:function(){return Ht(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Lt(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=vt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,s,a=x.camelCase(t),u=e.style;return t=x.cssProps[a]||(x.cssProps[a]=At(u,a)),s=x.cssHooks[t]||x.cssHooks[a],n===undefined?s&&"get"in s&&(i=s.get(e,!1,r))!==undefined?i:u[t]:(o=typeof n,"string"===o&&(i=kt.exec(n))&&(n=(i[1]+1)*i[2]+parseFloat(x.css(e,t)),o="number"),null==n||"number"===o&&isNaN(n)||("number"!==o||x.cssNumber[a]||(n+="px"),x.support.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),s&&"set"in s&&(n=s.set(e,n,r))===undefined||(u[t]=n)),undefined)}},css:function(e,t,n,r){var i,o,s,a=x.camelCase(t);return t=x.cssProps[a]||(x.cssProps[a]=At(e.style,a)),s=x.cssHooks[t]||x.cssHooks[a],s&&"get"in s&&(i=s.get(e,!0,n)),i===undefined&&(i=vt(e,t,r)),"normal"===i&&t in St&&(i=St[t]),""===n||n?(o=parseFloat(i),n===!0||x.isNumeric(o)?o||0:i):i}}),vt=function(e,t,n){var r,i,o,s=n||qt(e),a=s?s.getPropertyValue(t)||s[t]:undefined,u=e.style;return s&&(""!==a||x.contains(e.ownerDocument,e)||(a=x.style(e,t)),Ct.test(a)&&wt.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=s.width,u.width=r,u.minWidth=i,u.maxWidth=o)),a};function Ot(e,t,n){var r=Tt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function Ft(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,s=0;for(;4>o;o+=2)"margin"===n&&(s+=x.css(e,n+jt[o],!0,i)),r?("content"===n&&(s-=x.css(e,"padding"+jt[o],!0,i)),"margin"!==n&&(s-=x.css(e,"border"+jt[o]+"Width",!0,i))):(s+=x.css(e,"padding"+jt[o],!0,i),"padding"!==n&&(s+=x.css(e,"border"+jt[o]+"Width",!0,i)));return s}function Pt(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=qt(e),s=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=vt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Ct.test(i))return i;r=s&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+Ft(e,t,n||(s?"border":"content"),r,o)+"px"}function Rt(e){var t=o,n=Nt[e];return n||(n=Mt(e,t),"none"!==n&&n||(xt=(xt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(xt[0].contentWindow||xt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=Mt(e,t),xt.detach()),Nt[e]=n),n}function Mt(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,t){x.cssHooks[t]={get:function(e,n,r){return n?0===e.offsetWidth&&bt.test(x.css(e,"display"))?x.swap(e,Et,function(){return Pt(e,t,r)}):Pt(e,t,r):undefined},set:function(e,n,r){var i=r&&qt(e);return Ot(e,n,r?Ft(e,t,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,t){return t?x.swap(e,{display:"inline-block"},vt,[e,"marginRight"]):undefined}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,t){x.cssHooks[t]={get:function(e,n){return n?(n=vt(e,t),Ct.test(n)?x(e).position()[t]+"px":n):undefined}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+jt[r]+t]=o[r]||o[r-2]||o[0];return i}},wt.test(e)||(x.cssHooks[e+t].set=Ot)});var Wt=/%20/g,$t=/\[\]$/,Bt=/\r?\n/g,It=/^(?:submit|button|image|reset|file)$/i,zt=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&zt.test(this.nodeName)&&!It.test(e)&&(this.checked||!ot.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(Bt,"\r\n")}}):{name:t.name,value:n.replace(Bt,"\r\n")}}).get()}}),x.param=function(e,t){var n,r=[],i=function(e,t){t=x.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(t===undefined&&(t=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){i(this.name,this.value)});else for(n in e)_t(n,e[n],t,i);return r.join("&").replace(Wt,"+")};function _t(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||$t.test(e)?r(e,i):_t(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)_t(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var Xt,Ut,Yt=x.now(),Vt=/\?/,Gt=/#.*$/,Jt=/([?&])_=[^&]*/,Qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Kt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Zt=/^(?:GET|HEAD)$/,en=/^\/\//,tn=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,nn=x.fn.load,rn={},on={},sn="*/".concat("*");try{Ut=i.href}catch(an){Ut=o.createElement("a"),Ut.href="",Ut=Ut.href}Xt=tn.exec(Ut.toLowerCase())||[];function un(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(w)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function ln(e,t,n,r){var i={},o=e===on;function s(a){var u;return i[a]=!0,x.each(e[a]||[],function(e,a){var l=a(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):undefined:(t.dataTypes.unshift(l),s(l),!1)}),u}return s(t.dataTypes[0])||!i["*"]&&s("*")}function cn(e,t){var n,r,i=x.ajaxSettings.flatOptions||{};for(n in t)t[n]!==undefined&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,t,n){if("string"!=typeof e&&nn)return nn.apply(this,arguments);var r,i,o,s=this,a=e.indexOf(" ");return a>=0&&(r=e.slice(a),e=e.slice(0,a)),x.isFunction(t)?(n=t,t=undefined):t&&"object"==typeof t&&(i="POST"),s.length>0&&x.ajax({url:e,type:i,dataType:"html",data:t}).done(function(e){o=arguments,s.html(r?x("<div>").append(x.parseHTML(e)).find(r):e)}).complete(n&&function(e,t){s.each(n,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ut,type:"GET",isLocal:Kt.test(Xt[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":sn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?cn(cn(e,x.ajaxSettings),t):cn(x.ajaxSettings,e)},ajaxPrefilter:un(rn),ajaxTransport:un(on),ajax:function(e,t){"object"==typeof e&&(t=e,e=undefined),t=t||{};var n,r,i,o,s,a,u,l,c=x.ajaxSetup({},t),p=c.context||c,f=c.context&&(p.nodeType||p.jquery)?x(p):x.event,h=x.Deferred(),d=x.Callbacks("once memory"),g=c.statusCode||{},m={},y={},v=0,b="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(2===v){if(!o){o={};while(t=Qt.exec(i))o[t[1].toLowerCase()]=t[2]}t=o[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===v?i:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return v||(e=y[n]=y[n]||e,m[e]=t),this},overrideMimeType:function(e){return v||(c.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>v)for(t in e)g[t]=[g[t],e[t]];else T.always(e[T.status]);return this},abort:function(e){var t=e||b;return n&&n.abort(t),k(0,t),this}};if(h.promise(T).complete=d.add,T.success=T.done,T.error=T.fail,c.url=((e||c.url||Ut)+"").replace(Gt,"").replace(en,Xt[1]+"//"),c.type=t.method||t.type||c.method||c.type,c.dataTypes=x.trim(c.dataType||"*").toLowerCase().match(w)||[""],null==c.crossDomain&&(a=tn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===Xt[1]&&a[2]===Xt[2]&&(a[3]||("http:"===a[1]?"80":"443"))===(Xt[3]||("http:"===Xt[1]?"80":"443")))),c.data&&c.processData&&"string"!=typeof c.data&&(c.data=x.param(c.data,c.traditional)),ln(rn,c,t,T),2===v)return T;u=c.global,u&&0===x.active++&&x.event.trigger("ajaxStart"),c.type=c.type.toUpperCase(),c.hasContent=!Zt.test(c.type),r=c.url,c.hasContent||(c.data&&(r=c.url+=(Vt.test(r)?"&":"?")+c.data,delete c.data),c.cache===!1&&(c.url=Jt.test(r)?r.replace(Jt,"$1_="+Yt++):r+(Vt.test(r)?"&":"?")+"_="+Yt++)),c.ifModified&&(x.lastModified[r]&&T.setRequestHeader("If-Modified-Since",x.lastModified[r]),x.etag[r]&&T.setRequestHeader("If-None-Match",x.etag[r])),(c.data&&c.hasContent&&c.contentType!==!1||t.contentType)&&T.setRequestHeader("Content-Type",c.contentType),T.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+("*"!==c.dataTypes[0]?", "+sn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)T.setRequestHeader(l,c.headers[l]);if(c.beforeSend&&(c.beforeSend.call(p,T,c)===!1||2===v))return T.abort();b="abort";for(l in{success:1,error:1,complete:1})T[l](c[l]);if(n=ln(on,c,t,T)){T.readyState=1,u&&f.trigger("ajaxSend",[T,c]),c.async&&c.timeout>0&&(s=setTimeout(function(){T.abort("timeout")},c.timeout));try{v=1,n.send(m,k)}catch(C){if(!(2>v))throw C;k(-1,C)}}else k(-1,"No Transport");function k(e,t,o,a){var l,m,y,b,w,C=t;2!==v&&(v=2,s&&clearTimeout(s),n=undefined,i=a||"",T.readyState=e>0?4:0,l=e>=200&&300>e||304===e,o&&(b=pn(c,T,o)),b=fn(c,b,T,l),l?(c.ifModified&&(w=T.getResponseHeader("Last-Modified"),w&&(x.lastModified[r]=w),w=T.getResponseHeader("etag"),w&&(x.etag[r]=w)),204===e||"HEAD"===c.type?C="nocontent":304===e?C="notmodified":(C=b.state,m=b.data,y=b.error,l=!y)):(y=C,(e||!C)&&(C="error",0>e&&(e=0))),T.status=e,T.statusText=(t||C)+"",l?h.resolveWith(p,[m,C,T]):h.rejectWith(p,[T,C,y]),T.statusCode(g),g=undefined,u&&f.trigger(l?"ajaxSuccess":"ajaxError",[T,c,l?m:y]),d.fireWith(p,[T,C]),u&&(f.trigger("ajaxComplete",[T,c]),--x.active||x.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,t){return x.get(e,undefined,t,"script")}}),x.each(["get","post"],function(e,t){x[t]=function(e,n,r,i){return x.isFunction(n)&&(i=i||r,r=n,n=undefined),x.ajax({url:e,type:t,dataType:i,data:n,success:r})}});function pn(e,t,n){var r,i,o,s,a=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),r===undefined&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in a)if(a[i]&&a[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}s||(s=i)}o=o||s}return o?(o!==u[0]&&u.unshift(o),n[o]):undefined}function fn(e,t,n,r){var i,o,s,a,u,l={},c=e.dataTypes.slice();if(c[1])for(s in e.converters)l[s.toLowerCase()]=e.converters[s];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(s=l[u+" "+o]||l["* "+o],!s)for(i in l)if(a=i.split(" "),a[1]===o&&(s=l[u+" "+a[0]]||l["* "+a[0]])){s===!0?s=l[i]:l[i]!==!0&&(o=a[0],c.unshift(a[1]));break}if(s!==!0)if(s&&e["throws"])t=s(t);else try{t=s(t)}catch(p){return{state:"parsererror",error:s?p:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===undefined&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),x.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,i){t=x("<script>").prop({async:!0,charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&i("error"===e.type?404:200,e.type)}),o.head.appendChild(t[0])},abort:function(){n&&n()}}}});var hn=[],dn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=hn.pop()||x.expando+"_"+Yt++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,s,a=t.jsonp!==!1&&(dn.test(t.url)?"url":"string"==typeof t.data&&!(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&dn.test(t.data)&&"data");return a||"jsonp"===t.dataTypes[0]?(i=t.jsonpCallback=x.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,a?t[a]=t[a].replace(dn,"$1"+i):t.jsonp!==!1&&(t.url+=(Vt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return s||x.error(i+" was not called"),s[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){s=arguments},r.always(function(){e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,hn.push(i)),s&&x.isFunction(o)&&o(s[0]),s=o=undefined}),"script"):undefined}),x.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(e){}};var gn=x.ajaxSettings.xhr(),mn={0:200,1223:204},yn=0,vn={};e.ActiveXObject&&x(e).on("unload",function(){for(var e in vn)vn[e]();vn=undefined}),x.support.cors=!!gn&&"withCredentials"in gn,x.support.ajax=gn=!!gn,x.ajaxTransport(function(e){var t;return x.support.cors||gn&&!e.crossDomain?{send:function(n,r){var i,o,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(i in e.xhrFields)s[i]=e.xhrFields[i];e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||n["X-Requested-With"]||(n["X-Requested-With"]="XMLHttpRequest");for(i in n)s.setRequestHeader(i,n[i]);t=function(e){return function(){t&&(delete vn[o],t=s.onload=s.onerror=null,"abort"===e?s.abort():"error"===e?r(s.status||404,s.statusText):r(mn[s.status]||s.status,s.statusText,"string"==typeof s.responseText?{text:s.responseText}:undefined,s.getAllResponseHeaders()))}},s.onload=t(),s.onerror=t("error"),t=vn[o=yn++]=t("abort"),s.send(e.hasContent&&e.data||null)},abort:function(){t&&t()}}:undefined});var xn,bn,wn=/^(?:toggle|show|hide)$/,Tn=RegExp("^(?:([+-])=|)("+b+")([a-z%]*)$","i"),Cn=/queueHooks$/,kn=[An],Nn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Tn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),s=(x.cssNumber[e]||"px"!==o&&+r)&&Tn.exec(x.css(n.elem,e)),a=1,u=20;if(s&&s[3]!==o){o=o||s[3],i=i||[],s=+r||1;do a=a||".5",s/=a,x.style(n.elem,e,s+o);while(a!==(a=n.cur()/r)&&1!==a&&--u)}return i&&(s=n.start=+s||+r||0,n.unit=o,n.end=i[1]?s+(i[1]+1)*i[2]:+i[2]),n}]};function En(){return setTimeout(function(){xn=undefined}),xn=x.now()}function Sn(e,t,n){var r,i=(Nn[t]||[]).concat(Nn["*"]),o=0,s=i.length;for(;s>o;o++)if(r=i[o].call(n,t,e))return r}function jn(e,t,n){var r,i,o=0,s=kn.length,a=x.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;var t=xn||En(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,s=0,u=l.tweens.length;for(;u>s;s++)l.tweens[s].run(o);return a.notifyWith(e,[l,o,n]),1>o&&u?n:(a.resolveWith(e,[l]),!1)},l=a.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:xn||En(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?a.resolveWith(e,[l,t]):a.rejectWith(e,[l,t]),this}}),c=l.props;for(Dn(c,l.opts.specialEasing);s>o;o++)if(r=kn[o].call(l,e,c,l.opts))return r;return x.map(c,Sn,l),x.isFunction(l.opts.start)&&l.opts.start.call(e,l),x.fx.timer(x.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function Dn(e,t){var n,r,i,o,s;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),s=x.cssHooks[r],s&&"expand"in s){o=s.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(jn,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Nn[n]=Nn[n]||[],Nn[n].unshift(t)},prefilter:function(e,t){t?kn.unshift(e):kn.push(e)}});function An(e,t,n){var r,i,o,s,a,u,l=this,c={},p=e.style,f=e.nodeType&&Lt(e),h=q.get(e,"fxshow");n.queue||(a=x._queueHooks(e,"fx"),null==a.unqueued&&(a.unqueued=0,u=a.empty.fire,a.empty.fire=function(){a.unqueued||u()}),a.unqueued++,l.always(function(){l.always(function(){a.unqueued--,x.queue(e,"fx").length||a.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(p.display="inline-block")),n.overflow&&(p.overflow="hidden",l.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],wn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show")){if("show"!==i||!h||h[r]===undefined)continue;f=!0}c[r]=h&&h[r]||x.style(e,r)}if(!x.isEmptyObject(c)){h?"hidden"in h&&(f=h.hidden):h=q.access(e,"fxshow",{}),o&&(h.hidden=!f),f?x(e).show():l.done(function(){x(e).hide()}),l.done(function(){var t;q.remove(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)s=Sn(f?h[r]:0,r,l),r in h||(h[r]=s.start,f&&(s.end=s.start,s.start="width"===r||"height"===r?1:0))}}function Ln(e,t,n,r,i){return new Ln.prototype.init(e,t,n,r,i)}x.Tween=Ln,Ln.prototype={constructor:Ln,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=Ln.propHooks[this.prop];return e&&e.get?e.get(this):Ln.propHooks._default.get(this)},run:function(e){var t,n=Ln.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ln.propHooks._default.set(this),this}},Ln.prototype.init.prototype=Ln.prototype,Ln.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Ln.propHooks.scrollTop=Ln.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(qn(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Lt).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),s=function(){var t=jn(this,x.extend({},e),o);(i||q.get(this,"finish"))&&t.stop(!0)};return s.finish=s,i||o.queue===!1?this.each(s):this.queue(o.queue,s)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=undefined),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=x.timers,s=q.get(this);if(i)s[i]&&s[i].stop&&r(s[i]);else for(i in s)s[i]&&s[i].stop&&Cn.test(i)&&r(s[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));(t||!n)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=q.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,s=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;s>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function qn(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=jt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:qn("show"),slideUp:qn("hide"),slideToggle:qn("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=Ln.prototype.init,x.fx.tick=function(){var e,t=x.timers,n=0;for(xn=x.now();t.length>n;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||x.fx.stop(),xn=undefined},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){bn||(bn=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(bn),bn=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===undefined?this:this.each(function(t){x.offset.setOffset(this,e,t)});var t,n,i=this[0],o={top:0,left:0},s=i&&i.ownerDocument;if(s)return t=s.documentElement,x.contains(t,i)?(typeof i.getBoundingClientRect!==r&&(o=i.getBoundingClientRect()),n=Hn(s),{top:o.top+n.pageYOffset-t.clientTop,left:o.left+n.pageXOffset-t.clientLeft}):o},x.offset={setOffset:function(e,t,n){var r,i,o,s,a,u,l,c=x.css(e,"position"),p=x(e),f={};"static"===c&&(e.style.position="relative"),a=p.offset(),o=x.css(e,"top"),u=x.css(e,"left"),l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1,l?(r=p.position(),s=r.top,i=r.left):(s=parseFloat(o)||0,i=parseFloat(u)||0),x.isFunction(t)&&(t=t.call(e,n,a)),null!=t.top&&(f.top=t.top-a.top+s),null!=t.left&&(f.left=t.left-a.left+i),"using"in t?t.using.call(e,f):p.css(f)}},x.fn.extend({position:function(){if(this[0]){var e,t,n=this[0],r={top:0,left:0};return"fixed"===x.css(n,"position")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(r=e.offset()),r.top+=x.css(e[0],"borderTopWidth",!0),r.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-r.top-x.css(n,"marginTop",!0),left:t.left-r.left-x.css(n,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,n){var r="pageYOffset"===n;x.fn[t]=function(i){return x.access(this,function(t,i,o){var s=Hn(t);return o===undefined?s?s[n]:t[i]:(s?s.scrollTo(r?e.pageXOffset:o,r?o:e.pageYOffset):t[i]=o,undefined)},t,i,arguments.length,null)}});function Hn(e){return x.isWindow(e)?e:9===e.nodeType&&e.defaultView}x.each({Height:"height",Width:"width"},function(e,t){x.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){x.fn[r]=function(r,i){var o=arguments.length&&(n||"boolean"!=typeof r),s=n||(r===!0||i===!0?"margin":"border");return x.access(this,function(t,n,r){var i;return x.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):r===undefined?x.css(t,n,s):x.style(t,n,r,s)},t,o?r:undefined,o,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}),"object"==typeof e&&"object"==typeof e.document&&(e.jQuery=e.$=x)})(window); \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/_global/public/js/jquery-ui-1.10.4.custom.js b/src/Wallabag/Wallabag/Resources/views/_global/public/js/jquery-ui-1.10.4.custom.js
deleted file mode 100644
index 6f599fca..00000000
--- a/src/Wallabag/Wallabag/Resources/views/_global/public/js/jquery-ui-1.10.4.custom.js
+++ /dev/null
@@ -1,2519 +0,0 @@
1/*! jQuery UI - v1.10.4 - 2014-03-08
2* http://jqueryui.com
3* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.position.js, jquery.ui.autocomplete.js, jquery.ui.menu.js
4* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
5
6(function( $, undefined ) {
7
8var uuid = 0,
9 runiqueId = /^ui-id-\d+$/;
10
11// $.ui might exist from components with no dependencies, e.g., $.ui.position
12$.ui = $.ui || {};
13
14$.extend( $.ui, {
15 version: "1.10.4",
16
17 keyCode: {
18 BACKSPACE: 8,
19 COMMA: 188,
20 DELETE: 46,
21 DOWN: 40,
22 END: 35,
23 ENTER: 13,
24 ESCAPE: 27,
25 HOME: 36,
26 LEFT: 37,
27 NUMPAD_ADD: 107,
28 NUMPAD_DECIMAL: 110,
29 NUMPAD_DIVIDE: 111,
30 NUMPAD_ENTER: 108,
31 NUMPAD_MULTIPLY: 106,
32 NUMPAD_SUBTRACT: 109,
33 PAGE_DOWN: 34,
34 PAGE_UP: 33,
35 PERIOD: 190,
36 RIGHT: 39,
37 SPACE: 32,
38 TAB: 9,
39 UP: 38
40 }
41});
42
43// plugins
44$.fn.extend({
45 focus: (function( orig ) {
46 return function( delay, fn ) {
47 return typeof delay === "number" ?
48 this.each(function() {
49 var elem = this;
50 setTimeout(function() {
51 $( elem ).focus();
52 if ( fn ) {
53 fn.call( elem );
54 }
55 }, delay );
56 }) :
57 orig.apply( this, arguments );
58 };
59 })( $.fn.focus ),
60
61 scrollParent: function() {
62 var scrollParent;
63 if (($.ui.ie && (/(static|relative)/).test(this.css("position"))) || (/absolute/).test(this.css("position"))) {
64 scrollParent = this.parents().filter(function() {
65 return (/(relative|absolute|fixed)/).test($.css(this,"position")) && (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x"));
66 }).eq(0);
67 } else {
68 scrollParent = this.parents().filter(function() {
69 return (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x"));
70 }).eq(0);
71 }
72
73 return (/fixed/).test(this.css("position")) || !scrollParent.length ? $(document) : scrollParent;
74 },
75
76 zIndex: function( zIndex ) {
77 if ( zIndex !== undefined ) {
78 return this.css( "zIndex", zIndex );
79 }
80
81 if ( this.length ) {
82 var elem = $( this[ 0 ] ), position, value;
83 while ( elem.length && elem[ 0 ] !== document ) {
84 // Ignore z-index if position is set to a value where z-index is ignored by the browser
85 // This makes behavior of this function consistent across browsers
86 // WebKit always returns auto if the element is positioned
87 position = elem.css( "position" );
88 if ( position === "absolute" || position === "relative" || position === "fixed" ) {
89 // IE returns 0 when zIndex is not specified
90 // other browsers return a string
91 // we ignore the case of nested elements with an explicit value of 0
92 // <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
93 value = parseInt( elem.css( "zIndex" ), 10 );
94 if ( !isNaN( value ) && value !== 0 ) {
95 return value;
96 }
97 }
98 elem = elem.parent();
99 }
100 }
101
102 return 0;
103 },
104
105 uniqueId: function() {
106 return this.each(function() {
107 if ( !this.id ) {
108 this.id = "ui-id-" + (++uuid);
109 }
110 });
111 },
112
113 removeUniqueId: function() {
114 return this.each(function() {
115 if ( runiqueId.test( this.id ) ) {
116 $( this ).removeAttr( "id" );
117 }
118 });
119 }
120});
121
122// selectors
123function focusable( element, isTabIndexNotNaN ) {
124 var map, mapName, img,
125 nodeName = element.nodeName.toLowerCase();
126 if ( "area" === nodeName ) {
127 map = element.parentNode;
128 mapName = map.name;
129 if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
130 return false;
131 }
132 img = $( "img[usemap=#" + mapName + "]" )[0];
133 return !!img && visible( img );
134 }
135 return ( /input|select|textarea|button|object/.test( nodeName ) ?
136 !element.disabled :
137 "a" === nodeName ?
138 element.href || isTabIndexNotNaN :
139 isTabIndexNotNaN) &&
140 // the element and all of its ancestors must be visible
141 visible( element );
142}
143
144function visible( element ) {
145 return $.expr.filters.visible( element ) &&
146 !$( element ).parents().addBack().filter(function() {
147 return $.css( this, "visibility" ) === "hidden";
148 }).length;
149}
150
151$.extend( $.expr[ ":" ], {
152 data: $.expr.createPseudo ?
153 $.expr.createPseudo(function( dataName ) {
154 return function( elem ) {
155 return !!$.data( elem, dataName );
156 };
157 }) :
158 // support: jQuery <1.8
159 function( elem, i, match ) {
160 return !!$.data( elem, match[ 3 ] );
161 },
162
163 focusable: function( element ) {
164 return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) );
165 },
166
167 tabbable: function( element ) {
168 var tabIndex = $.attr( element, "tabindex" ),
169 isTabIndexNaN = isNaN( tabIndex );
170 return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );
171 }
172});
173
174// support: jQuery <1.8
175if ( !$( "<a>" ).outerWidth( 1 ).jquery ) {
176 $.each( [ "Width", "Height" ], function( i, name ) {
177 var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
178 type = name.toLowerCase(),
179 orig = {
180 innerWidth: $.fn.innerWidth,
181 innerHeight: $.fn.innerHeight,
182 outerWidth: $.fn.outerWidth,
183 outerHeight: $.fn.outerHeight
184 };
185
186 function reduce( elem, size, border, margin ) {
187 $.each( side, function() {
188 size -= parseFloat( $.css( elem, "padding" + this ) ) || 0;
189 if ( border ) {
190 size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;
191 }
192 if ( margin ) {
193 size -= parseFloat( $.css( elem, "margin" + this ) ) || 0;
194 }
195 });
196 return size;
197 }
198
199 $.fn[ "inner" + name ] = function( size ) {
200 if ( size === undefined ) {
201 return orig[ "inner" + name ].call( this );
202 }
203
204 return this.each(function() {
205 $( this ).css( type, reduce( this, size ) + "px" );
206 });
207 };
208
209 $.fn[ "outer" + name] = function( size, margin ) {
210 if ( typeof size !== "number" ) {
211 return orig[ "outer" + name ].call( this, size );
212 }
213
214 return this.each(function() {
215 $( this).css( type, reduce( this, size, true, margin ) + "px" );
216 });
217 };
218 });
219}
220
221// support: jQuery <1.8
222if ( !$.fn.addBack ) {
223 $.fn.addBack = function( selector ) {
224 return this.add( selector == null ?
225 this.prevObject : this.prevObject.filter( selector )
226 );
227 };
228}
229
230// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)
231if ( $( "<a>" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) {
232 $.fn.removeData = (function( removeData ) {
233 return function( key ) {
234 if ( arguments.length ) {
235 return removeData.call( this, $.camelCase( key ) );
236 } else {
237 return removeData.call( this );
238 }
239 };
240 })( $.fn.removeData );
241}
242
243
244
245
246
247// deprecated
248$.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
249
250$.support.selectstart = "onselectstart" in document.createElement( "div" );
251$.fn.extend({
252 disableSelection: function() {
253 return this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) +
254 ".ui-disableSelection", function( event ) {
255 event.preventDefault();
256 });
257 },
258
259 enableSelection: function() {
260 return this.unbind( ".ui-disableSelection" );
261 }
262});
263
264$.extend( $.ui, {
265 // $.ui.plugin is deprecated. Use $.widget() extensions instead.
266 plugin: {
267 add: function( module, option, set ) {
268 var i,
269 proto = $.ui[ module ].prototype;
270 for ( i in set ) {
271 proto.plugins[ i ] = proto.plugins[ i ] || [];
272 proto.plugins[ i ].push( [ option, set[ i ] ] );
273 }
274 },
275 call: function( instance, name, args ) {
276 var i,
277 set = instance.plugins[ name ];
278 if ( !set || !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) {
279 return;
280 }
281
282 for ( i = 0; i < set.length; i++ ) {
283 if ( instance.options[ set[ i ][ 0 ] ] ) {
284 set[ i ][ 1 ].apply( instance.element, args );
285 }
286 }
287 }
288 },
289
290 // only used by resizable
291 hasScroll: function( el, a ) {
292
293 //If overflow is hidden, the element might have extra content, but the user wants to hide it
294 if ( $( el ).css( "overflow" ) === "hidden") {
295 return false;
296 }
297
298 var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
299 has = false;
300
301 if ( el[ scroll ] > 0 ) {
302 return true;
303 }
304
305 // TODO: determine which cases actually cause this to happen
306 // if the element doesn't have the scroll set, see if it's possible to
307 // set the scroll
308 el[ scroll ] = 1;
309 has = ( el[ scroll ] > 0 );
310 el[ scroll ] = 0;
311 return has;
312 }
313});
314
315})( jQuery );
316(function( $, undefined ) {
317
318var uuid = 0,
319 slice = Array.prototype.slice,
320 _cleanData = $.cleanData;
321$.cleanData = function( elems ) {
322 for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
323 try {
324 $( elem ).triggerHandler( "remove" );
325 // http://bugs.jquery.com/ticket/8235
326 } catch( e ) {}
327 }
328 _cleanData( elems );
329};
330
331$.widget = function( name, base, prototype ) {
332 var fullName, existingConstructor, constructor, basePrototype,
333 // proxiedPrototype allows the provided prototype to remain unmodified
334 // so that it can be used as a mixin for multiple widgets (#8876)
335 proxiedPrototype = {},
336 namespace = name.split( "." )[ 0 ];
337
338 name = name.split( "." )[ 1 ];
339 fullName = namespace + "-" + name;
340
341 if ( !prototype ) {
342 prototype = base;
343 base = $.Widget;
344 }
345
346 // create selector for plugin
347 $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
348 return !!$.data( elem, fullName );
349 };
350
351 $[ namespace ] = $[ namespace ] || {};
352 existingConstructor = $[ namespace ][ name ];
353 constructor = $[ namespace ][ name ] = function( options, element ) {
354 // allow instantiation without "new" keyword
355 if ( !this._createWidget ) {
356 return new constructor( options, element );
357 }
358
359 // allow instantiation without initializing for simple inheritance
360 // must use "new" keyword (the code above always passes args)
361 if ( arguments.length ) {
362 this._createWidget( options, element );
363 }
364 };
365 // extend with the existing constructor to carry over any static properties
366 $.extend( constructor, existingConstructor, {
367 version: prototype.version,
368 // copy the object used to create the prototype in case we need to
369 // redefine the widget later
370 _proto: $.extend( {}, prototype ),
371 // track widgets that inherit from this widget in case this widget is
372 // redefined after a widget inherits from it
373 _childConstructors: []
374 });
375
376 basePrototype = new base();
377 // we need to make the options hash a property directly on the new instance
378 // otherwise we'll modify the options hash on the prototype that we're
379 // inheriting from
380 basePrototype.options = $.widget.extend( {}, basePrototype.options );
381 $.each( prototype, function( prop, value ) {
382 if ( !$.isFunction( value ) ) {
383 proxiedPrototype[ prop ] = value;
384 return;
385 }
386 proxiedPrototype[ prop ] = (function() {
387 var _super = function() {
388 return base.prototype[ prop ].apply( this, arguments );
389 },
390 _superApply = function( args ) {
391 return base.prototype[ prop ].apply( this, args );
392 };
393 return function() {
394 var __super = this._super,
395 __superApply = this._superApply,
396 returnValue;
397
398 this._super = _super;
399 this._superApply = _superApply;
400
401 returnValue = value.apply( this, arguments );
402
403 this._super = __super;
404 this._superApply = __superApply;
405
406 return returnValue;
407 };
408 })();
409 });
410 constructor.prototype = $.widget.extend( basePrototype, {
411 // TODO: remove support for widgetEventPrefix
412 // always use the name + a colon as the prefix, e.g., draggable:start
413 // don't prefix for widgets that aren't DOM-based
414 widgetEventPrefix: existingConstructor ? (basePrototype.widgetEventPrefix || name) : name
415 }, proxiedPrototype, {
416 constructor: constructor,
417 namespace: namespace,
418 widgetName: name,
419 widgetFullName: fullName
420 });
421
422 // If this widget is being redefined then we need to find all widgets that
423 // are inheriting from it and redefine all of them so that they inherit from
424 // the new version of this widget. We're essentially trying to replace one
425 // level in the prototype chain.
426 if ( existingConstructor ) {
427 $.each( existingConstructor._childConstructors, function( i, child ) {
428 var childPrototype = child.prototype;
429
430 // redefine the child widget using the same prototype that was
431 // originally used, but inherit from the new version of the base
432 $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto );
433 });
434 // remove the list of existing child constructors from the old constructor
435 // so the old child constructors can be garbage collected
436 delete existingConstructor._childConstructors;
437 } else {
438 base._childConstructors.push( constructor );
439 }
440
441 $.widget.bridge( name, constructor );
442};
443
444$.widget.extend = function( target ) {
445 var input = slice.call( arguments, 1 ),
446 inputIndex = 0,
447 inputLength = input.length,
448 key,
449 value;
450 for ( ; inputIndex < inputLength; inputIndex++ ) {
451 for ( key in input[ inputIndex ] ) {
452 value = input[ inputIndex ][ key ];
453 if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {
454 // Clone objects
455 if ( $.isPlainObject( value ) ) {
456 target[ key ] = $.isPlainObject( target[ key ] ) ?
457 $.widget.extend( {}, target[ key ], value ) :
458 // Don't extend strings, arrays, etc. with objects
459 $.widget.extend( {}, value );
460 // Copy everything else by reference
461 } else {
462 target[ key ] = value;
463 }
464 }
465 }
466 }
467 return target;
468};
469
470$.widget.bridge = function( name, object ) {
471 var fullName = object.prototype.widgetFullName || name;
472 $.fn[ name ] = function( options ) {
473 var isMethodCall = typeof options === "string",
474 args = slice.call( arguments, 1 ),
475 returnValue = this;
476
477 // allow multiple hashes to be passed on init
478 options = !isMethodCall && args.length ?
479 $.widget.extend.apply( null, [ options ].concat(args) ) :
480 options;
481
482 if ( isMethodCall ) {
483 this.each(function() {
484 var methodValue,
485 instance = $.data( this, fullName );
486 if ( !instance ) {
487 return $.error( "cannot call methods on " + name + " prior to initialization; " +
488 "attempted to call method '" + options + "'" );
489 }
490 if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) {
491 return $.error( "no such method '" + options + "' for " + name + " widget instance" );
492 }
493 methodValue = instance[ options ].apply( instance, args );
494 if ( methodValue !== instance && methodValue !== undefined ) {
495 returnValue = methodValue && methodValue.jquery ?
496 returnValue.pushStack( methodValue.get() ) :
497 methodValue;
498 return false;
499 }
500 });
501 } else {
502 this.each(function() {
503 var instance = $.data( this, fullName );
504 if ( instance ) {
505 instance.option( options || {} )._init();
506 } else {
507 $.data( this, fullName, new object( options, this ) );
508 }
509 });
510 }
511
512 return returnValue;
513 };
514};
515
516$.Widget = function( /* options, element */ ) {};
517$.Widget._childConstructors = [];
518
519$.Widget.prototype = {
520 widgetName: "widget",
521 widgetEventPrefix: "",
522 defaultElement: "<div>",
523 options: {
524 disabled: false,
525
526 // callbacks
527 create: null
528 },
529 _createWidget: function( options, element ) {
530 element = $( element || this.defaultElement || this )[ 0 ];
531 this.element = $( element );
532 this.uuid = uuid++;
533 this.eventNamespace = "." + this.widgetName + this.uuid;
534 this.options = $.widget.extend( {},
535 this.options,
536 this._getCreateOptions(),
537 options );
538
539 this.bindings = $();
540 this.hoverable = $();
541 this.focusable = $();
542
543 if ( element !== this ) {
544 $.data( element, this.widgetFullName, this );
545 this._on( true, this.element, {
546 remove: function( event ) {
547 if ( event.target === element ) {
548 this.destroy();
549 }
550 }
551 });
552 this.document = $( element.style ?
553 // element within the document
554 element.ownerDocument :
555 // element is window or document
556 element.document || element );
557 this.window = $( this.document[0].defaultView || this.document[0].parentWindow );
558 }
559
560 this._create();
561 this._trigger( "create", null, this._getCreateEventData() );
562 this._init();
563 },
564 _getCreateOptions: $.noop,
565 _getCreateEventData: $.noop,
566 _create: $.noop,
567 _init: $.noop,
568
569 destroy: function() {
570 this._destroy();
571 // we can probably remove the unbind calls in 2.0
572 // all event bindings should go through this._on()
573 this.element
574 .unbind( this.eventNamespace )
575 // 1.9 BC for #7810
576 // TODO remove dual storage
577 .removeData( this.widgetName )
578 .removeData( this.widgetFullName )
579 // support: jquery <1.6.3
580 // http://bugs.jquery.com/ticket/9413
581 .removeData( $.camelCase( this.widgetFullName ) );
582 this.widget()
583 .unbind( this.eventNamespace )
584 .removeAttr( "aria-disabled" )
585 .removeClass(
586 this.widgetFullName + "-disabled " +
587 "ui-state-disabled" );
588
589 // clean up events and states
590 this.bindings.unbind( this.eventNamespace );
591 this.hoverable.removeClass( "ui-state-hover" );
592 this.focusable.removeClass( "ui-state-focus" );
593 },
594 _destroy: $.noop,
595
596 widget: function() {
597 return this.element;
598 },
599
600 option: function( key, value ) {
601 var options = key,
602 parts,
603 curOption,
604 i;
605
606 if ( arguments.length === 0 ) {
607 // don't return a reference to the internal hash
608 return $.widget.extend( {}, this.options );
609 }
610
611 if ( typeof key === "string" ) {
612 // handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
613 options = {};
614 parts = key.split( "." );
615 key = parts.shift();
616 if ( parts.length ) {
617 curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );
618 for ( i = 0; i < parts.length - 1; i++ ) {
619 curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};
620 curOption = curOption[ parts[ i ] ];
621 }
622 key = parts.pop();
623 if ( arguments.length === 1 ) {
624 return curOption[ key ] === undefined ? null : curOption[ key ];
625 }
626 curOption[ key ] = value;
627 } else {
628 if ( arguments.length === 1 ) {
629 return this.options[ key ] === undefined ? null : this.options[ key ];
630 }
631 options[ key ] = value;
632 }
633 }
634
635 this._setOptions( options );
636
637 return this;
638 },
639 _setOptions: function( options ) {
640 var key;
641
642 for ( key in options ) {
643 this._setOption( key, options[ key ] );
644 }
645
646 return this;
647 },
648 _setOption: function( key, value ) {
649 this.options[ key ] = value;
650
651 if ( key === "disabled" ) {
652 this.widget()
653 .toggleClass( this.widgetFullName + "-disabled ui-state-disabled", !!value )
654 .attr( "aria-disabled", value );
655 this.hoverable.removeClass( "ui-state-hover" );
656 this.focusable.removeClass( "ui-state-focus" );
657 }
658
659 return this;
660 },
661
662 enable: function() {
663 return this._setOption( "disabled", false );
664 },
665 disable: function() {
666 return this._setOption( "disabled", true );
667 },
668
669 _on: function( suppressDisabledCheck, element, handlers ) {
670 var delegateElement,
671 instance = this;
672
673 // no suppressDisabledCheck flag, shuffle arguments
674 if ( typeof suppressDisabledCheck !== "boolean" ) {
675 handlers = element;
676 element = suppressDisabledCheck;
677 suppressDisabledCheck = false;
678 }
679
680 // no element argument, shuffle and use this.element
681 if ( !handlers ) {
682 handlers = element;
683 element = this.element;
684 delegateElement = this.widget();
685 } else {
686 // accept selectors, DOM elements
687 element = delegateElement = $( element );
688 this.bindings = this.bindings.add( element );
689 }
690
691 $.each( handlers, function( event, handler ) {
692 function handlerProxy() {
693 // allow widgets to customize the disabled handling
694 // - disabled as an array instead of boolean
695 // - disabled class as method for disabling individual parts
696 if ( !suppressDisabledCheck &&
697 ( instance.options.disabled === true ||
698 $( this ).hasClass( "ui-state-disabled" ) ) ) {
699 return;
700 }
701 return ( typeof handler === "string" ? instance[ handler ] : handler )
702 .apply( instance, arguments );
703 }
704
705 // copy the guid so direct unbinding works
706 if ( typeof handler !== "string" ) {
707 handlerProxy.guid = handler.guid =
708 handler.guid || handlerProxy.guid || $.guid++;
709 }
710
711 var match = event.match( /^(\w+)\s*(.*)$/ ),
712 eventName = match[1] + instance.eventNamespace,
713 selector = match[2];
714 if ( selector ) {
715 delegateElement.delegate( selector, eventName, handlerProxy );
716 } else {
717 element.bind( eventName, handlerProxy );
718 }
719 });
720 },
721
722 _off: function( element, eventName ) {
723 eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace;
724 element.unbind( eventName ).undelegate( eventName );
725 },
726
727 _delay: function( handler, delay ) {
728 function handlerProxy() {
729 return ( typeof handler === "string" ? instance[ handler ] : handler )
730 .apply( instance, arguments );
731 }
732 var instance = this;
733 return setTimeout( handlerProxy, delay || 0 );
734 },
735
736 _hoverable: function( element ) {
737 this.hoverable = this.hoverable.add( element );
738 this._on( element, {
739 mouseenter: function( event ) {
740 $( event.currentTarget ).addClass( "ui-state-hover" );
741 },
742 mouseleave: function( event ) {
743 $( event.currentTarget ).removeClass( "ui-state-hover" );
744 }
745 });
746 },
747
748 _focusable: function( element ) {
749 this.focusable = this.focusable.add( element );
750 this._on( element, {
751 focusin: function( event ) {
752 $( event.currentTarget ).addClass( "ui-state-focus" );
753 },
754 focusout: function( event ) {
755 $( event.currentTarget ).removeClass( "ui-state-focus" );
756 }
757 });
758 },
759
760 _trigger: function( type, event, data ) {
761 var prop, orig,
762 callback = this.options[ type ];
763
764 data = data || {};
765 event = $.Event( event );
766 event.type = ( type === this.widgetEventPrefix ?
767 type :
768 this.widgetEventPrefix + type ).toLowerCase();
769 // the original event may come from any element
770 // so we need to reset the target on the new event
771 event.target = this.element[ 0 ];
772
773 // copy original event properties over to the new event
774 orig = event.originalEvent;
775 if ( orig ) {
776 for ( prop in orig ) {
777 if ( !( prop in event ) ) {
778 event[ prop ] = orig[ prop ];
779 }
780 }
781 }
782
783 this.element.trigger( event, data );
784 return !( $.isFunction( callback ) &&
785 callback.apply( this.element[0], [ event ].concat( data ) ) === false ||
786 event.isDefaultPrevented() );
787 }
788};
789
790$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
791 $.Widget.prototype[ "_" + method ] = function( element, options, callback ) {
792 if ( typeof options === "string" ) {
793 options = { effect: options };
794 }
795 var hasOptions,
796 effectName = !options ?
797 method :
798 options === true || typeof options === "number" ?
799 defaultEffect :
800 options.effect || defaultEffect;
801 options = options || {};
802 if ( typeof options === "number" ) {
803 options = { duration: options };
804 }
805 hasOptions = !$.isEmptyObject( options );
806 options.complete = callback;
807 if ( options.delay ) {
808 element.delay( options.delay );
809 }
810 if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {
811 element[ method ]( options );
812 } else if ( effectName !== method && element[ effectName ] ) {
813 element[ effectName ]( options.duration, options.easing, callback );
814 } else {
815 element.queue(function( next ) {
816 $( this )[ method ]();
817 if ( callback ) {
818 callback.call( element[ 0 ] );
819 }
820 next();
821 });
822 }
823 };
824});
825
826})( jQuery );
827(function( $, undefined ) {
828
829$.ui = $.ui || {};
830
831var cachedScrollbarWidth,
832 max = Math.max,
833 abs = Math.abs,
834 round = Math.round,
835 rhorizontal = /left|center|right/,
836 rvertical = /top|center|bottom/,
837 roffset = /[\+\-]\d+(\.[\d]+)?%?/,
838 rposition = /^\w+/,
839 rpercent = /%$/,
840 _position = $.fn.position;
841
842function getOffsets( offsets, width, height ) {
843 return [
844 parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),
845 parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )
846 ];
847}
848
849function parseCss( element, property ) {
850 return parseInt( $.css( element, property ), 10 ) || 0;
851}
852
853function getDimensions( elem ) {
854 var raw = elem[0];
855 if ( raw.nodeType === 9 ) {
856 return {
857 width: elem.width(),
858 height: elem.height(),
859 offset: { top: 0, left: 0 }
860 };
861 }
862 if ( $.isWindow( raw ) ) {
863 return {
864 width: elem.width(),
865 height: elem.height(),
866 offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
867 };
868 }
869 if ( raw.preventDefault ) {
870 return {
871 width: 0,
872 height: 0,
873 offset: { top: raw.pageY, left: raw.pageX }
874 };
875 }
876 return {
877 width: elem.outerWidth(),
878 height: elem.outerHeight(),
879 offset: elem.offset()
880 };
881}
882
883$.position = {
884 scrollbarWidth: function() {
885 if ( cachedScrollbarWidth !== undefined ) {
886 return cachedScrollbarWidth;
887 }
888 var w1, w2,
889 div = $( "<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>" ),
890 innerDiv = div.children()[0];
891
892 $( "body" ).append( div );
893 w1 = innerDiv.offsetWidth;
894 div.css( "overflow", "scroll" );
895
896 w2 = innerDiv.offsetWidth;
897
898 if ( w1 === w2 ) {
899 w2 = div[0].clientWidth;
900 }
901
902 div.remove();
903
904 return (cachedScrollbarWidth = w1 - w2);
905 },
906 getScrollInfo: function( within ) {
907 var overflowX = within.isWindow || within.isDocument ? "" :
908 within.element.css( "overflow-x" ),
909 overflowY = within.isWindow || within.isDocument ? "" :
910 within.element.css( "overflow-y" ),
911 hasOverflowX = overflowX === "scroll" ||
912 ( overflowX === "auto" && within.width < within.element[0].scrollWidth ),
913 hasOverflowY = overflowY === "scroll" ||
914 ( overflowY === "auto" && within.height < within.element[0].scrollHeight );
915 return {
916 width: hasOverflowY ? $.position.scrollbarWidth() : 0,
917 height: hasOverflowX ? $.position.scrollbarWidth() : 0
918 };
919 },
920 getWithinInfo: function( element ) {
921 var withinElement = $( element || window ),
922 isWindow = $.isWindow( withinElement[0] ),
923 isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9;
924 return {
925 element: withinElement,
926 isWindow: isWindow,
927 isDocument: isDocument,
928 offset: withinElement.offset() || { left: 0, top: 0 },
929 scrollLeft: withinElement.scrollLeft(),
930 scrollTop: withinElement.scrollTop(),
931 width: isWindow ? withinElement.width() : withinElement.outerWidth(),
932 height: isWindow ? withinElement.height() : withinElement.outerHeight()
933 };
934 }
935};
936
937$.fn.position = function( options ) {
938 if ( !options || !options.of ) {
939 return _position.apply( this, arguments );
940 }
941
942 // make a copy, we don't want to modify arguments
943 options = $.extend( {}, options );
944
945 var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
946 target = $( options.of ),
947 within = $.position.getWithinInfo( options.within ),
948 scrollInfo = $.position.getScrollInfo( within ),
949 collision = ( options.collision || "flip" ).split( " " ),
950 offsets = {};
951
952 dimensions = getDimensions( target );
953 if ( target[0].preventDefault ) {
954 // force left top to allow flipping
955 options.at = "left top";
956 }
957 targetWidth = dimensions.width;
958 targetHeight = dimensions.height;
959 targetOffset = dimensions.offset;
960 // clone to reuse original targetOffset later
961 basePosition = $.extend( {}, targetOffset );
962
963 // force my and at to have valid horizontal and vertical positions
964 // if a value is missing or invalid, it will be converted to center
965 $.each( [ "my", "at" ], function() {
966 var pos = ( options[ this ] || "" ).split( " " ),
967 horizontalOffset,
968 verticalOffset;
969
970 if ( pos.length === 1) {
971 pos = rhorizontal.test( pos[ 0 ] ) ?
972 pos.concat( [ "center" ] ) :
973 rvertical.test( pos[ 0 ] ) ?
974 [ "center" ].concat( pos ) :
975 [ "center", "center" ];
976 }
977 pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center";
978 pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center";
979
980 // calculate offsets
981 horizontalOffset = roffset.exec( pos[ 0 ] );
982 verticalOffset = roffset.exec( pos[ 1 ] );
983 offsets[ this ] = [
984 horizontalOffset ? horizontalOffset[ 0 ] : 0,
985 verticalOffset ? verticalOffset[ 0 ] : 0
986 ];
987
988 // reduce to just the positions without the offsets
989 options[ this ] = [
990 rposition.exec( pos[ 0 ] )[ 0 ],
991 rposition.exec( pos[ 1 ] )[ 0 ]
992 ];
993 });
994
995 // normalize collision option
996 if ( collision.length === 1 ) {
997 collision[ 1 ] = collision[ 0 ];
998 }
999
1000 if ( options.at[ 0 ] === "right" ) {
1001 basePosition.left += targetWidth;
1002 } else if ( options.at[ 0 ] === "center" ) {
1003 basePosition.left += targetWidth / 2;
1004 }
1005
1006 if ( options.at[ 1 ] === "bottom" ) {
1007 basePosition.top += targetHeight;
1008 } else if ( options.at[ 1 ] === "center" ) {
1009 basePosition.top += targetHeight / 2;
1010 }
1011
1012 atOffset = getOffsets( offsets.at, targetWidth, targetHeight );
1013 basePosition.left += atOffset[ 0 ];
1014 basePosition.top += atOffset[ 1 ];
1015
1016 return this.each(function() {
1017 var collisionPosition, using,
1018 elem = $( this ),
1019 elemWidth = elem.outerWidth(),
1020 elemHeight = elem.outerHeight(),
1021 marginLeft = parseCss( this, "marginLeft" ),
1022 marginTop = parseCss( this, "marginTop" ),
1023 collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + scrollInfo.width,
1024 collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + scrollInfo.height,
1025 position = $.extend( {}, basePosition ),
1026 myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );
1027
1028 if ( options.my[ 0 ] === "right" ) {
1029 position.left -= elemWidth;
1030 } else if ( options.my[ 0 ] === "center" ) {
1031 position.left -= elemWidth / 2;
1032 }
1033
1034 if ( options.my[ 1 ] === "bottom" ) {
1035 position.top -= elemHeight;
1036 } else if ( options.my[ 1 ] === "center" ) {
1037 position.top -= elemHeight / 2;
1038 }
1039
1040 position.left += myOffset[ 0 ];
1041 position.top += myOffset[ 1 ];
1042
1043 // if the browser doesn't support fractions, then round for consistent results
1044 if ( !$.support.offsetFractions ) {
1045 position.left = round( position.left );
1046 position.top = round( position.top );
1047 }
1048
1049 collisionPosition = {
1050 marginLeft: marginLeft,
1051 marginTop: marginTop
1052 };
1053
1054 $.each( [ "left", "top" ], function( i, dir ) {
1055 if ( $.ui.position[ collision[ i ] ] ) {
1056 $.ui.position[ collision[ i ] ][ dir ]( position, {
1057 targetWidth: targetWidth,
1058 targetHeight: targetHeight,
1059 elemWidth: elemWidth,
1060 elemHeight: elemHeight,
1061 collisionPosition: collisionPosition,
1062 collisionWidth: collisionWidth,
1063 collisionHeight: collisionHeight,
1064 offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],
1065 my: options.my,
1066 at: options.at,
1067 within: within,
1068 elem : elem
1069 });
1070 }
1071 });
1072
1073 if ( options.using ) {
1074 // adds feedback as second argument to using callback, if present
1075 using = function( props ) {
1076 var left = targetOffset.left - position.left,
1077 right = left + targetWidth - elemWidth,
1078 top = targetOffset.top - position.top,
1079 bottom = top + targetHeight - elemHeight,
1080 feedback = {
1081 target: {
1082 element: target,
1083 left: targetOffset.left,
1084 top: targetOffset.top,
1085 width: targetWidth,
1086 height: targetHeight
1087 },
1088 element: {
1089 element: elem,
1090 left: position.left,
1091 top: position.top,
1092 width: elemWidth,
1093 height: elemHeight
1094 },
1095 horizontal: right < 0 ? "left" : left > 0 ? "right" : "center",
1096 vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"
1097 };
1098 if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {
1099 feedback.horizontal = "center";
1100 }
1101 if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {
1102 feedback.vertical = "middle";
1103 }
1104 if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {
1105 feedback.important = "horizontal";
1106 } else {
1107 feedback.important = "vertical";
1108 }
1109 options.using.call( this, props, feedback );
1110 };
1111 }
1112
1113 elem.offset( $.extend( position, { using: using } ) );
1114 });
1115};
1116
1117$.ui.position = {
1118 fit: {
1119 left: function( position, data ) {
1120 var within = data.within,
1121 withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,
1122 outerWidth = within.width,
1123 collisionPosLeft = position.left - data.collisionPosition.marginLeft,
1124 overLeft = withinOffset - collisionPosLeft,
1125 overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,
1126 newOverRight;
1127
1128 // element is wider than within
1129 if ( data.collisionWidth > outerWidth ) {
1130 // element is initially over the left side of within
1131 if ( overLeft > 0 && overRight <= 0 ) {
1132 newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset;
1133 position.left += overLeft - newOverRight;
1134 // element is initially over right side of within
1135 } else if ( overRight > 0 && overLeft <= 0 ) {
1136 position.left = withinOffset;
1137 // element is initially over both left and right sides of within
1138 } else {
1139 if ( overLeft > overRight ) {
1140 position.left = withinOffset + outerWidth - data.collisionWidth;
1141 } else {
1142 position.left = withinOffset;
1143 }
1144 }
1145 // too far left -> align with left edge
1146 } else if ( overLeft > 0 ) {
1147 position.left += overLeft;
1148 // too far right -> align with right edge
1149 } else if ( overRight > 0 ) {
1150 position.left -= overRight;
1151 // adjust based on position and margin
1152 } else {
1153 position.left = max( position.left - collisionPosLeft, position.left );
1154 }
1155 },
1156 top: function( position, data ) {
1157 var within = data.within,
1158 withinOffset = within.isWindow ? within.scrollTop : within.offset.top,
1159 outerHeight = data.within.height,
1160 collisionPosTop = position.top - data.collisionPosition.marginTop,
1161 overTop = withinOffset - collisionPosTop,
1162 overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,
1163 newOverBottom;
1164
1165 // element is taller than within
1166 if ( data.collisionHeight > outerHeight ) {
1167 // element is initially over the top of within
1168 if ( overTop > 0 && overBottom <= 0 ) {
1169 newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset;
1170 position.top += overTop - newOverBottom;
1171 // element is initially over bottom of within
1172 } else if ( overBottom > 0 && overTop <= 0 ) {
1173 position.top = withinOffset;
1174 // element is initially over both top and bottom of within
1175 } else {
1176 if ( overTop > overBottom ) {
1177 position.top = withinOffset + outerHeight - data.collisionHeight;
1178 } else {
1179 position.top = withinOffset;
1180 }
1181 }
1182 // too far up -> align with top
1183 } else if ( overTop > 0 ) {
1184 position.top += overTop;
1185 // too far down -> align with bottom edge
1186 } else if ( overBottom > 0 ) {
1187 position.top -= overBottom;
1188 // adjust based on position and margin
1189 } else {
1190 position.top = max( position.top - collisionPosTop, position.top );
1191 }
1192 }
1193 },
1194 flip: {
1195 left: function( position, data ) {
1196 var within = data.within,
1197 withinOffset = within.offset.left + within.scrollLeft,
1198 outerWidth = within.width,
1199 offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,
1200 collisionPosLeft = position.left - data.collisionPosition.marginLeft,
1201 overLeft = collisionPosLeft - offsetLeft,
1202 overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,
1203 myOffset = data.my[ 0 ] === "left" ?
1204 -data.elemWidth :
1205 data.my[ 0 ] === "right" ?
1206 data.elemWidth :
1207 0,
1208 atOffset = data.at[ 0 ] === "left" ?
1209 data.targetWidth :
1210 data.at[ 0 ] === "right" ?
1211 -data.targetWidth :
1212 0,
1213 offset = -2 * data.offset[ 0 ],
1214 newOverRight,
1215 newOverLeft;
1216
1217 if ( overLeft < 0 ) {
1218 newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset;
1219 if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {
1220 position.left += myOffset + atOffset + offset;
1221 }
1222 }
1223 else if ( overRight > 0 ) {
1224 newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft;
1225 if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {
1226 position.left += myOffset + atOffset + offset;
1227 }
1228 }
1229 },
1230 top: function( position, data ) {
1231 var within = data.within,
1232 withinOffset = within.offset.top + within.scrollTop,
1233 outerHeight = within.height,
1234 offsetTop = within.isWindow ? within.scrollTop : within.offset.top,
1235 collisionPosTop = position.top - data.collisionPosition.marginTop,
1236 overTop = collisionPosTop - offsetTop,
1237 overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,
1238 top = data.my[ 1 ] === "top",
1239 myOffset = top ?
1240 -data.elemHeight :
1241 data.my[ 1 ] === "bottom" ?
1242 data.elemHeight :
1243 0,
1244 atOffset = data.at[ 1 ] === "top" ?
1245 data.targetHeight :
1246 data.at[ 1 ] === "bottom" ?
1247 -data.targetHeight :
1248 0,
1249 offset = -2 * data.offset[ 1 ],
1250 newOverTop,
1251 newOverBottom;
1252 if ( overTop < 0 ) {
1253 newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset;
1254 if ( ( position.top + myOffset + atOffset + offset) > overTop && ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) ) {
1255 position.top += myOffset + atOffset + offset;
1256 }
1257 }
1258 else if ( overBottom > 0 ) {
1259 newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop;
1260 if ( ( position.top + myOffset + atOffset + offset) > overBottom && ( newOverTop > 0 || abs( newOverTop ) < overBottom ) ) {
1261 position.top += myOffset + atOffset + offset;
1262 }
1263 }
1264 }
1265 },
1266 flipfit: {
1267 left: function() {
1268 $.ui.position.flip.left.apply( this, arguments );
1269 $.ui.position.fit.left.apply( this, arguments );
1270 },
1271 top: function() {
1272 $.ui.position.flip.top.apply( this, arguments );
1273 $.ui.position.fit.top.apply( this, arguments );
1274 }
1275 }
1276};
1277
1278// fraction support test
1279(function () {
1280 var testElement, testElementParent, testElementStyle, offsetLeft, i,
1281 body = document.getElementsByTagName( "body" )[ 0 ],
1282 div = document.createElement( "div" );
1283
1284 //Create a "fake body" for testing based on method used in jQuery.support
1285 testElement = document.createElement( body ? "div" : "body" );
1286 testElementStyle = {
1287 visibility: "hidden",
1288 width: 0,
1289 height: 0,
1290 border: 0,
1291 margin: 0,
1292 background: "none"
1293 };
1294 if ( body ) {
1295 $.extend( testElementStyle, {
1296 position: "absolute",
1297 left: "-1000px",
1298 top: "-1000px"
1299 });
1300 }
1301 for ( i in testElementStyle ) {
1302 testElement.style[ i ] = testElementStyle[ i ];
1303 }
1304 testElement.appendChild( div );
1305 testElementParent = body || document.documentElement;
1306 testElementParent.insertBefore( testElement, testElementParent.firstChild );
1307
1308 div.style.cssText = "position: absolute; left: 10.7432222px;";
1309
1310 offsetLeft = $( div ).offset().left;
1311 $.support.offsetFractions = offsetLeft > 10 && offsetLeft < 11;
1312
1313 testElement.innerHTML = "";
1314 testElementParent.removeChild( testElement );
1315})();
1316
1317}( jQuery ) );
1318(function( $, undefined ) {
1319
1320$.widget( "ui.autocomplete", {
1321 version: "1.10.4",
1322 defaultElement: "<input>",
1323 options: {
1324 appendTo: null,
1325 autoFocus: false,
1326 delay: 300,
1327 minLength: 1,
1328 position: {
1329 my: "left top",
1330 at: "left bottom",
1331 collision: "none"
1332 },
1333 source: null,
1334
1335 // callbacks
1336 change: null,
1337 close: null,
1338 focus: null,
1339 open: null,
1340 response: null,
1341 search: null,
1342 select: null
1343 },
1344
1345 requestIndex: 0,
1346 pending: 0,
1347
1348 _create: function() {
1349 // Some browsers only repeat keydown events, not keypress events,
1350 // so we use the suppressKeyPress flag to determine if we've already
1351 // handled the keydown event. #7269
1352 // Unfortunately the code for & in keypress is the same as the up arrow,
1353 // so we use the suppressKeyPressRepeat flag to avoid handling keypress
1354 // events when we know the keydown event was used to modify the
1355 // search term. #7799
1356 var suppressKeyPress, suppressKeyPressRepeat, suppressInput,
1357 nodeName = this.element[0].nodeName.toLowerCase(),
1358 isTextarea = nodeName === "textarea",
1359 isInput = nodeName === "input";
1360
1361 this.isMultiLine =
1362 // Textareas are always multi-line
1363 isTextarea ? true :
1364 // Inputs are always single-line, even if inside a contentEditable element
1365 // IE also treats inputs as contentEditable
1366 isInput ? false :
1367 // All other element types are determined by whether or not they're contentEditable
1368 this.element.prop( "isContentEditable" );
1369
1370 this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ];
1371 this.isNewMenu = true;
1372
1373 this.element
1374 .addClass( "ui-autocomplete-input" )
1375 .attr( "autocomplete", "off" );
1376
1377 this._on( this.element, {
1378 keydown: function( event ) {
1379 if ( this.element.prop( "readOnly" ) ) {
1380 suppressKeyPress = true;
1381 suppressInput = true;
1382 suppressKeyPressRepeat = true;
1383 return;
1384 }
1385
1386 suppressKeyPress = false;
1387 suppressInput = false;
1388 suppressKeyPressRepeat = false;
1389 var keyCode = $.ui.keyCode;
1390 switch( event.keyCode ) {
1391 case keyCode.PAGE_UP:
1392 suppressKeyPress = true;
1393 this._move( "previousPage", event );
1394 break;
1395 case keyCode.PAGE_DOWN:
1396 suppressKeyPress = true;
1397 this._move( "nextPage", event );
1398 break;
1399 case keyCode.UP:
1400 suppressKeyPress = true;
1401 this._keyEvent( "previous", event );
1402 break;
1403 case keyCode.DOWN:
1404 suppressKeyPress = true;
1405 this._keyEvent( "next", event );
1406 break;
1407 case keyCode.ENTER:
1408 case keyCode.NUMPAD_ENTER:
1409 // when menu is open and has focus
1410 if ( this.menu.active ) {
1411 // #6055 - Opera still allows the keypress to occur
1412 // which causes forms to submit
1413 suppressKeyPress = true;
1414 event.preventDefault();
1415 this.menu.select( event );
1416 }
1417 break;
1418 case keyCode.TAB:
1419 if ( this.menu.active ) {
1420 this.menu.select( event );
1421 }
1422 break;
1423 case keyCode.ESCAPE:
1424 if ( this.menu.element.is( ":visible" ) ) {
1425 this._value( this.term );
1426 this.close( event );
1427 // Different browsers have different default behavior for escape
1428 // Single press can mean undo or clear
1429 // Double press in IE means clear the whole form
1430 event.preventDefault();
1431 }
1432 break;
1433 default:
1434 suppressKeyPressRepeat = true;
1435 // search timeout should be triggered before the input value is changed
1436 this._searchTimeout( event );
1437 break;
1438 }
1439 },
1440 keypress: function( event ) {
1441 if ( suppressKeyPress ) {
1442 suppressKeyPress = false;
1443 if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
1444 event.preventDefault();
1445 }
1446 return;
1447 }
1448 if ( suppressKeyPressRepeat ) {
1449 return;
1450 }
1451
1452 // replicate some key handlers to allow them to repeat in Firefox and Opera
1453 var keyCode = $.ui.keyCode;
1454 switch( event.keyCode ) {
1455 case keyCode.PAGE_UP:
1456 this._move( "previousPage", event );
1457 break;
1458 case keyCode.PAGE_DOWN:
1459 this._move( "nextPage", event );
1460 break;
1461 case keyCode.UP:
1462 this._keyEvent( "previous", event );
1463 break;
1464 case keyCode.DOWN:
1465 this._keyEvent( "next", event );
1466 break;
1467 }
1468 },
1469 input: function( event ) {
1470 if ( suppressInput ) {
1471 suppressInput = false;
1472 event.preventDefault();
1473 return;
1474 }
1475 this._searchTimeout( event );
1476 },
1477 focus: function() {
1478 this.selectedItem = null;
1479 this.previous = this._value();
1480 },
1481 blur: function( event ) {
1482 if ( this.cancelBlur ) {
1483 delete this.cancelBlur;
1484 return;
1485 }
1486
1487 clearTimeout( this.searching );
1488 this.close( event );
1489 this._change( event );
1490 }
1491 });
1492
1493 this._initSource();
1494 this.menu = $( "<ul>" )
1495 .addClass( "ui-autocomplete ui-front" )
1496 .appendTo( this._appendTo() )
1497 .menu({
1498 // disable ARIA support, the live region takes care of that
1499 role: null
1500 })
1501 .hide()
1502 .data( "ui-menu" );
1503
1504 this._on( this.menu.element, {
1505 mousedown: function( event ) {
1506 // prevent moving focus out of the text field
1507 event.preventDefault();
1508
1509 // IE doesn't prevent moving focus even with event.preventDefault()
1510 // so we set a flag to know when we should ignore the blur event
1511 this.cancelBlur = true;
1512 this._delay(function() {
1513 delete this.cancelBlur;
1514 });
1515
1516 // clicking on the scrollbar causes focus to shift to the body
1517 // but we can't detect a mouseup or a click immediately afterward
1518 // so we have to track the next mousedown and close the menu if
1519 // the user clicks somewhere outside of the autocomplete
1520 var menuElement = this.menu.element[ 0 ];
1521 if ( !$( event.target ).closest( ".ui-menu-item" ).length ) {
1522 this._delay(function() {
1523 var that = this;
1524 this.document.one( "mousedown", function( event ) {
1525 if ( event.target !== that.element[ 0 ] &&
1526 event.target !== menuElement &&
1527 !$.contains( menuElement, event.target ) ) {
1528 that.close();
1529 }
1530 });
1531 });
1532 }
1533 },
1534 menufocus: function( event, ui ) {
1535 // support: Firefox
1536 // Prevent accidental activation of menu items in Firefox (#7024 #9118)
1537 if ( this.isNewMenu ) {
1538 this.isNewMenu = false;
1539 if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {
1540 this.menu.blur();
1541
1542 this.document.one( "mousemove", function() {
1543 $( event.target ).trigger( event.originalEvent );
1544 });
1545
1546 return;
1547 }
1548 }
1549
1550 var item = ui.item.data( "ui-autocomplete-item" );
1551 if ( false !== this._trigger( "focus", event, { item: item } ) ) {
1552 // use value to match what will end up in the input, if it was a key event
1553 if ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {
1554 this._value( item.value );
1555 }
1556 } else {
1557 // Normally the input is populated with the item's value as the
1558 // menu is navigated, causing screen readers to notice a change and
1559 // announce the item. Since the focus event was canceled, this doesn't
1560 // happen, so we update the live region so that screen readers can
1561 // still notice the change and announce it.
1562 this.liveRegion.text( item.value );
1563 }
1564 },
1565 menuselect: function( event, ui ) {
1566 var item = ui.item.data( "ui-autocomplete-item" ),
1567 previous = this.previous;
1568
1569 // only trigger when focus was lost (click on menu)
1570 if ( this.element[0] !== this.document[0].activeElement ) {
1571 this.element.focus();
1572 this.previous = previous;
1573 // #6109 - IE triggers two focus events and the second
1574 // is asynchronous, so we need to reset the previous
1575 // term synchronously and asynchronously :-(
1576 this._delay(function() {
1577 this.previous = previous;
1578 this.selectedItem = item;
1579 });
1580 }
1581
1582 if ( false !== this._trigger( "select", event, { item: item } ) ) {
1583 this._value( item.value );
1584 }
1585 // reset the term after the select event
1586 // this allows custom select handling to work properly
1587 this.term = this._value();
1588
1589 this.close( event );
1590 this.selectedItem = item;
1591 }
1592 });
1593
1594 this.liveRegion = $( "<span>", {
1595 role: "status",
1596 "aria-live": "polite"
1597 })
1598 .addClass( "ui-helper-hidden-accessible" )
1599 .insertBefore( this.element );
1600
1601 // turning off autocomplete prevents the browser from remembering the
1602 // value when navigating through history, so we re-enable autocomplete
1603 // if the page is unloaded before the widget is destroyed. #7790
1604 this._on( this.window, {
1605 beforeunload: function() {
1606 this.element.removeAttr( "autocomplete" );
1607 }
1608 });
1609 },
1610
1611 _destroy: function() {
1612 clearTimeout( this.searching );
1613 this.element
1614 .removeClass( "ui-autocomplete-input" )
1615 .removeAttr( "autocomplete" );
1616 this.menu.element.remove();
1617 this.liveRegion.remove();
1618 },
1619
1620 _setOption: function( key, value ) {
1621 this._super( key, value );
1622 if ( key === "source" ) {
1623 this._initSource();
1624 }
1625 if ( key === "appendTo" ) {
1626 this.menu.element.appendTo( this._appendTo() );
1627 }
1628 if ( key === "disabled" && value && this.xhr ) {
1629 this.xhr.abort();
1630 }
1631 },
1632
1633 _appendTo: function() {
1634 var element = this.options.appendTo;
1635
1636 if ( element ) {
1637 element = element.jquery || element.nodeType ?
1638 $( element ) :
1639 this.document.find( element ).eq( 0 );
1640 }
1641
1642 if ( !element ) {
1643 element = this.element.closest( ".ui-front" );
1644 }
1645
1646 if ( !element.length ) {
1647 element = this.document[0].body;
1648 }
1649
1650 return element;
1651 },
1652
1653 _initSource: function() {
1654 var array, url,
1655 that = this;
1656 if ( $.isArray(this.options.source) ) {
1657 array = this.options.source;
1658 this.source = function( request, response ) {
1659 response( $.ui.autocomplete.filter( array, request.term ) );
1660 };
1661 } else if ( typeof this.options.source === "string" ) {
1662 url = this.options.source;
1663 this.source = function( request, response ) {
1664 if ( that.xhr ) {
1665 that.xhr.abort();
1666 }
1667 that.xhr = $.ajax({
1668 url: url,
1669 data: request,
1670 dataType: "json",
1671 success: function( data ) {
1672 response( data );
1673 },
1674 error: function() {
1675 response( [] );
1676 }
1677 });
1678 };
1679 } else {
1680 this.source = this.options.source;
1681 }
1682 },
1683
1684 _searchTimeout: function( event ) {
1685 clearTimeout( this.searching );
1686 this.searching = this._delay(function() {
1687 // only search if the value has changed
1688 if ( this.term !== this._value() ) {
1689 this.selectedItem = null;
1690 this.search( null, event );
1691 }
1692 }, this.options.delay );
1693 },
1694
1695 search: function( value, event ) {
1696 value = value != null ? value : this._value();
1697
1698 // always save the actual value, not the one passed as an argument
1699 this.term = this._value();
1700
1701 if ( value.length < this.options.minLength ) {
1702 return this.close( event );
1703 }
1704
1705 if ( this._trigger( "search", event ) === false ) {
1706 return;
1707 }
1708
1709 return this._search( value );
1710 },
1711
1712 _search: function( value ) {
1713 this.pending++;
1714 this.element.addClass( "ui-autocomplete-loading" );
1715 this.cancelSearch = false;
1716
1717 this.source( { term: value }, this._response() );
1718 },
1719
1720 _response: function() {
1721 var index = ++this.requestIndex;
1722
1723 return $.proxy(function( content ) {
1724 if ( index === this.requestIndex ) {
1725 this.__response( content );
1726 }
1727
1728 this.pending--;
1729 if ( !this.pending ) {
1730 this.element.removeClass( "ui-autocomplete-loading" );
1731 }
1732 }, this );
1733 },
1734
1735 __response: function( content ) {
1736 if ( content ) {
1737 content = this._normalize( content );
1738 }
1739 this._trigger( "response", null, { content: content } );
1740 if ( !this.options.disabled && content && content.length && !this.cancelSearch ) {
1741 this._suggest( content );
1742 this._trigger( "open" );
1743 } else {
1744 // use ._close() instead of .close() so we don't cancel future searches
1745 this._close();
1746 }
1747 },
1748
1749 close: function( event ) {
1750 this.cancelSearch = true;
1751 this._close( event );
1752 },
1753
1754 _close: function( event ) {
1755 if ( this.menu.element.is( ":visible" ) ) {
1756 this.menu.element.hide();
1757 this.menu.blur();
1758 this.isNewMenu = true;
1759 this._trigger( "close", event );
1760 }
1761 },
1762
1763 _change: function( event ) {
1764 if ( this.previous !== this._value() ) {
1765 this._trigger( "change", event, { item: this.selectedItem } );
1766 }
1767 },
1768
1769 _normalize: function( items ) {
1770 // assume all items have the right format when the first item is complete
1771 if ( items.length && items[0].label && items[0].value ) {
1772 return items;
1773 }
1774 return $.map( items, function( item ) {
1775 if ( typeof item === "string" ) {
1776 return {
1777 label: item,
1778 value: item
1779 };
1780 }
1781 return $.extend({
1782 label: item.label || item.value,
1783 value: item.value || item.label
1784 }, item );
1785 });
1786 },
1787
1788 _suggest: function( items ) {
1789 var ul = this.menu.element.empty();
1790 this._renderMenu( ul, items );
1791 this.isNewMenu = true;
1792 this.menu.refresh();
1793
1794 // size and position menu
1795 ul.show();
1796 this._resizeMenu();
1797 ul.position( $.extend({
1798 of: this.element
1799 }, this.options.position ));
1800
1801 if ( this.options.autoFocus ) {
1802 this.menu.next();
1803 }
1804 },
1805
1806 _resizeMenu: function() {
1807 var ul = this.menu.element;
1808 ul.outerWidth( Math.max(
1809 // Firefox wraps long text (possibly a rounding bug)
1810 // so we add 1px to avoid the wrapping (#7513)
1811 ul.width( "" ).outerWidth() + 1,
1812 this.element.outerWidth()
1813 ) );
1814 },
1815
1816 _renderMenu: function( ul, items ) {
1817 var that = this;
1818 $.each( items, function( index, item ) {
1819 that._renderItemData( ul, item );
1820 });
1821 },
1822
1823 _renderItemData: function( ul, item ) {
1824 return this._renderItem( ul, item ).data( "ui-autocomplete-item", item );
1825 },
1826
1827 _renderItem: function( ul, item ) {
1828 return $( "<li>" )
1829 .append( $( "<a>" ).text( item.label ) )
1830 .appendTo( ul );
1831 },
1832
1833 _move: function( direction, event ) {
1834 if ( !this.menu.element.is( ":visible" ) ) {
1835 this.search( null, event );
1836 return;
1837 }
1838 if ( this.menu.isFirstItem() && /^previous/.test( direction ) ||
1839 this.menu.isLastItem() && /^next/.test( direction ) ) {
1840 this._value( this.term );
1841 this.menu.blur();
1842 return;
1843 }
1844 this.menu[ direction ]( event );
1845 },
1846
1847 widget: function() {
1848 return this.menu.element;
1849 },
1850
1851 _value: function() {
1852 return this.valueMethod.apply( this.element, arguments );
1853 },
1854
1855 _keyEvent: function( keyEvent, event ) {
1856 if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
1857 this._move( keyEvent, event );
1858
1859 // prevents moving cursor to beginning/end of the text field in some browsers
1860 event.preventDefault();
1861 }
1862 }
1863});
1864
1865$.extend( $.ui.autocomplete, {
1866 escapeRegex: function( value ) {
1867 return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&");
1868 },
1869 filter: function(array, term) {
1870 var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
1871 return $.grep( array, function(value) {
1872 return matcher.test( value.label || value.value || value );
1873 });
1874 }
1875});
1876
1877
1878// live region extension, adding a `messages` option
1879// NOTE: This is an experimental API. We are still investigating
1880// a full solution for string manipulation and internationalization.
1881$.widget( "ui.autocomplete", $.ui.autocomplete, {
1882 options: {
1883 messages: {
1884 noResults: "No search results.",
1885 results: function( amount ) {
1886 return amount + ( amount > 1 ? " results are" : " result is" ) +
1887 " available, use up and down arrow keys to navigate.";
1888 }
1889 }
1890 },
1891
1892 __response: function( content ) {
1893 var message;
1894 this._superApply( arguments );
1895 if ( this.options.disabled || this.cancelSearch ) {
1896 return;
1897 }
1898 if ( content && content.length ) {
1899 message = this.options.messages.results( content.length );
1900 } else {
1901 message = this.options.messages.noResults;
1902 }
1903 this.liveRegion.text( message );
1904 }
1905});
1906
1907}( jQuery ));
1908(function( $, undefined ) {
1909
1910$.widget( "ui.menu", {
1911 version: "1.10.4",
1912 defaultElement: "<ul>",
1913 delay: 300,
1914 options: {
1915 icons: {
1916 submenu: "ui-icon-carat-1-e"
1917 },
1918 menus: "ul",
1919 position: {
1920 my: "left top",
1921 at: "right top"
1922 },
1923 role: "menu",
1924
1925 // callbacks
1926 blur: null,
1927 focus: null,
1928 select: null
1929 },
1930
1931 _create: function() {
1932 this.activeMenu = this.element;
1933 // flag used to prevent firing of the click handler
1934 // as the event bubbles up through nested menus
1935 this.mouseHandled = false;
1936 this.element
1937 .uniqueId()
1938 .addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" )
1939 .toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length )
1940 .attr({
1941 role: this.options.role,
1942 tabIndex: 0
1943 })
1944 // need to catch all clicks on disabled menu
1945 // not possible through _on
1946 .bind( "click" + this.eventNamespace, $.proxy(function( event ) {
1947 if ( this.options.disabled ) {
1948 event.preventDefault();
1949 }
1950 }, this ));
1951
1952 if ( this.options.disabled ) {
1953 this.element
1954 .addClass( "ui-state-disabled" )
1955 .attr( "aria-disabled", "true" );
1956 }
1957
1958 this._on({
1959 // Prevent focus from sticking to links inside menu after clicking
1960 // them (focus should always stay on UL during navigation).
1961 "mousedown .ui-menu-item > a": function( event ) {
1962 event.preventDefault();
1963 },
1964 "click .ui-state-disabled > a": function( event ) {
1965 event.preventDefault();
1966 },
1967 "click .ui-menu-item:has(a)": function( event ) {
1968 var target = $( event.target ).closest( ".ui-menu-item" );
1969 if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) {
1970 this.select( event );
1971
1972 // Only set the mouseHandled flag if the event will bubble, see #9469.
1973 if ( !event.isPropagationStopped() ) {
1974 this.mouseHandled = true;
1975 }
1976
1977 // Open submenu on click
1978 if ( target.has( ".ui-menu" ).length ) {
1979 this.expand( event );
1980 } else if ( !this.element.is( ":focus" ) && $( this.document[ 0 ].activeElement ).closest( ".ui-menu" ).length ) {
1981
1982 // Redirect focus to the menu
1983 this.element.trigger( "focus", [ true ] );
1984
1985 // If the active item is on the top level, let it stay active.
1986 // Otherwise, blur the active item since it is no longer visible.
1987 if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) {
1988 clearTimeout( this.timer );
1989 }
1990 }
1991 }
1992 },
1993 "mouseenter .ui-menu-item": function( event ) {
1994 var target = $( event.currentTarget );
1995 // Remove ui-state-active class from siblings of the newly focused menu item
1996 // to avoid a jump caused by adjacent elements both having a class with a border
1997 target.siblings().children( ".ui-state-active" ).removeClass( "ui-state-active" );
1998 this.focus( event, target );
1999 },
2000 mouseleave: "collapseAll",
2001 "mouseleave .ui-menu": "collapseAll",
2002 focus: function( event, keepActiveItem ) {
2003 // If there's already an active item, keep it active
2004 // If not, activate the first item
2005 var item = this.active || this.element.children( ".ui-menu-item" ).eq( 0 );
2006
2007 if ( !keepActiveItem ) {
2008 this.focus( event, item );
2009 }
2010 },
2011 blur: function( event ) {
2012 this._delay(function() {
2013 if ( !$.contains( this.element[0], this.document[0].activeElement ) ) {
2014 this.collapseAll( event );
2015 }
2016 });
2017 },
2018 keydown: "_keydown"
2019 });
2020
2021 this.refresh();
2022
2023 // Clicks outside of a menu collapse any open menus
2024 this._on( this.document, {
2025 click: function( event ) {
2026 if ( !$( event.target ).closest( ".ui-menu" ).length ) {
2027 this.collapseAll( event );
2028 }
2029
2030 // Reset the mouseHandled flag
2031 this.mouseHandled = false;
2032 }
2033 });
2034 },
2035
2036 _destroy: function() {
2037 // Destroy (sub)menus
2038 this.element
2039 .removeAttr( "aria-activedescendant" )
2040 .find( ".ui-menu" ).addBack()
2041 .removeClass( "ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons" )
2042 .removeAttr( "role" )
2043 .removeAttr( "tabIndex" )
2044 .removeAttr( "aria-labelledby" )
2045 .removeAttr( "aria-expanded" )
2046 .removeAttr( "aria-hidden" )
2047 .removeAttr( "aria-disabled" )
2048 .removeUniqueId()
2049 .show();
2050
2051 // Destroy menu items
2052 this.element.find( ".ui-menu-item" )
2053 .removeClass( "ui-menu-item" )
2054 .removeAttr( "role" )
2055 .removeAttr( "aria-disabled" )
2056 .children( "a" )
2057 .removeUniqueId()
2058 .removeClass( "ui-corner-all ui-state-hover" )
2059 .removeAttr( "tabIndex" )
2060 .removeAttr( "role" )
2061 .removeAttr( "aria-haspopup" )
2062 .children().each( function() {
2063 var elem = $( this );
2064 if ( elem.data( "ui-menu-submenu-carat" ) ) {
2065 elem.remove();
2066 }
2067 });
2068
2069 // Destroy menu dividers
2070 this.element.find( ".ui-menu-divider" ).removeClass( "ui-menu-divider ui-widget-content" );
2071 },
2072
2073 _keydown: function( event ) {
2074 var match, prev, character, skip, regex,
2075 preventDefault = true;
2076
2077 function escape( value ) {
2078 return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" );
2079 }
2080
2081 switch ( event.keyCode ) {
2082 case $.ui.keyCode.PAGE_UP:
2083 this.previousPage( event );
2084 break;
2085 case $.ui.keyCode.PAGE_DOWN:
2086 this.nextPage( event );
2087 break;
2088 case $.ui.keyCode.HOME:
2089 this._move( "first", "first", event );
2090 break;
2091 case $.ui.keyCode.END:
2092 this._move( "last", "last", event );
2093 break;
2094 case $.ui.keyCode.UP:
2095 this.previous( event );
2096 break;
2097 case $.ui.keyCode.DOWN:
2098 this.next( event );
2099 break;
2100 case $.ui.keyCode.LEFT:
2101 this.collapse( event );
2102 break;
2103 case $.ui.keyCode.RIGHT:
2104 if ( this.active && !this.active.is( ".ui-state-disabled" ) ) {
2105 this.expand( event );
2106 }
2107 break;
2108 case $.ui.keyCode.ENTER:
2109 case $.ui.keyCode.SPACE:
2110 this._activate( event );
2111 break;
2112 case $.ui.keyCode.ESCAPE:
2113 this.collapse( event );
2114 break;
2115 default:
2116 preventDefault = false;
2117 prev = this.previousFilter || "";
2118 character = String.fromCharCode( event.keyCode );
2119 skip = false;
2120
2121 clearTimeout( this.filterTimer );
2122
2123 if ( character === prev ) {
2124 skip = true;
2125 } else {
2126 character = prev + character;
2127 }
2128
2129 regex = new RegExp( "^" + escape( character ), "i" );
2130 match = this.activeMenu.children( ".ui-menu-item" ).filter(function() {
2131 return regex.test( $( this ).children( "a" ).text() );
2132 });
2133 match = skip && match.index( this.active.next() ) !== -1 ?
2134 this.active.nextAll( ".ui-menu-item" ) :
2135 match;
2136
2137 // If no matches on the current filter, reset to the last character pressed
2138 // to move down the menu to the first item that starts with that character
2139 if ( !match.length ) {
2140 character = String.fromCharCode( event.keyCode );
2141 regex = new RegExp( "^" + escape( character ), "i" );
2142 match = this.activeMenu.children( ".ui-menu-item" ).filter(function() {
2143 return regex.test( $( this ).children( "a" ).text() );
2144 });
2145 }
2146
2147 if ( match.length ) {
2148 this.focus( event, match );
2149 if ( match.length > 1 ) {
2150 this.previousFilter = character;
2151 this.filterTimer = this._delay(function() {
2152 delete this.previousFilter;
2153 }, 1000 );
2154 } else {
2155 delete this.previousFilter;
2156 }
2157 } else {
2158 delete this.previousFilter;
2159 }
2160 }
2161
2162 if ( preventDefault ) {
2163 event.preventDefault();
2164 }
2165 },
2166
2167 _activate: function( event ) {
2168 if ( !this.active.is( ".ui-state-disabled" ) ) {
2169 if ( this.active.children( "a[aria-haspopup='true']" ).length ) {
2170 this.expand( event );
2171 } else {
2172 this.select( event );
2173 }
2174 }
2175 },
2176
2177 refresh: function() {
2178 var menus,
2179 icon = this.options.icons.submenu,
2180 submenus = this.element.find( this.options.menus );
2181
2182 this.element.toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length );
2183
2184 // Initialize nested menus
2185 submenus.filter( ":not(.ui-menu)" )
2186 .addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" )
2187 .hide()
2188 .attr({
2189 role: this.options.role,
2190 "aria-hidden": "true",
2191 "aria-expanded": "false"
2192 })
2193 .each(function() {
2194 var menu = $( this ),
2195 item = menu.prev( "a" ),
2196 submenuCarat = $( "<span>" )
2197 .addClass( "ui-menu-icon ui-icon " + icon )
2198 .data( "ui-menu-submenu-carat", true );
2199
2200 item
2201 .attr( "aria-haspopup", "true" )
2202 .prepend( submenuCarat );
2203 menu.attr( "aria-labelledby", item.attr( "id" ) );
2204 });
2205
2206 menus = submenus.add( this.element );
2207
2208 // Don't refresh list items that are already adapted
2209 menus.children( ":not(.ui-menu-item):has(a)" )
2210 .addClass( "ui-menu-item" )
2211 .attr( "role", "presentation" )
2212 .children( "a" )
2213 .uniqueId()
2214 .addClass( "ui-corner-all" )
2215 .attr({
2216 tabIndex: -1,
2217 role: this._itemRole()
2218 });
2219
2220 // Initialize unlinked menu-items containing spaces and/or dashes only as dividers
2221 menus.children( ":not(.ui-menu-item)" ).each(function() {
2222 var item = $( this );
2223 // hyphen, em dash, en dash
2224 if ( !/[^\-\u2014\u2013\s]/.test( item.text() ) ) {
2225 item.addClass( "ui-widget-content ui-menu-divider" );
2226 }
2227 });
2228
2229 // Add aria-disabled attribute to any disabled menu item
2230 menus.children( ".ui-state-disabled" ).attr( "aria-disabled", "true" );
2231
2232 // If the active item has been removed, blur the menu
2233 if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
2234 this.blur();
2235 }
2236 },
2237
2238 _itemRole: function() {
2239 return {
2240 menu: "menuitem",
2241 listbox: "option"
2242 }[ this.options.role ];
2243 },
2244
2245 _setOption: function( key, value ) {
2246 if ( key === "icons" ) {
2247 this.element.find( ".ui-menu-icon" )
2248 .removeClass( this.options.icons.submenu )
2249 .addClass( value.submenu );
2250 }
2251 this._super( key, value );
2252 },
2253
2254 focus: function( event, item ) {
2255 var nested, focused;
2256 this.blur( event, event && event.type === "focus" );
2257
2258 this._scrollIntoView( item );
2259
2260 this.active = item.first();
2261 focused = this.active.children( "a" ).addClass( "ui-state-focus" );
2262 // Only update aria-activedescendant if there's a role
2263 // otherwise we assume focus is managed elsewhere
2264 if ( this.options.role ) {
2265 this.element.attr( "aria-activedescendant", focused.attr( "id" ) );
2266 }
2267
2268 // Highlight active parent menu item, if any
2269 this.active
2270 .parent()
2271 .closest( ".ui-menu-item" )
2272 .children( "a:first" )
2273 .addClass( "ui-state-active" );
2274
2275 if ( event && event.type === "keydown" ) {
2276 this._close();
2277 } else {
2278 this.timer = this._delay(function() {
2279 this._close();
2280 }, this.delay );
2281 }
2282
2283 nested = item.children( ".ui-menu" );
2284 if ( nested.length && event && ( /^mouse/.test( event.type ) ) ) {
2285 this._startOpening(nested);
2286 }
2287 this.activeMenu = item.parent();
2288
2289 this._trigger( "focus", event, { item: item } );
2290 },
2291
2292 _scrollIntoView: function( item ) {
2293 var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
2294 if ( this._hasScroll() ) {
2295 borderTop = parseFloat( $.css( this.activeMenu[0], "borderTopWidth" ) ) || 0;
2296 paddingTop = parseFloat( $.css( this.activeMenu[0], "paddingTop" ) ) || 0;
2297 offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
2298 scroll = this.activeMenu.scrollTop();
2299 elementHeight = this.activeMenu.height();
2300 itemHeight = item.height();
2301
2302 if ( offset < 0 ) {
2303 this.activeMenu.scrollTop( scroll + offset );
2304 } else if ( offset + itemHeight > elementHeight ) {
2305 this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );
2306 }
2307 }
2308 },
2309
2310 blur: function( event, fromFocus ) {
2311 if ( !fromFocus ) {
2312 clearTimeout( this.timer );
2313 }
2314
2315 if ( !this.active ) {
2316 return;
2317 }
2318
2319 this.active.children( "a" ).removeClass( "ui-state-focus" );
2320 this.active = null;
2321
2322 this._trigger( "blur", event, { item: this.active } );
2323 },
2324
2325 _startOpening: function( submenu ) {
2326 clearTimeout( this.timer );
2327
2328 // Don't open if already open fixes a Firefox bug that caused a .5 pixel
2329 // shift in the submenu position when mousing over the carat icon
2330 if ( submenu.attr( "aria-hidden" ) !== "true" ) {
2331 return;
2332 }
2333
2334 this.timer = this._delay(function() {
2335 this._close();
2336 this._open( submenu );
2337 }, this.delay );
2338 },
2339
2340 _open: function( submenu ) {
2341 var position = $.extend({
2342 of: this.active
2343 }, this.options.position );
2344
2345 clearTimeout( this.timer );
2346 this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) )
2347 .hide()
2348 .attr( "aria-hidden", "true" );
2349
2350 submenu
2351 .show()
2352 .removeAttr( "aria-hidden" )
2353 .attr( "aria-expanded", "true" )
2354 .position( position );
2355 },
2356
2357 collapseAll: function( event, all ) {
2358 clearTimeout( this.timer );
2359 this.timer = this._delay(function() {
2360 // If we were passed an event, look for the submenu that contains the event
2361 var currentMenu = all ? this.element :
2362 $( event && event.target ).closest( this.element.find( ".ui-menu" ) );
2363
2364 // If we found no valid submenu ancestor, use the main menu to close all sub menus anyway
2365 if ( !currentMenu.length ) {
2366 currentMenu = this.element;
2367 }
2368
2369 this._close( currentMenu );
2370
2371 this.blur( event );
2372 this.activeMenu = currentMenu;
2373 }, this.delay );
2374 },
2375
2376 // With no arguments, closes the currently active menu - if nothing is active
2377 // it closes all menus. If passed an argument, it will search for menus BELOW
2378 _close: function( startMenu ) {
2379 if ( !startMenu ) {
2380 startMenu = this.active ? this.active.parent() : this.element;
2381 }
2382
2383 startMenu
2384 .find( ".ui-menu" )
2385 .hide()
2386 .attr( "aria-hidden", "true" )
2387 .attr( "aria-expanded", "false" )
2388 .end()
2389 .find( "a.ui-state-active" )
2390 .removeClass( "ui-state-active" );
2391 },
2392
2393 collapse: function( event ) {
2394 var newItem = this.active &&
2395 this.active.parent().closest( ".ui-menu-item", this.element );
2396 if ( newItem && newItem.length ) {
2397 this._close();
2398 this.focus( event, newItem );
2399 }
2400 },
2401
2402 expand: function( event ) {
2403 var newItem = this.active &&
2404 this.active
2405 .children( ".ui-menu " )
2406 .children( ".ui-menu-item" )
2407 .first();
2408
2409 if ( newItem && newItem.length ) {
2410 this._open( newItem.parent() );
2411
2412 // Delay so Firefox will not hide activedescendant change in expanding submenu from AT
2413 this._delay(function() {
2414 this.focus( event, newItem );
2415 });
2416 }
2417 },
2418
2419 next: function( event ) {
2420 this._move( "next", "first", event );
2421 },
2422
2423 previous: function( event ) {
2424 this._move( "prev", "last", event );
2425 },
2426
2427 isFirstItem: function() {
2428 return this.active && !this.active.prevAll( ".ui-menu-item" ).length;
2429 },
2430
2431 isLastItem: function() {
2432 return this.active && !this.active.nextAll( ".ui-menu-item" ).length;
2433 },
2434
2435 _move: function( direction, filter, event ) {
2436 var next;
2437 if ( this.active ) {
2438 if ( direction === "first" || direction === "last" ) {
2439 next = this.active
2440 [ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" )
2441 .eq( -1 );
2442 } else {
2443 next = this.active
2444 [ direction + "All" ]( ".ui-menu-item" )
2445 .eq( 0 );
2446 }
2447 }
2448 if ( !next || !next.length || !this.active ) {
2449 next = this.activeMenu.children( ".ui-menu-item" )[ filter ]();
2450 }
2451
2452 this.focus( event, next );
2453 },
2454
2455 nextPage: function( event ) {
2456 var item, base, height;
2457
2458 if ( !this.active ) {
2459 this.next( event );
2460 return;
2461 }
2462 if ( this.isLastItem() ) {
2463 return;
2464 }
2465 if ( this._hasScroll() ) {
2466 base = this.active.offset().top;
2467 height = this.element.height();
2468 this.active.nextAll( ".ui-menu-item" ).each(function() {
2469 item = $( this );
2470 return item.offset().top - base - height < 0;
2471 });
2472
2473 this.focus( event, item );
2474 } else {
2475 this.focus( event, this.activeMenu.children( ".ui-menu-item" )
2476 [ !this.active ? "first" : "last" ]() );
2477 }
2478 },
2479
2480 previousPage: function( event ) {
2481 var item, base, height;
2482 if ( !this.active ) {
2483 this.next( event );
2484 return;
2485 }
2486 if ( this.isFirstItem() ) {
2487 return;
2488 }
2489 if ( this._hasScroll() ) {
2490 base = this.active.offset().top;
2491 height = this.element.height();
2492 this.active.prevAll( ".ui-menu-item" ).each(function() {
2493 item = $( this );
2494 return item.offset().top - base + height > 0;
2495 });
2496
2497 this.focus( event, item );
2498 } else {
2499 this.focus( event, this.activeMenu.children( ".ui-menu-item" ).first() );
2500 }
2501 },
2502
2503 _hasScroll: function() {
2504 return this.element.outerHeight() < this.element.prop( "scrollHeight" );
2505 },
2506
2507 select: function( event ) {
2508 // TODO: It should never be possible to not have an active item at this
2509 // point, but the tests don't trigger mouseenter before click.
2510 this.active = this.active || $( event.target ).closest( ".ui-menu-item" );
2511 var ui = { item: this.active };
2512 if ( !this.active.has( ".ui-menu" ).length ) {
2513 this.collapseAll( event, true );
2514 }
2515 this._trigger( "select", event, ui );
2516 }
2517});
2518
2519}( jQuery ));
diff --git a/src/Wallabag/Wallabag/Resources/views/_global/public/js/jquery-ui-1.10.4.custom.min.js b/src/Wallabag/Wallabag/Resources/views/_global/public/js/jquery-ui-1.10.4.custom.min.js
deleted file mode 100644
index 31635026..00000000
--- a/src/Wallabag/Wallabag/Resources/views/_global/public/js/jquery-ui-1.10.4.custom.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
1/*! jQuery UI - v1.10.4 - 2014-03-08
2* http://jqueryui.com
3* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.position.js, jquery.ui.autocomplete.js, jquery.ui.menu.js
4* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
5
6(function(e,t){function i(t,i){var s,a,o,r=t.nodeName.toLowerCase();return"area"===r?(s=t.parentNode,a=s.name,t.href&&a&&"map"===s.nodeName.toLowerCase()?(o=e("img[usemap=#"+a+"]")[0],!!o&&n(o)):!1):(/input|select|textarea|button|object/.test(r)?!t.disabled:"a"===r?t.href||i:i)&&n(t)}function n(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}var s=0,a=/^ui-id-\d+$/;e.ui=e.ui||{},e.extend(e.ui,{version:"1.10.4",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({focus:function(t){return function(i,n){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),n&&n.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),scrollParent:function(){var t;return t=e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(i){if(i!==t)return this.css("zIndex",i);if(this.length)for(var n,s,a=e(this[0]);a.length&&a[0]!==document;){if(n=a.css("position"),("absolute"===n||"relative"===n||"fixed"===n)&&(s=parseInt(a.css("zIndex"),10),!isNaN(s)&&0!==s))return s;a=a.parent()}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++s)})},removeUniqueId:function(){return this.each(function(){a.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,n){return!!e.data(t,n[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var n=e.attr(t,"tabindex"),s=isNaN(n);return(s||n>=0)&&i(t,!s)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(i,n){function s(t,i,n,s){return e.each(a,function(){i-=parseFloat(e.css(t,"padding"+this))||0,n&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var a="Width"===n?["Left","Right"]:["Top","Bottom"],o=n.toLowerCase(),r={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+n]=function(i){return i===t?r["inner"+n].call(this):this.each(function(){e(this).css(o,s(this,i)+"px")})},e.fn["outer"+n]=function(t,i){return"number"!=typeof t?r["outer"+n].call(this,t):this.each(function(){e(this).css(o,s(this,t,!0,i)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.support.selectstart="onselectstart"in document.createElement("div"),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,i,n){var s,a=e.ui[t].prototype;for(s in n)a.plugins[s]=a.plugins[s]||[],a.plugins[s].push([i,n[s]])},call:function(e,t,i){var n,s=e.plugins[t];if(s&&e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType)for(n=0;s.length>n;n++)e.options[s[n][0]]&&s[n][1].apply(e.element,i)}},hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var n=i&&"left"===i?"scrollLeft":"scrollTop",s=!1;return t[n]>0?!0:(t[n]=1,s=t[n]>0,t[n]=0,s)}})})(jQuery);(function(t,e){var i=0,s=Array.prototype.slice,n=t.cleanData;t.cleanData=function(e){for(var i,s=0;null!=(i=e[s]);s++)try{t(i).triggerHandler("remove")}catch(o){}n(e)},t.widget=function(i,s,n){var o,a,r,h,l={},c=i.split(".")[0];i=i.split(".")[1],o=c+"-"+i,n||(n=s,s=t.Widget),t.expr[":"][o.toLowerCase()]=function(e){return!!t.data(e,o)},t[c]=t[c]||{},a=t[c][i],r=t[c][i]=function(t,i){return this._createWidget?(arguments.length&&this._createWidget(t,i),e):new r(t,i)},t.extend(r,a,{version:n.version,_proto:t.extend({},n),_childConstructors:[]}),h=new s,h.options=t.widget.extend({},h.options),t.each(n,function(i,n){return t.isFunction(n)?(l[i]=function(){var t=function(){return s.prototype[i].apply(this,arguments)},e=function(t){return s.prototype[i].apply(this,t)};return function(){var i,s=this._super,o=this._superApply;return this._super=t,this._superApply=e,i=n.apply(this,arguments),this._super=s,this._superApply=o,i}}(),e):(l[i]=n,e)}),r.prototype=t.widget.extend(h,{widgetEventPrefix:a?h.widgetEventPrefix||i:i},l,{constructor:r,namespace:c,widgetName:i,widgetFullName:o}),a?(t.each(a._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,r,i._proto)}),delete a._childConstructors):s._childConstructors.push(r),t.widget.bridge(i,r)},t.widget.extend=function(i){for(var n,o,a=s.call(arguments,1),r=0,h=a.length;h>r;r++)for(n in a[r])o=a[r][n],a[r].hasOwnProperty(n)&&o!==e&&(i[n]=t.isPlainObject(o)?t.isPlainObject(i[n])?t.widget.extend({},i[n],o):t.widget.extend({},o):o);return i},t.widget.bridge=function(i,n){var o=n.prototype.widgetFullName||i;t.fn[i]=function(a){var r="string"==typeof a,h=s.call(arguments,1),l=this;return a=!r&&h.length?t.widget.extend.apply(null,[a].concat(h)):a,r?this.each(function(){var s,n=t.data(this,o);return n?t.isFunction(n[a])&&"_"!==a.charAt(0)?(s=n[a].apply(n,h),s!==n&&s!==e?(l=s&&s.jquery?l.pushStack(s.get()):s,!1):e):t.error("no such method '"+a+"' for "+i+" widget instance"):t.error("cannot call methods on "+i+" prior to initialization; "+"attempted to call method '"+a+"'")}):this.each(function(){var e=t.data(this,o);e?e.option(a||{})._init():t.data(this,o,new n(a,this))}),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this.bindings=t(),this.hoverable=t(),this.focusable=t(),s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:t.noop,_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(t.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:t.noop,widget:function(){return this.element},option:function(i,s){var n,o,a,r=i;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof i)if(r={},n=i.split("."),i=n.shift(),n.length){for(o=r[i]=t.widget.extend({},this.options[i]),a=0;n.length-1>a;a++)o[n[a]]=o[n[a]]||{},o=o[n[a]];if(i=n.pop(),1===arguments.length)return o[i]===e?null:o[i];o[i]=s}else{if(1===arguments.length)return this.options[i]===e?null:this.options[i];r[i]=s}return this._setOptions(r),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return this.options[t]=e,"disabled"===t&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!e).attr("aria-disabled",e),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(i,s,n){var o,a=this;"boolean"!=typeof i&&(n=s,s=i,i=!1),n?(s=o=t(s),this.bindings=this.bindings.add(s)):(n=s,s=this.element,o=this.widget()),t.each(n,function(n,r){function h(){return i||a.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof r?a[r]:r).apply(a,arguments):e}"string"!=typeof r&&(h.guid=r.guid=r.guid||h.guid||t.guid++);var l=n.match(/^(\w+)\s*(.*)$/),c=l[1]+a.eventNamespace,u=l[2];u?o.delegate(u,c,h):s.bind(c,h)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(e).undelegate(e)},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){t(e.currentTarget).addClass("ui-state-hover")},mouseleave:function(e){t(e.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){t(e.currentTarget).addClass("ui-state-focus")},focusout:function(e){t(e.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}})})(jQuery);(function(t,e){function i(t,e,i){return[parseFloat(t[0])*(p.test(t[0])?e/100:1),parseFloat(t[1])*(p.test(t[1])?i/100:1)]}function s(e,i){return parseInt(t.css(e,i),10)||0}function n(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}t.ui=t.ui||{};var a,o=Math.max,r=Math.abs,l=Math.round,h=/left|center|right/,c=/top|center|bottom/,u=/[\+\-]\d+(\.[\d]+)?%?/,d=/^\w+/,p=/%$/,f=t.fn.position;t.position={scrollbarWidth:function(){if(a!==e)return a;var i,s,n=t("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=n.children()[0];return t("body").append(n),i=o.offsetWidth,n.css("overflow","scroll"),s=o.offsetWidth,i===s&&(s=n[0].clientWidth),n.remove(),a=i-s},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,a="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:a?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType;return{element:i,isWindow:s,isDocument:n,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s?i.width():i.outerWidth(),height:s?i.height():i.outerHeight()}}},t.fn.position=function(e){if(!e||!e.of)return f.apply(this,arguments);e=t.extend({},e);var a,p,g,m,v,_,b=t(e.of),y=t.position.getWithinInfo(e.within),k=t.position.getScrollInfo(y),w=(e.collision||"flip").split(" "),D={};return _=n(b),b[0].preventDefault&&(e.at="left top"),p=_.width,g=_.height,m=_.offset,v=t.extend({},m),t.each(["my","at"],function(){var t,i,s=(e[this]||"").split(" ");1===s.length&&(s=h.test(s[0])?s.concat(["center"]):c.test(s[0])?["center"].concat(s):["center","center"]),s[0]=h.test(s[0])?s[0]:"center",s[1]=c.test(s[1])?s[1]:"center",t=u.exec(s[0]),i=u.exec(s[1]),D[this]=[t?t[0]:0,i?i[0]:0],e[this]=[d.exec(s[0])[0],d.exec(s[1])[0]]}),1===w.length&&(w[1]=w[0]),"right"===e.at[0]?v.left+=p:"center"===e.at[0]&&(v.left+=p/2),"bottom"===e.at[1]?v.top+=g:"center"===e.at[1]&&(v.top+=g/2),a=i(D.at,p,g),v.left+=a[0],v.top+=a[1],this.each(function(){var n,h,c=t(this),u=c.outerWidth(),d=c.outerHeight(),f=s(this,"marginLeft"),_=s(this,"marginTop"),x=u+f+s(this,"marginRight")+k.width,C=d+_+s(this,"marginBottom")+k.height,M=t.extend({},v),T=i(D.my,c.outerWidth(),c.outerHeight());"right"===e.my[0]?M.left-=u:"center"===e.my[0]&&(M.left-=u/2),"bottom"===e.my[1]?M.top-=d:"center"===e.my[1]&&(M.top-=d/2),M.left+=T[0],M.top+=T[1],t.support.offsetFractions||(M.left=l(M.left),M.top=l(M.top)),n={marginLeft:f,marginTop:_},t.each(["left","top"],function(i,s){t.ui.position[w[i]]&&t.ui.position[w[i]][s](M,{targetWidth:p,targetHeight:g,elemWidth:u,elemHeight:d,collisionPosition:n,collisionWidth:x,collisionHeight:C,offset:[a[0]+T[0],a[1]+T[1]],my:e.my,at:e.at,within:y,elem:c})}),e.using&&(h=function(t){var i=m.left-M.left,s=i+p-u,n=m.top-M.top,a=n+g-d,l={target:{element:b,left:m.left,top:m.top,width:p,height:g},element:{element:c,left:M.left,top:M.top,width:u,height:d},horizontal:0>s?"left":i>0?"right":"center",vertical:0>a?"top":n>0?"bottom":"middle"};u>p&&p>r(i+s)&&(l.horizontal="center"),d>g&&g>r(n+a)&&(l.vertical="middle"),l.important=o(r(i),r(s))>o(r(n),r(a))?"horizontal":"vertical",e.using.call(this,t,l)}),c.offset(t.extend(M,{using:h}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,l=n-r,h=r+e.collisionWidth-a-n;e.collisionWidth>a?l>0&&0>=h?(i=t.left+l+e.collisionWidth-a-n,t.left+=l-i):t.left=h>0&&0>=l?n:l>h?n+a-e.collisionWidth:n:l>0?t.left+=l:h>0?t.left-=h:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,l=n-r,h=r+e.collisionHeight-a-n;e.collisionHeight>a?l>0&&0>=h?(i=t.top+l+e.collisionHeight-a-n,t.top+=l-i):t.top=h>0&&0>=l?n:l>h?n+a-e.collisionHeight:n:l>0?t.top+=l:h>0?t.top-=h:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,a=n.offset.left+n.scrollLeft,o=n.width,l=n.isWindow?n.scrollLeft:n.offset.left,h=t.left-e.collisionPosition.marginLeft,c=h-l,u=h+e.collisionWidth-o-l,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-o-a,(0>i||r(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-l,(s>0||u>r(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,a=n.offset.top+n.scrollTop,o=n.height,l=n.isWindow?n.scrollTop:n.offset.top,h=t.top-e.collisionPosition.marginTop,c=h-l,u=h+e.collisionHeight-o-l,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-o-a,t.top+p+f+g>c&&(0>s||r(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-l,t.top+p+f+g>u&&(i>0||u>r(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}},function(){var e,i,s,n,a,o=document.getElementsByTagName("body")[0],r=document.createElement("div");e=document.createElement(o?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},o&&t.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(a in s)e.style[a]=s[a];e.appendChild(r),i=o||document.documentElement,i.insertBefore(e,i.firstChild),r.style.cssText="position: absolute; left: 10.7432222px;",n=t(r).offset().left,t.support.offsetFractions=n>10&&11>n,e.innerHTML="",i.removeChild(e)}()})(jQuery);(function(e){e.widget("ui.autocomplete",{version:"1.10.4",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var t,i,s,n=this.element[0].nodeName.toLowerCase(),a="textarea"===n,o="input"===n;this.isMultiLine=a?!0:o?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[a||o?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return t=!0,s=!0,i=!0,undefined;t=!1,s=!1,i=!1;var a=e.ui.keyCode;switch(n.keyCode){case a.PAGE_UP:t=!0,this._move("previousPage",n);break;case a.PAGE_DOWN:t=!0,this._move("nextPage",n);break;case a.UP:t=!0,this._keyEvent("previous",n);break;case a.DOWN:t=!0,this._keyEvent("next",n);break;case a.ENTER:case a.NUMPAD_ENTER:this.menu.active&&(t=!0,n.preventDefault(),this.menu.select(n));break;case a.TAB:this.menu.active&&this.menu.select(n);break;case a.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),undefined;if(!i){var n=e.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(e){return s?(s=!1,e.preventDefault(),undefined):(this._searchTimeout(e),undefined)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,undefined):(clearTimeout(this.searching),this.close(e),this._change(e),undefined)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().data("ui-menu"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(s){s.target===t.element[0]||s.target===i||e.contains(i,s.target)||t.close()})})},menufocus:function(t,i){if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)}),undefined;var s=i.item.data("ui-autocomplete-item");!1!==this._trigger("focus",t,{item:s})?t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value):this.liveRegion.text(s.value)},menuselect:function(e,t){var i=t.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),this.liveRegion=e("<span>",{role:"status","aria-live":"polite"}).addClass("ui-helper-hidden-accessible").insertBefore(this.element),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,i,s=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(i,s){s(e.ui.autocomplete.filter(t,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(t,n){s.xhr&&s.xhr.abort(),s.xhr=e.ajax({url:i,data:t,dataType:"json",success:function(e){n(e)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):this._trigger("search",t)!==!1?this._search(e):undefined},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var t=++this.requestIndex;return e.proxy(function(e){t===this.requestIndex&&this.__response(e),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},this)},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return"string"==typeof t?{label:t,value:t}:e.extend({label:t.label||t.value,value:t.value||t.label},t)})},_suggest:function(t){var i=this.menu.element.empty();this._renderMenu(i,t),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,i){var s=this;e.each(i,function(e,i){s._renderItemData(t,i)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,i){return e("<li>").append(e("<a>").text(i.label)).appendTo(t)},_move:function(e,t){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this._value(this.term),this.menu.blur(),undefined):(this.menu[e](t),undefined):(this.search(null,t),undefined)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(e,t),t.preventDefault())}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,i){var s=RegExp(e.ui.autocomplete.escapeRegex(i),"i");return e.grep(t,function(e){return s.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var t;this._superApply(arguments),this.options.disabled||this.cancelSearch||(t=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.text(t))}})})(jQuery);(function(t){t.widget("ui.menu",{version:"1.10.4",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,t.proxy(function(t){this.options.disabled&&t.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(t){t.preventDefault()},"click .ui-state-disabled > a":function(t){t.preventDefault()},"click .ui-menu-item:has(a)":function(e){var i=t(e.target).closest(".ui-menu-item");!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&t(this.document[0].activeElement).closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){var i=t(e.currentTarget);i.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(e,i)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.children(".ui-menu-item").eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){t.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){t(e.target).closest(".ui-menu").length||this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var e=t(this);e.data("ui-menu-submenu-carat")&&e.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(e){function i(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var s,n,a,o,r,l=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:l=!1,n=this.previousFilter||"",a=String.fromCharCode(e.keyCode),o=!1,clearTimeout(this.filterTimer),a===n?o=!0:a=n+a,r=RegExp("^"+i(a),"i"),s=this.activeMenu.children(".ui-menu-item").filter(function(){return r.test(t(this).children("a").text())}),s=o&&-1!==s.index(this.active.next())?this.active.nextAll(".ui-menu-item"):s,s.length||(a=String.fromCharCode(e.keyCode),r=RegExp("^"+i(a),"i"),s=this.activeMenu.children(".ui-menu-item").filter(function(){return r.test(t(this).children("a").text())})),s.length?(this.focus(e,s),s.length>1?(this.previousFilter=a,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}l&&e.preventDefault()},_activate:function(t){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i=this.options.icons.submenu,s=this.element.find(this.options.menus);this.element.toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length),s.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),s=e.prev("a"),n=t("<span>").addClass("ui-menu-icon ui-icon "+i).data("ui-menu-submenu-carat",!0);s.attr("aria-haspopup","true").prepend(n),e.attr("aria-labelledby",s.attr("id"))}),e=s.add(this.element),e.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),e.children(":not(.ui-menu-item)").each(function(){var e=t(this);/[^\-\u2014\u2013\s]/.test(e.text())||e.addClass("ui-widget-content ui-menu-divider")}),e.children(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){"icons"===t&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(e.submenu),this._super(t,e)},focus:function(t,e){var i,s;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,a,o,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,a=this.activeMenu.scrollTop(),o=this.activeMenu.height(),r=e.height(),0>n?this.activeMenu.scrollTop(a+n):n+r>o&&this.activeMenu.scrollTop(a+n-o+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",t,{item:this.active}))},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.children(".ui-menu-item")[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]())),undefined):(this.next(e),undefined)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.children(".ui-menu-item").first())),undefined):(this.next(e),undefined)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(e){this.active=this.active||t(e.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(e,!0),this._trigger("select",e,i)}})})(jQuery); \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/_global/public/js/popupForm.js b/src/Wallabag/Wallabag/Resources/views/_global/public/js/popupForm.js
deleted file mode 100644
index d233e600..00000000
--- a/src/Wallabag/Wallabag/Resources/views/_global/public/js/popupForm.js
+++ /dev/null
@@ -1,72 +0,0 @@
1$(document).ready(function() {
2
3 $("#search-form").hide();
4 $("#bagit-form").hide();
5
6 //---------------------------------------------------------------------------
7 // Toggle the "Search" popup in the sidebar
8 //---------------------------------------------------------------------------
9 function toggleSearch() {
10 $("#search-form").toggle();
11 $("#search").toggleClass("current");
12 $("#search").toggleClass("active-current");
13 $("#search-arrow").toggleClass("arrow-down");
14 if ($("#search").hasClass("current")) {
15 $("#content").addClass("opacity03");
16 } else {
17 $("#content").removeClass("opacity03");
18 }
19 }
20
21 //---------------------------------------------------------------------------
22 // Toggle the "Save a Link" popup in the sidebar
23 //---------------------------------------------------------------------------
24 function toggleBagit() {
25 $("#bagit-form").toggle();
26 $("#bagit").toggleClass("current");
27 $("#bagit").toggleClass("active-current");
28 $("#bagit-arrow").toggleClass("arrow-down");
29 if ($("#bagit").hasClass("current")) {
30 $("#content").addClass("opacity03");
31 } else {
32 $("#content").removeClass("opacity03");
33 }
34 }
35
36 //---------------------------------------------------------------------------
37 // Close all #links popups in the sidebar
38 //---------------------------------------------------------------------------
39 function closePopups() {
40 $("#links .messages").hide();
41 $("#links > li > a").removeClass("active-current");
42 $("#links > li > a").removeClass("current");
43 $("[id$=-arrow]").removeClass("arrow-down");
44 $("#content").removeClass("opacity03");
45 }
46
47 $("#search").click(function(){
48 closePopups();
49 toggleSearch();
50 $("#searchfield").focus();
51 });
52
53 $("#bagit").click(function(){
54 closePopups();
55 toggleBagit();
56 $("#plainurl").focus();
57 });
58
59 $("#search-form-close").click(function(){
60 toggleSearch();
61 });
62
63 $("#bagit-form-close").click(function(){
64 toggleBagit();
65 });
66
67 // $("#").click(function(){
68 // toggleSearch();
69 // });
70
71
72});
diff --git a/src/Wallabag/Wallabag/Resources/views/_global/public/js/restoreScroll.js b/src/Wallabag/Wallabag/Resources/views/_global/public/js/restoreScroll.js
deleted file mode 100644
index 331c9e19..00000000
--- a/src/Wallabag/Wallabag/Resources/views/_global/public/js/restoreScroll.js
+++ /dev/null
@@ -1,25 +0,0 @@
1function supportsLocalStorage() {
2 try {
3 return 'localStorage' in window && window['localStorage'] !== null;
4 } catch (e) {
5 return false;
6 }
7}
8
9function savePercent(id, percent) {
10 if (!supportsLocalStorage()) { return false; }
11 localStorage["poche.article." + id + ".percent"] = percent;
12 return true;
13}
14
15function retrievePercent(id) {
16 if (!supportsLocalStorage()) { return false; }
17
18 var bheight = $(document).height();
19 var percent = localStorage["poche.article." + id + ".percent"];
20 var scroll = bheight * percent;
21
22 $('html,body').animate({scrollTop: scroll}, 'fast');
23
24 return true;
25} \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/_global/public/js/saveLink.js b/src/Wallabag/Wallabag/Resources/views/_global/public/js/saveLink.js
deleted file mode 100755
index a7acd84c..00000000
--- a/src/Wallabag/Wallabag/Resources/views/_global/public/js/saveLink.js
+++ /dev/null
@@ -1,109 +0,0 @@
1$.fn.ready(function() {
2
3 var $bagit = $('#bagit'),
4 $bagitForm = $('#bagit-form'),
5 $bagitFormForm = $('#bagit-form-form');
6
7 /* ==========================================================================
8 bag it link and close button
9 ========================================================================== */
10
11 function toggleSaveLinkForm(url, event) {
12 $("#add-link-result").empty();
13
14 $bagit.toggleClass("active-current");
15
16 //only if bag-it link is not presented on page
17 if ( $bagit.length === 0 ) {
18 if ( event !== 'undefined' && event ) {
19 $bagitForm.css( {position:"absolute", top:event.pageY, left:event.pageX-200});
20 }
21 else {
22 $bagitForm.css( {position:"relative", top:"auto", left:"auto"});
23 }
24 }
25
26 if ($("#search-form").length != 0) {
27 $("#search").removeClass("current");
28 $("#search-arrow").removeClass("arrow-down");
29 $("#search-form").hide();
30 }
31 $bagitForm.toggle();
32 $('#content').toggleClass("opacity03");
33 if (url !== 'undefined' && url) {
34 $('#plainurl').val(url);
35 }
36 $('#plainurl').focus();
37 }
38
39 //---------------------------------------------------------------------------
40 // These two functions are now taken care of in popupForm.js
41 //---------------------------------------------------------------------------
42
43 // $bagit.click(function(){
44 // $bagit.toggleClass("current");
45 // $("#bagit-arrow").toggleClass("arrow-down");
46 // toggleSaveLinkForm();
47 // });
48
49 // $("#bagit-form-close").click(function(){
50 // $bagit.removeClass("current");
51 // $("#bagit-arrow").removeClass("arrow-down");
52 // toggleSaveLinkForm();
53 // });
54
55
56 //send "bag it link" form request via ajax
57 $bagitFormForm.submit( function(event) {
58 $("body").css("cursor", "wait");
59 $("#add-link-result").empty();
60
61 $.ajax({
62 type: $bagitFormForm.attr('method'),
63 url: $bagitFormForm.attr('action'),
64 data: $bagitFormForm.serialize(),
65 success: function(data) {
66 $('#add-link-result').html("Done!");
67 $('#plainurl').val('');
68 $('#plainurl').blur('');
69 $("body").css("cursor", "auto");
70 //setTimeout( function() { toggleSaveLinkForm(); }, 1000); //close form after 1000 delay
71 },
72 error: function(data) {
73 $('#add-link-result').html("Failed!");
74 $("body").css("cursor", "auto");
75 }
76 });
77
78 event.preventDefault();
79 });
80
81 /* ==========================================================================
82 Keyboard gestion
83 ========================================================================== */
84
85 $(window).keydown(function(e){
86 if ( ( e.target.tagName.toLowerCase() !== 'input' && e.keyCode == 83 ) || (e.keyCode == 27 && $bagitForm.is(':visible') ) ) {
87 $bagit.removeClass("current");
88 $("#bagit-arrow").removeClass("arrow-down");
89 toggleSaveLinkForm();
90 return false;
91 }
92 });
93
94 /* ==========================================================================
95 Process all links inside an article
96 ========================================================================== */
97
98 $("article a[href^='http']").after(function() {
99 return " <a href=\"" + $(this).attr('href') + "\" class=\"add-to-wallabag-link-after\" alt=\"add to wallabag\" title=\"add to wallabag\"></a> ";
100 });
101
102 $(".add-to-wallabag-link-after").click(function(event){
103 toggleSaveLinkForm($(this).attr('href'), event);
104 event.preventDefault();
105 });
106
107});
108
109
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/README.md b/src/Wallabag/Wallabag/Resources/views/baggy/README.md
deleted file mode 100755
index 1f0054a4..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
1# Baggy Theme
2
3theme created by Thomas LEBEAU alias Courgette http://thomaslebeau.fr/ \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/_display-mode.twig b/src/Wallabag/Wallabag/Resources/views/baggy/_display-mode.twig
deleted file mode 100755
index 382dd5f1..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/_display-mode.twig
+++ /dev/null
@@ -1,5 +0,0 @@
1<div id="display-mode">
2 <a href="javascript: void(null);" id="listmode" class="listmode">
3 <img src="{{ poche_url }}themes/{{ theme }}/img/{{ theme }}/blank.png" alt="{% trans "toggle view mode" %}" title="{% trans "toggle view mode" %}" width="16" height="16">
4 </a>
5</div>
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/_head.twig b/src/Wallabag/Wallabag/Resources/views/baggy/_head.twig
deleted file mode 100755
index a88d4186..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/_head.twig
+++ /dev/null
@@ -1,39 +0,0 @@
1 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-152.png" sizes="152x152">
2 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-152.png" sizes="152x152">
3
4 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-144.png" sizes="144x144">
5 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-144.png" sizes="144x144">
6
7 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-120.png" sizes="120x120">
8 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-120.png" sizes="120x120">
9
10 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-114.png" sizes="114x114">
11 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-114.png" sizes="114x114">
12
13 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-76.png" sizes="76x76">
14 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-76.png" sizes="76x76">
15
16 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-72.png" sizes="72x72">
17 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-72.png" sizes="72x72">
18
19 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-57.png" sizes="57x57">
20 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-57.png" sizes="57x57">
21
22 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon.png">
23 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon.png">
24
25 <link rel="shortcut icon" type="image/x-icon" href="{{ poche_url }}themes/_global/img/appicon/favicon.ico" sizes="16x16">
26
27 <link rel="stylesheet" href="{{ poche_url }}themes/{{theme}}/css/ratatouille.css" media="all">
28 <link rel="stylesheet" href="{{ poche_url }}themes/{{theme}}/css/font.css" media="all">
29 <link rel="stylesheet" href="{{ poche_url }}themes/{{theme}}/css/main.css" media="all">
30 <link rel="stylesheet" href="{{ poche_url }}themes/{{theme}}/css/messages.css" media="all">
31 <link rel="stylesheet" href="{{ poche_url }}themes/{{theme}}/css/print.css" media="print">
32
33 <script src="{{ poche_url }}themes/_global/js/jquery-2.0.3.min.js"></script>
34 <script src="{{ poche_url }}themes/_global/js/autoClose.js"></script>
35 <script src="{{ poche_url }}themes/{{theme}}/js/jquery.cookie.js"></script>
36 <script src="{{ poche_url }}themes/{{theme}}/js/init.js"></script>
37 <script src="{{ poche_url }}themes/_global/js/saveLink.js"></script>
38 <script src="{{ poche_url }}themes/_global/js/popupForm.js"></script>
39 <script src="{{ poche_url }}themes/{{theme}}/js/closeMessage.js"></script>
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/_menu.twig b/src/Wallabag/Wallabag/Resources/views/baggy/_menu.twig
deleted file mode 100644
index 8b80f65d..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/_menu.twig
+++ /dev/null
@@ -1,17 +0,0 @@
1 <button id="menu" class="icon icon-menu desktopHide"><span>Menu</span></button>
2 <ul id="links" class="links">
3 <li><a href="./" {% if view == 'home' %}class="current"{% endif %}>{% trans "unread" %}</a></li>
4 <li><a href="./?view=fav" {% if view == 'fav' %}class="current"{% endif %}>{% trans "favorites" %}</a></li>
5 <li><a href="./?view=archive" {% if view == 'archive' %}class="current"{% endif %}>{% trans "archive" %}</a></li>
6 <li><a href="./?view=tags" {% if view == 'tags' %}class="current"{% endif %}>{% trans "tags" %}</a></li>
7 <li style="position: relative;"><a href="javascript: void(null);" id="bagit">{% trans "save a link" %}</a>
8 {% include '_pocheit-form.twig' %}
9 </li>
10 <li style="position: relative;"><a href="javascript: void(null);" id="search">{% trans "search" %}</a>
11 {% include '_search-form.twig' %}
12 </li>
13 <li><a href="./?view=config" {% if view == 'config' %}class="current"{% endif %}>{% trans "config" %}</a></li>
14 <li><a href="./?view=about" {% if view == 'about' %}class="current"{% endif %}>{% trans "about" %}</a></li>
15 <li><a class="icon icon-power" href="./?logout" title="{% trans "logout" %}">{% trans "logout" %}</a></li>
16 </ul>
17
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/_pocheit-form.twig b/src/Wallabag/Wallabag/Resources/views/baggy/_pocheit-form.twig
deleted file mode 100755
index bf2ae903..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/_pocheit-form.twig
+++ /dev/null
@@ -1,10 +0,0 @@
1<div id="bagit-form" class="messages info popup-form">
2 <form method="get" action="index.php" target="_blank" id="bagit-form-form">
3 <h2>{% trans "Save a link" %}</h2>
4 <a href="javascript: void(null);" id="bagit-form-close" class="close-button--popup close-button">&times;</a>
5 <input type="hidden" name="autoclose" value="1" />
6 <input required placeholder="example.com/article" class="addurl" id="plainurl" name="plainurl" type="url" />
7 <span id="add-link-result"></span>
8 <input type="submit" value="{% trans "save link!" %}" />
9 </form>
10</div>
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/_search-form.twig b/src/Wallabag/Wallabag/Resources/views/baggy/_search-form.twig
deleted file mode 100644
index 73f7951f..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/_search-form.twig
+++ /dev/null
@@ -1,9 +0,0 @@
1<div id="search-form" class="messages info popup-form">
2<form method="get" action="index.php">
3 <h2>{%trans "Search" %}</h2>
4 <a href="javascript: void(null);" id="search-form-close" class="close-button--popup close-button">&times;</a>
5 <input type="hidden" name="view" value="search"></input>
6 <input required placeholder="{% trans "Enter your search here" %}" type="text" name="search" id="searchfield"><br>
7 <input id="submit-search" type="submit" value="{% trans "Search" %}"></input>
8</form>
9</div>
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/_top.twig b/src/Wallabag/Wallabag/Resources/views/baggy/_top.twig
deleted file mode 100755
index a31c0925..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/_top.twig
+++ /dev/null
@@ -1,7 +0,0 @@
1 <header class="w600p center mbm">
2 <h1 class="logo">
3 {% if view == 'home' %}{% block logo %}<img width="100" height="100" src="{{ poche_url }}themes/{{theme}}/img/logo-w.png" alt="wallabag logo" />{% endblock %}
4 {% else %}<a href="./" title="{% trans "return home" %}" >{{ block('logo') }}</a>
5 {% endif %}
6 </h1>
7 </header>
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/about.twig b/src/Wallabag/Wallabag/Resources/views/baggy/about.twig
deleted file mode 100755
index d18fe156..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/about.twig
+++ /dev/null
@@ -1,84 +0,0 @@
1{% extends "layout.twig" %}
2
3{% block title %}{% trans "About" %}{% endblock %}
4{% block menu %}
5{% include '_menu.twig' %}
6{% endblock %}
7{% block content %}
8 <h2>{% trans "About wallabag" %}</h2>
9
10 <dl>
11 <dt>{% trans "Project website" %}</dt>
12 <dd><a href="https://www.wallabag.org">https://www.wallabag.org</a></dd>
13
14 <dt>{% trans "Main developer" %}</dt>
15 <dd><a href="mailto:nicolas@loeuillet.org">Nicolas Lœuillet</a> — <a href="http://cdetc.fr">{% trans "website" %}</a></dd>
16
17 <dt>{% trans "Contributors:" %}</dt>
18 <dd><a href="https://github.com/wallabag/wallabag/graphs/contributors">{% trans "on Github" %}</a></dd>
19
20 <dt>{% trans "Bug reports" %}</dt>
21 <dd><a href="https://support.wallabag.org">{% trans "On our support website" %}</a> {% trans "or" %} <a href="https://github.com/wallabag/wallabag/issues">{% trans "on Github" %}</a></dd>
22
23 <dt>{% trans "License" %}</dt>
24 <dd><a href="http://en.wikipedia.org/wiki/MIT_License">MIT</a></dd>
25
26 <dt>{% trans "Version" %}</dt>
27 <dd>{{ constant('WALLABAG') }}</dd>
28 </dl>
29
30 <p>{% trans "wallabag is a read-it-later application: you can save a web page by keeping only content. Elements like ads or menus are deleted." %}</p>
31
32 <h2>{% trans "Getting help" %}</h2>
33
34 <dl>
35 <dt>{% trans "Documentation" %}</dt>
36 <dd><a href="docs/">Offline documentation</a> and <a href="https://doc.wallabag.org/">online documentation</a> (up to date)</dd>
37
38 <dt>{% trans "Support" %}</dt>
39 <dd><a href="http://support.wallabag.org/">http://support.wallabag.org/</a></dd>
40 </dl>
41
42 <h2>{% trans "Helping wallabag" %}</h2>
43
44 <p>{% trans "wallabag is free and opensource. You can help us:" %}</p>
45
46 <dl>
47 <dt><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9UBA65LG3FX9Y&lc=gb">{% trans "via Paypal" %}</a></dt>
48
49 <dt><a href="https://flattr.com/thing/1265480">{% trans "via Flattr" %}</a></dt>
50 </dl>
51
52 <h2>{% trans "Credits" %}</h2>
53 <dl>
54 <dt>PHP Readability</dt>
55 <dd><a href="https://bitbucket.org/fivefilters/php-readability">https://bitbucket.org/fivefilters/php-readability</a></dd>
56
57 <dt>Full Text RSS</dt>
58 <dd><a href="http://code.fivefilters.org/full-text-rss/src">http://code.fivefilters.org/full-text-rss/src</a></dd>
59
60 <dt>logo by Maylis Agniel</dt>
61 <dd><a href="https://github.com/wallabag/logo">https://github.com/wallabag/logo</a></dd>
62
63 <dt>icons</dt>
64 <dd><a href="http://icomoon.io">http://icomoon.io</a></dd>
65
66 <dt>PHP Simple HTML DOM Parser</dt>
67 <dd><a href="http://simplehtmldom.sourceforge.net/">http://simplehtmldom.sourceforge.net/</a></dd>
68
69 <dt>Session</dt>
70 <dd><a href="https://github.com/tontof/kriss_feed/blob/master/src/class/Session.php">https://github.com/tontof/kriss_feed/blob/master/src/class/Session.php</a></dd>
71
72 <dt>Twig</dt>
73 <dd><a href="http://twig.sensiolabs.org">http://twig.sensiolabs.org</a></dd>
74
75 <dt>Flash messages</dt>
76 <dd><a href="https://github.com/plasticbrain/PHP-Flash-Messages">https://github.com/plasticbrain/PHP-Flash-Messages</a></dd>
77
78 <dt>Pagination</dt>
79 <dd><a href="https://github.com/daveismyname/pagination">https://github.com/daveismyname/pagination</a></dd>
80
81 <dt>PHPePub</dt>
82 <dd><a href="https://github.com/Grandt/PHPePub/">https://github.com/Grandt/PHPePub/</a></dd>
83 </dl>
84{% endblock %}
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/config.twig b/src/Wallabag/Wallabag/Resources/views/baggy/config.twig
deleted file mode 100755
index 6031f489..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/config.twig
+++ /dev/null
@@ -1,187 +0,0 @@
1{% extends "layout.twig" %}
2
3{% block title %}{% trans "config" %}{% endblock %}
4{% block menu %}
5{% include '_menu.twig' %}
6{% endblock %}
7{% block content %}
8 <h2>{% trans "Saving articles" %}</h2>
9 <p>{% trans "There are several ways to save an article:" %} {% trans "(<a href=\"http://doc.wallabag.org/en/User_documentation/Save_your_first_article\" target=\"_blank\" title=\"Documentation\">?</a>)" %}</p>
10 <p>
11 <form method="get" action="index.php">
12 <label class="addurl" for="config_plainurl">{% trans "By filling this field" %}:</label><br>
13 <input required placeholder="example.com/article" class="addurl" id="config_plainurl" name="plainurl" type="url" />
14 <input type="submit" value="{% trans "bag it!" %}" />
15 </form>
16 </p>
17 <h3>Browser Plugins</h3>
18 <ul>
19 <li><a href="https://addons.mozilla.org/firefox/addon/wallabag/" target="_blank">{% trans "Firefox Add-On" %}</a></li>
20 <li><a href="https://chrome.google.com/webstore/detail/wallabag/bepdcjnnkglfjehplaogpoonpffbdcdj" target="_blank">{% trans "Chrome Extension" %}</a></li>
21 </ul>
22 <h3>Mobile Apps</h3>
23 <ul>
24 <li>Android: <a href="https://f-droid.org/app/fr.gaulupeau.apps.InThePoche" target="_blank">{% trans "via F-Droid" %}</a> {% trans " or " %} <a href="https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche" target="_blank">{% trans "via Google Play" %}</a></li>
25 <li>iOS: <a href="https://itunes.apple.com/app/wallabag/id828331015?mt=8" target="_blank">{% trans "download the application" %}</a></li>
26 <li>Windows Phone: <a href="http://www.windowsphone.com/en-us/store/app/wallabag/ff890514-348c-4d0b-9b43-153fff3f7450" target="_blank">{% trans "download the application" %}</a></li>
27 </ul>
28 <h3>{% trans "Bookmarklet" %}</h3>
29 <p>
30 {% trans "Drag &amp; drop this link to your bookmarks bar:" %} <a id="bookmarklet" ondragend="this.click();" href="javascript:if(top['bookmarklet-url@wallabag.org']){top['bookmarklet-url@wallabag.org'];}else{(function(){var%20url%20=%20location.href%20||%20url;window.open('{{ poche_url }}?action=add&url='%20+%20btoa(url),'_self');})();void(0);}">{% trans "bag it!" %}</a>
31 </p>
32
33 <h2>{% trans "Feeds" %}</h2>
34 {% if token == '' %}
35 <p>{% trans "Your feed token is currently empty and must first be generated to enable feeds. Click <a href='?feed&amp;action=generate'>here to generate it</a>." %}</p>
36 {% else %}
37 <ul>
38 <li><a href="?feed&amp;type=home&amp;user_id={{ user_id }}&amp;token={{ token }}" target="_blank">{% trans "Unread feed" %}</a></li>
39 <li><a href="?feed&amp;type=fav&amp;user_id={{ user_id }}&amp;token={{ token }}" target="_blank">{% trans "Favorites feed" %}</a></li>
40 <li><a href="?feed&amp;type=archive&amp;user_id={{ user_id }}&amp;token={{ token }}" target="_blank">{% trans "Archive feed" %}</a></li>
41 </ul>
42 <p class="more-info">
43 {% trans "Your token:" %} <strong>{{token}}</strong><br>
44 {% trans "Your user id:" %} <strong>{{user_id}}</strong><br>
45 {% trans "You can regenerate your token: <a href='?feed&amp;action=generate'>generate!</a>." %}
46 </p>
47 {% endif %}
48
49 <h2>{% trans "Change your theme" %}</h2>
50 <form method="post" action="?updatetheme" name="changethemeform">
51 <fieldset class="w500p inline">
52 <div class="row">
53 <label class="col w150p" for="theme">{% trans "Theme:" %}</label>
54 <select class="col" id="theme" name="theme">
55 {% for key, theme in themes %}
56 <option value="{{ key }}" {{ theme.current ? 'selected' : '' }}>{{ theme.name }}</option>
57 {% endfor %}
58 </select>
59 </div>
60 <div class="row mts txtcenter">
61 <button class="bouton" type="submit" tabindex="4">{% trans "Update" %}</button>
62 </div>
63 </fieldset>
64 <input type="hidden" name="returnurl" value="{{ referer }}">
65 <input type="hidden" name="token" value="{{ token }}">
66 </form>
67
68 <h2>{% trans "Change your language" %}</h2>
69 <form method="post" action="?updatelanguage" name="changelanguageform">
70 <fieldset class="w500p inline">
71 <div class="row">
72 <label class="col w150p" for="language">{% trans "Language:" %}</label>
73 <select class="col" id="language" name="language">
74 {% for language in languages %}
75 <option value="{{ language.value }}" {{ language.current ? 'selected' : '' }}>{{ language.name }}</option>
76 {% endfor %}
77 </select>
78 </div>
79 <div class="row mts txtcenter">
80 <button class="bouton" type="submit" tabindex="4">{% trans "Update" %}</button>
81 </div>
82 </fieldset>
83 <input type="hidden" name="returnurl" value="{{ referer }}">
84 <input type="hidden" name="token" value="{{ token }}">
85 </form>
86
87 <h2><a name="import"></a>{% trans "Import" %}</h2>
88 <p>{% trans "You can import your Pocket, Readability, Instapaper, Wallabag or any data in appropriate json or html format." %}</p>
89 <p>{% trans "Please select export file on your computer and press \"Import\" button below. Wallabag will parse your file, insert all URLs and start fetching of articles if required." %}</p>
90 <form method="post" action="?import" name="uploadfile" enctype="multipart/form-data">
91 <fieldset class="w500p">
92 <div class="row">
93 <label class="col w150p" for="file">{% trans "File:" %}</label>
94 <input class="col" type="file" id="file" name="file" tabindex="4" required="required">
95 </div>
96 <div class="row mts txtcenter">
97 <button class="bouton" type="submit" tabindex="4">{% trans "Import" %}</button>
98 </div>
99 </fieldset>
100 </form>
101 <p><a href="?import">{% trans "You can click here to fetch content for articles with no content." %}</a></p>
102 <p class="more-info">{% trans "Fetching process is controlled by two constants in your config file: IMPORT_LIMIT (how many articles are fetched at once) and IMPORT_DELAY (delay between fetch of next batch of articles)." %}</p>
103
104 <h2>{% trans "Export your wallabag data" %}</h2>
105 <p><a href="?export" target="_blank">{% trans "Export JSON" %}</a><br>
106 <span class="more-info">Data will be exported in a single JSON file.</span></p>
107
108 <h2>{% trans "Fancy an E-Book ?" %}</h2>
109 <p>{% trans "Click to get all your articles in one ebook :" %}
110 <ul>
111 <li><a href="./?epub&amp;method=all" title="{% trans 'Generate ePub file' %}">ePub 3</a></li>
112 <li><a href="./?mobi&amp;method=all" title="{% trans 'Generate Mobi file' %}">Mobi</a></li>
113 <li><a href="./?pdf&amp;method=all" title="{% trans 'Generate PDF file' %}">PDF</a></li>
114 </ul>
115
116 <span class="more-info">{% trans "This can <b>take a while</b> and can <b>even fail</b> if you have too many articles, depending on your server configuration." %}</span></p>
117
118 <h2><a name="cache"></a>{% trans "Cache" %}</h2>
119 <p><a href="?empty-cache">{% trans "Delete Cache" %}</a><br>
120 <span class="more-info">Deleting the cache may help with display or other problems.</span></p>
121
122 {% if http_auth == 0 %}
123 <h2>{% trans "Change your password" %}</h2>
124 <form method="post" action="?config" name="loginform">
125 <fieldset class="w500p">
126 <div class="row">
127 <label class="col w150p" for="password">{% trans "New password:" %}</label>
128 <input class="col" type="password" id="password" name="password" placeholder="{% trans "Password" %}" tabindex="2">
129 </div>
130 <div class="row">
131 <label class="col w150p" for="password_repeat">{% trans "Repeat your new password:" %}</label>
132 <input class="col" type="password" id="password_repeat" name="password_repeat" placeholder="{% trans "Password" %}" tabindex="3">
133 </div>
134 <div class="row mts txtcenter">
135 <button class="bouton" type="submit" tabindex="4">{% trans "Update" %}</button>
136 </div>
137 </fieldset>
138 <input type="hidden" name="returnurl" value="{{ referer }}">
139 <input type="hidden" name="token" value="{{ token }}">
140 </form>
141 {% endif %}
142
143 <h2>{% trans 'Add user' %}</h2>
144 <form method="post" action="?newuser">
145 <fieldset class="w500p">
146 <div class="row">
147 <label class="col w150p" for="newusername">{% trans 'Login for new user' %}</label>
148 <input class="col" type="text" id="newusername" name="newusername" placeholder="{% trans 'Login' %}" required>
149 </div>
150 <div class="row">
151 <label class="col w150p" for="password4newuser">{% trans "Password for new user" %}</label>
152 <input class="col" type="password" id="password4newuser" name="password4newuser" placeholder="{% trans 'Password' %}" required>
153 </div>
154 <div class="row">
155 <label class="col w150p" for="newuseremail">{% trans 'Email for new user (not required)' %}</label>
156 <input class="col" type="email" id="newuseremail" name="newuseremail" placeholder="{% trans 'Email' %}">
157 </div>
158 <div class="row mts txtcenter">
159 <button type="submit">{% trans "Add user" %}</button>
160 </div>
161 </fieldset>
162 </form>
163
164 <h2>{% trans "Delete account" %}</h2>
165 {% if not only_user %}<form method="post" action="?deluser">
166 <p>{% trans "You can delete your account by entering your password and validating." %}<br /><b>{% trans "Be careful, data will be erased forever (that is a very long time)." %}</b></p>
167 <fieldset class="w500p">
168 <div class="row">
169 <label class="col w150p" for="password4deletinguser">{% trans "Type here your password" %}</label>
170 <input class="col" type="password" id="password4deletinguser" name="password4deletinguser" placeholder="{% trans "Password" %}">
171 </div>
172 <div class="row mts txtcenter">
173 <button type="submit">{% trans "Delete account" %}</button>
174 </div>
175 </form>
176 {% else %}<p>{% trans "You are the only user, you cannot delete your own account." %}</p>
177 <p>{% trans "To completely remove wallabag, delete the wallabag folder on your web server (and eventual databases)." %}</p>{% endif %}
178
179 <h2>{% trans "Upgrading wallabag" %}</h2>
180 <ul>
181 <li>{% trans "Installed version" %}: <strong>{{ constant('WALLABAG') }}</strong></li>
182 <li>{% trans "Latest stable version" %}: {{ prod }}. {% if compare_prod == -1 %}<strong><a href="http://wallabag.org/">{% trans "A more recent stable version is available." %}</a></strong>{% else %}{% trans "You are up to date." %}{% endif %} ({% trans "Last check:" %} {{ check_time_prod }})</li>
183 {% if constant('DEBUG_POCHE') == 1 %}<li>{% trans "Latest dev version" %}: {{ dev }}. {% if compare_dev == -1 %}<strong><a href="http://wallabag.org/">{% trans "A more recent development version is available." %}</a></strong>{% else %}{% trans "You are up to date." %}{% endif %} ({% trans "Last check:" %} {{ check_time_dev }}){% endif %}</li>
184 </ul>
185 <p class="more-info">{% trans "You can clear cache to check the latest release." %}</p>
186
187{% endblock %}
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/edit-tags.twig b/src/Wallabag/Wallabag/Resources/views/baggy/edit-tags.twig
deleted file mode 100755
index 15f15560..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/edit-tags.twig
+++ /dev/null
@@ -1,29 +0,0 @@
1{% extends "layout.twig" %}
2{% block title %}edit tags{% endblock %}
3{% block menu %}
4{% include '_menu.twig' %}
5{% endblock %}
6{% block content %}
7
8<script src="{{ poche_url }}themes/_global/js/jquery-ui-1.10.4.custom.min.js"></script>
9<script src="{{ poche_url }}themes/_global/js/autoCompleteTags.js"></script>
10<link rel="stylesheet" href="{{ poche_url }}themes/_global/css/jquery-ui-1.10.4.custom.min.css" media="all">
11
12<div id="article">
13 <h2>{{ entry.title|raw }}</21>
14</div>
15{% if tags is empty %}
16<div class="notags">{% trans "no tags" %}</div>
17{% endif %}
18<ul>
19{% for tag in tags %}<li>{{ tag.value }} <a href="./?action=remove_tag&amp;tag_id={{ tag.id }}&amp;id={{ entry_id }}">✘</a></li>{% endfor %}
20</ul>
21<form method="post" action="./?action=add_tag">
22 <input type="hidden" name="entry_id" value="{{ entry_id }}" />
23 <label for="value">{% trans "Add tags:" %}</label><input type="text" placeholder="{% trans "interview" %}, {% trans "editorial" %}, {% trans "video" %}" id="value" name="value" required="required" />
24 <input type="submit" value="Tag" />
25 <p>{% trans "Start typing for auto complete." %}<br>
26 {% trans "You can enter multiple tags, separated by commas." %}</p>
27</form>
28<a class="icon icon-reply return" href="./?view=view&id={{ entry_id }}">{% trans "return to article" %}</a>
29{% endblock %}
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/home.twig b/src/Wallabag/Wallabag/Resources/views/baggy/home.twig
deleted file mode 100755
index 93515080..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/home.twig
+++ /dev/null
@@ -1,81 +0,0 @@
1{% extends "layout.twig" %}
2{% block title %}
3{% if view == 'fav' %}
4{% trans "favorites" %}
5{% elseif view == 'archive' %}
6{% trans "archive" %}
7{% else %}
8{% trans "unread" %}
9{% endif %}
10{% endblock %}
11{% block menu %}
12{% include '_menu.twig' %}
13{% endblock %}
14{% block content %}
15 {% if tag %}
16 <h3>{% trans "Tag" %}: <b>{{ tag.value }}</b></h3>
17 {% endif %}
18 {% if entries is empty %}
19 <div class="messages warning"><p>{% trans "No articles found." %}</p></div>
20 {% else %}
21 <div>
22 {% include '_display-mode.twig' %}
23 {% include '_sorting.twig' %}
24 </div>
25 {% block pager %}
26 {% if nb_results > 1 %}
27 <div class="results">
28 <div class="nb-results">{{ nb_results }} {% trans "results" %}{% if search_term is defined %} {% trans %}found for « {{ search_term }} »{% endtrans %}{% endif %}</div>
29 {{ page_links | raw }}
30 </div>
31 {% elseif nb_results == 1 %}
32 {% if search_term is defined %}
33 <div class="results">
34 <div class="nb-results">{% trans "Only one result found for " %} « {{ search_term }} »</div>
35 </div>
36 {% endif %}
37 {% endif %}
38 {% endblock %}
39 <div id="list-entries" class="list-entries">
40 {% for entry in entries %}
41 <div id="entry-{{ entry.id|e }}" class="entrie">
42 <h2><a href="index.php?view=view&amp;id={{ entry.id|e }}">{{ entry.title|raw }}</a></h2>
43 {% if entry.content| getReadingTime > 0 %}
44 <div class="estimatedTime"><span class="tool reading-time">{% trans "estimated reading time :" %} {{ entry.content| getReadingTime }} min</span></div>
45 {% else %}
46 <div class="estimatedTime"><span class="tool reading-time">{% trans "estimated reading time :" %} <small class="inferieur">&lt;</small> 1 min</span></div>
47 {% endif %}
48 <ul class="tools links">
49 <li><a title="{% trans "Toggle mark as read" %}" class="tool icon-check icon {% if entry.is_read == 0 %}archive-off{% else %}archive{% endif %}" href="./?action=toggle_archive&amp;id={{ entry.id|e }}"><span>{% trans "Toggle mark as read" %}</span></a></li>
50 <li><a title="{% trans "toggle favorite" %}" class="tool icon-star icon {% if entry.is_fav == 0 %}fav-off{% else %}fav{% endif %}" href="./?action=toggle_fav&amp;id={{ entry.id|e }}"><span>{% trans "toggle favorite" %}</span></a></li>
51 <li><a title="{% trans "delete" %}" class="tool delete icon-trash icon" href="./?action=delete&amp;id={{ entry.id|e }}"><span>{% trans "delete" %}</span></a></li>
52 <li><a href="{{ entry.url|e }}" target="_blank" title="{% trans "original" %} : {{ entry.title|e }}" class="tool link icon-link icon"><span>{{ entry.url | e | getDomain }}</span></a></li>
53 </ul>
54 <p>{{ entry.content|striptags|slice(0, 300) }}...</p>
55 </div>
56
57 {% endfor %}
58 </div>
59 {{ block('pager') }}
60 {% if view == 'home' %}{% if nb_results > 1 %}<p><a title="{% trans "Mark all the entries as read" %}" href="./?action=archive_all">{% trans "Mark all the entries as read" %}</a></p>{% endif %}{% endif %}
61 {% if searchterm is defined %}<a title="{% trans "Tag these results as" %} {{ searchterm }}" href="./?action=add_tag&search={{ searchterm }}">{% trans "Tag these results as" %} {{ searchterm }}</a>{% endif %}<br />
62
63 {% if searchterm is defined %}<a title="{% trans "Delete results matching" %} {{ searchterm }}" href="./?action=delete&search={{ searchterm }}">{% trans "Delete results matching" %} {{ searchterm }}</a>{% endif %}<br />
64
65 {% if tag %}<a title="{% trans "Mark all articles from this tag as read" %}" href="./?action=toggle_archive&amp;tag_id={{ tag.id }}">{% trans "Mark all articles from this tag as read" %}</a><br />{% endif %}
66
67 {% if tag %}
68 {% if constant('EPUB') == 1 %}<a title="{% trans "Download the articles from this tag in an epub file" %}" href="./?epub&amp;method=tag&amp;value={{ tag.value }}">{% trans "Download as ePub3" %}</a>{% endif %}
69 {% if constant('MOBI') == 1 %}<a title="{% trans "Download the articles from this tag in a mobi file" %}" href="./?mobi&amp;method=tag&amp;value={{ tag.value }}">{% trans "Download as Mobi" %}</a>{% endif %}
70 {% if constant('PDF') == 1 %}<a title="{% trans "Download the articles from this tag in a pdf file" %}" href="./?pdf&amp;method=tag&amp;value={{ tag.value }}">{% trans "Download as PDF" %}</a>{% endif %}
71 {% elseif searchterm is defined %}
72 {% if constant('EPUB') == 1 %}<a title="{% trans "Download the articles from this search in an epub" %}" href="./?epub&amp;method=search&amp;value={{ searchterm }}">{% trans "Download as ePub3" %}</a>{% endif %}
73 {% if constant('MOBI') == 1 %}<a title="{% trans "Download the articles from this search in a mobi file" %}" href="./?mobi&amp;method=search&amp;value={{ searchterm }}">{% trans "Download as Mobi" %}</a>{% endif %}
74 {% if constant('PDF') == 1 %}<a title="{% trans "Download the articles from this search in a pdf file" %}" href="./?pdf&amp;method=search&amp;value={{ searchterm }}">{% trans "Download as PDF" %}</a>{% endif %}
75 {% else %}
76 {% if constant('EPUB') == 1 %}<a title="{% trans "Download the articles from this category in an epub" %}" href="./?epub&amp;method=category&amp;value={{ view }}">{% trans "Download as ePub3" %}</a>{% endif %}
77 {% if constant('MOBI') == 1 %}<a title="{% trans "Download the articles from this category in a mobi file" %}" href="./?mobi&amp;method=category&amp;value={{ view }}">{% trans "Download as Mobi" %}</a>{% endif %}
78 {% if constant('PDF') == 1 %}<a title="{% trans "Download the articles from this category in a pdf file" %}" href="./?pdf&amp;method=category&amp;value={{ view }}">{% trans "Download as PDF" %}</a>{% endif %}
79 {% endif %}
80{% endif %}
81{% endblock %}
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/layout-login.twig b/src/Wallabag/Wallabag/Resources/views/baggy/layout-login.twig
deleted file mode 100644
index 4078fbb0..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/layout-login.twig
+++ /dev/null
@@ -1,31 +0,0 @@
1<!DOCTYPE html>
2<!--[if lte IE 6]><html class="no-js ie6 ie67 ie678" lang="{{ lang }}"><![endif]-->
3<!--[if lte IE 7]><html class="no-js ie7 ie67 ie678" lang="{{ lang }}"><![endif]-->
4<!--[if IE 8]><html class="no-js ie8 ie678" lang="{{ lang }}"><![endif]-->
5<!--[if gt IE 8]><html class="no-js" lang="{{ lang }}"><![endif]-->
6<html lang="{{ lang }}">
7 <head>
8 <meta name="viewport" content="initial-scale=1.0">
9 <meta charset="utf-8">
10 <!--[if IE]>
11 <meta http-equiv="X-UA-Compatible" content="IE=10">
12 <![endif]-->
13 <title>{% block title %}{% endblock %} - wallabag</title>
14{% include '_head.twig' %}
15{% include '_bookmarklet.twig' %}
16 </head>
17 <body class="login">
18 {% include '_top.twig' %}
19 <div id="main">
20 {% block menu %}{% endblock %}
21 {% block precontent %}{% endblock %}
22 {% block messages %}
23 {% include '_messages.twig' %}
24 {% endblock %}
25 <div id="content" class="w600p center">
26 {% block content %}{% endblock %}
27 </div>
28 </div>
29{% include '_footer.twig' %}
30 </body>
31</html> \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/layout.twig b/src/Wallabag/Wallabag/Resources/views/baggy/layout.twig
deleted file mode 100755
index 8de12749..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/layout.twig
+++ /dev/null
@@ -1,34 +0,0 @@
1<!DOCTYPE html>
2<!--[if lte IE 6]><html class="no-js ie6 ie67 ie678" lang="{{ lang }}"><![endif]-->
3<!--[if lte IE 7]><html class="no-js ie7 ie67 ie678" lang="{{ lang }}"><![endif]-->
4<!--[if IE 8]><html class="no-js ie8 ie678" lang="{{ lang }}"><![endif]-->
5<!--[if gt IE 8]><html class="no-js" lang="{{ lang }}"><![endif]-->
6<html lang="{{ lang }}">
7 <head>
8 <meta name="viewport" content="initial-scale=1.0">
9 <meta charset="utf-8">
10 <!--[if IE]>
11 <meta http-equiv="X-UA-Compatible" content="IE=10">
12 <![endif]-->
13 <title>{% block title %}{% endblock %} - wallabag</title>
14{% include '_head.twig' %}
15{% include '_bookmarklet.twig' %}
16 </head>
17 <body>
18 {% include '_top.twig' %}
19 <div id="main">
20 {% block menu %}{% endblock %}
21 {% block precontent %}{% endblock %}
22 {% block messages %}
23 {% include '_messages.twig' %}
24 {% if includeImport %}
25 {% include '_import.twig' %}
26 {% endif %}
27 {% endblock %}
28 <div id="content" class="w600p center">
29 {% block content %}{% endblock %}
30 </div>
31 </div>
32{% include '_footer.twig' %}
33 </body>
34</html> \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/login.twig b/src/Wallabag/Wallabag/Resources/views/baggy/login.twig
deleted file mode 100644
index 58290e9c..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/login.twig
+++ /dev/null
@@ -1,34 +0,0 @@
1{% extends "layout-login.twig" %}
2
3{% block title %}{% trans "login to your wallabag" %}{% endblock %}
4{% block content %}
5 {% if http_auth == 0 %}
6 <form method="post" action="?login" name="loginform">
7 <fieldset class="w500p center">
8 <h2 class="mbs txtcenter">{% trans "Login to wallabag" %}</h2>
9 {% if constant('MODE_DEMO') == 1 %}<p>{% trans "you are in demo mode, some features may be disabled." %}</p>{% endif %}
10 <div class="row">
11 <label class="col w150p" for="login">{% trans "Username" %}</label>
12 <input class="col" type="text" id="login" name="login" placeholder="{% trans "Username" %}" tabindex="1" autofocus {% if constant('MODE_DEMO') == 1 %}value="poche"{% endif %} />
13 </div>
14
15 <div class="row">
16 <label class="col w150p" for="password">{% trans "Password" %}</label>
17 <input class="col" type="password" id="password" name="password" placeholder="{% trans "Password" %}" tabindex="2" {% if constant('MODE_DEMO') == 1 %}value="poche"{% endif %} />
18 </div>
19 <div class="row">
20
21 <div class="col">
22 <input type="checkbox" id="longlastingsession" name="longlastingsession" tabindex="3" /> <label for="longlastingsession">{% trans "Stay signed in" %}</label><br />
23 <small class="inbl">{% trans "(Do not check on public computers)" %}</small>
24 </div>
25 </div>
26 <div class="row mts txtcenter">
27 <button class="bouton" type="submit" tabindex="4">{% trans "Sign in" %}</button>
28 </div>
29 </fieldset>
30 <input type="hidden" name="returnurl" value="{{ referer }}">
31 <input type="hidden" name="token" value="{{ token }}">
32 </form>
33 {% endif %}
34{% endblock %}
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/public/css/font.css b/src/Wallabag/Wallabag/Resources/views/baggy/public/css/font.css
deleted file mode 100755
index 7c02a16f..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/public/css/font.css
+++ /dev/null
@@ -1,6 +0,0 @@
1@font-face {
2 font-family: 'PT Sans';
3 font-style: normal;
4 font-weight: 700;
5 src: local('PT Sans Bold'), local('PTSans-Bold'), url(../fonts/ptsans.woff) format('woff');
6}
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/public/css/main.css b/src/Wallabag/Wallabag/Resources/views/baggy/public/css/main.css
deleted file mode 100755
index 1df82910..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/public/css/main.css
+++ /dev/null
@@ -1,1071 +0,0 @@
1/* ==========================================================================
2 Sommaire
3
4 1 = Style Guide
5 2 = Layout
6 3 = Pictos
7 4 = Messages
8 5 = Article
9 6 = Media queries
10
11 ========================================================================== */
12
13html {
14 min-height: 100%;
15}
16
17body {
18 background-color: #EEE;
19}
20
21.login {
22 background-color: #333;
23}
24
25.login #main {
26 padding: 0;
27 margin: 0;
28}
29
30.login form {
31 background-color: #FFF;
32 padding: 1.5em;
33 box-shadow: 0 1px 8px rgba(0,0,0,0.9);
34 width: 20em;
35 position: absolute;
36 top: 8em;
37 left: 50%;
38 margin-left: -10em;
39}
40
41.login .logo {
42 position: absolute;
43 top: 2em;
44 left: 50%;
45 margin-left: -55px;
46}
47
48/* ==========================================================================
49 1 = Style Guide
50 ========================================================================== */
51
52::selection {
53 color: #FFF;
54 background-color: #000;
55}
56
57.desktopHide {
58 display: none;
59}
60
61.logo {
62 position: fixed;
63 z-index: 20;
64 top: 0.4em;
65 left: 0.6em;
66}
67
68h2, h3, h4 {
69 font-family: 'PT Sans', sans-serif;
70 text-transform: uppercase;
71}
72
73p, li, label {
74 color: #666;
75}
76
77a {
78 color: #000;
79 font-weight: bold;
80}
81
82a:hover, a:focus {
83 text-decoration: none;
84}
85
86form fieldset {
87 border:0;
88 padding: 0;
89 margin: 0;
90}
91
92form input[type="text"], select, form input[type="password"], form input[type="url"], form input[type="email"] {
93 border: 1px solid #999;
94 padding: 0.5em 1em;
95 min-width: 12em;
96 color: #666;
97}
98
99@media screen and (-webkit-min-device-pixel-ratio:0){
100 select{
101 -webkit-appearance: none;
102 border-radius: 0;
103 background: #FFF url(../img/bg-select.png) no-repeat right center;
104 }
105}
106
107.inline .row {
108 display: inline-block;
109 margin-right: 0.5em;
110}
111
112.inline label {
113 min-width: 6em;
114}
115
116fieldset label {
117 display: inline-block;
118 min-width: 12.5em;
119 color: #666;
120}
121
122label {
123 margin-right: 0.5em;
124}
125
126form .row {
127 margin-bottom: 0.5em;
128}
129
130form button, input[type="submit"] {
131 cursor:pointer;
132 background-color: #000;
133 color: #FFF;
134 border:0;
135 padding: 0.5em 1em;
136 display: inline-block;
137 border:1px solid #000;
138}
139
140 form button:hover, form button:focus, input[type="submit"]:hover, input[type="submit"]:focus {
141 background-color: #FFF;
142 color: #000;
143 -webkit-transition: all 0.5s ease;
144 -moz-transition: all 0.5s ease;
145 -ms-transition: all 0.5s ease;
146 -o-transition: all 0.5s ease;
147 transition: all 0.5s ease;
148 }
149
150#bookmarklet {
151 cursor: move;
152}
153
154h2:after {
155 content: "";
156 height: 4px;
157 width: 70px;
158 background-color: #000;
159 display: block;
160}
161
162.links {
163 padding: 0;
164 margin: 0;
165}
166 .links li {
167 list-style: none;
168 margin: 0;
169 padding: 0;
170 }
171
172
173#links {
174 position: fixed;
175 top: 0;
176 width: 10em;
177 left: 0;
178 text-align: right;
179 background-color: #333;
180 padding-top: 9.5em;
181 height: 100%;
182 box-shadow:inset -4px 0 20px rgba(0,0,0,0.6);
183 z-index: 15;
184}
185
186#main {
187 margin-left: 13em;
188 position: relative;
189 z-index: 10;
190 padding-right: 5%;
191 padding-bottom: 1em;
192}
193
194 #links > li > a {
195 display: block;
196 padding: 0.5em 2em 0.5em 1em;
197 color: #FFF;
198 position: relative;
199 text-transform: uppercase;
200 text-decoration: none;
201 font-weight: normal;
202 font-family: 'PT Sans', sans-serif;
203 -webkit-transition: all 0.5s ease;
204 -moz-transition: all 0.5s ease;
205 -ms-transition: all 0.5s ease;
206 -o-transition: all 0.5s ease;
207 transition: all 0.5s ease;
208 }
209
210 #links > li > a:hover, #links > li > a:focus {
211 background-color: #999;
212 color: #000;
213 }
214
215 #links .current:after {
216 content: "";
217 width: 0;
218 height: 0;
219 position: absolute;
220 border-style: solid;
221 border-width: 10px;
222 border-color: transparent #EEE transparent transparent;
223 right: 0;
224 top: 50%;
225 margin-top: -10px;
226 }
227
228 #links li:last-child {
229 position: fixed;
230 bottom: 1em;
231 width: 10em;
232 }
233
234 #links li:last-child a:before {
235 font-size: 1.2em;
236 position: relative;
237 top: 2px;
238 }
239
240
241#sort {
242 padding: 0;
243 list-style-type: none;
244 opacity: 0.5;
245 display: inline-block;
246}
247
248#sort li {
249 display: inline;
250 font-size: 0.9em;
251}
252
253#sort li + li {
254 margin-left: 10px;
255}
256
257#sort a {
258 padding: 2px 2px 0;
259 vertical-align: middle;
260}
261
262#sort img {
263 vertical-align: baseline;
264}
265#sort img:hover {
266 cursor: pointer;
267}
268
269#display-mode {
270 float: right;
271 vertical-align: middle;
272 margin-top: 10px;
273 margin-bottom: 10px;
274 opacity: 0.5;
275}
276#listmode {
277 width: 16px;
278 display: inline-block;
279 text-decoration: none;
280}
281#listmode a:hover {
282 opacity: 1;
283}
284#listmode.tablemode {
285 background-image: url("../img/baggy/table.png");
286 background-repeat: no-repeat;
287 background-position: bottom;
288}
289#listmode.listmode {
290 background-image: url("../img/baggy/list.png");
291 background-repeat: no-repeat;
292 background-position: bottom;
293}
294
295
296/* ==========================================================================
297 2 = Layout
298 ========================================================================== */
299
300#content {
301 margin-top: 5em;
302 min-height: 30em;
303}
304
305footer {
306 text-align: right;
307 position: relative;
308 bottom: 0;
309 right: 5em;
310 color: #999;
311 font-size: 0.8em;
312 font-style: italic;
313 z-index: 20;
314}
315
316footer a {
317 color: #999;
318 font-weight: normal;
319}
320
321.list-entries {
322 letter-spacing:-5px;
323}
324
325.listmode .entrie {
326 width: 100%!important;
327 margin-left: 0!important;
328}
329
330.list-entries + .results {
331 margin-bottom: 2em;
332}
333
334.estimatedTime .reading-time {
335 color: #999;
336 font-style: italic;
337 font-weight: normal;
338 font-size: 0.9em;
339}
340
341.estimatedTime small {
342 position: relative;
343 top: -1px;
344}
345
346.entrie {
347 background-color: #FFF;
348 letter-spacing:normal;
349 box-shadow: 0 3px 7px rgba(0,0,0,0.3);
350 display: inline-block;
351 width: 32%;
352 margin-bottom: 1.5em;
353 vertical-align: top;
354 margin-left: 1.5%;
355 position: relative;
356 overflow: hidden;
357 padding: 1.5em 1.5em 3em 1.5em;
358
359 /* Removing CSS transitions because they make the switch from list view to
360 * table view jerky
361 */
362 /* -webkit-transition: all 0.5s ease; */
363 /* -moz-transition: all 0.5s ease; */
364 /* -ms-transition: all 0.5s ease; */
365 /* -o-transition: all 0.5s ease; */
366 /* transition: all 0.5s ease; */
367}
368
369.entrie:before {
370 content: "";
371 width: 0;
372 height: 0;
373 border-style:solid;
374 border-color: transparent transparent #000 transparent;
375 border-width: 10px;
376 position: absolute;
377 bottom: 0.3em;
378 z-index: 10;
379 right: 1.5em;
380 -webkit-transition: all 0.5s ease;
381 -moz-transition: all 0.5s ease;
382 -ms-transition: all 0.5s ease;
383 -o-transition: all 0.5s ease;
384 transition: all 0.5s ease;
385}
386
387.entrie:after {
388 content: "";
389 position: absolute;
390 height: 7px;
391 width: 100%;
392 bottom: 0;
393 left: 0;
394 background-color: #000;
395 -webkit-transition: all 0.5s ease;
396 -moz-transition: all 0.5s ease;
397 -ms-transition: all 0.5s ease;
398 -o-transition: all 0.5s ease;
399 transition: all 0.5s ease;
400}
401
402.entrie:hover {
403 box-shadow: 0 3px 10px rgba(0,0,0,1);
404}
405
406.entrie:hover:after {
407 height: 40px;
408}
409
410.entrie:hover:before {
411 bottom: 2.4em;
412}
413
414.entrie:hover h2 a {
415 color: #666;
416}
417
418.entrie h2 {
419 text-transform: none;
420 margin-bottom: 0;
421 line-height: 1.2;
422}
423
424 .entrie h2:after {
425 content: none;
426 }
427
428
429.entrie h2 a {
430 display: block;
431 text-decoration: none;
432 color: #000;
433 word-wrap: break-word;
434 -webkit-transition: all 0.5s ease;
435 -moz-transition: all 0.5s ease;
436 -ms-transition: all 0.5s ease;
437 -o-transition: all 0.5s ease;
438 transition: all 0.5s ease;
439}
440/*
441.entrie h2 a:after {
442 content: "";
443 position: absolute;
444 top: 0;
445 width: 100%;
446 height: 100%;
447 left: 0;
448}
449*/
450
451.entrie p {
452 color: #666;
453 font-size: 0.9em;
454 line-height: 1.7;
455}
456
457 .entrie h2 a:first-letter {
458 text-transform: uppercase;
459 }
460
461.entrie:hover .tools {
462 bottom: 0;
463}
464
465.entrie .tools {
466 position: absolute;
467 bottom: -50px;
468 left: 0;
469 width: 100%;
470 z-index: 10;
471 padding-right: 0.5em;
472 text-align: right;
473 -webkit-transition: all 0.5s ease;
474 -moz-transition: all 0.5s ease;
475 -ms-transition: all 0.5s ease;
476 -o-transition: all 0.5s ease;
477 transition: all 0.5s ease;
478}
479
480 .entrie .tools a {
481 color: #666;
482 text-decoration: none;
483 display: block;
484 padding: 0.4em;
485 }
486
487 .entrie .tools a:hover {
488 color: #FFF;
489 }
490
491 .entrie .tools li {
492 display: inline-block;
493 }
494
495.entrie:nth-child(3n+1) {
496 margin-left: 0;
497}
498
499.results {
500 letter-spacing: -5px;
501 padding: 0 0 0.5em;
502}
503
504.results > * {
505 display: inline-block;
506 vertical-align: top;
507 letter-spacing: normal;
508 width: 50%;
509}
510
511.pagination {
512 text-align: right;
513 margin-bottom:50px;
514}
515
516.nb-results {
517 text-align: left;
518 font-style: italic;
519 color: #999;
520}
521
522.pagination > * {
523 display: inline-block;
524 margin-left: 0.5em;
525}
526
527.pagination a {
528 color: #999;
529 text-decoration: none;
530}
531
532 .pagination a:hover, .pagination a:focus {
533 text-decoration: underline;
534 }
535
536.pagination .disabled {
537 display: none;
538}
539
540/* ==========================================================================
541 2.1 = "save a link" related styles
542 ========================================================================== */
543
544.popup-form {
545 background: rgba(0,0,0,0.5);
546 position: absolute;
547 top: 0;
548 left: 10em;
549 z-index: 20;
550 height: 100%;
551 width: 100%;
552 margin: 0;
553 margin-top: -30% !important; /* TODO: get rid of !important here; overridden by .messages selector */
554 padding: 2em;
555 display: none;
556 border-left: 1px #EEE solid;
557}
558
559 .popup-form form {
560 background-color: #FFF;
561 position: absolute;
562 top: 0;
563 left: 0;
564 z-index: 20;
565 border: 10px solid #000;
566 width: 400px;
567 height: 200px;
568 padding: 2em;
569 }
570
571#bagit-form-form .addurl {
572 margin-left: 0;
573}
574
575.closeMessage,
576.close-button {
577 background-color: #000;
578 color: #FFF;
579 font-size: 1.2em;
580 line-height: 1.6;
581 width: 1.6em;
582 height: 1.6em;
583 text-align: center;
584 text-decoration: none;
585}
586 .closeMessage:hover,
587 .closeMessage:focus,
588 .close-button:hover,
589 .close-button:focus {
590 background-color: #999;
591 color: #000;
592 }
593
594.close-button--popup {
595 display: inline-block;
596 position: absolute;
597 top: 0;
598 right: 0;
599 font-size: 1.4em;
600}
601
602.active-current {
603 background-color: #999;
604}
605
606.active-current:after {
607 content: "";
608 width: 0;
609 height: 0;
610 position: absolute;
611 border-style: solid;
612 border-width: 10px;
613 border-color: transparent #EEE transparent transparent;
614 right: 0;
615 top: 50%;
616 margin-top: -10px;
617}
618
619.opacity03 {
620 opacity: 0.3;
621}
622
623.add-to-wallabag-link-after {
624 background-color: #000;
625 color: #fff;
626 padding: 0 3px 2px 3px;
627}
628
629a.add-to-wallabag-link-after {
630 visibility: hidden;
631 position: absolute;
632 opacity: 0;
633 transition-duration: 2s;
634 transition-timing-function: ease-out;
635}
636
637#article article a:hover + a.add-to-wallabag-link-after, a.add-to-wallabag-link-after:hover {
638 opacity: 1;
639 visibility: visible;
640 transition-duration: .3s;
641 transition-timing-function: ease-in;
642}
643
644a.add-to-wallabag-link-after:after {
645 content: "w";
646}
647
648#add-link-result {
649 font-weight: bold;
650 font-size: 0.9em;
651}
652
653/* ==========================================================================
654 3 = Pictos
655 ========================================================================== */
656
657@font-face {
658 font-family: 'icomoon';
659 src:url('../fonts/icomoon.eot?-s0mcsx');
660 src:url('../fonts/icomoon.eot?#iefix-s0mcsx') format('embedded-opentype'),
661 url('../fonts/icomoon.woff?-s0mcsx') format('woff'),
662 url('../fonts/icomoon.ttf?-s0mcsx') format('truetype'),
663 url('../fonts/icomoon.svg?-s0mcsx#icomoon') format('svg');
664 font-weight: normal;
665 font-style: normal;
666}
667
668.icon span,
669.icon-image span {
670 position: absolute;
671 top: -9999px;
672}
673
674[class^="icon-"]:before, [class*=" icon-"]:before {
675 font-family: 'icomoon';
676 speak: none;
677 font-style: normal;
678 font-weight: normal;
679 font-variant: normal;
680 text-transform: none;
681 line-height: 1;
682
683 /* Better Font Rendering =========== */
684 -webkit-font-smoothing: antialiased;
685 -moz-osx-font-smoothing: grayscale;
686}
687
688.icon-flattr:before {
689 content: "\e800";
690}
691.icon-mail:before {
692 content: "\e80a";
693}
694.icon-up-open:before {
695 content: "\e80b";
696}
697.icon-star:before {
698 content: "\e805";
699}
700.icon-check:before {
701 content: "\e804";
702}
703.icon-link:before {
704 content: "\e801";
705}
706.icon-reply:before {
707 content: "\e806";
708}
709.icon-menu:before {
710 content: "\e802";
711}
712.icon-clock:before {
713 content: "\e803";
714}
715.icon-twitter:before {
716 content: "\e807";
717}
718.icon-down-open:before {
719 content: "\e809";
720}
721.icon-trash:before {
722 content: "\e80c";
723}
724.icon-delete:before {
725 content: "\e600";
726}
727.icon-power:before {
728 content: "\e601";
729}
730.icon-arrow-up-thick:before {
731 content: "\e602";
732}
733.icon-rss:before {
734 content: "\e808";
735}
736.icon-print:before {
737 content: "\e80d";
738}
739
740
741/* .icon-image class, for image-based icons
742 ========================================================================== */
743
744.icon-image {
745 background-size: 16px 16px;
746 background-repeat: no-repeat;
747 background-position: center;
748 padding-right: 1em !important;
749 padding-left: 1em !important;
750}
751
752/* Carrot (http://carrot.org) */
753.icon-image--carrot {
754 background-image: url('../../_global/img/icons/carrot-icon--white.png');
755}
756
757/* Diaspora */
758.icon-image--diaspora {
759 background-image: url('../../_global/img/icons/diaspora-icon--black.png');
760}}
761
762/* ==========================================================================
763 Icon selected
764 ========================================================================== */
765
766.icon-star.fav:before {
767 color: #FFF;
768}
769
770.icon-check.archive:before {
771 color: #FFF;
772}
773
774/* ==========================================================================
775 4 = Messages
776 ========================================================================== */
777
778.messages {
779 text-align: left;
780 margin-top: 1em;
781}
782
783.messages > * { display: inline-block;}
784
785.warning {
786 /* font-size: 3em;
787 color: #999;
788 font-style: italic;
789 position: absolute;
790 top: 50%;
791 left: 0;
792 width: 100%;
793 text-align: center;
794 padding-right: 5%;
795 margin-top: -2em;*/
796 font-weight: bold;
797 display: block;
798 width: 100%;
799}
800
801.more-info {
802 font-size: 0.85em;
803 line-height: 1.5;
804 color: #aaa;
805}
806
807 .more-info a {
808 color: #aaa;
809 }
810
811/* ==========================================================================
812 5 = Article
813 ========================================================================== */
814
815#article {
816 width: 70%;
817 margin-bottom: 3em;
818 text-align: justify;
819}
820
821#article .tags {
822 margin-bottom: 1em;
823}
824
825#article i {
826 font-style: normal;
827}
828
829blockquote {
830 border:1px solid #999;
831 background-color: #FFF;
832 padding: 1em;
833 margin: 0;
834}
835
836#article h1 {
837 text-align: left;
838}
839
840#article h2, #article h3, #article h4 {
841 text-transform: none;
842}
843
844#article h2:after {
845 content: none;
846}
847
848.topPosF {
849 position: fixed;
850 right: 20%;
851 bottom: 2em;
852 font-size: 1.5em;
853}
854
855#article_toolbar {
856 margin-bottom: 1em;
857}
858
859#article_toolbar li {
860 display: inline-block;
861}
862
863#article_toolbar a {
864 background-color: #000;
865 padding: 0.3em 0.5em 0.2em;
866 color: #FFF;
867 text-decoration: none;
868}
869
870 #article_toolbar a:hover, #article_toolbar a:focus {
871 background-color: #999;
872 }
873
874.shaarli:before {
875 content: "*";
876}
877
878.return {
879 text-decoration: none;
880 margin-top: 1em;
881 display: block;
882}
883
884.return:before {
885 margin-right: 0.5em;
886}
887
888.notags {
889 font-style: italic;
890 color: #999;
891}
892
893.icon-rss {
894 background-color: #000;
895 color: #FFF;
896 padding: 0.2em 0.5em;
897}
898
899.icon-rss:before {
900 position: relative;
901 top: 2px;
902}
903
904.list-tags li {
905 margin-bottom: 0.5em;
906}
907
908.list-tags .icon-rss:hover, .list-tags .icon-rss:focus {
909 background-color: #FFF;
910 color: #000;
911 text-decoration: none;
912}
913
914.list-tags a {
915 text-decoration: none;
916}
917
918.list-tags a:hover, .list-tags a:focus {
919 text-decoration: underline;
920}
921
922pre code {
923 font-family: "Courier New", Courier, monospace;
924 border: 1px solid #ccc;
925 font-size: 0.96em;
926}
927
928
929/* ==========================================================================
930 6 = Media Queries
931 ========================================================================== */
932
933@media screen and (max-width: 1050px) {
934 .entrie {
935 width: 49%;
936 }
937 .entrie:nth-child(3n+1) {
938 margin-left: 1.5%;
939 }
940 .entrie:nth-child(2n+1) {
941 margin-left: 0;
942 }
943}
944
945@media screen and (max-width: 900px) {
946 #article {
947 width: 80%;
948 }
949 .topPosF {
950 right: 2.5em;
951 }
952}
953
954@media screen and (max-width: 700px) {
955 .entrie {
956 width: 100%;
957 margin-left: 0;
958 }
959 #display-mode {
960 display: none;
961 }
962}
963
964@media screen and (max-width: 500px) {
965 .entrie {
966 width: 100%;
967 margin-left: 0;
968 }
969 body > header {
970 background-color: #333;
971 position: fixed;
972 top: 0;
973 width: 100%;
974 height: 3em;
975 z-index: 11;
976 }
977 #links li:last-child {
978 position: static;
979 width: auto;
980 }
981 #links li:last-child a:before {
982 content: none;
983 }
984 .logo {
985 width: 1.25em;
986 height: 1.25em;
987 left: 0;
988 top: 0;
989 }
990 .login > header {
991 position: static;
992 }
993 .login form {
994 width: 100%;
995 position: static;
996 margin-left: 0;
997 }
998 .login .logo {
999 width: auto;
1000 height: auto;
1001 top: 0.5em;
1002 width: 75px;
1003 height: 75px;
1004 margin-left: -37.5px;
1005 }
1006 .desktopHide {
1007 display: block;
1008 position: fixed;
1009 z-index: 20;
1010 top: 0;
1011 right: 0;
1012 border:0;
1013 width: 2.5em;
1014 height: 2.5em;
1015 cursor: pointer;
1016 background-color: #999;
1017 font-size: 1.2em;
1018 }
1019 .desktopHide:hover, .desktopHide:focus {
1020 background-color: #FFF;
1021 }
1022 #links {
1023 display: none;
1024 width: 100%;
1025 height: auto;
1026 padding-top: 3em;
1027 }
1028 #links.menu--open {
1029 display: block;
1030 }
1031 footer {
1032 position: static;
1033 margin-right: 3em;
1034 }
1035 #main {
1036 margin-left: 1.5em;
1037 padding-right: 1.5em;
1038 position: static;
1039 margin-top: 3em;
1040 }
1041 #article_toolbar .topPosF {
1042 display: none;
1043 }
1044
1045 #article {
1046 width: 100%;
1047 }
1048
1049 #article h1 {
1050 font-size: 1.5em;
1051 }
1052 #article_toolbar a {
1053 padding: 0.3em 0.4em 0.2em;
1054 }
1055
1056 #display-mode {
1057 display: none;
1058 }
1059
1060 .popup-form, #bagit-form, #search-form {
1061 left: 0;
1062 width: 100%;
1063 border-left: none;
1064 }
1065
1066 .popup-form form,
1067 #bagit-form form,
1068 #search-form form {
1069 width: 100%;
1070 }
1071}
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/public/css/messages.css b/src/Wallabag/Wallabag/Resources/views/baggy/public/css/messages.css
deleted file mode 100755
index 42da70b3..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/public/css/messages.css
+++ /dev/null
@@ -1,19 +0,0 @@
1.messages.error.install {
2 border: 1px solid #c42608;
3 color: #c00 !important;
4 background: #fff0ef;
5 text-align: left;
6}
7
8.messages.notice.install {
9 border: 1px solid #ebcd41;
10 color: #000;
11 background: #fffcd3;
12 text-align: left;
13}
14
15.messages.success.install {
16 border: 1px solid #6dc70c;
17 background: #e0fbcc !important;
18 text-align: left;
19} \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/public/css/print.css b/src/Wallabag/Wallabag/Resources/views/baggy/public/css/print.css
deleted file mode 100755
index 9dd6d295..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/public/css/print.css
+++ /dev/null
@@ -1,62 +0,0 @@
1/* ### Layout ### */
2
3body {
4 font-family: Serif;
5 background-color: #fff;
6}
7
8@page {
9 margin: 1cm;
10}
11
12img {
13 max-width: 100% !important;
14}
15
16/* ### Content ### */
17
18/* Hide useless blocks */
19body > header,
20#article_toolbar,
21#links,
22#sort,
23body > footer,
24.top_link,
25div.tools,
26header div,
27.messages,
28.entrie + .results {
29 display: none !important;
30}
31
32article {
33 border: none !important;
34}
35
36/* Add URL after links */
37.vieworiginal a:after {
38 content: " (" attr(href) ")";
39}
40
41/* Add explanation after abbr */
42abbr[title]:after {
43 content: " (" attr(title) ")";
44}
45
46/* Change border on current pager item */
47.pagination span.current {
48 border-style: dashed;
49}
50
51#main {
52 width: 100%;
53 padding: 0;
54 margin: 0;
55 margin-left: 0;
56 padding-right: 0;
57 padding-bottom: 0;
58}
59
60#article {
61 width: 100%;
62}
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/public/css/ratatouille.css b/src/Wallabag/Wallabag/Resources/views/baggy/public/css/ratatouille.css
deleted file mode 100644
index b203cbb8..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/public/css/ratatouille.css
+++ /dev/null
@@ -1,211 +0,0 @@
1/*
2 Ratatouille mini Framework css by Thomas LEBEAU
3 Base on KNACSS => www.KNACSS.com (2013-10) @author: Raphael Goetter, Alsacreations
4 and normalize.css
5*/
6
7* {
8 -webkit-box-sizing: border-box;
9 -moz-box-sizing: border-box;
10 box-sizing: border-box;
11}
12
13html {
14 font-family: sans-serif; /* 1 */
15 -ms-text-size-adjust: 100%; /* 2 */
16 -webkit-text-size-adjust: 100%; /* 2 */
17}
18
19body {
20 font-size: 1em;
21 line-height:1.5;
22 margin: 0;
23}
24
25/* ==========================================================================
26 Mise en forme
27 ========================================================================== */
28
29h1:first-child,
30h2:first-child,
31h3:first-child,
32h4:first-child,
33h5:first-child,
34h6:first-child,
35p:first-child,
36ul:first-child,
37ol:first-child,
38dl:first-child{
39 margin-top: 0;
40}
41
42code,
43kbd,
44pre,
45samp {
46 font-family: monospace, serif;
47}
48
49pre {
50 white-space: pre-wrap;
51}
52
53
54.upper {
55 text-transform: uppercase;
56}
57
58.bold {
59 font-weight: bold;
60}
61
62.inner {
63 margin: 0 auto;
64 max-width: 61.25em;/*980px*/
65}
66
67table, img {
68 max-width: 100%;
69 height :auto;
70}
71
72iframe {
73 max-width: 100%;
74}
75
76.fl {
77 float: left;
78}
79
80.fr {
81 float: right;
82}
83
84table {
85 border-collapse: collapse;
86}
87
88figure {
89 margin: 0;
90}
91
92button,
93input,
94select,
95textarea {
96 font-family: inherit;
97 font-size: 100%;
98 margin: 0;
99}
100
101input[type="search"] {
102 -webkit-appearance: textfield;
103}
104
105/* ==========================================================================
106 Mise en page
107 ========================================================================== */
108
109.dib {
110 display: inline-block;
111 vertical-align: middle;
112}
113
114.dnone {
115 display: none;
116}
117
118.dtable { display:table }
119
120 .dtable > * { display:table-row; }
121
122 .dtable > * > * { display:table-cell; }
123
124.element-invisible {
125 border: 0;
126 clip: rect(0 0 0 0);
127 height: 1px;
128 margin: -1px;
129 overflow: hidden;
130 padding: 0;
131 position: absolute;
132 width: 1px;
133}
134
135.small {
136 font-size:0.8em;
137}
138
139.big {
140 font-size: 1.2em;
141}
142
143/*Width*/
144
145.w100 { width:100%; }
146.w90 { width:90%; }
147.w80 { width:80%; }
148.w70 { width:70%; }
149.w60 { width:60%; }
150.w50 { width:50%; }
151.w40 { width:40%; }
152.w30 { width:30%; }
153.w20 { width:20%; }
154.w10 { width:10%; }
155
156
157/* ==========================================================================
158 Internet Explorer
159 ========================================================================== */
160
161/*IE8 and IE9*/
162
163article,
164aside,
165details,
166figcaption,
167figure,
168footer,
169header,
170hgroup,
171main,
172nav,
173section,
174summary {
175 display: block;
176}
177
178/*IE8 and IE9*/
179
180audio,
181canvas,
182video {
183 display: inline-block;
184}
185
186@media screen and (-webkit-min-device-pixel-ratio:0){
187 select{
188 -webkit-appearance: none;
189 border-radius: 0;
190 }
191}
192
193/* ==========================================================================
194 Medias Queries
195 ========================================================================== */
196
197/*Desktop 1080px*/
198
199@media screen and (max-width: 67.50em) {
200}
201
202/*Tablet 800px*/
203
204@media screen and (max-width: 50em) {
205}
206
207/*Mobile 640px*/
208
209@media screen and (max-width: 40em) {
210}
211
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/public/fonts/icomoon.eot b/src/Wallabag/Wallabag/Resources/views/baggy/public/fonts/icomoon.eot
deleted file mode 100644
index 56323516..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/public/fonts/icomoon.eot
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/public/fonts/icomoon.svg b/src/Wallabag/Wallabag/Resources/views/baggy/public/fonts/icomoon.svg
deleted file mode 100644
index b4586136..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/public/fonts/icomoon.svg
+++ /dev/null
@@ -1,41 +0,0 @@
1<?xml version="1.0" standalone="no"?>
2<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3<svg xmlns="http://www.w3.org/2000/svg">
4<metadata>
5<json>
6{
7 "fontFamily": "icomoon",
8 "majorVersion": 1,
9 "minorVersion": 0,
10 "version": "Version 1.0",
11 "fontId": "icomoon",
12 "psName": "icomoon",
13 "subFamily": "Regular",
14 "fullName": "icomoon",
15 "description": "Generated by IcoMoon"
16}
17</json>
18</metadata>
19<defs>
20<font id="icomoon" horiz-adv-x="512">
21<font-face units-per-em="512" ascent="480" descent="-32" />
22<missing-glyph horiz-adv-x="512" />
23<glyph unicode="&#x20;" d="" horiz-adv-x="256" />
24<glyph unicode="&#xe600;" d="M256 389.333c-94.272 0-170.667-76.416-170.667-170.666s76.394-170.667 170.667-170.667 170.667 76.416 170.667 170.667-76.394 170.666-170.667 170.666zM335.082 169.749c8.341-8.341 8.341-21.824 0-30.166-4.16-4.16-9.622-6.25-15.082-6.25s-10.923 2.091-15.082 6.25l-48.918 48.918-48.917-48.918c-4.16-4.16-9.621-6.25-15.083-6.25s-10.923 2.091-15.083 6.25c-8.341 8.341-8.341 21.824 0 30.166l48.917 48.918-48.917 48.917c-8.341 8.341-8.341 21.824 0 30.166s21.824 8.341 30.166 0l48.917-48.917 48.918 48.917c8.341 8.341 21.824 8.341 30.166 0s8.341-21.824 0-30.166l-48.918-48.917 48.918-48.918z" />
25<glyph unicode="&#xe601;" d="M245.333 73.109c-37.035 0-71.85 14.421-98.048 40.598-26.176 26.197-40.618 61.014-40.618 98.070s14.442 71.872 40.618 98.070c8.341 8.341 21.824 8.341 30.166 0s8.341-21.824 0-30.166c-18.133-18.154-28.118-42.261-28.118-67.904s9.984-49.771 28.118-67.904c18.133-18.134 42.219-28.096 67.882-28.096s49.749 9.984 67.883 28.096c18.154 18.134 28.118 42.24 28.118 67.904s-9.984 49.771-28.118 67.904c-8.341 8.341-8.341 21.824 0 30.166s21.824 8.341 30.166 0c26.176-26.219 40.618-61.035 40.618-98.070s-14.442-71.872-40.618-98.070c-26.197-26.176-61.014-40.597-98.048-40.597zM245.333 234.667c-11.797 0-21.333 9.558-21.333 21.333v106.667c0 11.776 9.536 21.333 21.334 21.333s21.334-9.558 21.334-21.333v-106.667c0-11.776-9.536-21.333-21.334-21.333z" />
26<glyph unicode="&#xe602;" d="M256 401.664l-136.832-136.832c-16.662-16.661-16.662-43.67 0-60.331s43.669-16.661 60.331 0l33.834 33.835v-154.496c0-23.552 19.094-42.666 42.667-42.666 23.552 0 42.666 19.115 42.666 42.666v154.496l33.834-33.835c8.341-8.341 19.243-12.502 30.166-12.502s21.824 4.16 30.166 12.502c16.661 16.661 16.661 43.67 0 60.331l-136.832 136.832z" />
27<glyph unicode="&#xe800;" d="M0 25.856v263.168q0 91.648 43.52 142.336t132.608 50.688h280.576q-2.56-2.56-26.624-27.136t-51.2-51.712-55.808-55.808-48.64-47.616-21.504-18.944q-7.68 0-7.68 8.192v79.872h-24.576q-30.208 0-48.128-3.072t-32.256-13.312-19.968-29.184-6.144-49.152v-134.144zM34.304-34.048q2.56 2.56 27.136 27.136t51.2 51.712 55.808 56.32 48.64 47.616 20.992 18.432q7.68 0 7.68-8.192v-79.872h24.576q59.392 0 82.944 18.432t23.040 76.288v134.144l114.688 114.176v-263.168q0-91.648-43.008-142.336t-133.12-50.688h-280.576z" horiz-adv-x="491" />
28<glyph unicode="&#xe801;" d="M150.528 104.192q7.168 7.168 17.408 7.168t18.432-7.168q16.384-17.408 0-35.84l-21.504-20.48q-28.672-28.672-67.584-28.672-39.936 0-68.608 28.672t-28.672 67.584q0 39.936 28.672 68.608l75.776 75.776q35.84 34.816 73.728 39.424t65.536-22.016q8.192-8.192 8.192-18.432t-8.192-18.432q-18.432-16.384-35.84 0-25.6 24.576-67.584-17.408l-75.776-74.752q-13.312-13.312-13.312-32.768t13.312-31.744q13.312-13.312 32.256-13.312t32.256 13.312zM380.928 398.080q28.672-28.672 28.672-67.584 0-39.936-28.672-68.608l-80.896-80.896q-37.888-36.864-76.8-36.864-31.744 0-57.344 25.6-7.168 7.168-7.168 17.408t7.168 18.432q7.168 7.168 17.92 7.168t17.92-7.168q25.6-24.576 62.464 12.288l80.896 79.872q14.336 14.336 14.336 32.768 0 19.456-14.336 31.744-12.288 13.312-28.672 15.872t-30.72-10.752l-25.6-25.6q-8.192-7.168-18.432-7.168t-17.408 7.168q-17.408 17.408 0 35.84l25.6 25.6q27.648 27.648 65.024 26.112t66.048-31.232z" horiz-adv-x="410" />
29<glyph unicode="&#xe802;" d="M438.784 96v-36.352q0-7.68-5.12-12.8t-13.312-5.632h-401.92q-7.68 0-12.8 5.632t-5.632 12.8v36.352q0 7.68 5.632 12.8t12.8 5.632h401.92q7.68 0 13.312-5.632t5.12-12.8zM438.784 242.432v-36.864q0-7.168-5.12-12.8t-13.312-5.12h-401.92q-7.68 0-12.8 5.12t-5.632 12.8v36.864q0 7.168 5.632 12.8t12.8 5.12h401.92q7.68 0 13.312-5.12t5.12-12.8zM438.784 388.352v-36.352q0-7.68-5.12-12.8t-13.312-5.632h-401.92q-7.68 0-12.8 5.632t-5.632 12.8v36.352q0 7.68 5.632 13.312t12.8 5.12h401.92q7.68 0 13.312-5.12t5.12-13.312z" horiz-adv-x="439" />
30<glyph unicode="&#xe803;" d="M235.52 459.52q97.28 0 166.4-69.12t69.12-166.4-69.12-166.4-166.4-69.12-166.4 69.12-69.12 166.4 69.12 166.4 166.4 69.12zM235.52 39.68q76.8 0 130.56 54.272t53.76 130.048q0 76.8-53.76 130.56t-130.56 53.76q-75.776 0-130.048-53.76t-54.272-130.56q0-75.776 54.272-130.048t130.048-54.272zM253.952 357.12v-124.928l76.8-76.8-25.6-25.6-87.040 87.040v140.288h35.84z" horiz-adv-x="471" />
31<glyph unicode="&#xe804;" d="M127.488 44.8q-17.408 0-28.672 14.336l-92.16 120.832q-8.192 12.288-6.144 26.624t13.312 23.552 26.112 7.168 24.064-14.336l60.416-78.848 151.552 242.688q8.192 12.288 22.016 15.36t27.136-4.096q12.288-8.192 15.36-22.016t-4.096-27.136l-179.2-286.72q-10.24-16.384-28.672-16.384z" horiz-adv-x="342" />
32<glyph unicode="&#xe805;" d="M225.28 449.28l61.44-172.032h163.84l-134.144-100.352 48.128-178.176-139.264 106.496-139.264-106.496 48.128 178.176-134.144 100.352h163.84z" horiz-adv-x="451" />
33<glyph unicode="&#xe806;" d="M460.8 49.92q-44.032 77.824-106.496 100.864t-168.96 23.040v-111.616l-185.344 171.008 185.344 164.864v-98.304q46.080 0 86.016-13.824t67.072-35.84 49.152-48.64 35.328-53.248 22.528-48.64 12.288-35.328z" horiz-adv-x="461" />
34<glyph unicode="&#xe807;" d="M471.040 370.432q-18.432-27.648-48.128-50.176v-12.288q0-66.56-30.72-128t-95.232-103.936-148.48-42.496q-81.92 0-148.48 43.008 7.168-1.024 23.552-1.024 67.584 0 119.808 40.96-31.744 1.024-56.32 19.456t-33.792 48.128q5.12-2.048 17.408-2.048 13.312 0 25.6 3.072-33.792 7.168-55.296 33.792t-21.504 61.44v1.024q18.432-10.24 43.008-12.288-43.008 29.696-43.008 80.896 0 24.576 13.312 48.128 78.848-96.256 199.68-100.352-3.072 9.216-3.072 21.504 0 39.936 28.16 68.096t69.12 28.16q41.984 0 69.632-29.696 30.72 6.144 61.44 22.528-10.24-33.792-41.984-53.248 28.672 4.096 55.296 15.36z" horiz-adv-x="471" />
35<glyph unicode="&#xe808;" d="M109.568 96q0-23.040-15.872-38.912t-38.912-15.872-38.912 15.872-15.872 38.912 15.872 38.912 38.912 15.872 38.912-15.872 15.872-38.912zM256 60.672q0.512-7.68-4.608-13.312-5.632-6.144-13.824-6.144h-38.4q-7.168 0-12.288 4.608t-5.632 11.776q-6.144 65.536-52.736 112.128t-112.128 52.736q-7.168 0.512-11.776 5.632t-4.608 12.288v38.4q0 8.192 6.144 13.312 4.608 5.12 12.288 5.12h1.536q45.568-3.584 87.040-23.040t74.24-51.712q32.256-32.256 51.712-74.24t23.040-87.552zM402.432 60.16q0.512-7.68-5.12-13.312-5.12-5.632-13.312-5.632h-40.96q-7.168 0-12.8 5.12t-5.632 11.776q-3.072 61.44-28.672 116.736t-66.048 96.256-96.256 66.048-116.224 29.184q-7.168 0-12.288 5.632t-5.12 12.288v40.96q0 7.68 5.632 13.312 5.12 5.12 12.8 5.12h0.512q75.264-4.096 143.36-34.304t121.856-83.968q53.248-53.248 83.968-121.856t34.304-143.36z" horiz-adv-x="402" />
36<glyph unicode="&#xe809;" d="M0 314.112l75.776 75.776 180.224-179.712 180.224 179.712 75.776-75.776-256-256-75.776 75.776z" />
37<glyph unicode="&#xe80a;" d="M475.648 50.432v219.136q-9.216-10.24-19.968-18.944-76.288-58.368-121.856-96.256-14.336-12.288-23.552-19.456t-24.576-13.824-29.184-6.656h-1.024q-13.312 0-29.184 6.656t-24.576 13.824-23.552 19.456q-45.056 37.888-121.856 96.256-10.752 8.704-19.968 18.944v-219.136q0-4.096 3.072-6.656t6.144-2.56h420.864q3.584 0 6.144 2.56t3.072 6.656zM475.648 350.464v7.168t-0.512 3.584-0.512 3.584-1.536 2.56-2.56 2.048-4.096 1.024h-420.864q-3.584 0-6.144-3.072t-3.072-6.144q0-48.128 41.984-81.408 55.296-43.52 114.688-90.624 2.048-1.024 10.24-8.192t12.8-10.752 12.8-9.216 14.336-7.68 12.288-2.56h1.024q5.632 0 12.288 2.56t14.336 7.68 12.8 9.216 12.8 10.752 10.24 8.192q59.392 47.104 114.688 90.624 15.36 12.288 28.672 33.28t13.312 37.376zM512 361.216v-310.784q0-18.944-13.312-32.256t-32.256-13.824h-420.864q-18.432 0-32.256 13.824t-13.312 32.256v310.784q0 18.944 13.312 32.256t32.256 13.312h420.864q18.944 0 32.256-13.312t13.312-32.256z" />
38<glyph unicode="&#xe80b;" d="M0 133.888l256 256 256-256-75.776-75.776-180.224 179.712-180.224-179.712z" />
39<glyph unicode="&#xe80c;" d="M25.6 279.296q62.464-35.84 168.96-35.84t168.96 35.84l-27.648-248.832q-1.024-7.168-17.92-18.432t-51.2-22.016-72.192-10.752-71.68 10.752-51.2 22.016-18.432 18.432zM275.456 432.896q48.128-9.216 80.896-28.16t32.768-36.352v-5.12q0-29.696-57.344-50.688t-137.216-20.992-137.216 20.992-57.344 50.688v5.12q0 17.408 32.768 36.352t80.896 28.16l21.504 24.576q11.264 13.312 35.84 13.312h47.104q26.624 0 35.84-13.312zM247.808 375.552h43.008q-47.104 56.32-53.248 64.512-7.168 8.192-16.384 8.192h-52.224q-11.264 0-16.384-8.192l-54.272-64.512h43.008l32.768 33.792h41.984z" horiz-adv-x="389" />
40<glyph unicode="&#xe80d;" d="M128 448h256v-64h-256zM480 352h-448c-17.6 0-32-14.4-32-32v-160c0-17.6 14.398-32 32-32h96v-128h256v128h96c17.6 0 32 14.4 32 32v160c0 17.6-14.4 32-32 32zM352 32h-192v160h192v-160zM487.2 304c0-12.813-10.387-23.2-23.199-23.2-12.813 0-23.201 10.387-23.201 23.2s10.388 23.2 23.201 23.2c12.813 0 23.199-10.387 23.199-23.2z" />
41</font></defs></svg> \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/public/fonts/icomoon.ttf b/src/Wallabag/Wallabag/Resources/views/baggy/public/fonts/icomoon.ttf
deleted file mode 100644
index bb1f21f8..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/public/fonts/icomoon.ttf
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/public/fonts/icomoon.woff b/src/Wallabag/Wallabag/Resources/views/baggy/public/fonts/icomoon.woff
deleted file mode 100644
index bab13779..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/public/fonts/icomoon.woff
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/public/fonts/ptsans.woff b/src/Wallabag/Wallabag/Resources/views/baggy/public/fonts/ptsans.woff
deleted file mode 100644
index cf7c62e1..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/public/fonts/ptsans.woff
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/public/img/baggy/blank.png b/src/Wallabag/Wallabag/Resources/views/baggy/public/img/baggy/blank.png
deleted file mode 100755
index 63e09844..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/public/img/baggy/blank.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/public/img/baggy/down.png b/src/Wallabag/Wallabag/Resources/views/baggy/public/img/baggy/down.png
deleted file mode 100644
index b9d536a7..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/public/img/baggy/down.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/public/img/baggy/list.png b/src/Wallabag/Wallabag/Resources/views/baggy/public/img/baggy/list.png
deleted file mode 100755
index bd5aff5a..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/public/img/baggy/list.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/public/img/baggy/table.png b/src/Wallabag/Wallabag/Resources/views/baggy/public/img/baggy/table.png
deleted file mode 100755
index 859c4cd8..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/public/img/baggy/table.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/public/img/baggy/top.png b/src/Wallabag/Wallabag/Resources/views/baggy/public/img/baggy/top.png
deleted file mode 100644
index 954a8c0a..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/public/img/baggy/top.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/public/img/bg-select.png b/src/Wallabag/Wallabag/Resources/views/baggy/public/img/bg-select.png
deleted file mode 100644
index 95120441..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/public/img/bg-select.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/public/img/logo-other_themes.png b/src/Wallabag/Wallabag/Resources/views/baggy/public/img/logo-other_themes.png
deleted file mode 100755
index 32543a44..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/public/img/logo-other_themes.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/public/img/logo-w.png b/src/Wallabag/Wallabag/Resources/views/baggy/public/img/logo-w.png
deleted file mode 100755
index 65dc607b..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/public/img/logo-w.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/public/img/logo-wallabag.svg b/src/Wallabag/Wallabag/Resources/views/baggy/public/img/logo-wallabag.svg
deleted file mode 100644
index 40193e1c..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/public/img/logo-wallabag.svg
+++ /dev/null
@@ -1,300 +0,0 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In -->
3<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
4 <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
5]>
6<svg version="1.1"
7 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
8 x="0px" y="0px" width="800px" height="800px" viewBox="0 0 800 800" overflow="visible" enable-background="new 0 0 800 800"
9 xml:space="preserve">
10<defs>
11</defs>
12<image overflow="visible" width="800" height="800" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAMgCAYAAADbcAZoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ
13bWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp
14bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6
15eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEz
16NDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo
17dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw
18dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv
19IiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RS
20ZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpD
21cmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNl
22SUQ9InhtcC5paWQ6MkMyNzEzMDQ4QTgzMTFFM0JGNkJCRDhDMjI5OTRBNkIiIHhtcE1NOkRvY3Vt
23ZW50SUQ9InhtcC5kaWQ6MkMyNzEzMDU4QTgzMTFFM0JGNkJCRDhDMjI5OTRBNkIiPiA8eG1wTU06
24RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyQzI3MTMwMjhBODMxMUUzQkY2
25QkJEOEMyMjk5NEE2QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyQzI3MTMwMzhBODMxMUUz
26QkY2QkJEOEMyMjk5NEE2QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1w
27bWV0YT4gPD94cGFja2V0IGVuZD0iciI/PtTNJDcAADxbSURBVHja7N37ddPK2gfgybf2/9ungm0q
28IFSAqYBQAaYCQgWECgIVJFRAqABTAaYCvCvY2RXk85yMDibkYsu6zEjPs5ZWuCSxNZKl96eZkQ6u
29rq4CAABAF/5PEwAAAAIIAAAggAAAAAggAACAAAIAACCAAAAAAggAACCAAAAACCAAAIAAAgAAIIAA
30AAACCAAAIIAAAAAIIAAAgAACAAAggAAAAAIIAAAggAAAAAggAACAAAIAACCAAAAAAggAACCAAAAA
31CCAAAIAAAgAAIIAAAAACCAAAIIAAAAAIIAAAgAACAAAggAAAAAIIAACAAAIAAAggAACAAAIAACCA
32AAAAAggAAIAAAgAACCAAAIAAAgAAIIAAAAACCAAAgAACAAAIIAAAgAACAAAggAAAAAIIAACAAAIA
33AAggAACAAAIAACCAAAAAAggAAIAAAgAACCAAAIAAAgAAIIAAAAACCAAAgAACAAAIIAAAAAIIAAAg
34gAAAAAIIAACAAAIAAAggAAAAAggAACCAAAAAAggAAIAAAgAACCAAAAACCAAAIIAAAAACCAAAgAAC
35AAAIIAAAAAIIAAAggAAAAAIIAACAAAIAAAggAAAAAggAACCAAAAAAggAAIAAAgAACCAAAAACCAAA
36IIAAAAACiCYAAAAEEAAAYHD+0ATAWB0cHMQvk/VynP5pkRbY13S9zNfLn+vl63q5uO2brq6utBQw
37vvOvgx8w8gDyab0cbfxzDCCv1stKC1FTDLRvU7itvLgthDgHAwIIwPgCyJf1Mrvlv5cpjNx59Ro2
38HK6Xl+G612Nyy//HQPtIAAEQQAAB5K4AsukyhZDPwggbpuG69+x1+vNDHoUbPWvOwcAYmYQOjN3l
39Ft8Tr2jPw/VwrX/Wy1m4vuLN+FRzhr6tlx/r5XTL8BF2+D4AAQRgwL7XKEDnqQD9lv7M8G0G0FMB
40FEAAAahrscfPxiI09obEK+En4fax/5RrmsJG1et1pEkA9mcOCDDeA+D1HJCoqQNhHM71Yb28D9sN
417SJP83A9oXzW8O99djPwOgcDY6QHBKC5ieWxByTefjX2iBxr1qJUQ+vitjtrIXwAIIAA/M/XForZ
4201TMKmTzDx4nG8Fj2uJr6RUDCIZgAWM+AP4cgjVNBWhbYg/Lm+DhhrmZp6DY1dydg5v/4BwMjJEe
43EIDrYNBmOIiTl+MdswzLysMs/OzxmHS4jwEggAD8T9sPGKyGZcUHH041dy8mKXT0sQ0EEAABBOAX
44nzt6nVm47g1xS9duxXaPvR7znl7/q00AIIAAbFqE7iYJxyvx8aF2p5q9Eyfhutejz+e0LG0GAAEE
454LYQ0qU4J+Rb8ADDNoNeHHL1doT7FoAAAlCAzz28Znya+o/0lWbDR+z1mGfwXmLvh1vwAgggAL9Z
469Fgsf8ukWB5S+Dgc+X4FIIAAZG4V+r1b0ZkQsrfDFOZy6lEyAR1AAAG406Ln1z9LC7urJvdP7VMA
47AghAKb5n8B7mQkit8JHjM1bM/wAQQAAeLBhzIITsHj5ynMi/sHkABBCAUgpGIWQ7ZyHfu4iZ/wEg
48gAA8aCWEFCM+zDHnp8ovbCIAAQSgpABShRBPTb+9XY4zfn/mfwAIIABbF465OQ5u0bvpsIBQtrCZ
49AAQQgG38m+n7ikOxjmye/046P0tfc2b+B4AAArCVnIfN5DzhuiunhbTBwkcJQAAB2MYy4/dWPWxv
50MtJtE3uA5oXsQ+Z/AAggAIMwTSFkjOtdyh3BlnZTAAEEYEhmYXx3xiph3kfF/A8AAQRgcOKdscYy
51KX2eQlcp9IAA3OHg6upKKwDjPAAeHNz1X7HQ/VLIasR5Bk9Cfs8uaVLs9fgRypr3crDNNzkHA2Ok
52BwSg/OJ86E9KPy0sfOj9ABBAAHZS2m1uZ+vlZKDbIq7bvLD3vPIRAhBAAHZR4i1u34ZhPh+kxIn2
53332EAAQQgDEY2lCs40JDled/AAggADv5s9D3HYv1k4Fsg9gL9bbQ924OCIAAArBzIV+qWLRPB7AN
54jsN4n/YOIIAAUJTSh2JNQ7m9H9HCLggggACMySyU/YDCtzYhgAACQFlKe3ZGZRrKu+3uppVdD0AA
55ARijWMgfF/i+S+/9EEAABBCA0XodypqQHt/r3GYDEEAAKFNpt7IdwtwPt+AFEEAARm0eyugFmYZh
569H78a5cDEEAAdvV1YOtTwm153fkKQAABYCBmaclVHCo2H0hbr+xuAAIIwK4uB7hOOfcwHA+onQUQ
57AAEEYGdDnEg8C/n2gry2ywEIIABjdjnQ9cqx0J+HMh+YOKbwCtCog6urK60AjPMAeHBw338P9eD4
58KOQ1TOjbejkc0m61yzc7BwNjpAcE4Harga5XTnNBZgMLHwsfGwABBKCuoQ6lmYd8ngvycmBte+lj
59AyCAANT1fcDrNs/gPQzp1rtj2GcABBCAli0GvG45TEaf22cAxskkdGC8B8CDB+cLD/kA+Wq9nPf4
60+j9CPkPBmvKfsOMwLOdgYIz0gADc7WLA69bn/IvDAYaPVTAHBEAAAdjT1wGv26zHEDDEBw8ufFwA
61BBCAfV0MfP36CgJHA2zLzz4uANsxBwQY7wHwYKtnxg3tQXmb4pCh//QQPj4NsC13nv8ROQcDY6QH
62BOB+Hwa8bpPQfW/EywG240Uw/wNAAAFQXG7l+cADTxcMvwIQQAAacxmGPRdknoJBF47sHwAIIAAP
63ezfw9Tvu6HWeD7DtDL8C2JFJ6MB4D4DbTUKvnIVhPr07pAL6UcuFdOxl+WeAbRfbbVX3h52DgTHS
64AwKwnSH3gkxSwGrT8QDbbbFP+AAQQAC4Tyw0zwe8fnF+xryl3x1vY/xWKAVAAAHYzZsw7PH+bQwz
65i+FjiM/9iGF04SMBIIAAtCmGj6Ff9Y4h5DQ0c2esGGa+rJep/QCAiknowHgPgLtNQt8Ui+rZCJoo
663uHp+3r565YQUT0dfnnj35cpvMwGGDwqsSfsfRO/yDkYEEAABJBtxAL7R+ju+RnkY7FenjX1y5yD
67gTEyBAtgd3EIzivNMMrt/kIzAAggAH2Iw5PMAxiXZ8FDBwEEEIAenYRh35qXn2KP11IzAOzPHBBg
68vAfA+nNAboq3mT3SooMOH60ETedgQAABEEDqiJPR452xDrWq8CGAANzPECyA/cV5Ac+C4Vi2KQAP
690gMCjPcA2FwPyKY2niZOt+Jcj3i3q1XbL+QcDIyRHhCAZsUhO280Q7Hinc2edBE+AMZKDwgw3gNg
70Oz0glVm4npzuYYVlWKTg2OmdrpyDgTHSAwLQXkH7KH0l7+30LC1uswsggAAUrZrI/CZ4gF1uzjeC
71h5AI0CFDsIDxHgDbHYJ1UxyKdRpMUO9T7OH4mMJHFoHQORgQQAAEkLbN1svb9JV2xZBxsV6+pq/Z
729UI5BwNjZAgWQLcW4XrYTye3eeW/4eM8GAIHIIAAjFy8Ih8nqb8SRFoTh72dpQWATBiCBYz3ANjP
73EKy7xPkhx7ZKa+L8j9jzlFVPiHMwMEZ6QAD6Nwsmp7ftcL38SF8BEEAARisGjy/BAwu7MEltLewB
74CCAAo2R+Qj8hJLb5iaYA6Ic5IMB4D4D9zgGJRfDcVujVebi+CUBvnIOBMfpDEwB0qhoGZC5C/6oA
756En1AB3SAwKM9wDYfQ+I8JGn3u6Q5RwMjJE5IADCx9gdBjcCABBAAIQPhBAAAQQA4UMIAUAAARA+
76EEIABBAA4QMhBAABBED4QAgB6J7b8ALjPQC2cxte4WNY4i16n7T1y52DgTHSAwLQrE/Cx6DEbXmm
77GQAEEIAcxUJ1phkGZy6EAAggALk5TYUqww0hx5oBYH/mgADjPQA2NwckFqeukI/Dq/Vy3tQvcw4G
78BBAAAWRXR+F63gfjESelLwUQAAEEoOsA4lat43SZQshKAAHYnTkgAPXE0PFJ+LDtARBAALoQC9Cp
79Zhgtt+cFEEAAOhPveDXTDKMX5/+caAaA3ZgDAoz3AFhvDsg8uPLNr16sl4s6P+gcDAggAALIfUw6
805za1J6U7BwNjZAgWwHZi6DgTPrhj33ArZgABBKBRMXwcagbuYFI6gAAC0JjjcD3hGO4zTwsA9zAH
81BBjvAXC7OSDxyvY3rcWWdpoP4hwMjJEeEIC7VfM+YJd9xnwQAAEEoJb4vA/zPthV3GdONAPA7QzB
82AsZ7ALx/CFac8+FKNvt4tl4W932DczAggAAIIFEcRvMjuOUu+1mF6/kglwIIwE+GYAH87pPwQQOm
83wRwigN/oAQHGewC8vQck3nL3tIWXW4Wfd0Zarpd/d/jZv1IxWxW1U1uvKC/Wy8Vt/+EcDAggAOMO
84ILGwj7fcrdv7UYWMrxt/jmHjsoW3H9/j4cbXKqTMbNnsxO3/6Lb9wDkYEEAAxh1AvuxYwMdwsUiB
85Y9FS0KhjmkJJXJ4KJVmIPSAvBBAAAQQQQCrbDL1apaDxObPAsY3DFESqQGKOS/d+G4rlHAwIIADj
86DCDTcPfQq1UqGj+G6x6PoagCyfOgh6Qrvw3Fcg4GBBCAcQaQeNeroxv/XYWOixE0xSSt/9P0Ve9I
87e87XyysBBBBAAMYbQDYfOBivTH9IReJqxE0T2+S5MNKa/z2g0DkYEEAAxhVAqgcOhhQ83oey5nV0
88Yb4RRmhGDLePBBBAAAEYXwCJk87/FTy2Mklh5HXwHJImvFsvJ87BgAACMK4AMhE8apmtl5cpkFDf
89o/U5eKUZgLH5P00AjJjwUc8iXE+k/s96eRPGPV+m7n73zv4HjJUeEGC8B8DfH0RIffG2vnF4lonr
909ztP4eO/oc05GBBAAAQQ9hdDyMtg4nol9nRcbAaPinMwIIAACCA0p3q+SPWww7H1jMSwUd3W+dbh
91Vs7BgAACIIDQns2HHU4Huo5Vb0d8iOXioW92DgYEEAABhG5MNwLJLJTdO7JKYeNzCh9bcw4GBBAA
92AYR+HKbl6cafc3WZAsfX9HVZ9xc5BwMCCIAAQj5mKYj8tRFKuu4puUwBIy7fN/7cCOdgQAABEEAo
93I5hsfn28EUymYbf5JYuNP39NX5cbwaPVZ3U4BwMCCIAAAp1xDgbGyJPQAQAAAQQAABBAAAAABBAA
94AEAAAQAAEEAAAAABBAAAEEAAAAAEEAAAQAABAAAQQAAAAAEEAAAQQAAAAAQQAABAAAEAABBAAAAA
95AQQAABBAAAAABBAAAEAAAQAAEEAAAAABBAAAEEAAAAAEEAAAQAABAADYyR+aAKC2yXo5XC+z9Pen
96G/+3XC//rpdF+vPlANb3MC3TW9b17411LX2bztJ6/pm+Vr6mr0PapgCdO7i6utIKwDgPgAcHdX90
97vl6er5ejHX7mYr18SMVrSaZpfV+mPz9kldbzvLACPYaO1zW26cf0tRbnYEAAARBAHipST8OvV8V3
98FQPIiwKK8xg23qbwUcdlCiInma9n7PE42zF43BR7Q16FGr0/zsGAAAIggNzlOIWPJsTi/FnId7jS
99cQofkwZ+V+3ivAMxSH5paD1DWs9zAQRAAAHYN4DEK+Tzhl8+xxDSRG9AKevadPioFUKcgwEBBEAA
100uanJno/bCvMn4XreRA6+hf2Gl5USQmLo+NFC+Ng5hDgHAwIIgACy6TAV5W1apMK8b6cpbLVpmQJX
10132LPx6zF3791sHQOBsbIc0AA7i/K2zZruRje9j0cd/A6MdDNM1jXtts79qy89fEBEEAAdi2WuwoG
102r3te1y5f//lI1nUe2hviBVA0Q7CA8R4A7x+CdRK6vYp90GNTdH0iGMu6PjgXxDkYGCM9IAC3e9rx
1036816Ws/pSF4zOhzJegIIIABka0wBpOshUY/tXgACCAAMNfAACCAAAAACCAAAIIAAAAACCAAAgAAC
104AAAIIAAAAAIIAAAggAAAAAIIAACAAAIAAAggAAAAAggAACCAAAAAAggAAIAAAgAACCAAAAACCAAA
105IIAAAAACCAAAgAACAAAIIAAAAAIIAAAggAAAAAggAACAAAIAAAggAAAAAggAACCAAAAACCAAAIAA
106AgAACCAAAAACCAAAIIAAAAAIIAAAgAACAAAIIAAAAAIIAAAggAAAAAggAACAAAIAAAggAAAAAggA
107ACCAAAAACCAAAIAAAgAACCAAAAACCAAAIIAAAAAIIAAAgAACAAAIIAAAAAIIAAAggAAAAAggAJCT
108pSYAEEAAoCv/agIAAQQgVzNN0LqpJgAQQAAQBAQQAAEEYPRWHb/enz2t50wQAEAAAejf3x2/3uGI
1092ravsPV04CEWQAABYGvTkRTlfYatrttYAAEQQACyLR5jcTwZSfDpI4BMgqFfAAIIgADyi1kP4aOP
110oryPMDDrYT09BwRAAAHY2mUPr9n1cKhZj+17NPC27WsfAhBAAArVx9Xrrovy5z2279OBt+3KRwhA
111AAHIvYichu56JSY9FOU3A8F0gK8lgAAIIABFFZFvO3qd4wzad97R67zuYd2++vgACCAAu+pjGNYs
112tN8LMumpKL8tGExbfo2j0M9cl5WPD4AAArCr7z297llo95a8bf/+XYLQWcG/XwABEEAAGtXXbVSn
1136+VLSyEhFuRHGbXxrKWQMGmxDbex8PEBEEAASgkg0WEqoKcNFuSx0J9n2M7z0GyvTNV2hyPcbwAE
114EIDCLXoOId/Wy8mexfk8/Z55xu3cxHucpiDzrcfw0fc+A5C9g6urK60AjPMAeHCwzbfF4v9tJm/5
115IlzfXWn5QJF7mIrx+JyPo5DHfI9dXN5Y1/t6FGZpfZ+GfIaWvUjv/0HOwYAAAiCA3FbMf8u8WF+m
116kHE48E22Ssth5qHqP2HLp6A7BwMCCIAAcpt/Qnm9CPRjsV6ebfvNzsHAGJkDAvCwC03Alj5rAoD7
1176QEBxnsA3L4HZBau76oED9l6+FXkHAyMkR4QgIctggfL8bCLXcIHgAACwH0+aALsIwD7MwQLGO8B
118cPshWFGchP4jmIzO7Vbr5dGuP+QcDIyRHhCA7cShNa5wc5d3mgBgO3pAgPEeAHfrAYn0gnCbVajR
119+xE5BwNjpAcEYHuxF8SVbm56pQkAtqcHBBjvAXD3HpBKfDL6oRYkXN/56kXdH3YOBgQQAAFkG4cp
120hDBusUfsUdjj1rvOwcAYGYIFsLtlMBTrMnjmxSttALA7PSDAeA+A9XtAKvHp6LORNt+T9TJdL59G
121uv7v18ubfX+JczAwRnpAAOqLY/+XI1zvV2m9L5oowgu0GOl6AzRCDwgw3gPg/j0gUZwPEntCxnJr
1223hg+zm/829l6mY9k/WPwehYaGnrlHAwIIIy9kAKEkF3Dx5hCSKPhA/qi9qNvhmABNFOYPgnDHo51
123X/jY5v+FDwAEEIAGrVKBejGw9YoF94stw0UMIUOcG3GeAqbwASCAAGRZrA+lCF/WCFXvw3B6Ci5T
124qPKkcwABBCBrsQiPV8wXA1iHOsPK4no/CmX3Bi3S+p/bnQEEEKBshyNZz6r3IF49XxVYeO/bi1P1
125Br0IZfWGrNJ7flbYdvOZBAQQgDschfHcsjY6D9e9AbkHkVV6j89Cs5PpL9L6v8s8iFTrX3rPza6m
1266TMJ0Bm34R3KhnQbXsoKIE/DeB/kNl8vL0M+T1BfrJePoZuhRpO0/q9T4ZuDi7T+FyPdH+OT7D+E
127socLsiO1HwIIAghjE4vQf8L1lfYxFz3TjTDW9RXo5UbRvepp/Q9TEDvqIYzE9f6cvo75zlYxDMbn
128tziBCCAggCCAMHjfUtHZ9HCfks1SUf44fW1qXP5lauOv6esiw6J7mta/WvdZw2ErLt831p+fD8+s
1295iohgIAAggDCoJ2ul+NwffXd8xXuNtkIIodhu7kzlxuhbjHidV/arx4MH7FN41DI95pEAAEBBAGE
130oZulAqgqGvWEQPfhI4T6t1pGAAEBRAARQCjOPxtFUHXL1oVmgdbE+TZnG5+7Vbi+6xcCCHTKbXiB
131vmyGjVgQxauyJ5oFWhGHPX4Kvw5lE/gBAQQYlc+3/NvbFESmmgcaEYdcxZs+HG/5GQRonSFYQ9mQ
132hmBRnup2vHeJD6470UxQ+/N1nEL9beKwx/9opnFS+9E3PSBAX2IBdN/D32Lh9CNcP6sA2F78zHy7
133J3yEMN4HLwICCDByDw0BmYbrSbNxWNZMc8GDweNH+sxM9/zsAbTGEKyhbEhDsCjTQ8Owblqslw/B
1341Vu4GTzehu3nThl+NXJqP/qmBwToUyyEznf4/lm4vpNPNTRrogkZcXg/Dtv3eGwS4IFe6QEZyobU
135A0K5Yqj4smeAib0iK03JCMS7Wr0O18/0qBvAPXxw5NR+CCAIIHB9FXe65+9Yhp/Dsy41KQMSg8Z8
136vbxMAWTfz8kTTSqAQJ8MwQJy8LGB3xELszgUJc4p+RTcPYthhI5PaZ8+bSB8hBTSAXqlB2QoG1IP
137COUXW/+09Ltjj8jnoGeEMj4HcWjV8/S1aXH/f+RzgNoPAQQBBK7F3ot5y6+x2AgjK01OBmKvxiw0
138M7zqIefr5ZUmR+2HAIIAAtfiHX1OO3y91UYgiV9dFaYLVS/H0xQ8ph2+9iPBGwEEAQQBBH6KxdiX
139Hl9/mYLIV4GEBsWAcbgROA57eh/nQe8HAggCCAII/KLNeSB1rDYCyTK4bSnbqYZUPQ7d93Dc51na
140n0EAQQBBAIHN82Lm72+Rgsh3oYQUNg5T2KiCR6777TObCwEEAQQBBH73JeMi7r7ibnUjlBi+NSyT
141G2FjWth+qvcDAYSs/KEJAPZyWyF6uRFG/g0/55ToMcnbYQobcZv+FX7O35gUvE4L4QPIjR6QoWxI
142PSAMw8l6eTvwdVylpQony41wouekXZONQBG//pm+TkM+czWapveD36j96JseEIBuVcXu7I7/r4JI
143DCl/p39b3Agv/G6zp6Jq28fp34YcMO5zIXwAOdIDMpQNqQeEYYiF4xfNsJXNMLIZVjZDzF1/LyGg
144VareinAjVIQRB4ttee4Ht1L70Tc9IABl2rf43mZOytc93+PTB/6/9PkVOXsvfAC50gMylA2pB4Rh
145iAXpN80Ae4nh8lEwp4g7qP3o2/9pAiAj7hIF+3sjfAA50wMylA2pB4ThcFCC+hbBQwd56CCr9kMA
146QQABAQQa8iToSUQAIXOGYAG5UTxBPe98fgABBGB3xq5DveB+ohkAAQQA6MIrTQAIIABAFwy9AgQQ
147AKATi2DoFSCAAAAdiPOlDL0CBBAAoBMxfKw0AyCAAABte79eLjQDIIAAAG1brJc3mgEQQACAtsW7
148Xb3QDIAAAgC0rZp07mGdgAACALQu9nx43gcggAAArYs9HwvNAAggAM2bagL4RZxwfq4ZgKE4uLq6
1490gpD2JAHBxqBoXBQgp9i8PCwQZo9yKr96JkeEAAQPgAEEAAQPgAEEIA2zTQBCB+AAAIACB8AAggw
150OFNNgPABIIAACCDQrvfCBzAWf2gCICN/aQJGKAaPc80AjIUeECAnU03AiFwKH8AYeRDhUDakBxEy
151DP+sl4lmYCTh49l6WWoKuqb2QwBBAIGN86ImYASWKXxcagoEEMbIECwgFzNNwAicr5cnwgcggAD0
15271ATMGDVfA93ugJGz12wgFy4AxZDtUzBw3wPgKAHBMiHHhCG6DyYbA7wC5PQh7IhTUKnfA5GDEk1
1535OpCU5DdwVbtR88MwQJyMNMEDMhivbwIJpoD3MoQLCAHhl8xBFWvh1vsAtxDDwiQg6eagMJdpPAh
154eAA8wByQoWxIc0AomyegU6pVCh4LTUEp1H70zRAsoG+HwgcFij0d79bLI+EDYDeGYAF9Oyq4AI23
155Vp2mhfE4Xy9vguFWALXoAQH69rzA9xyDR7zy/Wzj68KmHLy43Z8Ecz0ABBCgWNNQ5h2wPtwoQBcp
156hLj16nCdBw8UBBBAgOLNCn3fqzv+Pd4J6YkidZDhQ68HgAACDMDzQt/35QPh5EkqWhlO+ACgIW7D
157O5QN6Ta8lGe6Xn6U+pHb8vvO1svcphY+ICdqP/qmBwToy9EI1vFV0BNSqlW4vtMVAAIIMBAvC33f
158ixohZGFzFxkezfkAEECAgTgMZd79KtQsSg3jKcu50AgggADD8rrg9/69xs+sgqFYJXmnCQAEEGA4
159JqHsidl1b7H72aYvwnm4+zbLAAggQIGOC3//dYtT8wnKICgCtMxteIeyId2Gl3LEW+9OS/641fy5
160aSj3tsNjEUPifzQDQ6f2o296QIAuzQsPH4s9fnZl89cOBV31Hl1oboD2/aEJgA69Lfz9Lwt6r6tU
161UP+7Xv4M13cdm2YcAFdpiW38d/q63AgfJx3sP199RAEEEGA45qHs3o+SCtT4AL339/x/DCOTja9V
162QAkthZQqXFQh7t8ULJYbXx/SRQBZ+ZgCtM8ckKFsSHNAyF/pcz+i/4T9hgN1ccB9KHzsahJ2f2bL
163MrQzbKrt9nMgZRTUfvRNDwjQhZMBhI+2iuomrRoOHyGt8yKDdZv6GAEMg0noQNviFfTXA1iPRQHv
1648cOA96NDHyUAAQRgG2cphJTuYwHvcTng/ei5jxKAAALwkPl6ORrAeqwaKO67uIK/GPC+NOvgNfSy
165AAggQMFiMXc6kHVp4vkQXfQCTQe6Lx11tG5HPrYAAghQplhsD2XoVdTE8KuZAFJbV3OIXg5onwUQ
166QIBR+RKGM5xlFZqZW/G4g/c6xHkSs47CWxXgjn18AdrlOSBD2ZCeA0I+Ys/HfEDr09RzNbo42Maw
1679GhAbR97I76F7nt2noVhz6dh5NR+9E0PCCB83C0+A+O8gd/TVZvEQn1IV/Dfhn6GlX0KJqQDtEYP
168yFA2pB4QhI82xPDxqoHfE4ekzToMTU/CdW9IyWLw+NFz+HwU8n/4JOxM7Uff9IAA+4rDZD4NMHxE
1697xr4HbMOw8fm9ih9MvVZBvt1HP6lJwSgYXpAhrIh9YDQX5E2pAnnm85DM70ffRWxceJ8nMtQ4hX8
170aei392PTZWrHpY87Q6H2o296QIC6DsOwrxA30ftx3GP7HKZwWGJPSE7P46hC9txHHkAAAfotEGNR
171Nh3o+sW7Xq0aKFzfZhASS+yhmmT4fuKQsBMffQABBOhefLr5EOYY3CUOuWmq9yOHNqpCyNyuu7e3
172odxeJQABBCjONFwPuRr6g9rehf3nTcQC9XVG61RdwS8lOC4yfm+zcD0/ZeaQACCAAO05DuO4I1As
173fJt46OBRpoX+USqej0ayHdoMdLEn5MShAUAAAZo1TYXWaRj+sJPY6/GqwXbLuXj+FPLvDXkT8n8a
174+dvgVr0AAgjQmKrXYzaS9Y1Dr1Yj2r5Vb0jOQ+pehGaeRN+mao7NcQBgK54DMpQN6TkgNFtQnYVx
175XdW9SMVuU2apKC3FIlz3OOT6rIu4P84LacdXIwuyFEjtR9/0gACVaqLy2IaULENzQ682C9H3BbXB
176LG33XIfaxe1zXlA76g0BuIcekKFsSD0g7OckXN+1aWy3F237KdenBRajsU3eZFrwH6c2LcEi6A0h
177U2o/BBAEEPo0D9cTaacjXf8nof1hR/NQ5iT+RchzWFZsz7OCwlycW/Q+gAACAogAguAx6uARdTms
178J7ZzvOtUiUPb3odmno3SpGridymhLtcwhwACvTAHBMYXPOKdj86Ej06HGK3CdW/LuwLb6jjtM/OM
1793tMydNN71ZRZuJ4bcuIQBKAHZDgbUg8Id4tXieMtV8fe49FX+LitGC01AC5SiFpktG9/CmXdKnqV
1809sGFjyJ9UfshgCCA0JZY4M7DOCeX5xo+Ngvns5D/E8nvEtswDinKZVhWiZP9cxzahgACAggCCLXM
1811svLUMZzE7rS9t2u6pqHcp8yn9sE63koZ3L6ZhvGUHzhI4oAggCCAEJpJuFnb8dUc/yies5HrvMF
182pqlwnhXcvrE3ZJHBeyltcnplEdyyFwEEAQQBhELEITzPg96Ou1ykwq6EYS4n4XqeTslt/SaDIrrE
183eSEh7aMfgonqCCAIIAggZChe5X2ZwsdUc9xZzOX6ML2Htu1ZKPdJ9DkV0SXOC4ly6lFCAAEBBAFE
1846BA6thALt9KHs5RaPFdWIY87Pc1DuXNsTFJHAEEAQQChc7NwPbxK6NhOqb0e923/0p/XksOwrJJ7
185lUxSRwBBAEEAoVXV8zqepq9unbu96m5MlwPcJ+K8kJJ7Q3IYlhXbMfaEzAttw0UwSR0BBAGEDANI
186PMEebpysKEMVOGah3HH/fTpP4WPohVncP0rvDVmF/odlzUPZtz02SR0BBAGErALIl/Dzri/ViWqI
187V4RLNtkIGk9DubddFTz6239K7w2J+h6WVfpE/xyCHAIICCD8N4DctSGXafk7nbCWQkmnhU4VNg6D
188Ho59Xabg8SGMeyjKLJTfG9L3QwyHEObOQ15Po0cAAQFkhAFkswdkm5P/ZjBZCiaNFIUxYPyVvs40
189SWNWKXSc20cHVUCH0P8tZ49SmCt1vtXQbryAAIIAQmEBJBa98eFb0z1/1SKd1L6nwm8lnPxS9B2m
190No7L040/07w4VOdjcAegh4LvaSi/d63PW86W+uDCm8dtk9QRQBBA6DyAVCfSNu/0UgWReJL7O/zs
191SalOgEMJGGGjGHl64++0a5lCx7nQu5OTUPZT1EPof27DcWrDkntD+hzWhgACAshIA0hlmk6kfdzK
192dTOUVD0pNwPMpraKjc0wEW4JEX+Fnz0Xh8Etb/suPGMvx9jnduzrMF2AKD0sX6QgctlTG5Y8Qb06
193puoNQQBBAKHzALJZhMcQUj3MrtTidHVHoSA0lCuG0c+p2FxqjkaVfiU/hP4fwHcSyu5R0huCAIIA
194Qm8B5LYw4iF39CUWk1/T15XmaNU0XPeGHBW+Huehvzs96Q1BAAEBhD0DyG0n11n4+TwKgYSmLVMB
195VIUOuneUgsi04HVYhX7nhpyE8ntD3CkLAQQBhCwCiEBCm4FjEUwiz8VQbtn7LvT3FPAh9Ib0ObcG
196AQQEEAFkK9MURB4Hz7Xgd9XNBqqw4VbN+RvCJPW4n70I/Q0pigHodSj3As0qtZ95VwKIRkAAIcsA
197clcBcyiUjFIVMr6Hnw+upEzzFERKvt1snxPUp+G6N6Tk418ckmWCugACAghFBJC7Qsl0I5hUf6ZM
198MVisbgSNlWYZnCEMy3qfCum+lP4UdUOyBBAQQCg2gGwTTP7a+LO5JXlYhJ/PaalChl6N8ZmlInpa
199cGB+1mMRPUntd1Rw+73y2RdAQABhKAHkoaKn+vpn+P3p4zRTWGw+tb76u7kaDK2IvkwhpM8iOvYk
200nRbcfn0OaUMAQQBBAMlC1VMyDT+vzD7dKJbGPMRrFX4OiYoF17/h16fPCxjUdRLKvd1sDreajcel
201L6HcXl7zQgQQEEAYdQDZ1s0wcnOI1+NbioEchoHdFhKqMHHb92yGDmjTPFz3hpSqz1v1RtP18imU
202e5EkBrhXPgYCCAggCCDdFg/Thn7XQnNSqFkqoku9kt93EV36kDYhRAABAQQBBOhc6cOJYhEdhxT1
203ORwxhpB5oe3nDlkCCAggCCCAELKjvu+QFZ2EcufVLFL7IYBA4/5PEwCQaQFfeoCKAaTU4UyzUPZ8
204IEAAAUAIGWUIOS84hMyFEEAAAaCPEFLypOQYQj71/B5KDyFzHwNAAAGgSxeFh5BZ6P9KfskhJD5k
205cepjAAggAHRdQL8r+P3PQ7/PCCk5hEyCoVhAg9wFaygb0l2wgG6UfHvZ6EW47tHp0yyU+ayVOB9o
2064SNQPrUffdMDAsAu4hX888IDVN+F/yKUObn/pd0fEEAA6CuELAt97zF8fMrgfZR4h7GpXR8QQADo
207y7OCQ8hsvRwJIb/x5HNAAAEgW5eFh5DTTN5HbL9HmbRjfA9xjsz5LWEk/v2D3R5ogknoQ9mQJqED
208/YhDmuLD/g4LfO85zWfJpR03J+lPNt7Pwq4+HGo/BBAEEEAI6cdFKrhz0vddxlbhukcGAQQEEAQQ
209QAhp4/CZ4Xs6WS9ve3x9t9sVQKBV5oAA0ITS54TkFkBehWYnha92+N7nNgEggAAghOzmTej/gYP7
210OE9tuWrwd77YMtQc2pUBAQQAIWQ3L1PBfd9woveZt2VswycNBalpCjNPguFVgAACgBDSuMO0LNJ7
211iYX3u/T3WNDHIU5vCmnLFw2916MUQp6l33dXb8hnuzDQJpPQh7IhTUIH8tP3xPQYOE4G1J6xHc/2
212aM8qjG1un3m4nvMxS+Hk48DajFuo/RBAEECAoevr1rI3C+6hhLrjUO8uWUNsDwQQCmQIFgBta/qB
213f5dhu8nUswG2ZVzvk2AuByCAAMCDIeRVQ78r9gK82TKETAbannF+zbPUpiu7FyCAAMDvzlPR3MTz
214LR5v+bsmI2jTRymIPDTp/6NdEMiBOSBD2ZDmgADlmK6XT2G/yemLFEAemuh+MMK2jXe7enojfH0M
215zQ6Do2BqPwQQBBBgrE7D9YTq2oe+jT+frJfXN4ru+JyPN5oZBBAEEAQQgEq8Wn8W6g2Vunngi79j
216Fq57Q+KzPpaaFwQQBBAEEIBwS3CIvSHzPQMIIIBQAJPQAehbnEgeJ1HHOR2LLX9mpdkABBAA2Mci
217hZC4XDzwveZ2ABTKEKyhbEhDsIDhmYbrOR1P05+jr+H6bk4rzQP1qP0QQBBAAAABhNEwBAsAABBA
218AAAAAQQAAEAAAQAABBAAAAABBAAAEEAAAAABBAAAQAABAAAEEAAAAAEEAAAQQAAAAAEEAABAAAEA
219AAQQAAAAAQQAABBAAAAAAQQAAEAAAQAABBAAAAABBAAAEEAAAAABBAAAQAABAAAEEAAAAAEEAAAQ
220QAAAAAEEAABAAAEAAAQQAAAAAQQAABBAAAAABBAAAEAAAQAABBAAAAABBAAAEEAAAAAEEAAAQAAB
221AAAEEAAAAAEEAAAQQAAAAAQQAABAAAEAAAQQAAAAAQQAABBAAAAABBAAAEAAAQAABBAAAAABBAAA
222EEAAAAAEEAAAQAABAAAEEAAAAAEEAAAQQAAAAAQQAABAAAEAABBAAAAAAQQAABBAAAAABBAAAEAA
223AQAAEEAAAAABBAAAEEAAAAAEEAAAQAABAAAQQAAAAAEEAAAQQAAAAAQQAABAAAEAABBAAAAAAQQA
224ABBAAAAABBAAAEAAAQAAEEAAAAABBAAAEEAAAAAEEAAAQAABAAAQQAAAAAEEAABAAAEAAAQQAABA
225AAEAABBAAAAAAQQAAEAAAQAABBAAAGDA/tAEAP81WS+HG39fZPb+Zht/Xq6XS5ssO9O0hLR9lpoE
2264Hd6QICxi4X9t/Xyz3r5srFcrZezjYKyDzEQfUrvZfO9Ve/10ObLwsl6+ZGWahtV+9RJCrcAJAdX
227V1daYQgb8uBAI8Du5ilk3CdeyX4Wur+avc17i16tl3ObsheTFBBnD3zfMu1Deq3IgtoPAQQBBPpx
228lIrHbazWy5MOC8hpuL6Cvs2V88v03lY2aedO18vxlt97nsIiCCCMniFYwFi93TEQHHX83rYdthO/
22977XN2bnpDuEjmod+h/MBCCAAPdt1/kSXxeO05XWh+23U9T4EIIAAAAAIIAAAgAACAAAIIAAAAAII
230AAAggAAAAAggAACAAAIAAAggAAAAAggAAFCQPzQBmZmsl/l6ebxepunfvq6Xi/WybPi1Zml52uLr
231dLk+bZuldYjLn+vl8Mb/f01fV2ndlnZnbpim/abad57e+P+4z/y7Xi439qHLEbTLYfp8TW60SVz3
2327+nPi/TZWg10v5imNgjpeDnZ+P+4zn9vtMNQ94vpxnH2ZhvcdqxdjOgzwtBcXV1ZBrAMxPF6+Sfu
233lncsX+45IO9aSP944HWmDbzOvKP1aTsMfrpnHR5aPqXfkeN67rouJx2+ty87vrcvGe9HR+vl7IHP
234wn3Lt/Vy2tBnsulAvuu6zG4Um6c12uVH+rnDAYSu0weOxdph+8/I8S6fEXWTpfe6VSMIIJk43eFA
235u08xO9/ydf7Z88Q272h92roKt0/BeFd7nmVWRAog7ZrvWVTdtZ6zwgPIZIfjXUntsUsg/dbwfvEt
2367W8lmdX4nG+zbHWcVTdZBBCLALL7ifyko9epW9RNdizezzLaFicNB4/bgshJJusqgLT3ef7R4j5U
2379axNCjtuXaWr1N9CO0Vnzr2p1ZX+Ly3vF18K6BGZ7Nmr3MjxSt1k6XsxCZ0cPN/x+1/uUTC0+f2b
238V/gmO35/DsVBLIzetlzITNJr5D78jHpOQ3NDGB/6zPwo8Op/W0OG5unzm2vxfZLeX9vbq+pVyLU3
239pNpvuzjmvw159rDDfwkg5HJlbBfTzNdn1/fX9wniKHR/5XAmhAzKJPwch97la+ZcbPZx3MmtByBu
240o7NUDHf9mrntF/H9dN1zV11Ymvp4IIAAYz8pbp4chZBhhI8+C9+zUF5PyFC3RU4BMacQchr6G2o7
241DXkMWQQBBPivWeh//slhyGsODGUWvAqsX7dJDnNCzjLYL3J4DzEEHff8HhxnEUCALExT0ZaDo5DH
242PBjKLPA2i25+Fpxve3z904w+02c9b4dc9kvHWQQQoHe5XTE+tUmKc5xZQRPfy8xm+WX79NEes9D/
243Ff+bIWDeUyj+lNk+4TiLAAL0WpjkdrecaTCZuCRxe73N8H29tml+0fU2yrUnqo99dacHA3b4udUL
244ggACdG6SaeEYPbd5iipsc5xzcRTc8WfTLHR7seE40/afhm57g3IN6I6zZOMPTQCjctxA4bhYL5/X
245y/KWYuf5HgVP9fyUS5spa7G4mu/5O1br5WK9fL2xveO+8zjs/iydm/vheUHtuUyfp0XDn6dK7BV6
2461cF6TML+PVCXadvd3C/iPvd0z/3i+S1t3JYmeuLO035xmd73YVr3w422qHucfRWgb57G6EnoGajz
247dNw6Tgb2OnXs85Tzbe92FAunuk977nJ4gCeh13O2xz70z5bhZbLH63Q17n4W9ntS9bYP5tv3CeL/
248dHhxY5/3eLJFuJjUPL5W7d2FyZ7H2U9hu16kwz2Os4fqJosnoQNdme9x9TBejXsWfu/1uM0ife+q
249xusc2kxZm+wREuO+8yhs1ztxma7Sng90H4rr9SRsd0V+mT5P53tssy7apO5V/8u0fifh4d7Py/R9
250bzLeL/bppYnr9WLLY+dyj+PsLEDPBBAYj7pjf8/D7l32lzWLhKc2U9bqFlerVCztOrzuTY2fmWbe
251hotQbwhM3UAWQvs9i4c1270KH8sdf+59jZ/pqvCue5x9n5YujrOemYMAAnRaPO5qGeqPF74I5nMM
252Td2A+KLmvnCZ9qMcC8263u3xs29CvSvej1tep9ke67Os+bMfMy2867TFsmaQCDU/Hy70IIAAndin
253QNjHsqP3Sb770fkeRWb0dUDtF8PDYo+fj4HsQ42fa3v4UZ2CdhH2u1nAMsN2OKwZcvY9zi4CCCBA
254huqceJcNnNiWmn4wYmE1rfFzH/Z83dWA2vCigd9Rp2iftrxedYLpxz1fM8djS1/HWRBAgGyLx119
255buB1/9X0ow6xKyG08c/DZc02bXP4UZ3ffd5AO+SmTtD76GOBAAIMVd0hErAP+1A77ZHT8KOZ/eJ/
256HmsLEEAAaE6dAvZvzdYK7ZqnOj1BeggRQACgweIKAAQQAABAAAEAAAQQAAAAAQQAABBAAAAABBAA
257AEAAgU79qQk695cmAFow1QQggEAJ6jxIbabZOm9zsA81H+wvBRBhDAQQ+OlrjZ/J+aFoelp+biPF
25843D0VcA+1fSNhLKhPXH7+YCOkwIIAggM+AQ87ehnhlJ073tSO7abDkqdAvZxA/vg0YDacNbQ53LX
259Y0xuvR9NFMw57herHvaJWQABBLININOaJ706V193PSEsOmivOr1ML/d4vXhV77XddPSOwn5XeN9m
260vG51ivrHDbzuvKPw2Obxa7pn4XwS8rzq/3eNn9m3J+dlAAEEOjuB7XrQrXu1bNeT5DzTNr6sue51
261i4SzkPcwOborYk/3KLTnA2uPeBzap4d0WjOUfW25LeocX+qGy9h+rwe0T8z3CFOHmX9GQAAha6ua
262B95ti+N9rsbHE8MuQ4nqvM7XDtq4bvH4qUbBdBaGNWyGn0Vmnc9qnSBxtEdwyb3grBvOJ+nzWMci
263w3aYpbbY9bj/JeR7cWOf4+ykRlt8CiCAwF4BpM4VtG2K40kqZKZ7vL+3W4ads1Dv6uaqgzauW4BM
2640gl/m/WvioO5XXqw6u5H8bNxsuX+dlqzICulPeLn5NuOIX2aPlt1ji+XHQSQuhdR5jsEsuPMw0d1
265LF/V3Ce+7HCemu/4/SCAwB3qXDmapBP5WSqQJzcO6Mfp//ctiKsivLqyf9vr/NjjdRYdtfHFnutf
266hYvpjfWfp4LxWzAhcuj26a17mz4nxzcK6Wn6XJ1t/P/Q22OaPjO3tcfNwvQ0fbYOO/7cd/Ua89QO
267pzeOH5P099ON/x9qKK229Y+0X8xv2d6zjXONIa4U7+Dq6korDGFDHhyUvgrHoYwhF01brZdHHb3W
268POw+5KGX3bmj19n14PcubHcVvwnb9jptFj3POnhfk1QA5V78POsw2P8IzV2Jjr0Vy9DsLayfhG5u
269wdtkO7Sli8/wLH1+sw5J69rvWYAe6QEhFxfWu3XnYXgPI6NblyP+rN7lY8MBb9Zg+FiE7p7/8cGu
2708L82X2kGEEAowyp0d8UyJx8G/noMzztN8Iv3GQf7Nx2+1nlwgcNnBAQQHLSzdx66v1L2Prg6x/4X
271C95rhv+JRferTI+ny47bQeHd37EdBBCoaRHG1QvSx8k6Fglv7Go0sO8qsH66SEVnLmLwOOnhdd93
272HHpy9koTgABCWQftrrvx+xg20GcBdxFcwWb/z8wLzfCLN5kU3/G40ucE4xfBUKxoEfQIgQBCMVah
2732ytHl+lkfd7ha8bXOsmgWDq3u7GHZXCV97ZjSZ8hZJVBAKgCkBByfZx3nAUBhEJcdFTYbBYMrzo6
274UZxnVLS1vc653zFJgVTG/rwoMIT0UXTG41hXt9zd5r20HUJKKey7OLc4liGAQIMnlzZPYMvw+9XK
275eKJoc2jS+5DfFeP4ftoYJlAVYp8zLjYvMn5vu7bbx54/q7HwXbV4HNjVqsf2qCald9kT8S5tg5wK
2760TYDURV8VzXeU1/H2Tct/m7zbihPfBChpfxlwOJ98eMDCq8aXE7C/Q9Si09l/tHg65XwhPD43IEv
277Da7v5nMMdmnLo473rX+2fF99PMDx2w7tnctn9aShfShul/nG797lGHCW2fHrZIf9bNflS2jumSFt
278arINTjZ+73zH49KQjrM/Ns4ru/7OL+omS+91q0YQQAoxTUXIjz0KmtOw25N65zsUgbctnzouqJsw
279S++77glxfsdJd5vi47SnguChbdxXQTvZorD4FvJ7Kvk+n9Xqczq5pS22+Szm2B6bx5NPoZlwdlbA
280RY27wljdY/jZHcfvsy3b7DCz4+xZzVD245aLaAKIpbjlYCTF6+AdHByMaXUP0/L4gZPKar18D/s/
281DXiaThjx69MHXu/vjdcreVzu5hOZnzbQxtN7iqb4O+LwhD7ni8Ti8PmNk3p8Xx9D/3MQjtJ72yy+
2824r4Vh2mdF/BZnaXP6l3h/3JjH3qorWPh9fqWkBF/R3zI5vsCPneTG+1S/f2u4FQdS76G4dyqfJv9
283IqR1XqZ1vm+7Hqf94rbfdZ6OL7nuF7O0/LXFZ+TijuPstx0D1mJd+z0L0GfdKoAIINBD8bVZ5K80
284CzWKtl8KKk3CLUFuLPvFroXcxbr2cxttevWHJhjI0UeQpAyXisXmjPjCg32I24xxMva0xs98t6vQ
285N3fBAgAo06zGz7htLwIIAAC1vKzxM27bS+/MAQEo9QBu7heMWbxBxSe1HyXSAwIAUJZZqHeL8AtN
286Rw5MQgcA6D5ATNNS3Wp5scXPxTt9xVsOz2u+7mdNTw50wwGUegA3BAtKcxJuf5ZNZRXuvjX5bM/X
287jr/3UfyD2o++6QEBAGjfabh+aOJ9pqHerXW38dEmIBd6QABKPYDrAYFSxKFT33p8/VVIvR+R2o++
288mYQOANCuo55f/5VNgAACADAej3t87XdhuwnuIIAAAAxEX08fPw/XE99BAAEAGJHvPYUPQ6/Ikkno
289AKUewE1Ch1LE2+7+CHfffrdpb9bL+7v+U+1H3/SAAAC06zKFgrYt1suT+8IH5MBzQAAA2neevp61
290FDw+brwGZM0QLIBSD+CGYEGJZuH6aejx6z5Dslbr5SIFj+UuP6j2QwABQACBcZqmZZb+/le4+0no
291MWT8G657O+Kfa99ZS+2HAAIAAIyGSegAAIAAAgAACCAAAAACCAAAIIAAAAAIIAAAgAACAAAIIAAA
292AAIIAAAggAAAAAggAACAAAIAAAggAAAAAggAACCAAAAACCAAAIAAAgAACCAAAAACCAAAIIAAAAAI
293IAAAgAACAAAIIAAAAAIIAAAggAAAAAggAACAAAIAAAggAAAAAggAACCAAAAACCAAAIAAAgAAIIAA
294AAACCAAAIIAAAAAIIAAAgAACAAAggAAAAAIIAAAggAAAAAggAACAAAIAACCAAAAAAggAACCAAAAA
295CCAAAIAAAgAAIIAAAAACCAAAIIAAAAAIIAAAgAACAAAggAAAAAIIAAAggAAAAAggAACAAAIAACCA
296AAAAAggAAIAAAgAACCAAAIAAAgAAIIAAAAACCAAAgAACAAAIIAAAgAACAAAggAAAAAIIAACAAAIA
297AAggAACAAAIAACCAAAAAAggAAIAAAgAACCAAAIAAAgAAIIAAAAACCAAAgAACAAAIIAAAgAACAAAg
298gAAAAAIIAACAAAIAAAggAAAAAggAACCAAAAAAggAAEBt/y/AAEmyIDWRykGwAAAAAElFTkSuQmCC">
299</image>
300</svg>
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/public/img/logo.png b/src/Wallabag/Wallabag/Resources/views/baggy/public/img/logo.png
deleted file mode 100755
index 5305c77d..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/public/img/logo.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/public/img/logo.svg b/src/Wallabag/Wallabag/Resources/views/baggy/public/img/logo.svg
deleted file mode 100644
index 865da440..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/public/img/logo.svg
+++ /dev/null
@@ -1,8 +0,0 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="64" height="64">
3 <circle cx="32" cy="32" r="29.5" style="fill:#000" />
4 <path d="m 16,18 33,0 0,26 -16.5,6 -16.5,-6 z" fill="#fff" />
5 <rect width="9" height="2.5" x="17.5" y="24.5" fill="#000" />
6 <rect width="9" height="2.5" x="28" y="24.5" fill="#000" />
7 <rect width="9" height="2.5" x="38.5" y="24.5" fill="#000" />
8</svg>
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/public/js/closeMessage.js b/src/Wallabag/Wallabag/Resources/views/baggy/public/js/closeMessage.js
deleted file mode 100644
index 527719d5..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/public/js/closeMessage.js
+++ /dev/null
@@ -1,17 +0,0 @@
1$(function(){
2 //---------------------------------------------------------------------------
3 // Show the close icon when the user hover over a message
4 //---------------------------------------------------------------------------
5 // $('.messages').on('mouseenter', function(){
6 // $(this).find('a.closeMessage').stop(true, true).show();
7 // }).on('mouseleave', function(){
8 // $(this).find('a.closeMessage').stop(true, true).hide();
9 // });
10 //---------------------------------------------------------------------------
11 // Close the message box when the user clicks the close icon
12 //---------------------------------------------------------------------------
13 $('a.closeMessage').on('click', function(){
14 $(this).parents('div.messages').slideUp(300, function(){ $(this).remove(); });
15 return false;
16 });
17}); \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/public/js/init.js b/src/Wallabag/Wallabag/Resources/views/baggy/public/js/init.js
deleted file mode 100755
index 74cbae68..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/public/js/init.js
+++ /dev/null
@@ -1,51 +0,0 @@
1$.fn.ready(function() {
2
3 var $listmode = $('#listmode'),
4 $listentries = $("#list-entries");
5
6 /* ==========================================================================
7 Menu
8 ========================================================================== */
9
10 $("#menu").click(function(){
11 $("#links").toggleClass('menu--open');
12 if ($('#content').hasClass('opacity03')) {
13 $('#content').removeClass('opacity03');
14 }
15 });
16
17 /* ==========================================================================
18 List mode or Table Mode
19 ========================================================================== */
20
21 $listmode.click(function(){
22 if ( $.cookie("listmode") == 1 ) {
23 // Cookie
24 $.removeCookie("listmode");
25
26 $listentries.removeClass("listmode");
27 $listmode.removeClass("tablemode");
28 $listmode.addClass("listmode");
29 }
30 else {
31 // Cookie
32 $.cookie("listmode", 1, {expires: 365});
33
34 $listentries.addClass("listmode");
35 $listmode.removeClass("listmode");
36 $listmode.addClass("tablemode");
37 }
38
39 });
40
41 /* ==========================================================================
42 Cookie listmode
43 ========================================================================== */
44
45 if ( $.cookie("listmode") == 1 ) {
46 $listentries.addClass("listmode");
47 $listmode.removeClass("listmode");
48 $listmode.addClass("tablemode");
49 }
50
51});
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/public/js/jquery.cookie.js b/src/Wallabag/Wallabag/Resources/views/baggy/public/js/jquery.cookie.js
deleted file mode 100755
index 92719000..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/public/js/jquery.cookie.js
+++ /dev/null
@@ -1,117 +0,0 @@
1/*!
2 * jQuery Cookie Plugin v1.4.0
3 * https://github.com/carhartl/jquery-cookie
4 *
5 * Copyright 2013 Klaus Hartl
6 * Released under the MIT license
7 */
8(function (factory) {
9 if (typeof define === 'function' && define.amd) {
10 // AMD. Register as anonymous module.
11 define(['jquery'], factory);
12 } else {
13 // Browser globals.
14 factory(jQuery);
15 }
16}(function ($) {
17
18 var pluses = /\+/g;
19
20 function encode(s) {
21 return config.raw ? s : encodeURIComponent(s);
22 }
23
24 function decode(s) {
25 return config.raw ? s : decodeURIComponent(s);
26 }
27
28 function stringifyCookieValue(value) {
29 return encode(config.json ? JSON.stringify(value) : String(value));
30 }
31
32 function parseCookieValue(s) {
33 if (s.indexOf('"') === 0) {
34 // This is a quoted cookie as according to RFC2068, unescape...
35 s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
36 }
37
38 try {
39 // Replace server-side written pluses with spaces.
40 // If we can't decode the cookie, ignore it, it's unusable.
41 s = decodeURIComponent(s.replace(pluses, ' '));
42 } catch(e) {
43 return;
44 }
45
46 try {
47 // If we can't parse the cookie, ignore it, it's unusable.
48 return config.json ? JSON.parse(s) : s;
49 } catch(e) {}
50 }
51
52 function read(s, converter) {
53 var value = config.raw ? s : parseCookieValue(s);
54 return $.isFunction(converter) ? converter(value) : value;
55 }
56
57 var config = $.cookie = function (key, value, options) {
58
59 // Write
60 if (value !== undefined && !$.isFunction(value)) {
61 options = $.extend({}, config.defaults, options);
62
63 if (typeof options.expires === 'number') {
64 var days = options.expires, t = options.expires = new Date();
65 t.setDate(t.getDate() + days);
66 }
67
68 return (document.cookie = [
69 encode(key), '=', stringifyCookieValue(value),
70 options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
71 options.path ? '; path=' + options.path : '',
72 options.domain ? '; domain=' + options.domain : '',
73 options.secure ? '; secure' : ''
74 ].join(''));
75 }
76
77 // Read
78
79 var result = key ? undefined : {};
80
81 // To prevent the for loop in the first place assign an empty array
82 // in case there are no cookies at all. Also prevents odd result when
83 // calling $.cookie().
84 var cookies = document.cookie ? document.cookie.split('; ') : [];
85
86 for (var i = 0, l = cookies.length; i < l; i++) {
87 var parts = cookies[i].split('=');
88 var name = decode(parts.shift());
89 var cookie = parts.join('=');
90
91 if (key && key === name) {
92 // If second argument (value) is a function it's a converter...
93 result = read(cookie, value);
94 break;
95 }
96
97 // Prevent storing a cookie that we couldn't decode.
98 if (!key && (cookie = read(cookie)) !== undefined) {
99 result[name] = cookie;
100 }
101 }
102
103 return result;
104 };
105
106 config.defaults = {};
107
108 $.removeCookie = function (key, options) {
109 if ($.cookie(key) !== undefined) {
110 // Must not alter options, thus extending a fresh object...
111 $.cookie(key, '', $.extend({}, options, { expires: -1 }));
112 return true;
113 }
114 return false;
115 };
116
117}));
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/public/js/restoreScroll.js b/src/Wallabag/Wallabag/Resources/views/baggy/public/js/restoreScroll.js
deleted file mode 100644
index 331c9e19..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/public/js/restoreScroll.js
+++ /dev/null
@@ -1,25 +0,0 @@
1function supportsLocalStorage() {
2 try {
3 return 'localStorage' in window && window['localStorage'] !== null;
4 } catch (e) {
5 return false;
6 }
7}
8
9function savePercent(id, percent) {
10 if (!supportsLocalStorage()) { return false; }
11 localStorage["poche.article." + id + ".percent"] = percent;
12 return true;
13}
14
15function retrievePercent(id) {
16 if (!supportsLocalStorage()) { return false; }
17
18 var bheight = $(document).height();
19 var percent = localStorage["poche.article." + id + ".percent"];
20 var scroll = bheight * percent;
21
22 $('html,body').animate({scrollTop: scroll}, 'fast');
23
24 return true;
25} \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/screenshot.jpg b/src/Wallabag/Wallabag/Resources/views/baggy/screenshot.jpg
deleted file mode 100755
index 19cd24bb..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/screenshot.jpg
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/tags.twig b/src/Wallabag/Wallabag/Resources/views/baggy/tags.twig
deleted file mode 100755
index 65930eb2..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/tags.twig
+++ /dev/null
@@ -1,13 +0,0 @@
1{% extends "layout.twig" %}
2{% block title %}Tags{% endblock %}
3{% block menu %}
4{% include '_menu.twig' %}
5{% endblock %}
6{% block content %}
7<h2>{% trans "Tags" %}</h2>
8<ul class="list-tags">
9{% for tag in tags %}<li>{% if token != '' %}<a class="icon icon-rss" href="?feed&amp;type=tag&amp;user_id={{ user_id }}&amp;tag_id={{ tag.id }}&amp;token={{ token }}" target="_blank"><span>rss</span></a>{% endif %} <a href="./?view=tag&amp;id={{ tag.id }}">{{ tag.value }}</a> ({{ tag.entriescount }})
10</li>
11{% endfor %}
12</ul>
13{% endblock %}
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/theme.ini b/src/Wallabag/Wallabag/Resources/views/baggy/theme.ini
deleted file mode 100644
index 31665e18..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/theme.ini
+++ /dev/null
@@ -1,3 +0,0 @@
1name = Baggy
2description = Responsive black and white theme especially adapted to smartphones.
3requirements[] = default
diff --git a/src/Wallabag/Wallabag/Resources/views/baggy/view.twig b/src/Wallabag/Wallabag/Resources/views/baggy/view.twig
deleted file mode 100755
index 1afd9df6..00000000
--- a/src/Wallabag/Wallabag/Resources/views/baggy/view.twig
+++ /dev/null
@@ -1,102 +0,0 @@
1{% extends "layout.twig" %}
2{% block menu %}
3{% include '_menu.twig' %}
4{% endblock %}
5{% block title %}{{ entry.title|raw }} ({{ entry.url | e | getDomain }}){% endblock %}
6{% block content %}
7 {% include '_highlight.twig' %}
8 <div id="article_toolbar">
9 <ul class="links">
10 <li class="topPosF"><a href="#top" title="{% trans "Back to top" %}" class="tool top icon icon-arrow-up-thick"><span>{% trans "Back to top" %}</span></a></li>
11 <li><a href="{{ entry.url|e }}" target="_blank" title="{% trans "original" %} : {{ entry.title|e }}" class="tool link icon icon-link"><span>{{ entry.url | e | getDomain }}</span></a></li>
12 <li><a title="{% trans "Mark as read" %}" class="tool icon icon-check {% if entry.is_read == 0 %}archive-off{% else %}archive{% endif %}" href="javascript: void(null);" id="markAsRead"><span>{% trans "Toggle mark as read" %}</span></a></li>
13 <li><a title="{% trans "Favorite" %}" class="tool icon icon-star {% if entry.is_fav == 0 %}fav-off{% else %}fav{% endif %}" href="javascript: void(null);" id="setFav"><span>{% trans "Toggle favorite" %}</span></a></li>
14 <li><a title="{% trans "Delete" %}" class="tool delete icon icon-trash" href="./?action=delete&amp;id={{ entry.id|e }}"><span>{% trans "Delete" %}</span></a></li>
15 {% if constant('SHARE_TWITTER') == 1 %}<li><a href="https://twitter.com/home?status={{entry.title|url_encode}}%20{{ entry.url|url_encode }}%20via%20@wallabagapp" target="_blank" class="tool twitter icon icon-twitter" title="{% trans "Tweet" %}"><span>{% trans "Tweet" %}</span></a></li>{% endif %}
16 {% if constant('SHARE_MAIL') == 1 %}<li><a href="mailto:?subject={{ entry.title|url_encode }}&amp;body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email icon icon-mail" title="{% trans "Email" %}"><span>{% trans "Email" %}</span></a></li>{% endif %}
17 {% if constant('SHARE_SHAARLI') == 1 %}<li><a href="{{ constant('SHAARLI_URL') }}/index.php?post={{ entry.url|url_encode }}&amp;title={{ entry.title|url_encode }}" target="_blank" class="tool shaarli" title="{% trans "shaarli" %}"><span>{% trans "shaarli" %}</span></a></li>{% endif %}
18 {% if constant('SHARE_DIASPORA') == 1 %}<li><a href="{{ constant('DIASPORA_URL') }}/bookmarklet?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}&notes=&v=1&noui=1&jump=doclose" target="_blank" class="tool diaspora icon-image icon-image--diaspora" title="{% trans "diaspora" %}"><span>{% trans "diaspora" %}</span></a></li>{% endif %}
19 {% if constant('FLATTR') == 1 %}{% if flattr.status == constant('FLATTRABLE') %}<li><a href="http://flattr.com/submit/auto?url={{ entry.url }}" class="tool flattr icon icon-flattr" target="_blank" title="{% trans "flattr" %}"><span>{% trans "flattr" %}</span></a></li>{% elseif flattr.status == constant('FLATTRED') %}<li><a href="{{ flattr.flattrItemURL }}" class="tool flattr icon icon-flattr" target="_blank" title="{% trans "flattr" %}"><span>{% trans "flattr" %}</span> ({{ flattr.numFlattrs }})</a></li>{% endif %}{% endif %}
20 {% if constant('CARROT') == 1 %}<li><a href="https://secure.carrot.org/GiveAndGetBack.do?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}" class="tool carrot icon-image icon-image--carrot" target="_blank" title="{% trans "carrot" %}"><span>Carrot</span></a></li>{% endif %}
21 {% if constant('SHOW_PRINTLINK') == 1 %}<li><a title="{% trans "Print" %}" class="tool icon icon-print" href="javascript: window.print();"><span>{% trans "Print" %}</span></a></li>{% endif %}
22 {% if constant('EPUB') == 1 %}<li><a href="./?epub&amp;method=id&amp;value={{ entry.id|e }}" title="Generate ePub file">EPUB</a></li>{% endif %}
23 {% if constant('MOBI') == 1 %}<li><a href="./?mobi&amp;method=id&amp;value={{ entry.id|e }}" title="Generate Mobi file">MOBI</a></li>{% endif %}
24 {% if constant('PDF') == 1 %}<li><a href="./?pdf&amp;method=id&amp;value={{ entry.id|e }}" title="Generate PDF file">PDF</a></li>{% endif %}
25 <li><a href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&amp;body={{ entry.url|url_encode }}" title="{% trans "Does this article appear wrong?" %}" class="tool bad-display icon icon-delete"><span>{% trans "Does this article appear wrong?" %}</span></a></li>
26 </ul>
27 </div>
28 <div id="article">
29 <header class="mbm">
30 <h1>{{ entry.title|raw }}</h1>
31 </header>
32 <aside class="tags">
33 tags: {% for tag in tags %}<a href="./?view=tag&amp;id={{ tag.id }}">{{ tag.value }}</a> {% endfor %}<a href="./?view=edit-tags&amp;id={{ entry.id|e }}" title="{% trans "Edit tags" %}">✎</a>
34 </aside>
35 <article>
36 {{ content | raw }}
37 </article>
38 </div>
39 <script src="{{ poche_url }}themes/_global/js/restoreScroll.js"></script>
40 <script type="text/javascript">
41 $(document).ready(function() {
42
43 // toggle read property of current article
44 $('#markAsRead').click(function(){
45 $("body").css("cursor", "wait");
46 $.ajax( { url: './?action=toggle_archive&id={{ entry.id|e }}' }).done(
47 function( data ) {
48 if ( data == '1' ) {
49 if ( $('#markAsRead').hasClass("archive-off") ) {
50 $('#markAsRead').removeClass("archive-off");
51 $('#markAsRead').addClass("archive");
52 }
53 else {
54 $('#markAsRead').removeClass("archive");
55 $('#markAsRead').addClass("archive-off");
56 }
57 }
58 else {
59 alert('Error! Pls check if you are logged in.');
60 }
61 });
62 $("body").css("cursor", "auto");
63 });
64
65 // toggle favorite property of current article
66 $('#setFav').click(function(){
67 $("body").css("cursor", "wait");
68 $.ajax( { url: './?action=toggle_fav&id={{ entry.id|e }}' }).done(
69 function( data ) {
70 if ( data == '1' ) {
71 if ( $('#setFav').hasClass("fav-off") ) {
72 $('#setFav').removeClass("fav-off");
73 $('#setFav').addClass("fav");
74 }
75 else {
76 $('#setFav').removeClass("fav");
77 $('#setFav').addClass("fav-off");
78 }
79 }
80 else {
81 alert('Error! Pls check if you are logged in.');
82 }
83 });
84 $("body").css("cursor", "auto");
85 });
86
87 $(window).scroll(function(e){
88 var scrollTop = $(window).scrollTop();
89 var docHeight = $(document).height();
90 var scrollPercent = (scrollTop) / (docHeight);
91 var scrollPercentRounded = Math.round(scrollPercent*100)/100;
92 savePercent({{ entry.id|e }}, scrollPercentRounded);
93 });
94
95 retrievePercent({{ entry.id|e }});
96
97 $(window).resize(function(){
98 retrievePercent({{ entry.id|e }});
99 });
100 });
101 </script>
102{% endblock %}
diff --git a/src/Wallabag/Wallabag/Resources/views/dark/README.md b/src/Wallabag/Wallabag/Resources/views/dark/README.md
deleted file mode 100644
index 92077994..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dark/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
1# dark theme
2
3theme created by Nicolas Lœuillet aka nico_somb \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/dark/public/css/style-dark.css b/src/Wallabag/Wallabag/Resources/views/dark/public/css/style-dark.css
deleted file mode 100644
index 41782c48..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dark/public/css/style-dark.css
+++ /dev/null
@@ -1,74 +0,0 @@
1body {
2 color: #d4d4d4;
3 background-color: #262627;
4}
5
6a,
7a:hover,
8a:visited {
9 color: #d4d4d4;
10}
11
12a.back span {
13 background-image: url('../img/dark/left.png');
14}
15
16a.top span {
17 background-image: url('../img/dark/top.png');
18}
19
20a.fav span,
21a.fav-off span:hover {
22 background-image: url('../img/dark/star-on.png');
23}
24
25a.fav span:hover,
26a.fav-off span {
27 background-image: url('../img/dark/star-off.png');
28}
29
30a.archive span,
31a.archive-off span:hover {
32 background-image: url('../img/dark/checkmark-on.png');
33}
34
35a.archive span:hover,
36a.archive-off span {
37 background-image: url('../img/dark/checkmark-off.png');
38}
39
40a.twitter span {
41 background-image: url('../img/dark/twitter.png');
42}
43
44a.shaarli span {
45 background-image: url('../img/dark/shaarli.png');
46}
47
48a.flattr span {
49 background-image: url('../img/dark/flattr.png');
50}
51
52a.email span {
53 background-image: url('../img/dark/envelop.png');
54}
55
56a.delete span {
57 background-image: url('../img/dark/remove.png');
58}
59
60a.link span {
61 background-image: url('../img/dark/link.png');
62}
63
64a.bad-display span {
65 background-image: url('../img/dark/bad-display.png');
66}
67
68.pagination a {
69 color: #aaa;
70}
71
72#article_toolbar {
73 background: #262627;
74} \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/backtotop.png b/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/backtotop.png
deleted file mode 100644
index c885086d..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/backtotop.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/bad-display.png b/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/bad-display.png
deleted file mode 100644
index 66ea2e16..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/bad-display.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/checkmark-off.png b/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/checkmark-off.png
deleted file mode 100644
index 661ea997..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/checkmark-off.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/checkmark-on.png b/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/checkmark-on.png
deleted file mode 100644
index 5ee8c8d3..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/checkmark-on.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/down.png b/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/down.png
deleted file mode 100644
index 4150e17c..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/down.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/envelop.png b/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/envelop.png
deleted file mode 100644
index 73d9b0b9..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/envelop.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/flattr.png b/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/flattr.png
deleted file mode 100644
index b457d080..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/flattr.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/left.png b/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/left.png
deleted file mode 100644
index c2f7a20e..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/left.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/link.png b/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/link.png
deleted file mode 100644
index a5b8d8d2..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/link.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/remove.png b/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/remove.png
deleted file mode 100644
index 0c3dcfdf..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/remove.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/rss.png b/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/rss.png
deleted file mode 100644
index 21bad1a1..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/rss.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/shaarli.png b/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/shaarli.png
deleted file mode 100644
index e68ac8b5..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/shaarli.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/star-off.png b/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/star-off.png
deleted file mode 100644
index 8194bc2d..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/star-off.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/star-on.png b/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/star-on.png
deleted file mode 100644
index 109c3aec..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/star-on.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/top.png b/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/top.png
deleted file mode 100644
index d137bd24..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/top.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/twitter.png b/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/twitter.png
deleted file mode 100644
index 6ce8a4d9..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dark/public/img/dark/twitter.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dark/public/public b/src/Wallabag/Wallabag/Resources/views/dark/public/public
deleted file mode 120000
index fd316b37..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dark/public/public
+++ /dev/null
@@ -1 +0,0 @@
1../../themes/default/public \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/dark/screenshot.jpg b/src/Wallabag/Wallabag/Resources/views/dark/screenshot.jpg
deleted file mode 100644
index daaad6c9..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dark/screenshot.jpg
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dark/theme.ini b/src/Wallabag/Wallabag/Resources/views/dark/theme.ini
deleted file mode 100644
index 4b020d36..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dark/theme.ini
+++ /dev/null
@@ -1,2 +0,0 @@
1name = Dark
2requirements[] = default
diff --git a/src/Wallabag/Wallabag/Resources/views/default/_bookmarklet.twig b/src/Wallabag/Wallabag/Resources/views/default/_bookmarklet.twig
deleted file mode 100644
index 61996353..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/_bookmarklet.twig
+++ /dev/null
@@ -1,3 +0,0 @@
1 <script type="text/javascript">
2 top["bookmarklet-url@wallabag.org"]=""+"<!DOCTYPE html>"+"<html>"+"<head>"+"<title>bag it!</title>"+'<link rel="icon" href="{{poche_url}}tpl/img/favicon.ico" />'+"</head>"+"<body>"+"<script>"+"window.onload=function(){"+"window.setTimeout(function(){"+"history.back();"+"},250);"+"};"+"</scr"+"ipt>"+"</body>"+"</html>"
3 </script> \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/default/_footer.twig b/src/Wallabag/Wallabag/Resources/views/default/_footer.twig
deleted file mode 100644
index 213a4aca..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/_footer.twig
+++ /dev/null
@@ -1,4 +0,0 @@
1 <footer class="w600p center mt3 mb3 smaller txtright">
2 <p>{% trans "powered by" %} <a href="http://wallabag.org">wallabag</a></p>
3 {% if constant('DEBUG_POCHE') == 1 %}<p><strong>{% trans "debug mode is on so cache is off." %} {% trans "your wallabag version:" %}{{constant('WALLABAG')}}. {% trans "storage:" %} {{constant('STORAGE')}}</strong></p>{% endif %}
4 </footer> \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/default/_head.twig b/src/Wallabag/Wallabag/Resources/views/default/_head.twig
deleted file mode 100755
index 277e3833..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/_head.twig
+++ /dev/null
@@ -1,36 +0,0 @@
1 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-152.png" sizes="152x152">
2 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-152.png" sizes="152x152">
3
4 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-144.png" sizes="144x144">
5 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-144.png" sizes="144x144">
6
7 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-120.png" sizes="120x120">
8 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-120.png" sizes="120x120">
9
10 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-114.png" sizes="114x114">
11 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-114.png" sizes="114x114">
12
13 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-76.png" sizes="76x76">
14 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-76.png" sizes="76x76">
15
16 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-72.png" sizes="72x72">
17 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-72.png" sizes="72x72">
18
19 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-57.png" sizes="57x57">
20 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon-57.png" sizes="57x57">
21
22 <link rel="apple-touch-icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon.png">
23 <link rel="icon" type="image/png" href="{{ poche_url }}themes/_global/img/appicon/apple-touch-icon.png">
24
25 <link rel="shortcut icon" type="image/x-icon" href="{{ poche_url }}themes/_global/img/appicon/favicon.ico">
26
27 <link rel="stylesheet" href="{{ poche_url }}themes/default/css/knacss.css" media="all">
28 <link rel="stylesheet" href="{{ poche_url }}themes/default/css/style.css" media="all">
29 <link rel="stylesheet" href="{{ poche_url }}themes/{{ theme }}/css/style-{{ theme }}.css" media="all" title="{{ theme }} theme">
30 <link rel="stylesheet" href="{{ poche_url }}themes/default/css/messages.css" media="all">
31 <link rel="stylesheet" href="{{ poche_url }}themes/default/css/print.css" media="print">
32 <script src="{{ poche_url }}themes/_global/js/jquery-2.0.3.min.js"></script>
33 <script src="{{ poche_url }}themes/_global/js/autoClose.js"></script>
34 <script src="{{ poche_url }}themes/default/js/closeMessage.js"></script>
35 <script src="{{ poche_url }}themes/_global/js/saveLink.js"></script>
36 <script src="{{ poche_url }}themes/_global/js/popupForm.js"></script>
diff --git a/src/Wallabag/Wallabag/Resources/views/default/_highlight.twig b/src/Wallabag/Wallabag/Resources/views/default/_highlight.twig
deleted file mode 100755
index cdb7c6bf..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/_highlight.twig
+++ /dev/null
@@ -1,4 +0,0 @@
1 {# include excelent highlight.js library for code highligting, see http://highlightjs.org/ #}
2<link rel="stylesheet" href="{{ poche_url }}themes/default/highlightjs/styles/github.css">
3<script src="{{ poche_url }}themes/default/highlightjs/highlight.pack.js"></script>
4<script>hljs.initHighlightingOnLoad();</script>
diff --git a/src/Wallabag/Wallabag/Resources/views/default/_import.twig b/src/Wallabag/Wallabag/Resources/views/default/_import.twig
deleted file mode 100755
index c59b7a15..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/_import.twig
+++ /dev/null
@@ -1,15 +0,0 @@
1<script type="text/javascript">
2<!--
3 $(document).ready(function() {
4 $("body").css("cursor", "wait");
5
6 setTimeout(function(){
7 window.location = './?import';
8 }, {{ import.delay }} );
9 });
10//-->
11</script>
12<div class="messages warning">
13 <p>{% trans "Download required for " %} {{ import.recordsDownloadRequired }} {% trans "records" %}.</p>
14 <p>{% trans "Downloading next " %} {{ import.recordsUnderDownload }} {% trans "articles, please wait" %}...</p>
15</div>
diff --git a/src/Wallabag/Wallabag/Resources/views/default/_menu.twig b/src/Wallabag/Wallabag/Resources/views/default/_menu.twig
deleted file mode 100644
index eedf84f1..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/_menu.twig
+++ /dev/null
@@ -1,14 +0,0 @@
1 <ul id="links">
2 <li><a href="./" {% if view == 'home' %}class="current"{% endif %}>{% trans "unread" %}</a></li>
3 <li><a href="./?view=fav" {% if view == 'fav' %}class="current"{% endif %}>{% trans "favorites" %}</a></li>
4 <li><a href="./?view=archive" {% if view == 'archive' %}class="current"{% endif %}>{% trans "archive" %}</a></li>
5 <li><a href="./?view=tags" {% if view == 'tags' %}class="current"{% endif %}>{% trans "tags" %}</a></li>
6 <li><a href="javascript: void(null);" id="bagit">{% trans "save a link" %}</a><span id="bagit-arrow"></span></li>
7 <li><a href="javascript: void(null);" id="search">{% trans "search" %}</a><span id="search-arrow"></span></li>
8 <li><a href="./?view=config" {% if view == 'config' %}class="current"{% endif %}>{% trans "config" %}</a></li>
9 <li><a href="./?view=about" {% if view == 'about' %}class="current"{% endif %}>{% trans "about" %}</a></li>
10 <li><a href="./?logout" title="{% trans "logout" %}">{% trans "logout" %}</a></li>
11 </ul>
12 {% include '_pocheit-form.twig' %}
13 {% include '_search-form.twig' %}
14
diff --git a/src/Wallabag/Wallabag/Resources/views/default/_messages.twig b/src/Wallabag/Wallabag/Resources/views/default/_messages.twig
deleted file mode 100644
index 679aa098..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/_messages.twig
+++ /dev/null
@@ -1 +0,0 @@
1 {{ messages | raw }} \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/default/_pocheit-form.twig b/src/Wallabag/Wallabag/Resources/views/default/_pocheit-form.twig
deleted file mode 100755
index 8c982db0..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/_pocheit-form.twig
+++ /dev/null
@@ -1,8 +0,0 @@
1<div id="bagit-form" class="messages info">
2 <a href="javascript: void(null);" id="bagit-form-close">&nbsp;</a>
3 <form method="get" action="index.php" id="bagit-form-form">
4 <input required placeholder="example.com/article" class="addurl" id="plainurl" name="plainurl" type="url" />
5 <input type="submit" value="{% trans "save link!" %}" />
6 <div id="add-link-result"></div>
7 </form>
8</div>
diff --git a/src/Wallabag/Wallabag/Resources/views/default/_search-form.twig b/src/Wallabag/Wallabag/Resources/views/default/_search-form.twig
deleted file mode 100755
index 0cf6097a..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/_search-form.twig
+++ /dev/null
@@ -1,9 +0,0 @@
1<div id="search-form" class="messages info">
2<form method="get" action="index.php">
3 <p>
4 <input type="hidden" name="view" value="search"></input>
5 <label>{% trans "Search" %}</label> : <input type="text" required placeholder="{% trans "Enter your search here" %}" name="search" id="searchfield" />
6 <input type="submit" value="{% trans "Search" %} !"></input>
7 </p>
8</form>
9</div>
diff --git a/src/Wallabag/Wallabag/Resources/views/default/_sorting.twig b/src/Wallabag/Wallabag/Resources/views/default/_sorting.twig
deleted file mode 100755
index 3ce9b949..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/_sorting.twig
+++ /dev/null
@@ -1,6 +0,0 @@
1{% if entries|length > 1 %}
2 <ul id="sort">
3 <li><a href="./?sort=ia&amp;view={{ view }}{% if searchterm is defined %}&amp;search={{ searchterm }}{% endif %}&amp;id={{ id }}"><img src="{{ poche_url }}themes/{{ theme }}/img/{{ theme }}/top.png" alt="{% trans "by date asc" %}" title="{% trans "by date asc" %}" /></a> {% trans "by date" %} <a href="./?sort=id&amp;view={{ view }}{% if searchterm is defined %}&amp;search={{ searchterm }}{% endif %}&amp;id={{ id }}"><img src="{{ poche_url }}themes/{{ theme }}/img/{{ theme }}/down.png" alt="{% trans "by date desc" %}" title="{% trans "by date desc" %}" /></a></li>
4 <li><a href="./?sort=ta&amp;view={{ view }}{% if searchterm is defined %}&amp;search={{ searchterm }}{% endif %}&amp;id={{ id }}"><img src="{{ poche_url }}themes/{{ theme }}/img/{{ theme }}/top.png" alt="{% trans "by title asc" %}" title="{% trans "by title asc" %}" /></a> {% trans "by title" %} <a href="./?sort=td&amp;view={{ view }}{% if searchterm is defined %}&amp;search={{ searchterm }}{% endif %}&amp;id={{ id }}"><img src="{{ poche_url }}themes/{{ theme }}/img/{{ theme }}/down.png" alt="{% trans "by title desc" %}" title="{% trans "by title desc" %}" /></a></li>
5 </ul>
6{% endif %}
diff --git a/src/Wallabag/Wallabag/Resources/views/default/_top.twig b/src/Wallabag/Wallabag/Resources/views/default/_top.twig
deleted file mode 100755
index 45806f01..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/_top.twig
+++ /dev/null
@@ -1,7 +0,0 @@
1 <header class="w600p center mbm">
2 <h1>
3 {% if view == 'home' %}{% block logo %}<img width="100" height="100" src="{{ poche_url }}themes/baggy/img/logo-other_themes.png" alt="wallabag logo" />{% endblock %}
4 {% else %}<a href="./" title="{% trans "return home" %}" >{{ block('logo') }}</a>
5 {% endif %}
6 </h1>
7 </header>
diff --git a/src/Wallabag/Wallabag/Resources/views/default/about.twig b/src/Wallabag/Wallabag/Resources/views/default/about.twig
deleted file mode 100755
index 50ffd8ef..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/about.twig
+++ /dev/null
@@ -1,74 +0,0 @@
1{% extends "layout.twig" %}
2
3{% block title %}{% trans "About wallabag" %}{% endblock %}
4{% block menu %}
5{% include '_menu.twig' %}
6{% endblock %}
7{% block content %}
8 <h2>{% trans "About wallabag" %}</h2>
9
10 <dl>
11 <dt>{% trans "Project website" %}</dt>
12 <dd><a href="http://www.wallabag.org">http://www.wallabag.org</a></dd>
13
14 <dt>{% trans "Main developer" %}</dt>
15 <dd><a href="mailto:nicolas@loeuillet.org">Nicolas Lœuillet</a> — <a href="http://cdetc.fr">{% trans "website" %}</a></dd>
16
17 <dt>{% trans "Contributors:" %}</dt>
18 <dd><a href="https://github.com/wallabag/wallabag/graphs/contributors">{% trans "on Github" %}</a></dd>
19
20 <dt>{% trans "Bug reports" %}</dt>
21 <dd><a href="http://support.wallabag.org">{% trans "On our support website" %}</a> {% trans "or" %} <a href="https://github.com/wallabag/wallabag/issues">{% trans "on Github" %}</a></dd>
22
23 <dt>{% trans "License" %}</dt>
24 <dd><a href="http://en.wikipedia.org/wiki/MIT_License">MIT</a></dd>
25
26 <dt>{% trans "Version" %}</dt>
27 <dd>{{ constant('WALLABAG') }}</dd>
28 </dl>
29
30 <p>{% trans "wallabag is a read-it-later application: you can save a web page by keeping only content. Elements like ads or menus are deleted." %}</p>
31
32 <h2>{% trans "Helping wallabag" %}</h2>
33
34 <p>{% trans "wallabag is free and opensource. You can help us:" %}</p>
35
36 <dl>
37 <dt><a href="http://www.wallabag.org">{% trans "via Paypal" %}</a></dt>
38
39 <dt><a href="http://www.wallabag.org">{% trans "via Flattr" %}</a></dt>
40 </dl>
41
42 <h2>{% trans "Credits" %}</h2>
43 <dl>
44 <dt>PHP Readability</dt>
45 <dd><a href="https://bitbucket.org/fivefilters/php-readability">https://bitbucket.org/fivefilters/php-readability</a></dd>
46
47 <dt>Full Text RSS</dt>
48 <dd><a href="http://code.fivefilters.org/full-text-rss/src">http://code.fivefilters.org/full-text-rss/src</a></dd>
49
50 <dt>logo by Maylis Agniel</dt>
51 <dd><a href="https://github.com/wallabag/logo">https://github.com/wallabag/logo</a></dd>
52
53 <dt>icons</dt>
54 <dd><a href="http://icomoon.io">http://icomoon.io</a></dd>
55
56 <dt>PHP Simple HTML DOM Parser</dt>
57 <dd><a href="http://simplehtmldom.sourceforge.net/">http://simplehtmldom.sourceforge.net/</a></dd>
58
59 <dt>Session</dt>
60 <dd><a href="https://github.com/tontof/kriss_feed/blob/master/src/class/Session.php">https://github.com/tontof/kriss_feed/blob/master/src/class/Session.php</a></dd>
61
62 <dt>Twig</dt>
63 <dd><a href="http://twig.sensiolabs.org">http://twig.sensiolabs.org</a></dd>
64
65 <dt>Flash messages</dt>
66 <dd><a href="https://github.com/plasticbrain/PHP-Flash-Messages">https://github.com/plasticbrain/PHP-Flash-Messages</a></dd>
67
68 <dt>Pagination</dt>
69 <dd><a href="https://github.com/daveismyname/pagination">https://github.com/daveismyname/pagination</a></dd>
70
71 <dt>PHPePub</dt>
72 <dd><a href="https://github.com/Grandt/PHPePub/">https://github.com/Grandt/PHPePub/</a></dd>
73 </dl>
74{% endblock %}
diff --git a/src/Wallabag/Wallabag/Resources/views/default/config.twig b/src/Wallabag/Wallabag/Resources/views/default/config.twig
deleted file mode 100755
index b7d91937..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/config.twig
+++ /dev/null
@@ -1,188 +0,0 @@
1{% extends "layout.twig" %}
2
3{% block title %}{% trans "config" %}{% endblock %}
4{% block menu %}
5{% include '_menu.twig' %}
6{% endblock %}
7{% block content %}
8 <h2>{% trans "Saving articles" %}</h2>
9 <p>{% trans "There are several ways to save an article:" %} {% trans "(<a href=\"http://doc.wallabag.org/en/User_documentation/Save_your_first_article\" target=\"_blank\" title=\"Documentation\">?</a>)" %}</p>
10 <p>
11 <form method="get" action="index.php">
12 <label class="addurl" for="config_plainurl">{% trans "By filling this field" %}:</label><br>
13 <input required placeholder="example.com/article" class="addurl" id="config_plainurl" name="plainurl" type="url" />
14 <input type="submit" value="{% trans "bag it!" %}" />
15 </form>
16 </p>
17 <h3>Browser Plugins</h3>
18 <ul>
19 <li><a href="https://addons.mozilla.org/firefox/addon/wallabag/" target="_blank">{% trans "Firefox Add-On" %}</a></li>
20 <li><a href="https://chrome.google.com/webstore/detail/wallabag/bepdcjnnkglfjehplaogpoonpffbdcdj" target="_blank">{% trans "Chrome Extension" %}</a></li>
21 </ul>
22 <h3>Mobile Apps</h3>
23 <ul>
24 <li>Android: <a href="https://f-droid.org/app/fr.gaulupeau.apps.InThePoche" target="_blank">{% trans "via F-Droid" %}</a> {% trans " or " %} <a href="https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche" target="_blank">{% trans "via Google Play" %}</a></li>
25 <li>iOS: <a href="https://itunes.apple.com/app/wallabag/id828331015?mt=8" target="_blank">{% trans "download the application" %}</a></li>
26 <li>Windows Phone: <a href="http://www.windowsphone.com/en-us/store/app/wallabag/ff890514-348c-4d0b-9b43-153fff3f7450" target="_blank">{% trans "download the application" %}</a></li>
27 </ul>
28 <h3>{% trans "Bookmarklet" %}</h3>
29 <p>
30 {% trans "Drag &amp; drop this link to your bookmarks bar:" %} <a id="bookmarklet" ondragend="this.click();" href="javascript:if(top['bookmarklet-url@wallabag.org']){top['bookmarklet-url@wallabag.org'];}else{(function(){var%20url%20=%20location.href%20||%20url;window.open('{{ poche_url }}?action=add&url='%20+%20btoa(url),'_self');})();void(0);}">{% trans "bag it!" %}</a>
31 </p>
32
33 <h2>{% trans "Feeds" %}</h2>
34 {% if token == '' %}
35 <p>{% trans "Your feed token is currently empty and must first be generated to enable feeds. Click <a href='?feed&amp;action=generate'>here to generate it</a>." %}</p>
36 {% else %}
37 <ul>
38 <li><a href="?feed&amp;type=home&amp;user_id={{ user_id }}&amp;token={{ token }}" target="_blank">{% trans "Unread feed" %}</a></li>
39 <li><a href="?feed&amp;type=fav&amp;user_id={{ user_id }}&amp;token={{ token }}" target="_blank">{% trans "Favorites feed" %}</a></li>
40 <li><a href="?feed&amp;type=archive&amp;user_id={{ user_id }}&amp;token={{ token }}" target="_blank">{% trans "Archive feed" %}</a></li>
41 </ul>
42 <p class="more-info">
43 {% trans "Your token:" %} <strong>{{token}}</strong><br>
44 {% trans "Your user id:" %} <strong>{{user_id}}</strong><br>
45 {% trans "You can regenerate your token: <a href='?feed&amp;action=generate'>generate!</a>." %}
46 </p>
47 {% endif %}
48
49 <h2>{% trans "Change your theme" %}</h2>
50 <form method="post" action="?updatetheme" name="changethemeform">
51 <fieldset class="w500p inline">
52 <div class="row">
53 <label class="col w150p" for="theme">{% trans "Theme:" %}</label>
54 <select class="col" id="theme" name="theme">
55 {% for key, theme in themes %}
56 <option value="{{ key }}" {{ theme.current ? 'selected' : '' }}>{{ theme.name }}</option>
57 {% endfor %}
58 </select>
59 </div>
60 <div class="row mts txtcenter">
61 <button class="bouton" type="submit" tabindex="4">{% trans "Update" %}</button>
62 </div>
63 </fieldset>
64 <input type="hidden" name="returnurl" value="{{ referer }}">
65 <input type="hidden" name="token" value="{{ token }}">
66 </form>
67
68 <h2>{% trans "Change your language" %}</h2>
69 <form method="post" action="?updatelanguage" name="changelanguageform">
70 <fieldset class="w500p inline">
71 <div class="row">
72 <label class="col w150p" for="language">{% trans "Language:" %}</label>
73 <select class="col" id="language" name="language">
74 {% for language in languages %}
75 <option value="{{ language.value }}" {{ language.current ? 'selected' : '' }}>{{ language.name }}</option>
76 {% endfor %}
77 </select>
78 </div>
79 <div class="row mts txtcenter">
80 <button class="bouton" type="submit" tabindex="4">{% trans "Update" %}</button>
81 </div>
82 </fieldset>
83 <input type="hidden" name="returnurl" value="{{ referer }}">
84 <input type="hidden" name="token" value="{{ token }}">
85 </form>
86
87 <h2><a name="import"></a>{% trans "Import" %}</h2>
88 <p>{% trans "You can import your Pocket, Readability, Instapaper, Wallabag or any data in appropriate json or html format." %}</p>
89 <p>{% trans "Please select export file on your computer and press \"Import\" button below. Wallabag will parse your file, insert all URLs and start fetching of articles if required." %}</p>
90 <form method="post" action="?import" name="uploadfile" enctype="multipart/form-data">
91 <fieldset class="w500p">
92 <div class="row">
93 <label class="col w150p" for="file">{% trans "File:" %}</label>
94 <input class="col" type="file" id="file" name="file" tabindex="4" required="required">
95 </div>
96 <div class="row mts txtcenter">
97 <button class="bouton" type="submit" tabindex="4">{% trans "Import" %}</button>
98 </div>
99 </fieldset>
100 </form>
101 <p><a href="?import">{% trans "You can click here to fetch content for articles with no content." %}</a></p>
102 <p class="more-info">{% trans "Fetching process is controlled by two constants in your config file: IMPORT_LIMIT (how many articles are fetched at once) and IMPORT_DELAY (delay between fetch of next batch of articles)." %}</p>
103
104 <h2>{% trans "Export your wallabag data" %}</h2>
105 <p><a href="?export" target="_blank">{% trans "Export JSON" %}</a><br>
106 <span class="more-info">Data will be exported in a single JSON file.</span></p>
107
108 <h2>{% trans "Fancy an E-Book ?" %}</h2>
109 <p>{% trans "Click to get all your articles in one ebook :" %}
110 <ul>
111 <li><a href="./?epub&amp;method=all" title="Generate ePub file">ePub 3</a></li>
112 <li><a href="./?mobi&amp;method=all" title="Generate Mobi file">Mobi</a></li>
113 <li><a href="./?pdf&amp;method=all" title="Generate PDF file">PDF</a></li>
114 </ul>
115 </p>
116
117 <span class="more-info">{% trans "This can <b>take a while</b> and can <b>even fail</b> if you have too many articles, depending on your server configuration." %}</span></p>
118
119 <h2><a name="cache"></a>{% trans "Cache" %}</h2>
120 <p><a href="?empty-cache">{% trans "Delete Cache" %}</a><br>
121 <span class="more-info">Deleting the cache may help with display or other problems.</span></p>
122
123 {% if http_auth == 0 %}
124 <h2>{% trans "Change your password" %}</h2>
125 <form method="post" action="?config" name="loginform">
126 <fieldset class="w500p">
127 <div class="row">
128 <label class="col w150p" for="password">{% trans "New password:" %}</label>
129 <input class="col" type="password" id="password" name="password" placeholder="{% trans "Password" %}" tabindex="2">
130 </div>
131 <div class="row">
132 <label class="col w150p" for="password_repeat">{% trans "Repeat your new password:" %}</label>
133 <input class="col" type="password" id="password_repeat" name="password_repeat" placeholder="{% trans "Password" %}" tabindex="3">
134 </div>
135 <div class="row mts txtcenter">
136 <button class="bouton" type="submit" tabindex="4">{% trans "Update" %}</button>
137 </div>
138 </fieldset>
139 <input type="hidden" name="returnurl" value="{{ referer }}">
140 <input type="hidden" name="token" value="{{ token }}">
141 </form>
142 {% endif %}
143
144 <h2>{% trans 'Add user' %}</h2>
145 <form method="post" action="?newuser">
146 <fieldset class="w500p">
147 <div class="row">
148 <label class="col w150p" for="newusername">{% trans 'Login for new user' %}</label>
149 <input class="col" type="text" id="newusername" name="newusername" placeholder="{% trans 'Login' %}" required>
150 </div>
151 <div class="row">
152 <label class="col w150p" for="password4newuser">{% trans "Password for new user" %}</label>
153 <input class="col" type="password" id="password4newuser" name="password4newuser" placeholder="{% trans 'Password' %}" required>
154 </div>
155 <div class="row">
156 <label class="col w150p" for="newuseremail">{% trans 'Email for new user (not required)' %}</label>
157 <input class="col" type="email" id="newuseremail" name="newuseremail" placeholder="{% trans 'Email' %}">
158 </div>
159 <div class="row mts txtcenter">
160 <button type="submit">{% trans "Add user" %}</button>
161 </div>
162 </fieldset>
163 </form>
164
165 <h2>{% trans "Delete account" %}</h2>
166 {% if not only_user %}<form method="post" action="?deluser">
167 <p>{% trans "You can delete your account by entering your password and validating." %}<br /><b>{% trans "Be careful, data will be erased forever (that is a very long time)." %}</b></p>
168 <fieldset class="w500p">
169 <div class="row">
170 <label class="col w150p" for="password4deletinguser">{% trans "Type here your password" %}</label>
171 <input class="col" type="password" id="password4deletinguser" name="password4deletinguser" placeholder="{% trans "Password" %}">
172 </div>
173 <div class="row mts txtcenter">
174 <button type="submit">{% trans "Delete account" %}</button>
175 </div>
176 </form>
177 {% else %}<p>{% trans "You are the only user, you cannot delete your own account." %}</p>
178 <p>{% trans "To completely remove wallabag, delete the wallabag folder on your web server (and eventual databases)." %}</p>{% endif %}
179
180 <h2>{% trans "Upgrading wallabag" %}</h2>
181 <ul>
182 <li>{% trans "Installed version" %}: <strong>{{ constant('WALLABAG') }}</strong></li>
183 <li>{% trans "Latest stable version" %}: {{ prod }}. {% if compare_prod == -1 %}<strong><a href="http://wallabag.org/">{% trans "A more recent stable version is available." %}</a></strong>{% else %}{% trans "You are up to date." %}{% endif %} ({% trans "Last check:" %} {{ check_time_prod }})</li>
184 {% if constant('DEBUG_POCHE') == 1 %}<li>{% trans "Latest dev version" %}: {{ dev }}. {% if compare_dev == -1 %}<strong><a href="http://wallabag.org/">{% trans "A more recent development version is available." %}</a></strong>{% else %}{% trans "You are up to date." %}{% endif %} ({% trans "Last check:" %} {{ check_time_dev }}){% endif %}</li>
185 </ul>
186 <p class="more-info">{% trans "You can clear cache to check the latest release." %}</p>
187
188{% endblock %}
diff --git a/src/Wallabag/Wallabag/Resources/views/default/edit-tags.twig b/src/Wallabag/Wallabag/Resources/views/default/edit-tags.twig
deleted file mode 100755
index c29427e0..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/edit-tags.twig
+++ /dev/null
@@ -1,35 +0,0 @@
1{% extends "layout.twig" %}
2{% block title %}edit tags{% endblock %}
3{% block menu %}
4{% include '_menu.twig' %}
5{% endblock %}
6{% block content %}
7
8<script src="{{ poche_url }}themes/_global/js/jquery-ui-1.10.4.custom.min.js"></script>
9<script src="{{ poche_url }}themes/_global/js/autoCompleteTags.js"></script>
10<link rel="stylesheet" href="{{ poche_url }}themes/_global/css/jquery-ui-1.10.4.custom.min.css" media="all">
11
12<div id="article">
13 <header class="mbm">
14 <h1>{{ entry.title|raw }}</h1>
15 </header>
16</div>
17
18{% if tags is empty %}
19{% trans "no tags" %}
20{% endif %}
21<ul>
22{% for tag in tags %}<li>{{ tag.value }} <a href="./?action=remove_tag&amp;tag_id={{ tag.id }}&amp;id={{ entry_id }}">✘</a></li>{% endfor %}
23</ul>
24<form method="post" action="./?action=add_tag" id="editTags">
25 <input type="hidden" name="entry_id" value="{{ entry_id }}" />
26 <label for="value">{% trans "Add tags:" %}</label>
27 <input type="text" placeholder="{% trans "interview" %}, {% trans "editorial" %}, {% trans "video" %}" id="value" name="value" required="required" />
28 <input type="submit" value="Tag" />
29 <p>{% trans "Start typing for auto complete." %}<br>
30 {% trans "You can enter multiple tags, separated by commas." %}</p>
31
32</form>
33<br>
34<a href="./?view=view&id={{ entry_id }}">&laquo; {% trans "return to article" %}</a>
35{% endblock %}
diff --git a/src/Wallabag/Wallabag/Resources/views/default/error.twig b/src/Wallabag/Wallabag/Resources/views/default/error.twig
deleted file mode 100644
index 528a0985..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/error.twig
+++ /dev/null
@@ -1,14 +0,0 @@
1{% extends "layout.twig" %}
2{% block title %}{% trans "plop" %}{% endblock %}
3{% block content %}
4 <h1>Errors</h1>
5 <ol>
6 {% for message in msg %}
7 <li>{{message}}</li>
8 {% endfor %}
9 </ol>
10 <p>Don't forget <a href="http://doc.wallabag.org/">the documentation</a>.</p>
11 <p>
12 {% trans "You can <a href='wallabag_compatibility_test.php'>check your configuration here</a>." %}
13 </p>
14{% endblock %}
diff --git a/src/Wallabag/Wallabag/Resources/views/default/export.twig b/src/Wallabag/Wallabag/Resources/views/default/export.twig
deleted file mode 100644
index 4adb9540..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/export.twig
+++ /dev/null
@@ -1 +0,0 @@
1{{ export }} \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/default/home.twig b/src/Wallabag/Wallabag/Resources/views/default/home.twig
deleted file mode 100755
index b9000559..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/home.twig
+++ /dev/null
@@ -1,82 +0,0 @@
1{% extends "layout.twig" %}
2{% block title %}
3{% if view == 'fav' %}
4{% trans "favoris" %}
5{% elseif view == 'archive' %}
6{% trans "archive" %}
7{% else %}
8{% trans "unread" %}
9{% endif %}
10{% endblock %}
11{% block menu %}
12{% include '_menu.twig' %}
13{% endblock %}
14{% block precontent %}
15
16{% include '_sorting.twig' %}
17{% endblock %}
18{% block content %}
19
20 {% if includeImport %}
21 {% include '_import.twig' %}
22 {% endif %}
23
24 {% if tag %}
25 <h3>{% trans "Tag" %}: <b>{{ tag.value }}</b></h3>
26 {% endif %}
27
28 {% if entries is empty %}
29 <div class="messages warning"><p>{% trans "No articles found." %}</p></div>
30 {% else %}
31 {% block pager %}
32 {% if nb_results > 1 %}
33 <div class="results">
34 <div class="nb-results">{{ nb_results }} {% trans "results" %}{% if searchterm is defined %}{% trans " found for « " %} {{ searchterm }} »{% endif %}</div>
35 {{ page_links | raw }}
36 </div>
37 {% elseif nb_results == 1 %}
38 {% if searchterm is defined %}
39 <div class="results">
40 <div class="nb-results">{% trans "Only one result found for " %} « {{ searchterm }} »</div>
41 </div>
42 {% endif %}
43 {% endif %}
44 {% endblock %}
45 {% for entry in entries %}
46 <div id="entry-{{ entry.id|e }}" class="entrie">
47 <h2><a href="index.php?view=view&amp;id={{ entry.id|e }}">{{ entry.title|raw }}</a></h2>
48 <ul class="tools">
49 <li><a title="{% trans "Toggle mark as read" %}" class="tool {% if entry.is_read == 0 %}archive-off{% else %}archive{% endif %}" href="./?action=toggle_archive&amp;id={{ entry.id|e }}"><span>{% trans "Toggle mark as read" %}</span></a></li>
50 <li><a title="{% trans "toggle favorite" %}" class="tool {% if entry.is_fav == 0 %}fav-off{% else %}fav{% endif %}" href="./?action=toggle_fav&amp;id={{ entry.id|e }}"><span>{% trans "toggle favorite" %}</span></a></li>
51 <li><a title="{% trans "delete" %}" class="tool delete" href="./?action=delete&amp;id={{ entry.id|e }}"><span>{% trans "delete" %}</span></a></li>
52 <li><a href="{{ entry.url|e }}" target="_blank" title="{% trans "original" %} : {{ entry.title|e }}" class="tool link"><span>{{ entry.url | e | getDomain }}</span></a></li>
53 <li><a target="_blank" title="{% trans "estimated reading time:" %} {{ entry.content| getReadingTime }} min" class="reading-time"><span>{{ entry.content| getReadingTime }} min</span></a></li>
54 </ul>
55 <p>{{ entry.content|striptags|slice(0, 300) }}...</p>
56 </div>
57 {% endfor %}
58
59 {{ block('pager') }}
60 {% if view == 'home' %}{% if nb_results > 1 %}<p><a title="{% trans "Mark all the entries as read" %}" href="./?action=archive_all">{% trans "Mark all the entries as read" %}</a></p>{% endif %}{% endif %}
61 {% if searchterm is defined %}<a title="{% trans "Tag these results as" %} {{ searchterm }}" href="./?action=add_tag&search={{ searchterm }}">{% trans "Tag these results as" %} {{ searchterm }}</a>{% endif %}<br />
62
63 {% if searchterm is defined %}<a title="{% trans "Delete results matching" %} {{ searchterm }}" href="./?action=delete&search={{ searchterm }}">{% trans "Delete results matching" %} {{ searchterm }}</a>{% endif %}<br />
64
65 {% if tag %}<a title="{% trans "Mark all articles from this tag as read" %}" href="./?action=toggle_archive&amp;tag_id={{ tag.id }}">{% trans "Mark all articles from this tag as read" %}</a><br />{% endif %}
66
67 {% if tag %}
68 {% if constant('EPUB') == 1 %}<a title="{% trans "Download the articles from this tag in an epub file" %}" href="./?epub&amp;method=tag&amp;value={{ tag.value }}">{% trans "Download as ePub3" %}</a>{% endif %}
69 {% if constant('MOBI') == 1 %}<a title="{% trans "Download the articles from this tag in a mobi file" %}" href="./?mobi&amp;method=tag&amp;value={{ tag.value }}">{% trans "Download as Mobi" %}</a>{% endif %}
70 {% if constant('PDF') == 1 %}<a title="{% trans "Download the articles from this tag in a pdf file" %}" href="./?pdf&amp;method=tag&amp;value={{ tag.value }}">{% trans "Download as PDF" %}</a>{% endif %}
71 {% elseif searchterm is defined %}
72 {% if constant('EPUB') == 1 %}<a title="{% trans "Download the articles from this search in an epub" %}" href="./?epub&amp;method=search&amp;value={{ searchterm }}">{% trans "Download as ePub3" %}</a>{% endif %}
73 {% if constant('MOBI') == 1 %}<a title="{% trans "Download the articles from this search in a mobi file" %}" href="./?mobi&amp;method=search&amp;value={{ searchterm }}">{% trans "Download as Mobi" %}</a>{% endif %}
74 {% if constant('PDF') == 1 %}<a title="{% trans "Download the articles from this search in a pdf file" %}" href="./?pdf&amp;method=search&amp;value={{ searchterm }}">{% trans "Download as PDF" %}</a>{% endif %}
75 {% else %}
76 {% if constant('EPUB') == 1 %}<a title="{% trans "Download the articles from this category in an epub" %}" href="./?epub&amp;method=category&amp;value={{ view }}">{% trans "Download as ePub3" %}</a>{% endif %}
77 {% if constant('MOBI') == 1 %}<a title="{% trans "Download the articles from this category in a mobi file" %}" href="./?mobi&amp;method=category&amp;value={{ view }}">{% trans "Download as Mobi" %}</a>{% endif %}
78 {% if constant('PDF') == 1 %}<a title="{% trans "Download the articles from this category in a pdf file" %}" href="./?pdf&amp;method=category&amp;value={{ view }}">{% trans "Download as PDF" %}</a>{% endif %}
79 {% endif %}
80
81 {% endif %}
82{% endblock %}
diff --git a/src/Wallabag/Wallabag/Resources/views/default/install.twig b/src/Wallabag/Wallabag/Resources/views/default/install.twig
deleted file mode 100644
index c89c7e47..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/install.twig
+++ /dev/null
@@ -1,28 +0,0 @@
1{% extends "layout.twig" %}
2{% block title %}{% trans "installation" %}{% endblock %}
3{% block content %}
4 <form method="post" action="?install" name="loginform">
5 <fieldset class="w500p center">
6 <h2 class="mbs txtcenter">{% trans "install your wallabag" %}</h2>
7 <p>
8 {% trans "wallabag is still not installed. Please fill the below form to install it. Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation on wallabag website</a>." %}
9 </p>
10 <p class="row">
11 <label class="col w150p" for="login">{% trans "Login" %}</label>
12 <input class="col" type="text" id="login" name="login" placeholder="Login" tabindex="1" autofocus />
13 </p>
14 <p class="row">
15 <label class="col w150p" for="password">{% trans "Password" %}</label>
16 <input class="col" type="password" id="password" name="password" placeholder="Password" tabindex="2">
17 </p>
18 <p class="row">
19 <label class="col w150p" for="password_repeat">{% trans "Repeat your password" %}</label>
20 <input class="col" type="password" id="password_repeat" name="password_repeat" placeholder="Password" tabindex="3">
21 </p>
22 <p class="row mts txtcenter">
23 <button class="bouton" type="submit" tabindex="4">{% trans "Install" %}</button>
24 </p>
25 </fieldset>
26 <input type="hidden" name="token" value="{{ token }}">
27 </form>
28{% endblock %}
diff --git a/src/Wallabag/Wallabag/Resources/views/default/layout.twig b/src/Wallabag/Wallabag/Resources/views/default/layout.twig
deleted file mode 100644
index dfebc3ea..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/layout.twig
+++ /dev/null
@@ -1,31 +0,0 @@
1<!DOCTYPE html>
2<!--[if lte IE 6]><html class="no-js ie6 ie67 ie678" lang="{{ lang }}"><![endif]-->
3<!--[if lte IE 7]><html class="no-js ie7 ie67 ie678" lang="{{ lang }}"><![endif]-->
4<!--[if IE 8]><html class="no-js ie8 ie678" lang="{{ lang }}"><![endif]-->
5<!--[if gt IE 8]><html class="no-js" lang="{{ lang }}"><![endif]-->
6<html lang="{{ lang }}">
7 <head>
8 <meta name="viewport" content="initial-scale=1.0">
9 <meta charset="utf-8">
10 <!--[if IE]>
11 <meta http-equiv="X-UA-Compatible" content="IE=10">
12 <![endif]-->
13 <title>{% block title %}{% endblock %} - wallabag</title>
14{% include '_head.twig' %}
15{% include '_bookmarklet.twig' %}
16 </head>
17 <body>
18 {% include '_top.twig' %}
19 <div id="main">
20 {% block menu %}{% endblock %}
21 {% block precontent %}{% endblock %}
22 {% block messages %}
23 {% include '_messages.twig' %}
24 {% endblock %}
25 <div id="content" class="w600p center">
26 {% block content %}{% endblock %}
27 </div>
28 </div>
29{% include '_footer.twig' %}
30 </body>
31</html> \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/default/login.twig b/src/Wallabag/Wallabag/Resources/views/default/login.twig
deleted file mode 100644
index b9f8b497..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/login.twig
+++ /dev/null
@@ -1,34 +0,0 @@
1{% extends "layout.twig" %}
2
3{% block title %}{% trans "login to your wallabag" %}{% endblock %}
4{% block content %}
5 {% if http_auth == 0 %}
6 <form method="post" action="?login" name="loginform">
7 <fieldset class="w500p center">
8 <h2 class="mbs txtcenter">{% trans "Login to wallabag" %}</h2>
9 {% if constant('MODE_DEMO') == 1 %}<p>{% trans "you are in demo mode, some features may be disabled." %}</p>{% endif %}
10 <div class="row">
11 <label class="col w150p" for="login">{% trans "Username" %}</label>
12 <input class="col" type="text" id="login" name="login" placeholder="Login" tabindex="1" autofocus {% if constant('MODE_DEMO') == 1 %}value="poche"{% endif %} />
13 </div>
14
15 <div class="row">
16 <label class="col w150p" for="password">{% trans "Password" %}</label>
17 <input class="col" type="password" id="password" name="password" placeholder="Password" tabindex="2" {% if constant('MODE_DEMO') == 1 %}value="poche"{% endif %} />
18 </div>
19 <div class="row">
20 <label class="col w150p" for="longlastingsession">{% trans "Stay signed in" %}</label>
21 <div class="col">
22 <input type="checkbox" id="longlastingsession" name="longlastingsession" tabindex="3">
23 <small class="inbl">{% trans "(Do not check on public computers)" %}</small>
24 </div>
25 </div>
26 <div class="row mts txtcenter">
27 <button class="bouton" type="submit" tabindex="4">{% trans "Sign in" %}</button>
28 </div>
29 </fieldset>
30 <input type="hidden" name="returnurl" value="{{ referer }}">
31 <input type="hidden" name="token" value="{{ token }}">
32 </form>
33 {% endif %}
34{% endblock %}
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/animated-overlay.gif b/src/Wallabag/Wallabag/Resources/views/default/public/css/images/animated-overlay.gif
deleted file mode 100644
index d441f75e..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/animated-overlay.gif
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_flat_0_aaaaaa_40x100.png b/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_flat_0_aaaaaa_40x100.png
deleted file mode 100644
index 9f10cb65..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_flat_0_aaaaaa_40x100.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_flat_75_ffffff_40x100.png b/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_flat_75_ffffff_40x100.png
deleted file mode 100644
index b89b914b..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_flat_75_ffffff_40x100.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_glass_55_fbf9ee_1x400.png b/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_glass_55_fbf9ee_1x400.png
deleted file mode 100644
index 780d3ffd..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_glass_55_fbf9ee_1x400.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_glass_65_ffffff_1x400.png b/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_glass_65_ffffff_1x400.png
deleted file mode 100644
index da53255b..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_glass_65_ffffff_1x400.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_glass_75_dadada_1x400.png b/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_glass_75_dadada_1x400.png
deleted file mode 100644
index f6306608..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_glass_75_dadada_1x400.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_glass_75_e6e6e6_1x400.png b/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_glass_75_e6e6e6_1x400.png
deleted file mode 100644
index 7d347065..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_glass_75_e6e6e6_1x400.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_glass_95_fef1ec_1x400.png b/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_glass_95_fef1ec_1x400.png
deleted file mode 100644
index 533c4900..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_glass_95_fef1ec_1x400.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png
deleted file mode 100644
index bf3a9481..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-icons_222222_256x240.png b/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-icons_222222_256x240.png
deleted file mode 100644
index c1cb1170..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-icons_222222_256x240.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-icons_2e83ff_256x240.png b/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-icons_2e83ff_256x240.png
deleted file mode 100644
index 84b601bf..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-icons_2e83ff_256x240.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-icons_454545_256x240.png b/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-icons_454545_256x240.png
deleted file mode 100644
index b6db1acd..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-icons_454545_256x240.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-icons_888888_256x240.png b/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-icons_888888_256x240.png
deleted file mode 100644
index feea0e20..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-icons_888888_256x240.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-icons_cd0a0a_256x240.png b/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-icons_cd0a0a_256x240.png
deleted file mode 100644
index ed5b6b09..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/css/images/ui-icons_cd0a0a_256x240.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/css/knacss.css b/src/Wallabag/Wallabag/Resources/views/default/public/css/knacss.css
deleted file mode 100644
index ca0696b7..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/css/knacss.css
+++ /dev/null
@@ -1 +0,0 @@
1html{font-size:62.5%}body{font-family:"Century Gothic",helvetica,arial,sans-serif;font-size:1.4em;line-height:1.5;color:#000;background-color:#FFF}p,ul,ol,dl,blockquote,pre,td,th,label,textarea,caption,details,figure,hgroup{margin:.75em 0 0;font-size:1em;line-height:1.5}h1,.h1-like{margin:.8077em 0 0 0;font-size:1.8571em;font-weight:normal;line-height:1.6154em}h2,.h2-like{margin:.875em 0 0 0;font-size:1.7143em;font-weight:normal;line-height:1.75em}h3,.h3-like{margin:.9545em 0 0 0;font-size:1.5714em;font-weight:normal;line-height:1.909em}h4,.h4-like{margin:1.05em 0 0 0;font-size:1.4286em;font-weight:normal;line-height:1.05em}h5,.h5-like{margin:1.1667em 0 0 0;font-size:1.2857em;font-weight:normal;line-height:1.1667em}h6,.h6-like{margin:1.3125em 0 0 0;font-size:1.1429em;font-weight:normal;line-height:1.3125em}.smaller{font-size:.7143em}.small{font-size:.8571em}.big{font-size:1.1429em}.bigger{font-size:1.2857em}.biggest{font-size:1.4286em}html,body,textarea,figure,label{margin:0;padding:0}ul,ol{padding-left:2em}code,pre,samp,kbd{font-family:consolas,'DejaVu Sans Mono',courier,monospace;line-height:1em;white-space:pre-wrap}code,kbd,mark{border-radius:2px}em{font-style:italic}strong{font-weight:bold}kbd{padding:0 2px;border:1px solid #999}code{padding:2px 4px;color:#B11;background:rgba(0,0,0,.04)}mark{padding:2px 4px;background:#FF0}table{margin-bottom:1.5em}p:first-child,ul:first-child,ol:first-child,dl:first-child,blockquote:first-child,pre:first-child,h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0}li p,li ul,li ol{margin-top:0;margin-bottom:0}img,table,td,blockquote,code,pre,textarea,input,video{max-width:100%}div,textarea,table,td,th,code,pre,samp{word-wrap:break-word;-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;-o-hyphens:auto;hyphens:auto}img{height:auto;vertical-align:middle}#map_canvas img,.gmnoprint img{max-width:none}a img{border:0}body > script{display:none !important}.skip-links{position:absolute}.skip-links a{position:absolute;left:-7000px;padding:.5em;text-decoration:none;color:#FFF;background:#000}.skip-links a:focus{position:static}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mod,.item{overflow:hidden}.row{display:table;width:100%;table-layout:fixed}.row > *,.col{display:table-cell;vertical-align:top}.clear,.line,.row{clear:both}.clearfix:after,.line:after,.mod:after{content:"";display:table;clear:both}.left{float:left}img.left{margin-right:1em}.right{float:right}img.right{margin-left:1em}img.left,img.right{margin-bottom:5px}.center{margin-right:auto;margin-left:auto}.txtleft{text-align:left}.txtright{text-align:right}.txtcenter{text-align:center}.inbl{display:inline-block;margin-right:-.25em;vertical-align:top}.w10{width:10%}.w20{width:20%}.w25{width:25%}.w30{width:30%}.w33{width:33.333%}.w40{width:40%}.w50{width:50%}.w60{width:60%}.w66{width:66.666%}.w70{width:70%}.w75{width:75%}.w80{width:80%}.w90{width:90%}.w100{width:100%}.w50p{width:50px}.w100p{width:100px}.w150p{width:150px}.w200p{width:200px}.w300p{width:300px}.w400p{width:400px}.w500p{width:500px}.w600p{width:600px}.w700p{width:700px}.w800p{width:800px}.w960p{width:960px}.mw960p{max-width:960px}.m-reset,.ma0{margin:0 !important}.p-reset,.pa0{padding:0 !important}.ma1,.mas{margin:10px !important}.ma2,.mam{margin:20px !important}.ma3,.mal{margin:30px !important}.pa1,.pas{padding:10px}.pa2,.pam{padding:20px}.pa3,.pal{padding:30px}.mt0,.mtn{margin-top:0 !important}.mt1,.mts{margin-top:10px !important}.mt2,.mtm{margin-top:20px !important}.mt3,.mtl{margin-top:30px !important}.mr0,.mrn{margin-right:0}.mr1,.mrs{margin-right:10px}.mr2,.mrm{margin-right:20px}.mr3,.mrl{margin-right:30px}.mb0,.mbn{margin-bottom:0 !important}.mb1,.mbs{margin-bottom:10px !important}.mb2,.mbm{margin-bottom:20px !important}.mb3,.mbl{margin-bottom:30px !important}.ml0,.mln{margin-left:0}.ml1,.mls{margin-left:10px}.ml2,.mlm{margin-left:20px}.ml3,.mll{margin-left:30px}.pt0,.ptn{padding-top:0}.pt1,.pts{padding-top:10px}.pt2,.ptm{padding-top:20px}.pt3,.ptl{padding-top:30px}.pr0,.prn{padding-right:0}.pr1,.prs{padding-right:10px}.pr2,.prm{padding-right:20px}.pr3,.prl{padding-right:30px}.pb0,.pbn{padding-bottom:0}.pb1,.pbs{padding-bottom:10px}.pb2,.pbm{padding-bottom:20px}.pb3,.pbl{padding-bottom:30px}.pl0,.pln{padding-left:0}.pl1,.pls{padding-left:10px}.pl2,.plm{padding-left:20px}.pl3,.pll{padding-left:30px}.visually-hidden{position:absolute;left:-7000px;overflow:hidden}[dir=rtl] .visually-hidden{right:-7000px;left:auto}.desktop-hidden{display:none}form,fieldset{border:none}input,button,select,label,.btn{font-family:inherit;vertical-align:middle}textarea{font-family:inherit;resize:vertical}.ie67 .clearfix,.ie67 .line,.ie67 .mod,.ie67 .row,.ie67 .col{zoom:1}.ie67 .btn,.ie67 .col,.ie67 .inbl{display:inline;zoom:1}.ie8 img{width:auto}@media print{p,blockquote{orphans:2;widows:2}blockquote,ul,ol{page-break-inside:avoid}h1,h2,h3,caption{page-break-after:avoid}}@media(orientation:landscape)and(max-device-width:768px){html,body{-webkit-text-size-adjust:100%}}[class*=grid] > *{float:left}[class*=grid] > * + *{margin-left:2%}.grid2 > *{width:49%}.grid3 > *{width:32%}.grid4 > *{width:23.5%}.grid5 > *{width:18.4%}.grid6 > *{width:15%}.grid2-1 > *:first-child,.grid1-2 > * + *{width:66%}.grid1-2 > *:first-child,.grid2-1 > * + *{width:32%}.grid1-3 > *:first-child,.grid3-1 > * + *{width:23.5%}.grid3-1 > *:first-child,.grid1-3 > * + *{width:74.5%}table,.table{max-width:100%;border-collapse:collapse;table-layout:fixed;vertical-align:top}table{width:100%}.table{display:table}caption{padding:10px;font-style:italic;color:#555}table{border:1px solid #CCC}tr > * + *{border-left:1px solid #CCC}th,td{padding:.3em .8em;border-bottom:1px solid #CCC;text-align:left}td{color:#333}.alternate{border:0}.alternate tbody{border:1px solid #CCC}.alternate thead tr > * + *{border-left:0}.alternate tbody tr > * + *{border-left:1px solid #CCC}.alternate-vert{border:0;border-right:1px solid #CCC}.alternate-vert tr >:first-child{border-bottom:0}.alternate-vert tr > * + *{border-top:1px solid #CCC}.striped tbody tr:nth-child(odd){background:#EEE;background:rgba(0,0,0,.05)}.striped-vert tr >:first-child{background:#EEE;background:rgba(0,0,0,.05)}.btn{display:inline-block}label{display:inline-block;vertical-align:middle;cursor:pointer}legend{border:0;white-space:normal}button,input,select{margin:0;font-family:"Century Gothic",helvetica,arial,sans-serif;font-size:100%;vertical-align:middle}textarea{min-height:5em;overflow:auto;font-size:1.75em;vertical-align:top;resize:vertical}}ol.styled{counter-reset:styled}ol.styled > li{counter-increment:styled;margin-bottom:.3em;list-style-type:none}ol.styled > li:before{content:counter(styled);display:inline-block;width:1em;height:1em;margin-right:.4em;padding:2px;border-radius:50%;text-align:center;text-indent:-.1em;font-size:.9em;line-height:1;vertical-align:middle;color:#FFF;background:rgba(0,0,0,.5)}@media(min-width:1280px){.large-hidden,.tablet-hidden{display:none !important}.large-visible{display:block !important}.large-no-float{float:none}.large-inbl{display:inline-block;float:none;vertical-align:top}.large-row{display:table;width:100% !important;table-layout:fixed}.large-col{display:table-cell;vertical-align:top}.large-w25{width:25% !important}.large-w33{width:33.3333% !important}.large-w50{width:50% !important}.large-w66{width:66.6666% !important}.large-w75{width:75% !important}.large-w100{display:block !important;float:none !important;clear:none !important;width:auto !important;margin-right:0 !important;margin-left:0 !important;border:0}.large-ma0,.large-man{margin:0 !important}}@media(max-width:768px){.w60,.w66,.w70,.w75,.w80,.w90,.w100,.w600p,.w700p,.w800p,.w960p,.mw960p,.medium-wauto{width:auto}.medium-hidden,.tablet-hidden{display:none !important}.medium-visible{display:block !important}.medium-no-float{float:none}.medium-inbl{display:inline-block;float:none;vertical-align:top}.medium-row{display:table;width:100% !important;table-layout:fixed}.medium-col{display:table-cell;vertical-align:top}.medium-w25{width:25% !important}.medium-w33{width:33.3333% !important}.medium-w50{width:50% !important}.medium-w66{width:66.6666% !important}.medium-w75{width:75% !important}.medium-w100{display:block !important;float:none !important;clear:none !important;width:auto !important;margin-right:0 !important;margin-left:0 !important;border:0}.medium-ma0,.medium-man{margin:0 !important}.grid4 > *{width:49% !important}.grid4 >:first-child + * + *{margin-left:0 !important}.grid6 > *{width:32% !important}.grid6 >:first-child + * + * + *{margin-left:0 !important}}@media(max-width:640px){.mod,.item,.col,fieldset{display:block !important;float:none !important;clear:none !important;width:auto !important;margin-right:0 !important;margin-left:0 !important;border:0}.w30,.w33,.w40,.w50,.w300p,.w400p,.w500p{width:auto}.row{display:block !important;width:100% !important}.tiny-hidden,.phone-hidden{display:none !important}.tiny-visible{display:block !important}.tiny-no-float{float:none}.tiny-inbl{display:inline-block;float:none;vertical-align:top}.tiny-row{display:table;width:100% !important;table-layout:fixed}.tiny-col{display:table-cell;vertical-align:top}th,td{display:block !important;width:auto !important;text-align:left !important}thead{display:none}.tiny-w25{width:25% !important}.tiny-w33{width:33.3333% !important}.tiny-w50{width:50% !important}.tiny-w66{width:66.6666% !important}.tiny-w75{width:75% !important}.tiny-w100{display:block !important;float:none !important;clear:none !important;width:auto !important;margin-right:0 !important;margin-left:0 !important;border:0}.tiny-ma0,.tiny-man{margin:0 !important}} \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/css/messages.css b/src/Wallabag/Wallabag/Resources/views/default/public/css/messages.css
deleted file mode 100644
index 46b54795..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/css/messages.css
+++ /dev/null
@@ -1,75 +0,0 @@
1.messages {
2 display: block;
3 clear: both;
4 width: 400px;
5 margin: 10px auto 10px;
6 padding: 10px 0;
7 -moz-border-radius: 4px;
8 border-radius: 4px;
9}
10
11.messages a.closeMessage {
12 display: none;
13 float: right;
14 width: 16px;
15 height: 16px;
16 margin: -14px -8px 0 0;
17 background: url(../img/messages/close.png) no-repeat;
18}
19
20/*.messages:hover a.closeMessage { visibility:visible; }*/
21
22.messages p {
23 margin: 3px 0 3px 10px !important;
24 padding: 0 10px 0 23px !important;
25 font-size: 14px;
26 line-height: 16px;
27}
28
29.messages.error {
30 border: 1px solid #c42608;
31 color: #c00 !important;
32 background: #fff0ef;
33}
34
35.messages.error p {
36 color: #c00 !important;
37 background: url(../img/messages/cross.png) no-repeat 0 50%;
38}
39
40.messages.success {
41 border: 1px solid #6dc70c;
42 background: #e0fbcc;
43}
44
45.messages.success p {
46 color: #2b6301 !important;
47 background: url(../img/messages/tick.png) no-repeat 0 50%;
48}
49
50.messages.warning {
51 border: 1px solid #ebcd41;
52 color: #000;
53 background: #fffcd3;
54}
55
56.messages.warning p {
57 color: #5f4e01;
58 background: url(../img/messages/warning.png) no-repeat 0 50%;
59}
60
61.messages.information,
62.messages.info {
63 border: 1px solid #82aee7;
64 background: #dfebfb;
65}
66
67.messages.information p,
68.messages.info p {
69 color: #064393;
70 background: url(../img/messages/help.png) no-repeat 0 50%;
71}
72
73.messages.information a {
74 text-decoration: underline;
75}
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/css/print.css b/src/Wallabag/Wallabag/Resources/views/default/public/css/print.css
deleted file mode 100644
index 625478e1..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/css/print.css
+++ /dev/null
@@ -1,53 +0,0 @@
1/* ### Layout ### */
2
3body {
4 font-family: Serif;
5 background-color: #fff;
6}
7
8@page {
9 margin: 1cm;
10}
11
12img {
13 max-width: 100% !important;
14}
15
16/* ### Content ### */
17
18/* Hide useless blocks */
19body > header,
20#links,
21#sort,
22body > footer,
23.top_link,
24div.tools,
25header div,
26.messages,
27.entrie + .results,
28#article_toolbar {
29 display: none !important;
30}
31
32article {
33 border: none !important;
34}
35
36pre code {
37 line-height: 1.6em;
38}
39
40/* Add URL after links */
41.vieworiginal a:after {
42 content: " (" attr(href) ")";
43}
44
45/* Add explanation after abbr */
46abbr[title]:after {
47 content: " (" attr(title) ")";
48}
49
50/* Change border on current pager item */
51.pagination span.current {
52 border-style: dashed;
53}
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/css/style-default.css b/src/Wallabag/Wallabag/Resources/views/default/public/css/style-default.css
deleted file mode 100755
index 4406d48f..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/css/style-default.css
+++ /dev/null
@@ -1,69 +0,0 @@
1a.back span {
2 background-image: url('../img/default/left.png');
3}
4
5a.top span {
6 background-image: url('../img/default/top.png');
7}
8
9a.fav span,
10a.fav-off span:hover {
11 background-image: url('../img/default/star-on.png');
12}
13
14a.fav span:hover,
15a.fav-off span {
16 background-image: url('../img/default/star-off.png');
17}
18
19a.archive span,
20a.archive-off span:hover {
21 background-image: url('../img/default/checkmark-on.png');
22}
23
24a.archive span:hover,
25a.archive-off span {
26 background-image: url('../img/default/checkmark-off.png');
27}
28
29a.twitter span {
30 background-image: url('../img/default/twitter.png');
31}
32
33a.shaarli span {
34 background-image: url('../img/default/shaarli.png');
35}
36
37a.flattr span {
38 background-image: url('../img/default/flattr.png');
39}
40
41a.carrot span {
42 background-image: url('../../_global/img/icons/carrot-icon--black.png');
43 background-size: 16px 16px;
44}
45
46a.diaspora span {
47 background-image: url('../../_global/img/icons/diaspora-icon--black.png');
48 background-size: 16px 16px;
49}
50
51a.email span {
52 background-image: url('../img/default/envelop.png');
53}
54
55a.delete span {
56 background-image: url('../img/default/remove.png');
57}
58
59a.link span {
60 background-image: url('../img/default/link.png');
61}
62
63a.bad-display span {
64 background-image: url('../img/default/bad-display.png');
65}
66
67a.print span {
68 background-image: url('../img/default/print.png');
69}
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/css/style.css b/src/Wallabag/Wallabag/Resources/views/default/public/css/style.css
deleted file mode 100755
index b25373d6..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/css/style.css
+++ /dev/null
@@ -1,447 +0,0 @@
1@font-face {
2 font-family: 'Roboto';
3 font-style: normal;
4 font-weight: 400;
5 src: local('Roboto Regular'), local('Roboto-Regular'), url(../fonts/Roboto.woff) format('woff');
6}
7
8
9
10body {
11 margin: 10px;
12 font-family: 'Roboto',Verdana,Geneva,sans-serif;
13 font-size: 16px;
14 color: #000;
15}
16
17header {
18 text-align: center;
19}
20
21header h1 {
22 font-size: 1.3em;
23}
24
25a,
26a:hover,
27a:visited {
28 color: #000;
29}
30
31.bouton {
32 border: none;
33 border-radius: 2px;
34 color: #fff;
35 background-color: #000;
36}
37
38.bouton:hover {
39 color: #f1f1f1;
40 background-color: #222;
41 cursor: pointer;
42}
43
44#main {
45 margin: 0 auto;
46}
47
48#main #links {
49 padding: 0;
50 text-align: center;
51 font-size: 0.9em;
52 list-style-type: none;
53}
54
55#main #links li {
56 display: inline;
57}
58
59#main #links li .current {
60 -webkit-border-radius: 2px;
61 border-radius: 2px;
62 color: #fff;
63 background-color: #000;
64}
65
66#main #sort {
67 padding: 0;
68 text-align: center;
69 list-style-type: none;
70 opacity: 0.5;
71}
72
73#main #sort li {
74 display: inline;
75 font-size: 0.9em;
76}
77
78#main #sort li + li {
79 margin-left: 10px;
80}
81
82#main #sort a {
83 padding: 2px 2px 0;
84 vertical-align: middle;
85}
86
87#main #sort img {
88 vertical-align: baseline;
89}
90#main #sort img:hover {
91 cursor: pointer;
92}
93
94#links a {
95 padding: 5px 10px;
96 text-decoration: none;
97}
98
99#links a:hover {
100 -webkit-border-radius: 2px;
101 border-radius: 2px;
102 color: #f1f1f1;
103 background-color: #040707;
104}
105
106/*** ***/
107
108/*** LINKS DISPLAY ***/
109
110#main .tool {
111 text-decoration: none;
112 cursor: pointer;
113}
114
115#main #content {
116 margin-top: 20px;
117}
118
119#main #content h2 {
120 text-decoration: none;
121 font-size: 1.3em;
122}
123
124#main #content .entrie {
125 margin-top: 15px;
126 padding-bottom: 15px;
127 border-bottom: 1px dashed #222;
128 overflow: hidden;
129}
130
131/* First entry */
132#main #content .results + .entrie {
133 clear: both;
134 margin-top: 0;
135}
136
137#main .entrie .tools {
138 float: right;
139 text-align: right;
140 list-style-type: none;
141 opacity: 0.5;
142}
143
144#main .entrie .tools .tool span {
145 display: inline-block;
146 width: 16px;
147 height: 16px;
148 /* Hide textual content */
149 overflow: hidden;
150 text-align: left;
151 text-indent: -9999px;
152}
153
154/*** ***/
155
156/*** ARTICLE PAGE ***/
157
158#article {
159 margin: 0 auto;
160}
161
162#article header {
163 border-bottom: 1px solid #222;
164}
165
166#article header {
167 text-align: left;
168}
169
170#article header h1 small {
171 float: right;
172 font-size: 0.6em;
173}
174
175#article header a {
176 text-decoration: none;
177}
178
179#article .tags {
180 font-size: 0.8em;
181 color: #888;
182 padding-bottom: 5px;
183}
184
185.backhome {
186 display: inline;
187}
188
189.results {
190 padding: 15px 0;
191 overflow: hidden;
192}
193
194.nb-results {
195 float: left;
196 font-size: 0.9em;
197 line-height: 24px;
198 vertical-align: middle;
199}
200
201#article_toolbar {
202 position: fixed;
203 bottom: 0;
204 left: 0;
205 width: 100%;
206 min-height: 50px;
207 padding-top: 17px;
208 text-align: center;
209 color: #fff;
210 opacity: 0.8;
211 background: #fff;
212}
213
214#article_toolbar li {
215 display: inline;
216 padding-right: 30px;
217}
218
219#article_toolbar .tool {
220 padding: 0 2px;
221}
222
223#article_toolbar .tool span {
224 display: inline-block;
225 width: 16px;
226 height: 16px;
227 /* Hide textual content */
228 overflow: hidden;
229 text-align: left;
230 text-indent: -9999px;
231}
232
233/*** ***/
234
235/*** PAGINATION ***/
236
237.pagination {
238 float: right;
239 text-align: right;
240}
241
242.pagination a {
243 height: 25px;
244 margin: 2px;
245 padding: 4px 8px;
246 border: 1px solid #d5d5d5;
247 text-decoration: none;
248 font-size: 11px;
249 font-weight: bold;
250 color: #333;
251}
252
253.pagination a:hover,
254.pagination a:active {
255 background-color: #efefef;
256}
257
258.pagination .current {
259 height: 25px;
260 margin: 2px;
261 padding: 4px 8px;
262 border: 1px solid #d5d5d5;
263 text-decoration: none;
264 font-size: 11px;
265 font-weight: bold;
266 color: #000;
267 background-color: #ccc;
268}
269
270.pagination .disabled {
271 display: none;
272}
273
274#bookmarklet {
275 padding: 5px;
276 border: 1px dashed #808080;
277 background: #fff;
278 cursor: move;
279}
280
281.top_link {
282 display: none;
283 z-index: 2000;
284 position: fixed;
285 right: 15px;
286 bottom: 15px;
287 padding: 20px;
288 -webkit-border-radius: 40px;
289 -moz-border-radius: 40px;
290 border-radius: 40px;
291 opacity: 0.9;
292 background: #ccc;
293}
294
295footer {
296 clear: both;
297}
298
299.reading-time {
300 font-size: 0.8em;
301}
302
303#inputform {
304 display: none;
305 margin-top: 5px;
306 margin-right: auto;
307 margin-left: auto;
308 padding-bottom: 5px;
309 max-width: 300px;
310 border-radius: 3px;
311 text-align: center;
312 color: #fff;
313 opacity: 0.8;
314 background-color: rgba(0,0,0,0.9);
315}
316
317a.back span,
318a.top span,
319a.fav span,
320a.fav span:hover,
321a.fav-off span,
322a.fav-off span:hover,
323a.archive span,
324a.archive span:hover,
325a.archive-off span,
326a.archive-off span:hover,
327a.twitter span,
328a.shaarli span,
329a.flattr span,
330a.email span,
331a.delete span,
332a.link span,
333a.bad-display span,
334a.reading-time span,
335a.print span {
336 background-repeat: no-repeat;
337}
338
339.arrow-down {
340 width: 0px;
341 height: 0px;
342 border-style: solid;
343 border-width: 10px 10px 0 10px;
344 border-color: #000 transparent transparent transparent;
345
346 position: absolute;
347 margin-top: 1.5em;
348 margin-left: -30px;
349}
350
351.two-column {
352 display: block;
353 width: 50%;
354 paddig-right: 20px;
355 float: left;
356 vertical-align: top;
357}
358
359
360/* ==========================================================================
361 "save a link" popup div related styles
362 ========================================================================== */
363
364#bagit-form {
365 display: none;
366 padding-left: 30px;
367 width: 450px;
368
369}
370
371a#bagit-form-close {
372 color: #FFF;
373 display: inline-block;
374 float: right;
375 background: url("../img/messages/close.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0);
376 height: 16px;
377 margin: -14px -8px 0 0;
378 width: 16px;
379 text-decoration: none;
380}
381
382
383.add-to-wallabag-link-after {
384 background-color: #000;
385 color: #fff;
386 padding: 0 4px 1px 3px;
387 font-weight: bold;
388 font-size: 0.7em;
389 border-radius: 4px;
390}
391.add-to-wallabag-link-after:hover, .add-to-wallabag-link-after:active {
392 color: #fff;
393}
394.add-to-wallabag-link-after:visited {
395 color: #999;
396}
397a.add-to-wallabag-link-after {
398 visibility: hidden;
399 position: absolute;
400 opacity: 0;
401 transition-duration: 2s;
402 transition-timing-function: ease-out;
403}
404#article article a:hover + a.add-to-wallabag-link-after, a.add-to-wallabag-link-after:hover {
405 opacity: 1;
406 visibility: visible;
407 transition-duration: .3s;
408 transition-timing-function: ease-in;
409}
410a.add-to-wallabag-link-after:after {
411 content: "w";
412}
413
414
415#add-link-result {
416 display: inline;
417 padding-left: 10px;
418}
419
420/* ==========================================================================
421 "Search" popup div related styles
422 ========================================================================== */
423
424/* Search form message needs a little more width, depending on translations */
425#search-form {
426 width: 420px;
427}
428
429.opacity03 {
430 /*opacity: 0.3;*/
431}
432
433#readLeftPercent {
434 display: inline-block;
435 /* Show textual content */
436 overflow: visible;
437 text-align: left;
438 text-indent: 0;
439 color: black;
440 width: 50px;
441}
442
443pre code {
444 font-family: "Courier New", Courier, monospace;
445 border: 1px solid #ddd;
446 font-size: 0.96em;
447}
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/fonts/Roboto.woff b/src/Wallabag/Wallabag/Resources/views/default/public/fonts/Roboto.woff
deleted file mode 100644
index 1440b1be..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/fonts/Roboto.woff
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/highlightjs/highlight.pack.js b/src/Wallabag/Wallabag/Resources/views/default/public/highlightjs/highlight.pack.js
deleted file mode 100644
index 10a21c34..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/highlightjs/highlight.pack.js
+++ /dev/null
@@ -1 +0,0 @@
1var hljs=new function(){function j(v){return v.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;")}function t(v){return v.nodeName.toLowerCase()}function h(w,x){var v=w&&w.exec(x);return v&&v.index==0}function r(w){var v=(w.className+" "+(w.parentNode?w.parentNode.className:"")).split(/\s+/);v=v.map(function(x){return x.replace(/^lang(uage)?-/,"")});return v.filter(function(x){return i(x)||x=="no-highlight"})[0]}function o(x,y){var v={};for(var w in x){v[w]=x[w]}if(y){for(var w in y){v[w]=y[w]}}return v}function u(x){var v=[];(function w(y,z){for(var A=y.firstChild;A;A=A.nextSibling){if(A.nodeType==3){z+=A.nodeValue.length}else{if(t(A)=="br"){z+=1}else{if(A.nodeType==1){v.push({event:"start",offset:z,node:A});z=w(A,z);v.push({event:"stop",offset:z,node:A})}}}}return z})(x,0);return v}function q(w,y,C){var x=0;var F="";var z=[];function B(){if(!w.length||!y.length){return w.length?w:y}if(w[0].offset!=y[0].offset){return(w[0].offset<y[0].offset)?w:y}return y[0].event=="start"?w:y}function A(H){function G(I){return" "+I.nodeName+'="'+j(I.value)+'"'}F+="<"+t(H)+Array.prototype.map.call(H.attributes,G).join("")+">"}function E(G){F+="</"+t(G)+">"}function v(G){(G.event=="start"?A:E)(G.node)}while(w.length||y.length){var D=B();F+=j(C.substr(x,D[0].offset-x));x=D[0].offset;if(D==w){z.reverse().forEach(E);do{v(D.splice(0,1)[0]);D=B()}while(D==w&&D.length&&D[0].offset==x);z.reverse().forEach(A)}else{if(D[0].event=="start"){z.push(D[0].node)}else{z.pop()}v(D.splice(0,1)[0])}}return F+j(C.substr(x))}function m(y){function v(z){return(z&&z.source)||z}function w(A,z){return RegExp(v(A),"m"+(y.cI?"i":"")+(z?"g":""))}function x(D,C){if(D.compiled){return}D.compiled=true;D.k=D.k||D.bK;if(D.k){var z={};var E=function(G,F){if(y.cI){F=F.toLowerCase()}F.split(" ").forEach(function(H){var I=H.split("|");z[I[0]]=[G,I[1]?Number(I[1]):1]})};if(typeof D.k=="string"){E("keyword",D.k)}else{Object.keys(D.k).forEach(function(F){E(F,D.k[F])})}D.k=z}D.lR=w(D.l||/\b[A-Za-z0-9_]+\b/,true);if(C){if(D.bK){D.b="\\b("+D.bK.split(" ").join("|")+")\\b"}if(!D.b){D.b=/\B|\b/}D.bR=w(D.b);if(!D.e&&!D.eW){D.e=/\B|\b/}if(D.e){D.eR=w(D.e)}D.tE=v(D.e)||"";if(D.eW&&C.tE){D.tE+=(D.e?"|":"")+C.tE}}if(D.i){D.iR=w(D.i)}if(D.r===undefined){D.r=1}if(!D.c){D.c=[]}var B=[];D.c.forEach(function(F){if(F.v){F.v.forEach(function(G){B.push(o(F,G))})}else{B.push(F=="self"?D:F)}});D.c=B;D.c.forEach(function(F){x(F,D)});if(D.starts){x(D.starts,C)}var A=D.c.map(function(F){return F.bK?"\\.?("+F.b+")\\.?":F.b}).concat([D.tE,D.i]).map(v).filter(Boolean);D.t=A.length?w(A.join("|"),true):{exec:function(F){return null}};D.continuation={}}x(y)}function c(S,L,J,R){function v(U,V){for(var T=0;T<V.c.length;T++){if(h(V.c[T].bR,U)){return V.c[T]}}}function z(U,T){if(h(U.eR,T)){return U}if(U.eW){return z(U.parent,T)}}function A(T,U){return !J&&h(U.iR,T)}function E(V,T){var U=M.cI?T[0].toLowerCase():T[0];return V.k.hasOwnProperty(U)&&V.k[U]}function w(Z,X,W,V){var T=V?"":b.classPrefix,U='<span class="'+T,Y=W?"":"</span>";U+=Z+'">';return U+X+Y}function N(){if(!I.k){return j(C)}var T="";var W=0;I.lR.lastIndex=0;var U=I.lR.exec(C);while(U){T+=j(C.substr(W,U.index-W));var V=E(I,U);if(V){H+=V[1];T+=w(V[0],j(U[0]))}else{T+=j(U[0])}W=I.lR.lastIndex;U=I.lR.exec(C)}return T+j(C.substr(W))}function F(){if(I.sL&&!f[I.sL]){return j(C)}var T=I.sL?c(I.sL,C,true,I.continuation.top):e(C);if(I.r>0){H+=T.r}if(I.subLanguageMode=="continuous"){I.continuation.top=T.top}return w(T.language,T.value,false,true)}function Q(){return I.sL!==undefined?F():N()}function P(V,U){var T=V.cN?w(V.cN,"",true):"";if(V.rB){D+=T;C=""}else{if(V.eB){D+=j(U)+T;C=""}else{D+=T;C=U}}I=Object.create(V,{parent:{value:I}})}function G(T,X){C+=T;if(X===undefined){D+=Q();return 0}var V=v(X,I);if(V){D+=Q();P(V,X);return V.rB?0:X.length}var W=z(I,X);if(W){var U=I;if(!(U.rE||U.eE)){C+=X}D+=Q();do{if(I.cN){D+="</span>"}H+=I.r;I=I.parent}while(I!=W.parent);if(U.eE){D+=j(X)}C="";if(W.starts){P(W.starts,"")}return U.rE?0:X.length}if(A(X,I)){throw new Error('Illegal lexeme "'+X+'" for mode "'+(I.cN||"<unnamed>")+'"')}C+=X;return X.length||1}var M=i(S);if(!M){throw new Error('Unknown language: "'+S+'"')}m(M);var I=R||M;var D="";for(var K=I;K!=M;K=K.parent){if(K.cN){D+=w(K.cN,D,true)}}var C="";var H=0;try{var B,y,x=0;while(true){I.t.lastIndex=x;B=I.t.exec(L);if(!B){break}y=G(L.substr(x,B.index-x),B[0]);x=B.index+y}G(L.substr(x));for(var K=I;K.parent;K=K.parent){if(K.cN){D+="</span>"}}return{r:H,value:D,language:S,top:I}}catch(O){if(O.message.indexOf("Illegal")!=-1){return{r:0,value:j(L)}}else{throw O}}}function e(y,x){x=x||b.languages||Object.keys(f);var v={r:0,value:j(y)};var w=v;x.forEach(function(z){if(!i(z)){return}var A=c(z,y,false);A.language=z;if(A.r>w.r){w=A}if(A.r>v.r){w=v;v=A}});if(w.language){v.second_best=w}return v}function g(v){if(b.tabReplace){v=v.replace(/^((<[^>]+>|\t)+)/gm,function(w,z,y,x){return z.replace(/\t/g,b.tabReplace)})}if(b.useBR){v=v.replace(/\n/g,"<br>")}return v}function p(z){var y=b.useBR?z.innerHTML.replace(/\n/g,"").replace(/<br>|<br [^>]*>/g,"\n").replace(/<[^>]*>/g,""):z.textContent;var A=r(z);if(A=="no-highlight"){return}var v=A?c(A,y,true):e(y);var w=u(z);if(w.length){var x=document.createElementNS("http://www.w3.org/1999/xhtml","pre");x.innerHTML=v.value;v.value=q(w,u(x),y)}v.value=g(v.value);z.innerHTML=v.value;z.className+=" hljs "+(!A&&v.language||"");z.result={language:v.language,re:v.r};if(v.second_best){z.second_best={language:v.second_best.language,re:v.second_best.r}}}var b={classPrefix:"hljs-",tabReplace:null,useBR:false,languages:undefined};function s(v){b=o(b,v)}function l(){if(l.called){return}l.called=true;var v=document.querySelectorAll("pre code");Array.prototype.forEach.call(v,p)}function a(){addEventListener("DOMContentLoaded",l,false);addEventListener("load",l,false)}var f={};var n={};function d(v,x){var w=f[v]=x(this);if(w.aliases){w.aliases.forEach(function(y){n[y]=v})}}function k(){return Object.keys(f)}function i(v){return f[v]||f[n[v]]}this.highlight=c;this.highlightAuto=e;this.fixMarkup=g;this.highlightBlock=p;this.configure=s;this.initHighlighting=l;this.initHighlightingOnLoad=a;this.registerLanguage=d;this.listLanguages=k;this.getLanguage=i;this.inherit=o;this.IR="[a-zA-Z][a-zA-Z0-9_]*";this.UIR="[a-zA-Z_][a-zA-Z0-9_]*";this.NR="\\b\\d+(\\.\\d+)?";this.CNR="(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";this.BNR="\\b(0b[01]+)";this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.BE={b:"\\\\[\\s\\S]",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE]};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE]};this.PWM={b:/\b(a|an|the|are|I|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such)\b/};this.CLCM={cN:"comment",b:"//",e:"$",c:[this.PWM]};this.CBCM={cN:"comment",b:"/\\*",e:"\\*/",c:[this.PWM]};this.HCM={cN:"comment",b:"#",e:"$",c:[this.PWM]};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.BNM={cN:"number",b:this.BNR,r:0};this.CSSNM={cN:"number",b:this.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0};this.RM={cN:"regexp",b:/\//,e:/\/[gim]*/,i:/\n/,c:[this.BE,{b:/\[/,e:/\]/,r:0,c:[this.BE]}]};this.TM={cN:"title",b:this.IR,r:0};this.UTM={cN:"title",b:this.UIR,r:0}}();hljs.registerLanguage("bash",function(b){var a={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)\}/}]};var d={cN:"string",b:/"/,e:/"/,c:[b.BE,a,{cN:"variable",b:/\$\(/,e:/\)/,c:[b.BE]}]};var c={cN:"string",b:/'/,e:/'/};return{aliases:["sh","zsh"],l:/-?[a-z\.]+/,k:{keyword:"if then else elif fi for break continue while in do done exit return set declare case esac export exec",literal:"true false",built_in:"printf echo read cd pwd pushd popd dirs let eval unset typeset readonly getopts source shopt caller type hash bind help sudo",operator:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"shebang",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:true,c:[b.inherit(b.TM,{b:/\w[\w\d_]*/})],r:0},b.HCM,b.NM,d,c,a]}});hljs.registerLanguage("cs",function(b){var a="abstract as base bool break byte case catch char checked const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long new null object operator out override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using virtual volatile void while async await ascending descending from get group into join let orderby partial select set value var where yield";return{aliases:["csharp"],k:a,i:/::/,c:[{cN:"comment",b:"///",e:"$",rB:true,c:[{cN:"xmlDocTag",v:[{b:"///",r:0},{b:"<!--|-->"},{b:"</?",e:">"}]}]},b.CLCM,b.CBCM,{cN:"preprocessor",b:"#",e:"$",k:"if else elif endif define undef warning error line region endregion pragma checksum"},{cN:"string",b:'@"',e:'"',c:[{b:'""'}]},b.ASM,b.QSM,b.CNM,{bK:"protected public private internal",e:/[{;=]/,k:a,c:[{bK:"class namespace interface",starts:{c:[b.TM]}},{b:b.IR+"\\s*\\(",rB:true,c:[b.TM]}]}]}});hljs.registerLanguage("ruby",function(f){var j="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?";var i="and false then defined module in return redo if BEGIN retry end for true self when next until do begin unless END rescue nil else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor";var b={cN:"yardoctag",b:"@[A-Za-z]+"};var c={cN:"value",b:"#<",e:">"};var k={cN:"comment",v:[{b:"#",e:"$",c:[b]},{b:"^\\=begin",e:"^\\=end",c:[b],r:10},{b:"^__END__",e:"\\n$"}]};var d={cN:"subst",b:"#\\{",e:"}",k:i};var e={cN:"string",c:[f.BE,d],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:"%[qw]?\\(",e:"\\)"},{b:"%[qw]?\\[",e:"\\]"},{b:"%[qw]?{",e:"}"},{b:"%[qw]?<",e:">"},{b:"%[qw]?/",e:"/"},{b:"%[qw]?%",e:"%"},{b:"%[qw]?-",e:"-"},{b:"%[qw]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/}]};var a={cN:"params",b:"\\(",e:"\\)",k:i};var h=[e,c,k,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[f.inherit(f.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{cN:"inheritance",b:"<\\s*",c:[{cN:"parent",b:"("+f.IR+"::)?"+f.IR}]},k]},{cN:"function",bK:"def",e:" |$|;",r:0,c:[f.inherit(f.TM,{b:j}),a,k]},{cN:"constant",b:"(::)?(\\b[A-Z]\\w*(::)?)+",r:0},{cN:"symbol",b:":",c:[e,{b:j}],r:0},{cN:"symbol",b:f.UIR+"(\\!|\\?)?:",r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{cN:"variable",b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{b:"("+f.RSR+")\\s*",c:[c,k,{cN:"regexp",c:[f.BE,d],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}],r:0}];d.c=h;a.c=h;var g=[{r:1,cN:"output",b:"^\\s*=> ",e:"$",rB:true,c:[{cN:"status",b:"^\\s*=>"},{b:" ",e:"$",c:h}]},{r:1,cN:"input",b:"^[^ ][^=>]*>+ ",e:"$",rB:true,c:[{cN:"prompt",b:"^[^ ][^=>]*>+"},{b:" ",e:"$",c:h}]}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:i,c:g.concat(h)}});hljs.registerLanguage("diff",function(a){return{aliases:["patch"],c:[{cN:"chunk",r:10,v:[{b:/^\@\@ +\-\d+,\d+ +\+\d+,\d+ +\@\@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"header",v:[{b:/Index: /,e:/$/},{b:/=====/,e:/=====$/},{b:/^\-\-\-/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+\+\+/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"change",b:"^\\!",e:"$"}]}});hljs.registerLanguage("javascript",function(a){return{aliases:["js"],k:{keyword:"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document"},c:[{cN:"pi",b:/^\s*('|")use strict('|")/,r:10},a.ASM,a.QSM,a.CLCM,a.CBCM,a.CNM,{b:"("+a.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[a.CLCM,a.CBCM,a.RM,{b:/</,e:/>;/,r:0,sL:"xml"}],r:0},{cN:"function",bK:"function",e:/\{/,eE:true,c:[a.inherit(a.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:"params",b:/\(/,e:/\)/,c:[a.CLCM,a.CBCM],i:/["'\(]/}],i:/\[|%/},{b:/\$[(.]/},{b:"\\."+a.IR,r:0}]}});hljs.registerLanguage("xml",function(a){var c="[A-Za-z0-9\\._:-]+";var d={b:/<\?(php)?(?!\w)/,e:/\?>/,sL:"php",subLanguageMode:"continuous"};var b={eW:true,i:/</,r:0,c:[d,{cN:"attribute",b:c,r:0},{b:"=",r:0,c:[{cN:"value",v:[{b:/"/,e:/"/},{b:/'/,e:/'/},{b:/[^\s\/>]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xsl","plist"],cI:true,c:[{cN:"doctype",b:"<!DOCTYPE",e:">",r:10,c:[{b:"\\[",e:"\\]"}]},{cN:"comment",b:"<!--",e:"-->",r:10},{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"<style(?=\\s|>|$)",e:">",k:{title:"style"},c:[b],starts:{e:"</style>",rE:true,sL:"css"}},{cN:"tag",b:"<script(?=\\s|>|$)",e:">",k:{title:"script"},c:[b],starts:{e:"<\/script>",rE:true,sL:"javascript"}},{b:"<%",e:"%>",sL:"vbscript"},d,{cN:"pi",b:/<\?\w+/,e:/\?>/,r:10},{cN:"tag",b:"</?",e:"/?>",c:[{cN:"title",b:"[^ /><]+",r:0},b]}]}});hljs.registerLanguage("markdown",function(a){return{aliases:["md","mkdown","mkd"],c:[{cN:"header",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"blockquote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"`.+?`"},{b:"^( {4}|\t)",e:"$",r:0}]},{cN:"horizontal_rule",b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].+?[\\)\\]]",rB:true,c:[{cN:"link_label",b:"\\[",e:"\\]",eB:true,rE:true,r:0},{cN:"link_url",b:"\\]\\(",e:"\\)",eB:true,eE:true},{cN:"link_reference",b:"\\]\\[",e:"\\]",eB:true,eE:true}],r:10},{b:"^\\[.+\\]:",e:"$",rB:true,c:[{cN:"link_reference",b:"\\[",e:"\\]",eB:true,eE:true},{cN:"link_url",b:"\\s",e:"$"}]}]}});hljs.registerLanguage("css",function(a){var b="[a-zA-Z-][a-zA-Z0-9_-]*";var c={cN:"function",b:b+"\\(",rB:true,eE:true,e:"\\("};return{cI:true,i:"[=/|']",c:[a.CBCM,{cN:"id",b:"\\#[A-Za-z0-9_-]+"},{cN:"class",b:"\\.[A-Za-z0-9_-]+",r:0},{cN:"attr_selector",b:"\\[",e:"\\]",i:"$"},{cN:"pseudo",b:":(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\\\"\\']+"},{cN:"at_rule",b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{cN:"at_rule",b:"@",e:"[{;]",c:[{cN:"keyword",b:/\S+/},{b:/\s/,eW:true,eE:true,r:0,c:[c,a.ASM,a.QSM,a.CSSNM]}]},{cN:"tag",b:b,r:0},{cN:"rules",b:"{",e:"}",i:"[^\\s]",r:0,c:[a.CBCM,{cN:"rule",b:"[^\\s]",rB:true,e:";",eW:true,c:[{cN:"attribute",b:"[A-Z\\_\\.\\-]+",e:":",eE:true,i:"[^\\s]",starts:{cN:"value",eW:true,eE:true,c:[c,a.CSSNM,a.QSM,a.ASM,a.CBCM,{cN:"hexcolor",b:"#[0-9A-Fa-f]+"},{cN:"important",b:"!important"}]}}]}]}]}});hljs.registerLanguage("http",function(a){return{i:"\\S",c:[{cN:"status",b:"^HTTP/[0-9\\.]+",e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{cN:"request",b:"^[A-Z]+ (.*?) HTTP/[0-9\\.]+$",rB:true,e:"$",c:[{cN:"string",b:" ",e:" ",eB:true,eE:true}]},{cN:"attribute",b:"^\\w",e:": ",eE:true,i:"\\n|\\s|=",starts:{cN:"string",e:"$"}},{b:"\\n\\n",starts:{sL:"",eW:true}}]}});hljs.registerLanguage("java",function(b){var a="false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws";return{aliases:["jsp"],k:a,i:/<\//,c:[{cN:"javadoc",b:"/\\*\\*",e:"\\*/",c:[{cN:"javadoctag",b:"(^|\\s)@[A-Za-z]+"}],r:10},b.CLCM,b.CBCM,b.ASM,b.QSM,{bK:"protected public private",e:/[{;=]/,k:a,c:[{cN:"class",bK:"class interface",eW:true,eE:true,i:/[:"\[\]]/,c:[{bK:"extends implements",r:10},b.UTM]},{b:b.UIR+"\\s*\\(",rB:true,c:[b.UTM]}]},b.CNM,{cN:"annotation",b:"@[A-Za-z]+"}]}});hljs.registerLanguage("php",function(b){var e={cN:"variable",b:"(\\$|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*"};var a={cN:"preprocessor",b:/<\?(php)?|\?>/};var c={cN:"string",c:[b.BE,a],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},b.inherit(b.ASM,{i:null}),b.inherit(b.QSM,{i:null})]};var d={v:[b.BNM,b.CNM]};return{aliases:["php3","php4","php5","php6"],cI:true,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[b.CLCM,b.HCM,{cN:"comment",b:"/\\*",e:"\\*/",c:[{cN:"phpdoc",b:"\\s@[A-Za-z]+"},a]},{cN:"comment",b:"__halt_compiler.+?;",eW:true,k:"__halt_compiler",l:b.UIR},{cN:"string",b:"<<<['\"]?\\w+['\"]?$",e:"^\\w+;",c:[b.BE]},a,e,{cN:"function",bK:"function",e:/[;{]/,eE:true,i:"\\$|\\[|%",c:[b.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",e,b.CBCM,c,d]}]},{cN:"class",bK:"class interface",e:"{",eE:true,i:/[:\(\$"]/,c:[{bK:"extends implements",r:10},b.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[b.UTM]},{bK:"use",e:";",c:[b.UTM]},{b:"=>"},c,d]}});hljs.registerLanguage("python",function(a){var f={cN:"prompt",b:/^(>>>|\.\.\.) /};var b={cN:"string",c:[a.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[f],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[f],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},a.ASM,a.QSM]};var d={cN:"number",r:0,v:[{b:a.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:a.CNR+"[lLjJ]?"}]};var e={cN:"params",b:/\(/,e:/\)/,c:["self",f,d,b]};var c={e:/:/,i:/[${=;\n]/,c:[a.UTM,e]};return{aliases:["py","gyp"],k:{keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},i:/(<\/|->|\?)/,c:[f,d,b,a.HCM,a.inherit(c,{cN:"function",bK:"def",r:10}),a.inherit(c,{cN:"class",bK:"class"}),{cN:"decorator",b:/@/,e:/$/},{b:/\b(print|exec)\(/}]}});hljs.registerLanguage("sql",function(a){var b={cN:"comment",b:"--",e:"$"};return{cI:true,i:/[<>]/,c:[{cN:"operator",bK:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate savepoint release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup",e:/;/,eW:true,k:{keyword:"abs absolute acos action add adddate addtime aes_decrypt aes_encrypt after aggregate all allocate alter analyze and any are as asc ascii asin assertion at atan atan2 atn2 authorization authors avg backup before begin benchmark between bin binlog bit_and bit_count bit_length bit_or bit_xor both by cache call cascade cascaded case cast catalog ceil ceiling chain change changed char_length character_length charindex charset check checksum checksum_agg choose close coalesce coercibility collate collation collationproperty column columns columns_updated commit compress concat concat_ws concurrent connect connection connection_id consistent constraint constraints continue contributors conv convert convert_tz corresponding cos cot count count_big crc32 create cross cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime data database databases datalength date_add date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts datetimeoffsetfromparts day dayname dayofmonth dayofweek dayofyear deallocate declare decode default deferrable deferred degrees delayed delete des_decrypt des_encrypt des_key_file desc describe descriptor diagnostics difference disconnect distinct distinctrow div do domain double drop dumpfile each else elt enclosed encode encrypt end end-exec engine engines eomonth errors escape escaped event eventdata events except exception exec execute exists exp explain export_set extended external extract fast fetch field fields find_in_set first first_value floor flush for force foreign format found found_rows from from_base64 from_days from_unixtime full function get get_format get_lock getdate getutcdate global go goto grant grants greatest group group_concat grouping grouping_id gtid_subset gtid_subtract handler having help hex high_priority hosts hour ident_current ident_incr ident_seed identified identity if ifnull ignore iif ilike immediate in index indicator inet6_aton inet6_ntoa inet_aton inet_ntoa infile initially inner innodb input insert install instr intersect into is is_free_lock is_ipv4 is_ipv4_compat is_ipv4_mapped is_not is_not_null is_used_lock isdate isnull isolation join key kill language last last_day last_insert_id last_value lcase lead leading least leaves left len lenght level like limit lines ln load load_file local localtime localtimestamp locate lock log log10 log2 logfile logs low_priority lower lpad ltrim make_set makedate maketime master master_pos_wait match matched max md5 medium merge microsecond mid min minute mod mode module month monthname mutex name_const names national natural nchar next no no_write_to_binlog not now nullif nvarchar oct octet_length of old_password on only open optimize option optionally or ord order outer outfile output pad parse partial partition password patindex percent_rank percentile_cont percentile_disc period_add period_diff pi plugin position pow power pragma precision prepare preserve primary prior privileges procedure procedure_analyze processlist profile profiles public publishingservername purge quarter query quick quote quotename radians rand read references regexp relative relaylog release release_lock rename repair repeat replace replicate reset restore restrict return returns reverse revoke right rlike rollback rollup round row row_count rows rpad rtrim savepoint schema scroll sec_to_time second section select serializable server session session_user set sha sha1 sha2 share show sign sin size slave sleep smalldatetimefromparts snapshot some soname soundex sounds_like space sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sql_variant_property sqlstate sqrt square start starting status std stddev stddev_pop stddev_samp stdev stdevp stop str str_to_date straight_join strcmp string stuff subdate substr substring subtime subtring_index sum switchoffset sysdate sysdatetime sysdatetimeoffset system_user sysutcdatetime table tables tablespace tan temporary terminated tertiary_weights then time time_format time_to_sec timediff timefromparts timestamp timestampadd timestampdiff timezone_hour timezone_minute to to_base64 to_days to_seconds todatetimeoffset trailing transaction translation trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse ucase uncompress uncompressed_length unhex unicode uninstall union unique unix_timestamp unknown unlock update upgrade upped upper usage use user user_resources using utc_date utc_time utc_timestamp uuid uuid_short validate_password_strength value values var var_pop var_samp variables variance varp version view warnings week weekday weekofyear weight_string when whenever where with work write xml xor year yearweek zon",literal:"true false null",built_in:"array bigint binary bit blob boolean char character date dec decimal float int integer interval number numeric real serial smallint varchar varying int8 serial8 text"},c:[{cN:"string",b:"'",e:"'",c:[a.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[a.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[a.BE]},a.CNM,a.CBCM,b]},a.CBCM,b]}});hljs.registerLanguage("ini",function(a){return{cI:true,i:/\S/,c:[{cN:"comment",b:";",e:"$"},{cN:"title",b:"^\\[",e:"\\]"},{cN:"setting",b:"^[a-z0-9\\[\\]_-]+[ \\t]*=[ \\t]*",e:"$",c:[{cN:"value",eW:true,k:"on off true false yes no",c:[a.QSM,a.NM],r:0}]}]}});hljs.registerLanguage("perl",function(c){var d="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when";var f={cN:"subst",b:"[$@]\\{",e:"\\}",k:d};var g={b:"->{",e:"}"};var a={cN:"variable",v:[{b:/\$\d/},{b:/[\$\%\@](\^\w\b|#\w+(\:\:\w+)*|{\w+}|\w+(\:\:\w*)*)/},{b:/[\$\%\@][^\s\w{]/,r:0}]};var e={cN:"comment",b:"^(__END__|__DATA__)",e:"\\n$",r:5};var h=[c.BE,f,a];var b=[a,c.HCM,e,{cN:"comment",b:"^\\=\\w",e:"\\=cut",eW:true},g,{cN:"string",c:h,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[c.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[c.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+c.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[c.HCM,e,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[c.BE],r:0}]},{cN:"sub",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",r:5},{cN:"operator",b:"-\\w\\b",r:0}];f.c=b;g.c=b;return{aliases:["pl"],k:d,c:b}});hljs.registerLanguage("objectivec",function(a){var d={keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"NSString NSDictionary CGRect CGPoint UIButton UILabel UITextView UIWebView MKMapView NSView NSViewController NSWindow NSWindowController NSSet NSUUID NSIndexSet UISegmentedControl NSObject UITableViewDelegate UITableViewDataSource NSThread UIActivityIndicator UITabbar UIToolBar UIBarButtonItem UIImageView NSAutoreleasePool UITableView BOOL NSInteger CGFloat NSException NSLog NSMutableString NSMutableArray NSMutableDictionary NSURL NSIndexPath CGSize UITableViewCell UIView UIViewController UINavigationBar UINavigationController UITabBarController UIPopoverController UIPopoverControllerDelegate UIImage NSNumber UISearchBar NSFetchedResultsController NSFetchedResultsChangeType UIScrollView UIScrollViewDelegate UIEdgeInsets UIColor UIFont UIApplication NSNotFound NSNotificationCenter NSNotification UILocalNotification NSBundle NSFileManager NSTimeInterval NSDate NSCalendar NSUserDefaults UIWindow NSRange NSArray NSError NSURLRequest NSURLConnection UIInterfaceOrientation MPMoviePlayerController dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"};var c=/[a-zA-Z@][a-zA-Z0-9_]*/;var b="@interface @class @protocol @implementation";return{aliases:["m","mm","objc","obj-c"],k:d,l:c,i:"</",c:[a.CLCM,a.CBCM,a.CNM,a.QSM,{cN:"string",v:[{b:'@"',e:'"',i:"\\n",c:[a.BE]},{b:"'",e:"[^\\\\]'",i:"[^\\\\][^']"}]},{cN:"preprocessor",b:"#",e:"$",c:[{cN:"title",v:[{b:'"',e:'"'},{b:"<",e:">"}]}]},{cN:"class",b:"("+b.split(" ").join("|")+")\\b",e:"({|$)",eE:true,k:b,l:c,c:[a.UTM]},{cN:"variable",b:"\\."+a.UIR,r:0}]}});hljs.registerLanguage("coffeescript",function(c){var b={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",reserved:"case default function var void with const let enum export import native __hasProp __extends __slice __bind __indexOf",built_in:"npm require console print module global window document"};var a="[A-Za-z$_][0-9A-Za-z$_]*";var f=c.inherit(c.TM,{b:a});var e={cN:"subst",b:/#\{/,e:/}/,k:b};var d=[c.BNM,c.inherit(c.CNM,{starts:{e:"(\\s*/)?",r:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[c.BE]},{b:/'/,e:/'/,c:[c.BE]},{b:/"""/,e:/"""/,c:[c.BE,e]},{b:/"/,e:/"/,c:[c.BE,e]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[e,c.HCM]},{b:"//[gim]*",r:0},{b:"/\\S(\\\\.|[^\\n])*?/[gim]*(?=\\s|\\W|$)"}]},{cN:"property",b:"@"+a},{b:"`",e:"`",eB:true,eE:true,sL:"javascript"}];e.c=d;return{aliases:["coffee","cson","iced"],k:b,c:d.concat([{cN:"comment",b:"###",e:"###"},c.HCM,{cN:"function",b:"("+a+"\\s*=\\s*)?(\\(.*\\))?\\s*\\B[-=]>",e:"[-=]>",rB:true,c:[f,{cN:"params",b:"\\(",rB:true,c:[{b:/\(/,e:/\)/,k:b,c:["self"].concat(d)}]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:true,i:/[:="\[\]]/,c:[f]},f]},{cN:"attribute",b:a+":",e:":",rB:true,eE:true,r:0}])}});hljs.registerLanguage("nginx",function(c){var b={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+c.UIR}]};var a={eW:true,l:"[a-z/_]+",k:{built_in:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[c.HCM,{cN:"string",c:[c.BE,b],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{cN:"url",b:"([a-z]+):/",e:"\\s",eW:true,eE:true},{cN:"regexp",c:[c.BE,b],v:[{b:"\\s\\^",e:"\\s|{|;",rE:true},{b:"~\\*?\\s+",e:"\\s|{|;",rE:true},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},b]};return{aliases:["nginxconf"],c:[c.HCM,{b:c.UIR+"\\s",e:";|{",rB:true,c:[{cN:"title",b:c.UIR,starts:a}],r:0}],i:"[^\\s\\}]"}});hljs.registerLanguage("json",function(a){var e={literal:"true false null"};var d=[a.QSM,a.CNM];var c={cN:"value",e:",",eW:true,eE:true,c:d,k:e};var b={b:"{",e:"}",c:[{cN:"attribute",b:'\\s*"',e:'"\\s*:\\s*',eB:true,eE:true,c:[a.BE],i:"\\n",starts:c}],i:"\\S"};var f={b:"\\[",e:"\\]",c:[a.inherit(c,{cN:null})],i:"\\S"};d.splice(d.length,0,b,f);return{c:d,k:e,i:"\\S"}});hljs.registerLanguage("apache",function(a){var b={cN:"number",b:"[\\$%]\\d+"};return{aliases:["apacheconf"],cI:true,c:[a.HCM,{cN:"tag",b:"</?",e:">"},{cN:"keyword",b:/\w+/,r:0,k:{common:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"sqbracket",b:"\\s\\[",e:"\\]$"},{cN:"cbracket",b:"[\\$%]\\{",e:"\\}",c:["self",b]},b,a.QSM]}}],i:/\S/}});hljs.registerLanguage("cpp",function(a){var b={keyword:"false int float while private char catch export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace unsigned long throw volatile static protected bool template mutable if public friend do return goto auto void enum else break new extern using true class asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue wchar_t inline delete alignof char16_t char32_t constexpr decltype noexcept nullptr static_assert thread_local restrict _Bool complex _Complex _Imaginary",built_in:"std string cin cout cerr clog stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf"};return{aliases:["c","h","c++","h++"],k:b,i:"</",c:[a.CLCM,a.CBCM,a.QSM,{cN:"string",b:"'\\\\?.",e:"'",i:"."},{cN:"number",b:"\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)"},a.CNM,{cN:"preprocessor",b:"#",e:"$",k:"if else elif endif define undef warning error line pragma",c:[{b:'include\\s*[<"]',e:'[>"]',k:"include",i:"\\n"},a.CLCM]},{cN:"stl_container",b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:b,c:["self"]},{b:a.IR+"::"}]}});hljs.registerLanguage("makefile",function(a){var b={cN:"variable",b:/\$\(/,e:/\)/,c:[a.BE]};return{aliases:["mk","mak"],c:[a.HCM,{b:/^\w+\s*\W*=/,rB:true,r:0,starts:{cN:"constant",e:/\s*\W*=/,eE:true,starts:{e:/$/,r:0,c:[b]}}},{cN:"title",b:/^[\w]+:\s*$/},{cN:"phony",b:/^\.PHONY:/,e:/$/,k:".PHONY",l:/[\.\w]+/},{b:/^\t+/,e:/$/,c:[a.QSM,b]}]}}); \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/highlightjs/styles/default.css b/src/Wallabag/Wallabag/Resources/views/default/public/highlightjs/styles/default.css
deleted file mode 100644
index e5bd2801..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/highlightjs/styles/default.css
+++ /dev/null
@@ -1,152 +0,0 @@
1/*
2
3Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
4
5*/
6
7.hljs {
8 display: block;
9 overflow-x: auto;
10 padding: 0.5em;
11 background: #f0f0f0;
12}
13
14.hljs,
15.hljs-subst,
16.hljs-tag .hljs-title,
17.lisp .hljs-title,
18.clojure .hljs-built_in,
19.nginx .hljs-title {
20 color: black;
21}
22
23.hljs-string,
24.hljs-title,
25.hljs-constant,
26.hljs-parent,
27.hljs-tag .hljs-value,
28.hljs-rules .hljs-value,
29.hljs-preprocessor,
30.hljs-pragma,
31.haml .hljs-symbol,
32.ruby .hljs-symbol,
33.ruby .hljs-symbol .hljs-string,
34.hljs-template_tag,
35.django .hljs-variable,
36.smalltalk .hljs-class,
37.hljs-addition,
38.hljs-flow,
39.hljs-stream,
40.bash .hljs-variable,
41.apache .hljs-tag,
42.apache .hljs-cbracket,
43.tex .hljs-command,
44.tex .hljs-special,
45.erlang_repl .hljs-function_or_atom,
46.asciidoc .hljs-header,
47.markdown .hljs-header,
48.coffeescript .hljs-attribute {
49 color: #800;
50}
51
52.smartquote,
53.hljs-comment,
54.hljs-annotation,
55.hljs-template_comment,
56.diff .hljs-header,
57.hljs-chunk,
58.asciidoc .hljs-blockquote,
59.markdown .hljs-blockquote {
60 color: #888;
61}
62
63.hljs-number,
64.hljs-date,
65.hljs-regexp,
66.hljs-literal,
67.hljs-hexcolor,
68.smalltalk .hljs-symbol,
69.smalltalk .hljs-char,
70.go .hljs-constant,
71.hljs-change,
72.lasso .hljs-variable,
73.makefile .hljs-variable,
74.asciidoc .hljs-bullet,
75.markdown .hljs-bullet,
76.asciidoc .hljs-link_url,
77.markdown .hljs-link_url {
78 color: #080;
79}
80
81.hljs-label,
82.hljs-javadoc,
83.ruby .hljs-string,
84.hljs-decorator,
85.hljs-filter .hljs-argument,
86.hljs-localvars,
87.hljs-array,
88.hljs-attr_selector,
89.hljs-important,
90.hljs-pseudo,
91.hljs-pi,
92.haml .hljs-bullet,
93.hljs-doctype,
94.hljs-deletion,
95.hljs-envvar,
96.hljs-shebang,
97.apache .hljs-sqbracket,
98.nginx .hljs-built_in,
99.tex .hljs-formula,
100.erlang_repl .hljs-reserved,
101.hljs-prompt,
102.asciidoc .hljs-link_label,
103.markdown .hljs-link_label,
104.vhdl .hljs-attribute,
105.clojure .hljs-attribute,
106.asciidoc .hljs-attribute,
107.lasso .hljs-attribute,
108.coffeescript .hljs-property,
109.hljs-phony {
110 color: #88f;
111}
112
113.hljs-keyword,
114.hljs-id,
115.hljs-title,
116.hljs-built_in,
117.css .hljs-tag,
118.hljs-javadoctag,
119.hljs-phpdoc,
120.hljs-yardoctag,
121.smalltalk .hljs-class,
122.hljs-winutils,
123.bash .hljs-variable,
124.apache .hljs-tag,
125.go .hljs-typename,
126.tex .hljs-command,
127.asciidoc .hljs-strong,
128.markdown .hljs-strong,
129.hljs-request,
130.hljs-status {
131 font-weight: bold;
132}
133
134.asciidoc .hljs-emphasis,
135.markdown .hljs-emphasis {
136 font-style: italic;
137}
138
139.nginx .hljs-built_in {
140 font-weight: normal;
141}
142
143.coffeescript .javascript,
144.javascript .xml,
145.lasso .markup,
146.tex .hljs-formula,
147.xml .javascript,
148.xml .vbscript,
149.xml .css,
150.xml .hljs-cdata {
151 opacity: 0.5;
152}
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/highlightjs/styles/github.css b/src/Wallabag/Wallabag/Resources/views/default/public/highlightjs/styles/github.css
deleted file mode 100644
index 47fc2651..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/highlightjs/styles/github.css
+++ /dev/null
@@ -1,127 +0,0 @@
1/*
2
3github.com style (c) Vasily Polovnyov <vast@whiteants.net>
4
5*/
6
7.hljs {
8 display: block;
9 overflow-x: auto;
10 padding: 0.5em;
11 color: #333;
12 background: #f8f8f8;
13}
14
15.hljs-comment,
16.hljs-template_comment,
17.diff .hljs-header,
18.hljs-javadoc {
19 color: #998;
20 font-style: italic;
21}
22
23.hljs-keyword,
24.css .rule .hljs-keyword,
25.hljs-winutils,
26.javascript .hljs-title,
27.nginx .hljs-title,
28.hljs-subst,
29.hljs-request,
30.hljs-status {
31 color: #333;
32 font-weight: bold;
33}
34
35.hljs-number,
36.hljs-hexcolor,
37.ruby .hljs-constant {
38 color: #099;
39}
40
41.hljs-string,
42.hljs-tag .hljs-value,
43.hljs-phpdoc,
44.tex .hljs-formula {
45 color: #d14;
46}
47
48.hljs-title,
49.hljs-id,
50.coffeescript .hljs-params,
51.scss .hljs-preprocessor {
52 color: #900;
53 font-weight: bold;
54}
55
56.javascript .hljs-title,
57.lisp .hljs-title,
58.clojure .hljs-title,
59.hljs-subst {
60 font-weight: normal;
61}
62
63.hljs-class .hljs-title,
64.haskell .hljs-type,
65.vhdl .hljs-literal,
66.tex .hljs-command {
67 color: #458;
68 font-weight: bold;
69}
70
71.hljs-tag,
72.hljs-tag .hljs-title,
73.hljs-rules .hljs-property,
74.django .hljs-tag .hljs-keyword {
75 color: #000080;
76 font-weight: normal;
77}
78
79.hljs-attribute,
80.hljs-variable,
81.lisp .hljs-body {
82 color: #008080;
83}
84
85.hljs-regexp {
86 color: #009926;
87}
88
89.hljs-symbol,
90.ruby .hljs-symbol .hljs-string,
91.lisp .hljs-keyword,
92.tex .hljs-special,
93.hljs-prompt {
94 color: #990073;
95}
96
97.hljs-built_in,
98.lisp .hljs-title,
99.clojure .hljs-built_in {
100 color: #0086b3;
101}
102
103.hljs-preprocessor,
104.hljs-pragma,
105.hljs-pi,
106.hljs-doctype,
107.hljs-shebang,
108.hljs-cdata {
109 color: #999;
110 font-weight: bold;
111}
112
113.hljs-deletion {
114 background: #fdd;
115}
116
117.hljs-addition {
118 background: #dfd;
119}
120
121.diff .hljs-change {
122 background: #0086b3;
123}
124
125.hljs-chunk {
126 color: #aaa;
127}
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/highlightjs/styles/googlecode.css b/src/Wallabag/Wallabag/Resources/views/default/public/highlightjs/styles/googlecode.css
deleted file mode 100644
index fd237367..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/highlightjs/styles/googlecode.css
+++ /dev/null
@@ -1,148 +0,0 @@
1/*
2
3Google Code style (c) Aahan Krish <geekpanth3r@gmail.com>
4
5*/
6
7.hljs {
8 display: block;
9 overflow-x: auto;
10 padding: 0.5em;
11 background: white;
12 color: black;
13}
14
15.hljs-comment,
16.hljs-template_comment,
17.hljs-javadoc {
18 color: #800;
19}
20
21.hljs-keyword,
22.method,
23.hljs-list .hljs-title,
24.clojure .hljs-built_in,
25.nginx .hljs-title,
26.hljs-tag .hljs-title,
27.setting .hljs-value,
28.hljs-winutils,
29.tex .hljs-command,
30.http .hljs-title,
31.hljs-request,
32.hljs-status {
33 color: #008;
34}
35
36.hljs-envvar,
37.tex .hljs-special {
38 color: #660;
39}
40
41.hljs-string,
42.hljs-tag .hljs-value,
43.hljs-cdata,
44.hljs-filter .hljs-argument,
45.hljs-attr_selector,
46.apache .hljs-cbracket,
47.hljs-date,
48.hljs-regexp,
49.coffeescript .hljs-attribute {
50 color: #080;
51}
52
53.hljs-sub .hljs-identifier,
54.hljs-pi,
55.hljs-tag,
56.hljs-tag .hljs-keyword,
57.hljs-decorator,
58.ini .hljs-title,
59.hljs-shebang,
60.hljs-prompt,
61.hljs-hexcolor,
62.hljs-rules .hljs-value,
63.hljs-literal,
64.hljs-symbol,
65.ruby .hljs-symbol .hljs-string,
66.hljs-number,
67.css .hljs-function,
68.clojure .hljs-attribute {
69 color: #066;
70}
71
72.hljs-class .hljs-title,
73.haskell .hljs-type,
74.smalltalk .hljs-class,
75.hljs-javadoctag,
76.hljs-yardoctag,
77.hljs-phpdoc,
78.hljs-typename,
79.hljs-tag .hljs-attribute,
80.hljs-doctype,
81.hljs-class .hljs-id,
82.hljs-built_in,
83.setting,
84.hljs-params,
85.hljs-variable,
86.clojure .hljs-title {
87 color: #606;
88}
89
90.css .hljs-tag,
91.hljs-rules .hljs-property,
92.hljs-pseudo,
93.hljs-subst {
94 color: #000;
95}
96
97.css .hljs-class,
98.css .hljs-id {
99 color: #9b703f;
100}
101
102.hljs-value .hljs-important {
103 color: #ff7700;
104 font-weight: bold;
105}
106
107.hljs-rules .hljs-keyword {
108 color: #c5af75;
109}
110
111.hljs-annotation,
112.apache .hljs-sqbracket,
113.nginx .hljs-built_in {
114 color: #9b859d;
115}
116
117.hljs-preprocessor,
118.hljs-preprocessor *,
119.hljs-pragma {
120 color: #444;
121}
122
123.tex .hljs-formula {
124 background-color: #eee;
125 font-style: italic;
126}
127
128.diff .hljs-header,
129.hljs-chunk {
130 color: #808080;
131 font-weight: bold;
132}
133
134.diff .hljs-change {
135 background-color: #bccff9;
136}
137
138.hljs-addition {
139 background-color: #baeeba;
140}
141
142.hljs-deletion {
143 background-color: #ffc8bd;
144}
145
146.hljs-comment .hljs-yardoctag {
147 font-weight: bold;
148}
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/backtotop.png b/src/Wallabag/Wallabag/Resources/views/default/public/img/default/backtotop.png
deleted file mode 100644
index 051238ef..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/backtotop.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/bad-display.png b/src/Wallabag/Wallabag/Resources/views/default/public/img/default/bad-display.png
deleted file mode 100755
index 6866799f..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/bad-display.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/checkmark-off.png b/src/Wallabag/Wallabag/Resources/views/default/public/img/default/checkmark-off.png
deleted file mode 100644
index 3db5a06d..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/checkmark-off.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/checkmark-on.png b/src/Wallabag/Wallabag/Resources/views/default/public/img/default/checkmark-on.png
deleted file mode 100644
index cd3abb2c..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/checkmark-on.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/down.png b/src/Wallabag/Wallabag/Resources/views/default/public/img/default/down.png
deleted file mode 100644
index b9d536a7..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/down.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/envelop.png b/src/Wallabag/Wallabag/Resources/views/default/public/img/default/envelop.png
deleted file mode 100644
index 6be1c886..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/envelop.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/flattr.png b/src/Wallabag/Wallabag/Resources/views/default/public/img/default/flattr.png
deleted file mode 100755
index 0404aaea..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/flattr.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/left.png b/src/Wallabag/Wallabag/Resources/views/default/public/img/default/left.png
deleted file mode 100644
index a0a53631..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/left.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/link.png b/src/Wallabag/Wallabag/Resources/views/default/public/img/default/link.png
deleted file mode 100755
index db62819d..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/link.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/print.png b/src/Wallabag/Wallabag/Resources/views/default/public/img/default/print.png
deleted file mode 100755
index 83d6445b..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/print.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/remove.png b/src/Wallabag/Wallabag/Resources/views/default/public/img/default/remove.png
deleted file mode 100644
index f8ad56a3..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/remove.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/rss.png b/src/Wallabag/Wallabag/Resources/views/default/public/img/default/rss.png
deleted file mode 100644
index 21bad1a1..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/rss.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/shaarli.png b/src/Wallabag/Wallabag/Resources/views/default/public/img/default/shaarli.png
deleted file mode 100644
index 1eb30f60..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/shaarli.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/star-off.png b/src/Wallabag/Wallabag/Resources/views/default/public/img/default/star-off.png
deleted file mode 100644
index 6a0133a7..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/star-off.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/star-on.png b/src/Wallabag/Wallabag/Resources/views/default/public/img/default/star-on.png
deleted file mode 100644
index a9f96eaa..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/star-on.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/top.png b/src/Wallabag/Wallabag/Resources/views/default/public/img/default/top.png
deleted file mode 100644
index 954a8c0a..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/top.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/twitter.png b/src/Wallabag/Wallabag/Resources/views/default/public/img/default/twitter.png
deleted file mode 100644
index cfcfe419..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/img/default/twitter.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/img/logo.svg b/src/Wallabag/Wallabag/Resources/views/default/public/img/logo.svg
deleted file mode 100644
index 865da440..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/img/logo.svg
+++ /dev/null
@@ -1,8 +0,0 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="64" height="64">
3 <circle cx="32" cy="32" r="29.5" style="fill:#000" />
4 <path d="m 16,18 33,0 0,26 -16.5,6 -16.5,-6 z" fill="#fff" />
5 <rect width="9" height="2.5" x="17.5" y="24.5" fill="#000" />
6 <rect width="9" height="2.5" x="28" y="24.5" fill="#000" />
7 <rect width="9" height="2.5" x="38.5" y="24.5" fill="#000" />
8</svg>
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/img/messages/close.png b/src/Wallabag/Wallabag/Resources/views/default/public/img/messages/close.png
deleted file mode 100644
index 731aa018..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/img/messages/close.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/img/messages/cross.png b/src/Wallabag/Wallabag/Resources/views/default/public/img/messages/cross.png
deleted file mode 100644
index 1514d51a..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/img/messages/cross.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/img/messages/help.png b/src/Wallabag/Wallabag/Resources/views/default/public/img/messages/help.png
deleted file mode 100644
index 5c870176..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/img/messages/help.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/img/messages/tick.png b/src/Wallabag/Wallabag/Resources/views/default/public/img/messages/tick.png
deleted file mode 100644
index a9925a06..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/img/messages/tick.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/img/messages/warning.png b/src/Wallabag/Wallabag/Resources/views/default/public/img/messages/warning.png
deleted file mode 100644
index 628cf2da..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/img/messages/warning.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/default/public/js/closeMessage.js b/src/Wallabag/Wallabag/Resources/views/default/public/js/closeMessage.js
deleted file mode 100644
index b57fe4a8..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/public/js/closeMessage.js
+++ /dev/null
@@ -1,17 +0,0 @@
1$(function(){
2 //---------------------------------------------------------------------------
3 // Show the close icon when the user hover over a message
4 //---------------------------------------------------------------------------
5 $('.messages').on('mouseenter', function(){
6 $(this).find('a.closeMessage').stop(true, true).show();
7 }).on('mouseleave', function(){
8 $(this).find('a.closeMessage').stop(true, true).hide();
9 });
10 //---------------------------------------------------------------------------
11 // Close the message box when the user clicks the close icon
12 //---------------------------------------------------------------------------
13 $('a.closeMessage').on('click', function(){
14 $(this).parents('div.messages').slideUp(300, function(){ $(this).remove(); });
15 return false;
16 });
17}); \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/default/tags.twig b/src/Wallabag/Wallabag/Resources/views/default/tags.twig
deleted file mode 100755
index e5be748e..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/tags.twig
+++ /dev/null
@@ -1,18 +0,0 @@
1{% extends "layout.twig" %}
2{% block title %}tags{% endblock %}
3{% block menu %}
4{% include '_menu.twig' %}
5{% endblock %}
6{% block content %}
7 <div class="two-column">
8 {% for tag in tags %}
9 <a href="./?view=tag&amp;id={{ tag.id }}">{{ tag.value }}</a> ({{ tag.entriescount }}) {% if token != '' %}<a href="?feed&amp;type=tag&amp;user_id={{ user_id }}&amp;tag_id={{ tag.id }}&amp;token={{ token }}" target="_blank"><img src="{{ poche_url }}themes/{{ theme }}/img/{{ theme }}/rss.png" /></a>{% endif %}
10 <br>
11
12 {% if loop.index == '%d'|format(loop.length/2 + 0.5) %}
13 </div><div class="two-column">
14 {% endif %}
15
16 {% endfor %}
17 </div>
18{% endblock %} \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/default/theme.ini b/src/Wallabag/Wallabag/Resources/views/default/theme.ini
deleted file mode 100644
index 9f3cfb6a..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/theme.ini
+++ /dev/null
@@ -1 +0,0 @@
1name = Default \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/default/view.twig b/src/Wallabag/Wallabag/Resources/views/default/view.twig
deleted file mode 100755
index 8f3a26c3..00000000
--- a/src/Wallabag/Wallabag/Resources/views/default/view.twig
+++ /dev/null
@@ -1,124 +0,0 @@
1{% extends "layout.twig" %}
2{% block title %}{{ entry.title|raw }} ({{ entry.url | e | getDomain }}){% endblock %}
3{% block content %}
4 {% include '_highlight.twig' %}
5 {% include '_pocheit-form.twig' %}
6 <div id="article_toolbar">
7 <ul>
8 <li><a href="./" title="{% trans "Return home" %}" class="tool back"><span>{% trans "Return home" %}</span></a></li>
9 <li><a href="#top" title="{% trans "Back to top" %}" class="tool top"><span>{% trans "Back to top" %}</span></a></li>
10 <li><a href="{{ entry.url|e }}" target="_blank" title="{% trans "original" %} : {{ entry.title|e }}" class="tool link"><span>{{ entry.url | e | getDomain }}</span></a></li>
11 <li><a title="{% trans "Mark as read" %}" class="tool {% if entry.is_read == 0 %}archive-off{% else %}archive{% endif %}" href="javascript: void(null);" id="markAsRead"><span>{% trans "Toggle mark as read" %}</span></a></li>
12 <li><a title="{% trans "Favorite" %}" class="tool {% if entry.is_fav == 0 %}fav-off{% else %}fav{% endif %}" href="javascript: void(null);" id="setFav"><span>{% trans "Toggle favorite" %}</span></a></li>
13 <li><a title="{% trans "Delete" %}" class="tool delete" href="./?action=delete&amp;id={{ entry.id|e }}"><span>{% trans "Delete" %}</span></a></li>
14 {% if constant('SHARE_TWITTER') == 1 %}<li><a href="https://twitter.com/home?status={{entry.title|url_encode}}%20{{ entry.url|url_encode }}%20via%20@wallabagapp" target="_blank" class="tool twitter" title="{% trans "Tweet" %}"><span>{% trans "Tweet" %}</span></a></li>{% endif %}
15 {% if constant('SHARE_MAIL') == 1 %}<li><a href="mailto:?subject={{ entry.title|url_encode }}&amp;body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email" title="{% trans "Email" %}"><span>{% trans "Email" %}</span></a></li>{% endif %}
16 {% if constant('SHARE_SHAARLI') == 1 %}<li><a href="{{ constant('SHAARLI_URL') }}/index.php?post={{ entry.url|url_encode }}&amp;title={{ entry.title|url_encode }}" target="_blank" class="tool shaarli" title="{% trans "shaarli" %}"><span>{% trans "shaarli" %}</span></a></li>{% endif %}
17 {% if constant('SHARE_DIASPORA') == 1 %}<li><a href="{{ constant('DIASPORA_URL') }}/bookmarklet?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}&notes=&v=1&noui=1&jump=doclose" target="_blank" class="tool diaspora" title="{% trans "diaspora" %}"><span>{% trans "diaspora" %}</span></a></li>{% endif %}
18 {% if constant('FLATTR') == 1 %}{% if flattr.status == constant('FLATTRABLE') %}<li><a href="http://flattr.com/submit/auto?url={{ entry.url }}" class="tool flattr" target="_blank" title="{% trans "flattr" %}"><span>{% trans "flattr" %}</span></a></li>{% elseif flattr.status == constant('FLATTRED') %}<li><a href="{{ flattr.flattrItemURL }}" class="tool flattr" target="_blank" title="{% trans "flattr" %}"><span>{% trans "flattr" %}</span>{{ flattr.numFlattrs }}</a></li>{% endif %}{% endif %}
19 {% if constant('CARROT') == 1 %}<li><a href="https://secure.carrot.org/GiveAndGetBack.do?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}" class="tool carrot icon" target="_blank" title="{% trans "carrot" %}"><span>{% trans "carrot" %}</span></a></li>{% endif %}
20 {% if constant('SHOW_PRINTLINK') == 1 %}<li><a title="{% trans "Print" %}" class="tool print" href="javascript: window.print();"><span>{% trans "Print" %}</span></a></li>{% endif %}
21 {% if constant('EPUB') == 1 %}<li><a href="./?epub&amp;method=id&amp;value={{ entry.id|e }}" title="Generate ePub file">EPUB</a></li>{% endif %}
22 {% if constant('MOBI') == 1 %}<li><a href="./?mobi&amp;method=id&amp;value={{ entry.id|e }}" title="Generate Mobi file">MOBI</a></li>{% endif %}
23 {% if constant('PDF') == 1 %}<li><a href="./?pdf&amp;method=id&amp;value={{ entry.id|e }}" title="Generate PDF file">PDF</a></li>{% endif %}
24 <li><a href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&amp;body={{ entry.url|url_encode }}" title="{% trans "Does this article appear wrong?" %}" class="tool bad-display"><span>{% trans "Does this article appear wrong?" %}</span></a></li>
25 {% if constant('SHOW_READPERCENT') == 1 %}<li><div id="readLeftPercent">0%</div></li>{% endif %}
26 </ul>
27 </div>
28 <div id="article">
29 <header class="mbm">
30 <h1>{{ entry.title|raw }}</h1>
31 </header>
32 {% block tags %}
33 <aside class="tags">
34 {% trans "tags:" %} {% for tag in tags %}<a href="./?view=tag&amp;id={{ tag.id }}">{{ tag.value }}</a> {% endfor %}<a href="./?view=edit-tags&amp;id={{ entry.id|e }}" title="{% trans "Edit tags" %}">✎</a>
35 </aside>
36 {% endblock %}
37 <article>
38 {{ content | raw }}
39 </article>
40 {{ block('tags') }}
41 </div>
42 <script src="{{ poche_url }}themes/_global/js/restoreScroll.js"></script>
43 <script type="text/javascript">
44 $(document).ready(function() {
45
46 // toggle read property of current article
47 $('#markAsRead').click(function(){
48 $("body").css("cursor", "wait");
49 $.ajax( { url: './?action=toggle_archive&id={{ entry.id|e }}' }).done(
50 function( data ) {
51 if ( data == '1' ) {
52 if ( $('#markAsRead').hasClass("archive-off") ) {
53 $('#markAsRead').removeClass("archive-off");
54 $('#markAsRead').addClass("archive");
55 }
56 else {
57 $('#markAsRead').removeClass("archive");
58 $('#markAsRead').addClass("archive-off");
59 }
60 }
61 else {
62 alert('Error! Pls check if you are logged in.');
63 }
64 });
65 $("body").css("cursor", "auto");
66 });
67
68 // toggle favorite property of current article
69 $('#setFav').click(function(){
70 $("body").css("cursor", "wait");
71 $.ajax( { url: './?action=toggle_fav&id={{ entry.id|e }}' }).done(
72 function( data ) {
73 if ( data == '1' ) {
74 if ( $('#setFav').hasClass("fav-off") ) {
75 $('#setFav').removeClass("fav-off");
76 $('#setFav').addClass("fav");
77 }
78 else {
79 $('#setFav').removeClass("fav");
80 $('#setFav').addClass("fav-off");
81 }
82 }
83 else {
84 alert('Error! Pls check if you are logged in.');
85 }
86 });
87 $("body").css("cursor", "auto");
88 });
89
90 // set percent of read on startup
91 if ( $(document).height() <= $(window).innerHeight() ) {
92 pp = 100;
93 }
94 else {
95 pp = 0;
96 }
97 $('#readLeftPercent').text( pp + '%' );
98
99
100 $(window).scroll(function(e){
101 var scrollTop = $(window).scrollTop();
102 var docHeight = $(document).height();
103 var scrollPercent = (scrollTop) / (docHeight);
104 var scrollPercentRounded = Math.round(scrollPercent*100)/100;
105 savePercent({{ entry.id|e }}, scrollPercentRounded);
106
107 // change percent of read on scroll
108 pp = Math.round(scrollTop * 100 / ( docHeight - $(window).innerHeight() ));
109 $('#readLeftPercent').text( pp + '%' );
110 });
111
112 retrievePercent({{ entry.id|e }});
113
114 $(window).resize(function(){
115 retrievePercent({{ entry.id|e }});
116 });
117
118 // Hide useless "back to top" link when there is no scrollbar
119 if ($("body").height() <= $(window).height()) {
120 $('#article_toolbar .tool.top').parent().hide();
121 }
122 });
123 </script>
124{% endblock %}
diff --git a/src/Wallabag/Wallabag/Resources/views/dmagenta/README.md b/src/Wallabag/Wallabag/Resources/views/dmagenta/README.md
deleted file mode 100644
index 6abc37e3..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dmagenta/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
1# dmagenta (dark magenta) theme
2
3theme created by Nicolas Lœuillet aka nico_somb \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/css/style-dmagenta.css b/src/Wallabag/Wallabag/Resources/views/dmagenta/public/css/style-dmagenta.css
deleted file mode 100644
index 4dc592d2..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/css/style-dmagenta.css
+++ /dev/null
@@ -1,78 +0,0 @@
1body {
2 color: #d4d4d4;
3 background-color: #372d37;
4}
5
6a,
7a:hover,
8a:visited {
9 color: #8d748d;
10}
11
12a.back span {
13 background-image: url('../img/dmagenta/left.png');
14}
15
16a.top span {
17 background-image: url('../img/dmagenta/top.png');
18}
19
20a.fav span,
21a.fav-off span:hover {
22 background-image: url('../img/dmagenta/star-on.png');
23}
24
25a.fav span:hover,
26a.fav-off span {
27 background-image: url('../img/dmagenta/star-off.png');
28}
29
30a.archive span,
31a.archive-off span:hover {
32 background-image: url('../img/dmagenta/checkmark-on.png');
33}
34
35a.archive span:hover,
36a.archive-off span {
37 background-image: url('../img/dmagenta/checkmark-off.png');
38}
39
40a.twitter span {
41 background-image: url('../img/dmagenta/twitter.png');
42}
43
44a.flattr span {
45 background-image: url('../img/dmagenta/flattr.png');
46}
47
48a.shaarli span {
49 background-image: url('../img/dmagenta/shaarli.png');
50}
51
52a.email span {
53 background-image: url('../img/dmagenta/envelop.png');
54}
55
56a.delete span {
57 background-image: url('../img/dmagenta/remove.png');
58}
59
60a.link span {
61 background-image: url('../img/dmagenta/link.png');
62}
63
64a.bad-display span {
65 background-image: url('../img/dmagenta/bad-display.png');
66}
67
68.pagination a {
69 color: #aaa;
70}
71
72#main #links li .current {
73 background-color: #2d372d;
74}
75
76#article_toolbar {
77 background: #372d37;
78} \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/backtotop.png b/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/backtotop.png
deleted file mode 100755
index 051238ef..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/backtotop.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/bad-display.png b/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/bad-display.png
deleted file mode 100755
index 6866799f..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/bad-display.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/checkmark-off.png b/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/checkmark-off.png
deleted file mode 100644
index 3db5a06d..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/checkmark-off.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/checkmark-on.png b/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/checkmark-on.png
deleted file mode 100644
index cd3abb2c..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/checkmark-on.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/down.png b/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/down.png
deleted file mode 100644
index b9d536a7..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/down.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/envelop.png b/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/envelop.png
deleted file mode 100644
index 6be1c886..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/envelop.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/flattr.png b/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/flattr.png
deleted file mode 100755
index 0404aaea..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/flattr.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/left.png b/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/left.png
deleted file mode 100644
index a0a53631..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/left.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/link.png b/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/link.png
deleted file mode 100755
index db62819d..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/link.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/remove.png b/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/remove.png
deleted file mode 100644
index f8ad56a3..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/remove.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/rss.png b/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/rss.png
deleted file mode 100644
index 21bad1a1..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/rss.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/shaarli.png b/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/shaarli.png
deleted file mode 100644
index 1eb30f60..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/shaarli.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/star-off.png b/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/star-off.png
deleted file mode 100644
index 6a0133a7..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/star-off.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/star-on.png b/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/star-on.png
deleted file mode 100644
index a9f96eaa..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/star-on.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/top.png b/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/top.png
deleted file mode 100644
index 954a8c0a..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/top.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/twitter.png b/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/twitter.png
deleted file mode 100644
index cfcfe419..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dmagenta/public/img/dmagenta/twitter.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dmagenta/screenshot.jpg b/src/Wallabag/Wallabag/Resources/views/dmagenta/screenshot.jpg
deleted file mode 100644
index ab8f1ec2..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dmagenta/screenshot.jpg
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/dmagenta/theme.ini b/src/Wallabag/Wallabag/Resources/views/dmagenta/theme.ini
deleted file mode 100644
index 78fa3a9c..00000000
--- a/src/Wallabag/Wallabag/Resources/views/dmagenta/theme.ini
+++ /dev/null
@@ -1,2 +0,0 @@
1name = Dmagenta
2requirements[] = default
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized-dark/README.md b/src/Wallabag/Wallabag/Resources/views/solarized-dark/README.md
deleted file mode 100644
index 81be1f8c..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized-dark/README.md
+++ /dev/null
@@ -1,6 +0,0 @@
1# solarized-dark (Solarized Dark) theme
2
3
4Theme created by NumEricR
5
6http://github.com/NumEricR/poche-themes
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized-dark/Solarized-LICENSE.txt b/src/Wallabag/Wallabag/Resources/views/solarized-dark/Solarized-LICENSE.txt
deleted file mode 100644
index a842f663..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized-dark/Solarized-LICENSE.txt
+++ /dev/null
@@ -1,19 +0,0 @@
1Copyright (c) 2011 Ethan Schoonover
2
3Permission is hereby granted, free of charge, to any person obtaining a copy
4of this software and associated documentation files (the "Software"), to deal
5in the Software without restriction, including without limitation the rights
6to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7copies of the Software, and to permit persons to whom the Software is
8furnished to do so, subject to the following conditions:
9
10The above copyright notice and this permission notice shall be included in
11all copies or substantial portions of the Software.
12
13THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19THE SOFTWARE
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/css/style-solarized-dark.css b/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/css/style-solarized-dark.css
deleted file mode 100644
index 77a97d38..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/css/style-solarized-dark.css
+++ /dev/null
@@ -1,232 +0,0 @@
1/*
2 * Solarized Dark - by NumEricR
3 * http://github.com/NumEricR/poche-themes
4 * ==================================================
5 *
6 * Based on Solarized's palette - (c) 2011 Ethan Schoonover
7 * See http://ethanschoonover.com/solarized#usage-development
8 * See http://ethanschoonover.com/solarized#the-values
9 *
10 * Background: #002b36 base 03
11 * Highlight: #073642 base 02
12 * Primary content: #839496 base 0
13 * Intermediate: #657b83 base 00
14 * Emphasized content: #93a1a1 base 1
15 * Secondary content: #586e75 base 01
16 * Green: #859900
17 * Orange: #cb4b16
18 * Red: #dc322f
19 * Blue: #268bd2
20 *
21 * ================================================== */
22
23/* Background */
24
25body,
26#article_toolbar {
27 background-color: #002b36;
28}
29
30/* Highlight */
31/* 2 different selectors for selection pseudo-elmt */
32/* See https://developer.mozilla.org/en-US/docs/Web/CSS/::selection */
33::-moz-selection {
34 background-color: #073642;
35}
36::selection {
37 background-color: #073642;
38}
39
40/* Primary content */
41
42body,
43a,
44a:hover,
45a:visited,
46td {
47 color: #839496;
48}
49
50/* Secondary content */
51
52.tools p,
53.vieworiginal a,
54.vieworiginal a:hover,
55.vieworiginal a:visited {
56 color: #586e75;
57}
58
59#main #content .entrie,
60#article header,
61#article article {
62 border-bottom-color: #586e75;
63}
64
65/* Emphasized content */
66
67.entrie h2 a:hover,
68footer,
69footer a {
70 color: #93a1a1;
71}
72
73/* Colored content */
74
75#main .messages.success,
76#main .messages.warning,
77#main .messages.error,
78#main .messages.information,
79#main .messages.info {
80 background-color: #073642;
81}
82
83#main .messages.success {
84 border-color: #859900;
85}
86
87#main .messages.success p {
88 color: #859900 !important; /* Overwrites !important used on messages.css */
89}
90
91#main .messages.warning {
92 border-color: #cb4b16;
93}
94
95#main .messages.warning p {
96 color: #cb4b16;
97}
98
99#main .messages.error {
100 border-color: #dc322f;
101}
102
103#main .messages.error p {
104 color: #dc322f !important; /* Overwrites !important used on messages.css */
105}
106
107#main .messages.information,
108#main .messages.info {
109 border-color: #268bd2;
110}
111
112#main .messages.information p,
113#main .messages.info p {
114 color: #268bd2;
115}
116
117/* Miscellaneous */
118
119.bouton,
120.bouton:hover,
121#main #links li a.current,
122#links a:hover,
123.pagination span.current,
124.pagination a:hover,
125.pagination a:active {
126 color: #002b36;
127 background-color: #586e75;
128}
129
130.bouton:hover {
131 background-color: #657b83;
132}
133
134#login,
135#password,
136#password_repeat,
137#bookmarklet,
138.top_link {
139 background-color: #073642;
140}
141
142#login,
143#password,
144#password_repeat,
145#bookmarklet {
146 padding: 5px;
147 border: 1px solid #586e75;
148 color: #839496;
149}
150
151#bookmarklet {
152 border-style: dashed;
153}
154
155.pagination a {
156 border-color: #586e75;
157 color: #586e75;
158}
159
160.pagination span.current {
161 border-color: #073642;
162}
163
164/* Images */
165
166a.back span {
167 background-image: url('../img/solarized-dark/left.png');
168}
169
170a.top span {
171 background-image: url('../img/solarized-dark/top.png');
172}
173
174a.fav span,
175a.fav-off span:hover {
176 background-image: url('../img/solarized-dark/star-on.png');
177}
178
179a.fav span:hover,
180a.fav-off span {
181 background-image: url('../img/solarized-dark/star-off.png');
182}
183
184a.archive span,
185a.archive-off span:hover {
186 background-image: url('../img/solarized-dark/checkmark-on.png');
187}
188
189a.archive span:hover,
190a.archive-off span {
191 background-image: url('../img/solarized-dark/checkmark-off.png');
192}
193
194a.twitter span {
195 background-image: url('../img/solarized-dark/twitter.png');
196}
197
198a.flattr span {
199 background-image: url('../img/solarized-dark/flattr.png');
200}
201
202a.shaarli span {
203 background-image: url('../img/solarized-dark/shaarli.png');
204}
205
206a.email span {
207 background-image: url('../img/solarized-dark/envelop.png');
208}
209
210a.delete span {
211 background-image: url('../img/solarized-dark/remove.png');
212}
213
214a.link span {
215 background-image: url('../img/solarized-dark/link.png');
216}
217
218a.bad-display span {
219 background-image: url('../img/solarized-dark/bad-display.png');
220}
221
222.arrow-down {
223 width: 0px;
224 height: 0px;
225 border-style: solid;
226 border-width: 10px 10px 0 10px;
227 border-color: #586E75 transparent transparent transparent;
228
229 position: absolute;
230 margin-top: 1.5em;
231 margin-left: -30px;
232} \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/backtotop.png b/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/backtotop.png
deleted file mode 100644
index 1501c2a5..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/backtotop.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/bad-display.png b/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/bad-display.png
deleted file mode 100644
index b2c3ca17..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/bad-display.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/checkmark-off.png b/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/checkmark-off.png
deleted file mode 100644
index fd7d92fa..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/checkmark-off.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/checkmark-on.png b/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/checkmark-on.png
deleted file mode 100644
index 592965dd..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/checkmark-on.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/down.png b/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/down.png
deleted file mode 100644
index 5de30315..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/down.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/envelop.png b/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/envelop.png
deleted file mode 100644
index d3468885..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/envelop.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/flattr.png b/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/flattr.png
deleted file mode 100644
index 73e3f421..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/flattr.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/left.png b/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/left.png
deleted file mode 100644
index a953d831..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/left.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/link.png b/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/link.png
deleted file mode 100644
index 5e859a0e..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/link.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/remove.png b/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/remove.png
deleted file mode 100644
index 66a5c1ab..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/remove.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/rss.png b/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/rss.png
deleted file mode 100644
index 21bad1a1..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/rss.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/shaarli.png b/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/shaarli.png
deleted file mode 100644
index 1eb30f60..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/shaarli.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/star-off.png b/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/star-off.png
deleted file mode 100644
index 1c603ecc..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/star-off.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/star-on.png b/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/star-on.png
deleted file mode 100644
index bc37772a..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/star-on.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/top.png b/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/top.png
deleted file mode 100644
index b3f44f31..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/top.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/twitter.png b/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/twitter.png
deleted file mode 100644
index c4a25334..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized-dark/public/img/solarized-dark/twitter.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized-dark/screenshot.jpg b/src/Wallabag/Wallabag/Resources/views/solarized-dark/screenshot.jpg
deleted file mode 100644
index 2ad87943..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized-dark/screenshot.jpg
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized-dark/theme.ini b/src/Wallabag/Wallabag/Resources/views/solarized-dark/theme.ini
deleted file mode 100644
index c9948146..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized-dark/theme.ini
+++ /dev/null
@@ -1,2 +0,0 @@
1name = Solarized Dark
2requirements[] = default
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized/README.md b/src/Wallabag/Wallabag/Resources/views/solarized/README.md
deleted file mode 100644
index 255e3cdd..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized/README.md
+++ /dev/null
@@ -1,6 +0,0 @@
1# solarized (Solarized) theme
2
3
4Theme created by NumEricR
5
6http://github.com/NumEricR/poche-themes
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized/Solarized-LICENSE.txt b/src/Wallabag/Wallabag/Resources/views/solarized/Solarized-LICENSE.txt
deleted file mode 100644
index a842f663..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized/Solarized-LICENSE.txt
+++ /dev/null
@@ -1,19 +0,0 @@
1Copyright (c) 2011 Ethan Schoonover
2
3Permission is hereby granted, free of charge, to any person obtaining a copy
4of this software and associated documentation files (the "Software"), to deal
5in the Software without restriction, including without limitation the rights
6to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7copies of the Software, and to permit persons to whom the Software is
8furnished to do so, subject to the following conditions:
9
10The above copyright notice and this permission notice shall be included in
11all copies or substantial portions of the Software.
12
13THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19THE SOFTWARE
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized/public/css/style-solarized.css b/src/Wallabag/Wallabag/Resources/views/solarized/public/css/style-solarized.css
deleted file mode 100644
index cf16338f..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized/public/css/style-solarized.css
+++ /dev/null
@@ -1,232 +0,0 @@
1/*
2 * Solarized - by NumEricR
3 * http://github.com/NumEricR/poche-themes
4 * ==================================================
5 *
6 * Based on Solarized's palette - (c) 2011 Ethan Schoonover
7 * See http://ethanschoonover.com/solarized#usage-development
8 * See http://ethanschoonover.com/solarized#the-values
9 *
10 * Background: #fdf6e3 base 3
11 * Highlight: #eee8d5 base 2
12 * Primary content: #657b83 base 00
13 * Intermediate: #839496 base 0
14 * Emphasized content: #586e75 base 01
15 * Secondary content: #93a1a1 base 1
16 * Green: #859900
17 * Orange: #cb4b16
18 * Red: #dc322f
19 * Blue: #268bd2
20 *
21 * ================================================== */
22
23/* Background */
24
25body,
26#article_toolbar {
27 background-color: #fdf6e3;
28}
29
30/* Highlight */
31/* 2 different selectors for selection pseudo-elmt */
32/* See https://developer.mozilla.org/en-US/docs/Web/CSS/::selection */
33::-moz-selection {
34 background-color: #eee8d5;
35}
36::selection {
37 background-color: #eee8d5;
38}
39
40/* Primary content */
41
42body,
43a,
44a:hover,
45a:visited,
46td {
47 color: #657b83;
48}
49
50/* Secondary content */
51
52.tools p,
53.vieworiginal a,
54.vieworiginal a:hover,
55.vieworiginal a:visited {
56 color: #93a1a1;
57}
58
59#main #content .entrie,
60#article header,
61#article article {
62 border-bottom-color: #93a1a1;
63}
64
65/* Emphasized content */
66
67.entrie h2 a:hover,
68footer,
69footer a {
70 color: #586e75;
71}
72
73/* Colored content */
74
75#main .messages.success,
76#main .messages.warning,
77#main .messages.error,
78#main .messages.information,
79#main .messages.info {
80 background-color: #eee8d5;
81}
82
83#main .messages.success {
84 border-color: #859900;
85}
86
87#main .messages.success p {
88 color: #859900 !important; /* Overwrites !important used on messages.css */
89}
90
91#main .messages.warning {
92 border-color: #cb4b16;
93}
94
95#main .messages.warning p {
96 color: #cb4b16;
97}
98
99#main .messages.error {
100 border-color: #dc322f;
101}
102
103#main .messages.error p {
104 color: #dc322f !important; /* Overwrites !important used on messages.css */
105}
106
107#main .messages.information,
108#main .messages.info {
109 border-color: #268bd2;
110}
111
112#main .messages.information p,
113#main .messages.info p {
114 color: #268bd2;
115}
116
117/* Miscellaneous */
118
119.bouton,
120.bouton:hover,
121#main #links li a.current,
122#links a:hover,
123.pagination span.current,
124.pagination a:hover,
125.pagination a:active {
126 color: #fdf6e3;
127 background-color: #93a1a1;
128}
129
130.bouton:hover {
131 background-color: #657b83;
132}
133
134#login,
135#password,
136#password_repeat,
137#bookmarklet,
138.top_link {
139 background-color: #eee8d5;
140}
141
142#login,
143#password,
144#password_repeat,
145#bookmarklet {
146 padding: 5px;
147 border: 1px solid #93a1a1;
148 color: #657b83;
149}
150
151#bookmarklet {
152 border-style: dashed;
153}
154
155.pagination a {
156 border-color: #93a1a1;
157 color: #93a1a1;
158}
159
160.pagination span.current {
161 border-color: #eee8d5;
162}
163
164/* Images */
165
166a.back span {
167 background-image: url('../img/solarized/left.png');
168}
169
170a.top span {
171 background-image: url('../img/solarized/top.png');
172}
173
174a.fav span,
175a.fav-off span:hover {
176 background-image: url('../img/solarized/star-on.png');
177}
178
179a.fav span:hover,
180a.fav-off span {
181 background-image: url('../img/solarized/star-off.png');
182}
183
184a.archive span,
185a.archive-off span:hover {
186 background-image: url('../img/solarized/checkmark-on.png');
187}
188
189a.archive span:hover,
190a.archive-off span {
191 background-image: url('../img/solarized/checkmark-off.png');
192}
193
194a.twitter span {
195 background-image: url('../img/solarized/twitter.png');
196}
197
198a.shaarli span {
199 background-image: url('../img/solarized/shaarli.png');
200}
201
202a.flattr span {
203 background-image: url('../img/solarized/flattr.png');
204}
205
206a.email span {
207 background-image: url('../img/solarized/envelop.png');
208}
209
210a.delete span {
211 background-image: url('../img/solarized/remove.png');
212}
213
214a.link span {
215 background-image: url('../img/solarized/link.png');
216}
217
218a.bad-display span {
219 background-image: url('../img/solarized/bad-display.png');
220}
221
222.arrow-down {
223 width: 0px;
224 height: 0px;
225 border-style: solid;
226 border-width: 10px 10px 0 10px;
227 border-color: #93A1A1 transparent transparent transparent;
228
229 position: absolute;
230 margin-top: 1.5em;
231 margin-left: -30px;
232} \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/backtotop.png b/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/backtotop.png
deleted file mode 100644
index a3e52318..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/backtotop.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/bad-display.png b/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/bad-display.png
deleted file mode 100644
index ae99ab37..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/bad-display.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/checkmark-off.png b/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/checkmark-off.png
deleted file mode 100644
index 20cd26b3..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/checkmark-off.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/checkmark-on.png b/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/checkmark-on.png
deleted file mode 100644
index 87a2b799..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/checkmark-on.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/down.png b/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/down.png
deleted file mode 100644
index 622ff87b..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/down.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/envelop.png b/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/envelop.png
deleted file mode 100644
index 1caf7d43..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/envelop.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/flattr.png b/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/flattr.png
deleted file mode 100644
index 18e00f86..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/flattr.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/left.png b/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/left.png
deleted file mode 100644
index 9780faee..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/left.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/link.png b/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/link.png
deleted file mode 100644
index d0e12862..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/link.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/remove.png b/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/remove.png
deleted file mode 100644
index d5113d17..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/remove.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/rss.png b/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/rss.png
deleted file mode 100644
index 21bad1a1..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/rss.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/shaarli.png b/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/shaarli.png
deleted file mode 100644
index 1eb30f60..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/shaarli.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/star-off.png b/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/star-off.png
deleted file mode 100644
index afd7d80c..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/star-off.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/star-on.png b/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/star-on.png
deleted file mode 100644
index 3a772512..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/star-on.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/top.png b/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/top.png
deleted file mode 100644
index d20001a4..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/top.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/twitter.png b/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/twitter.png
deleted file mode 100644
index 109d7151..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized/public/img/solarized/twitter.png
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized/screenshot.jpg b/src/Wallabag/Wallabag/Resources/views/solarized/screenshot.jpg
deleted file mode 100644
index 07d402e3..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized/screenshot.jpg
+++ /dev/null
Binary files differ
diff --git a/src/Wallabag/Wallabag/Resources/views/solarized/theme.ini b/src/Wallabag/Wallabag/Resources/views/solarized/theme.ini
deleted file mode 100644
index 703997b9..00000000
--- a/src/Wallabag/Wallabag/Resources/views/solarized/theme.ini
+++ /dev/null
@@ -1,2 +0,0 @@
1name = Solarized
2requirements[] = default
diff --git a/src/Wallabag/Wallabag/Routing.php b/src/Wallabag/Wallabag/Routing.php
deleted file mode 100755
index 85b6af1e..00000000
--- a/src/Wallabag/Wallabag/Routing.php
+++ /dev/null
@@ -1,163 +0,0 @@
1<?php
2/**
3 * wallabag, self hostable application allowing you to not miss any content anymore
4 *
5 * @category wallabag
6 * @author Nicolas Lœuillet <nicolas@loeuillet.org>
7 * @copyright 2013
8 * @license http://opensource.org/licenses/MIT see COPYING file
9 */
10
11namespace Wallabag\Wallabag;
12
13class Routing
14{
15 protected $wallabag;
16 protected $referer;
17 protected $view;
18 protected $action;
19 protected $id;
20 protected $url;
21 protected $file;
22 protected $defaultVars = array();
23 protected $vars = array();
24
25 public function __construct(Wallabag $wallabag)
26 {
27 $this->wallabag = $wallabag;
28 $this->_init();
29 }
30
31 private function _init()
32 {
33 # Parse GET & REFERER vars
34 $this->referer = empty($_SERVER['HTTP_REFERER']) ? '' : $_SERVER['HTTP_REFERER'];
35 $this->view = Tools::checkVar('view', 'home');
36 $this->action = Tools::checkVar('action');
37 $this->id = Tools::checkVar('id');
38 $_SESSION['sort'] = Tools::checkVar('sort', 'id');
39 $this->url = new Url((isset ($_GET['url'])) ? $_GET['url'] : '');
40 }
41
42 public function run()
43 {
44 # vars to _always_ send to templates
45 $this->defaultVars = array(
46 'referer' => $this->referer,
47 'view' => $this->view,
48 'poche_url' => Tools::getPocheUrl(),
49 'title' => _('wallabag, a read it later open source system'),
50 'token' => \Session::getToken(),
51 'theme' => $this->wallabag->tpl->getTheme()
52 );
53
54 $this->_launchAction();
55 $this->_defineTplInformation();
56
57 # because messages can be added in $poche->action(), we have to add this entry now (we can add it before)
58 $this->vars = array_merge($this->vars, array('messages' => $this->wallabag->messages->display('all', FALSE)));
59
60 $this->_render($this->file, $this->vars);
61 }
62
63 private function _defineTplInformation()
64 {
65 $tplFile = array();
66 $tplVars = array();
67
68 if (\Session::isLogged()) {
69 $this->wallabag->action($this->action, $this->url, $this->id);
70 $tplFile = Tools::getTplFile($this->view);
71 $tplVars = array_merge($this->vars, $this->wallabag->displayView($this->view, $this->id));
72 } elseif(isset($_SERVER['PHP_AUTH_USER'])) {
73 if($this->wallabag->store->userExists($_SERVER['PHP_AUTH_USER'])) {
74 $this->wallabag->login($this->referer);
75 } else {
76 $this->wallabag->messages->add('e', _('login failed: user doesn\'t exist'));
77 Tools::logm('user doesn\'t exist');
78 $tplFile = Tools::getTplFile('login');
79 $tplVars['http_auth'] = 1;
80 }
81 } elseif(isset($_SERVER['REMOTE_USER'])) {
82 if($this->wallabag->store->userExists($_SERVER['REMOTE_USER'])) {
83 $this->wallabag->login($this->referer);
84 } else {
85 $this->wallabag->messages->add('e', _('login failed: user doesn\'t exist'));
86 Tools::logm('user doesn\'t exist');
87 $tplFile = Tools::getTplFile('login');
88 $tplVars['http_auth'] = 1;
89 }
90 } else {
91 $tplFile = Tools::getTplFile('login');
92 $tplVars['http_auth'] = 0;
93 \Session::logout();
94 }
95
96 $this->file = $tplFile;
97 $this->vars = array_merge($this->defaultVars, $tplVars);
98 }
99
100 private function _launchAction()
101 {
102 if (isset($_GET['login'])) {
103 // hello to you
104 $this->wallabag->login($this->referer);
105 } elseif (isset($_GET['feed']) && isset($_GET['user_id'])) {
106 $tag_id = (isset($_GET['tag_id']) ? intval($_GET['tag_id']) : 0);
107 $limit = (isset($_GET['limit']) ? intval($_GET['limit']) : 0);
108 $this->wallabag->generateFeeds($_GET['token'], filter_var($_GET['user_id'],FILTER_SANITIZE_NUMBER_INT), $tag_id, $_GET['type'], $limit);
109 }
110
111 //allowed ONLY to logged in user
112 if (\Session::isLogged() === true)
113 {
114 if (isset($_GET['logout'])) {
115 // see you soon !
116 $this->wallabag->logout();
117 } elseif (isset($_GET['config'])) {
118 // update password
119 $this->wallabag->updatePassword($_POST['password'], $_POST['password_repeat']);
120 } elseif (isset($_GET['newuser'])) {
121 $this->wallabag->createNewUser($_POST['newusername'], $_POST['password4newuser']);
122 } elseif (isset($_GET['deluser'])) {
123 $this->wallabag->deleteUser($_POST['password4deletinguser']);
124 } elseif (isset($_GET['epub'])) {
125 $epub = new WallabagEpub($this->wallabag, $_GET['method'], $_GET['value']);
126 $epub->prepareData();
127 $epub->produceEpub();
128 } elseif (isset($_GET['mobi'])) {
129 $mobi = new WallabagMobi($this->wallabag, $_GET['method'], $_GET['value']);
130 $mobi->prepareData();
131 $mobi->produceMobi();
132 } elseif (isset($_GET['pdf'])) {
133 $pdf = new WallabagPDF($this->wallabag, $_GET['method'], $_GET['value']);
134 $pdf->prepareData();
135 $pdf->producePDF();
136 } elseif (isset($_GET['import'])) {
137 $import = $this->wallabag->import();
138 $tplVars = array_merge($this->vars, $import);
139 } elseif (isset($_GET['empty-cache'])) {
140 Tools::emptyCache();
141 } elseif (isset($_GET['export'])) {
142 $this->wallabag->export();
143 } elseif (isset($_GET['updatetheme'])) {
144 $this->wallabag->tpl->updateTheme($_POST['theme']);
145 } elseif (isset($_GET['updatelanguage'])) {
146 $this->wallabag->language->updateLanguage($_POST['language']);
147 } elseif (isset($_GET['uploadfile'])) {
148 $this->wallabag->uploadFile();
149 } elseif (isset($_GET['feed']) && isset($_GET['action']) && $_GET['action'] == 'generate') {
150 $this->wallabag->updateToken();
151 }
152 elseif (isset($_GET['plainurl']) && !empty($_GET['plainurl'])) {
153 $plainUrl = new Url(base64_encode($_GET['plainurl']));
154 $this->wallabag->action('add', $plainUrl);
155 }
156 }
157 }
158
159 public function _render($file, $vars)
160 {
161 echo $this->wallabag->tpl->render($file, $vars);
162 }
163}
diff --git a/src/Wallabag/Wallabag/Template.php b/src/Wallabag/Wallabag/Template.php
deleted file mode 100644
index d0fc9b07..00000000
--- a/src/Wallabag/Wallabag/Template.php
+++ /dev/null
@@ -1,244 +0,0 @@
1<?php
2/**
3 * wallabag, self hostable application allowing you to not miss any content anymore
4 *
5 * @category wallabag
6 * @author Nicolas Lœuillet <nicolas@loeuillet.org>
7 * @copyright 2013
8 * @license http://opensource.org/licenses/MIT see COPYING file
9 */
10
11namespace Wallabag\Wallabag;
12
13use \Twig_Environment;
14use \Session;
15use \Twig_Loader_Chain;
16use \Twig_Loader_Filesystem;
17use \Twig_Extensions_Extension_I18n;
18use \Twig_SimpleFilter;
19
20class Template extends Twig_Environment
21{
22 protected $wallabag;
23
24 private $canRenderTemplates = TRUE;
25 private $currentTheme = '';
26
27 public function __construct(Wallabag $wallabag)
28 {
29 $this->wallabag = $wallabag;
30
31 // Set up theme
32 $pocheUser = Session::getParam('poche_user');
33
34 $themeDirectory = (is_null($pocheUser) ? DEFAULT_THEME : $pocheUser->getConfigValue('theme'));
35
36 if ($themeDirectory === false || !is_dir(THEME . '/' . $themeDirectory)) {
37 $themeDirectory = DEFAULT_THEME;
38 }
39
40 $this->currentTheme = $themeDirectory;
41
42 if ($this->_themeIsInstalled() === array()) {
43 $this->_init();
44 }
45 }
46
47 /**
48 * Returns true if selected theme is installed
49 *
50 * @return bool
51 */
52 private function _themeIsInstalled()
53 {
54 $errors = array();
55
56 // Twig is an absolute requirement for wallabag to function.
57 // Abort immediately if the Composer installer hasn't been run yet
58 if (!$this->canRenderTemplates) {
59 $errors[] = 'Twig does not seem to be installed. Please initialize the Composer installation to automatically fetch dependencies. You can also download <a href="http://wllbg.org/vendor">vendor.zip</a> and extract it in your wallabag folder.';
60 }
61
62 // Check if the selected theme and its requirements are present
63 $theme = $this->getTheme();
64 if ($theme != '' && !is_dir(THEME . '/' . $theme)) {
65 $errors[] = 'The currently selected theme (' . $theme . ') does not seem to be properly installed (Missing directory: ' . THEME . '/' . $theme . ')';
66 $this->canRenderTemplates = FALSE;
67 }
68
69 $themeInfo = $this->getThemeInfo($theme);
70 if (isset($themeInfo['requirements']) && is_array($themeInfo['requirements'])) {
71 foreach ($themeInfo['requirements'] as $requiredTheme) {
72 if (! is_dir(THEME . '/' . $requiredTheme)) {
73 $errors[] = 'The required "' . $requiredTheme . '" theme is missing for the current theme (' . $theme . ')';
74 $this->canRenderTemplates = FALSE;
75 }
76 }
77 }
78
79 $currentErrors = (is_null(Session::getParam('errors'))? array() : Session::getParam('errors'));
80 Session::setParam('errors', array_merge($errors, $currentErrors));
81
82 return $errors;
83 }
84
85 /**
86 * Initialization for templates
87 */
88 private function _init()
89 {
90 $loaderChain = new Twig_Loader_Chain();
91 $theme = $this->getTheme();
92
93 // add the current theme as first to the loader chain
94 // so Twig will look there first for overridden template files
95 try {
96 $loaderChain->addLoader(new Twig_Loader_Filesystem(THEME . '/' . $theme));
97 } catch (Twig_Error_Loader $e) {
98 # @todo isInstalled() should catch this, inject Twig later
99 die('The currently selected theme (' . $theme . ') does not seem to be properly installed (' . THEME . '/' . $theme .' is missing)');
100 }
101
102 // add all required themes to the loader chain
103 $themeInfo = $this->getThemeInfo($theme);
104 if (isset($themeInfo['requirements']) && is_array($themeInfo['requirements'])) {
105 foreach ($themeInfo['requirements'] as $requiredTheme) {
106 try {
107 $loaderChain->addLoader(new Twig_Loader_Filesystem(THEME . '/' . $requiredTheme));
108 } catch (Twig_Error_Loader $e) {
109 # @todo isInstalled() should catch this, inject Twig later
110 die('The required "' . $requiredTheme . '" theme is missing for the current theme (' . $theme . ')');
111 }
112 }
113 }
114
115 if (DEBUG_POCHE) {
116 $twigParams = array();
117 } else {
118 $twigParams = array('cache' => CACHE);
119 }
120
121 parent::__construct($loaderChain, $twigParams);
122
123 //$tpl = new Twig_Environment($loaderChain, $twigParams);
124 $this->addExtension(new Twig_Extensions_Extension_I18n());
125
126 # filter to display domain name of an url
127 $filter = new Twig_SimpleFilter('getDomain', 'Wallabag\\Wallabag\\Tools::getDomain');
128 $this->addFilter($filter);
129
130 # filter for reading time
131 $filter = new Twig_SimpleFilter('getReadingTime', 'Wallabag\\Wallabag\\Tools::getReadingTime');
132 $this->addFilter($filter);
133 }
134
135 /**
136 * Returns current theme
137 *
138 * @return string
139 */
140 public function getTheme()
141 {
142 return $this->currentTheme;
143 }
144
145 /**
146 * Provides theme information by parsing theme.ini file if present in the theme's root directory.
147 * In all cases, the following data will be returned:
148 * - name: theme's name, or key if the theme is unnamed,
149 * - current: boolean informing if the theme is the current user theme.
150 *
151 * @param string $theme Theme key (directory name)
152 * @return array|boolean Theme information, or false if the theme doesn't exist.
153 */
154 public function getThemeInfo($theme)
155 {
156 if (!is_dir(THEME . '/' . $theme)) {
157 return false;
158 }
159
160 $themeIniFile = THEME . '/' . $theme . '/theme.ini';
161 $themeInfo = array();
162
163 if (is_file($themeIniFile) && is_readable($themeIniFile)) {
164 $themeInfo = parse_ini_file($themeIniFile);
165 }
166
167 if ($themeInfo === false) {
168 $themeInfo = array();
169 }
170
171 if (!isset($themeInfo['name'])) {
172 $themeInfo['name'] = $theme;
173 }
174
175 $themeInfo['current'] = ($theme === $this->getTheme());
176
177 return $themeInfo;
178 }
179
180 /**
181 * Returns an array with installed themes
182 *
183 * @return array
184 */
185 public function getInstalledThemes()
186 {
187 $handle = opendir(THEME);
188 $themes = array();
189
190 while (($theme = readdir($handle)) !== false) {
191 # Themes are stored in a directory, so all directory names are themes
192 # @todo move theme installation data to database
193 if (!is_dir(THEME . '/' . $theme) || in_array($theme, array('.', '..', '_global'))) {
194 continue;
195 }
196
197 $themes[$theme] = $this->getThemeInfo($theme);
198 }
199
200 ksort($themes);
201
202 return $themes;
203 }
204
205 /**
206 * Update theme for the current user
207 *
208 * @param $newTheme
209 */
210 public function updateTheme($newTheme)
211 {
212 # we are not going to change it to the current theme...
213 if ($newTheme == $this->getTheme()) {
214 $this->wallabag->messages->add('w', _('still using the "' . $this->getTheme() . '" theme!'));
215 Tools::redirect('?view=config');
216 }
217
218 $themes = $this->getInstalledThemes();
219 $actualTheme = false;
220
221 foreach (array_keys($themes) as $theme) {
222 if ($theme == $newTheme) {
223 $actualTheme = true;
224 break;
225 }
226 }
227
228 if (!$actualTheme) {
229 $this->wallabag->messages->add('e', _('that theme does not seem to be installed'));
230 Tools::redirect('?view=config');
231 }
232
233 $this->wallabag->store->updateUserConfig($this->wallabag->user->getId(), 'theme', $newTheme);
234 $this->wallabag->messages->add('s', _('you have changed your theme preferences'));
235
236 $currentConfig = $_SESSION['poche_user']->config;
237 $currentConfig['theme'] = $newTheme;
238
239 $_SESSION['poche_user']->setConfig($currentConfig);
240
241 Tools::emptyCache();
242 Tools::redirect('?view=config');
243 }
244}
diff --git a/src/Wallabag/Wallabag/Tools.php b/src/Wallabag/Wallabag/Tools.php
deleted file mode 100755
index 9350c660..00000000
--- a/src/Wallabag/Wallabag/Tools.php
+++ /dev/null
@@ -1,425 +0,0 @@
1<?php
2/**
3 * wallabag, self hostable application allowing you to not miss any content anymore
4 *
5 * @category wallabag
6 * @author Nicolas Lœuillet <nicolas@loeuillet.org>
7 * @copyright 2013
8 * @license http://opensource.org/licenses/MIT see COPYING file
9 */
10
11namespace Wallabag\Wallabag;
12
13use \RecursiveIteratorIterator;
14use \RecursiveDirectoryIterator;
15
16final class Tools
17{
18 /**
19 * Initialize PHP environment
20 */
21 public static function initPhp()
22 {
23 define('START_TIME', microtime(true));
24
25 function stripslashesDeep($value) {
26 return is_array($value)
27 ? array_map('stripslashesDeep', $value)
28 : stripslashes($value);
29 }
30
31 if (get_magic_quotes_gpc()) {
32 $_POST = array_map('stripslashesDeep', $_POST);
33 $_GET = array_map('stripslashesDeep', $_GET);
34 $_COOKIE = array_map('stripslashesDeep', $_COOKIE);
35 }
36
37 ob_start();
38 register_shutdown_function('ob_end_flush');
39 }
40
41 /**
42 * Get wallabag instance URL
43 *
44 * @return string
45 */
46 public static function getPocheUrl()
47 {
48 $https = (!empty($_SERVER['HTTPS'])
49 && (strtolower($_SERVER['HTTPS']) == 'on'))
50 || (isset($_SERVER["SERVER_PORT"])
51 && $_SERVER["SERVER_PORT"] == '443') // HTTPS detection.
52 || (isset($_SERVER["SERVER_PORT"]) //Custom HTTPS port detection
53 && $_SERVER["SERVER_PORT"] == SSL_PORT)
54 || (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])
55 && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https');
56
57 $serverport = (!isset($_SERVER["SERVER_PORT"])
58 || $_SERVER["SERVER_PORT"] == '80'
59 || $_SERVER["SERVER_PORT"] == HTTP_PORT
60 || ($https && $_SERVER["SERVER_PORT"] == '443')
61 || ($https && $_SERVER["SERVER_PORT"]==SSL_PORT) //Custom HTTPS port detection
62 ? '' : ':' . $_SERVER["SERVER_PORT"]);
63
64 if (isset($_SERVER["HTTP_X_FORWARDED_PORT"])) {
65 $serverport = ':' . $_SERVER["HTTP_X_FORWARDED_PORT"];
66 }
67
68 $scriptname = str_replace('/index.php', '/', $_SERVER["SCRIPT_NAME"]);
69
70 if (!isset($_SERVER["HTTP_HOST"])) {
71 return $scriptname;
72 }
73
74 $host = (isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME']));
75
76 if (strpos($host, ':') !== false) {
77 $serverport = '';
78 }
79
80 return 'http' . ($https ? 's' : '') . '://'
81 . $host . $serverport . $scriptname;
82 }
83
84 /**
85 * Redirects to a URL
86 *
87 * @param string $url
88 */
89 public static function redirect($url = '')
90 {
91 if ($url === '') {
92 $url = (empty($_SERVER['HTTP_REFERER'])?'?':$_SERVER['HTTP_REFERER']);
93 if (isset($_POST['returnurl'])) {
94 $url = $_POST['returnurl'];
95 }
96 }
97
98 # prevent loop
99 if (empty($url) || parse_url($url, PHP_URL_QUERY) === $_SERVER['QUERY_STRING']) {
100 $url = Tools::getPocheUrl();
101 }
102
103 if (substr($url, 0, 1) !== '?') {
104 $ref = Tools::getPocheUrl();
105 if (substr($url, 0, strlen($ref)) !== $ref) {
106 $url = $ref;
107 }
108 }
109
110 self::logm('redirect to ' . $url);
111 header('Location: '.$url);
112 exit();
113 }
114
115 /**
116 * Returns name of the template file to display
117 *
118 * @param $view
119 * @return string
120 */
121 public static function getTplFile($view)
122 {
123 $views = array(
124 'install', 'import', 'export', 'config', 'tags',
125 'edit-tags', 'view', 'login', 'error', 'about'
126 );
127
128 return (in_array($view, $views) ? $view . '.twig' : 'home.twig');
129 }
130
131 /**
132 * Download a file (typically, for downloading pictures on web server)
133 *
134 * @param $url
135 * @return bool|mixed|string
136 */
137 public static function getFile($url)
138 {
139 $timeout = 15;
140 $useragent = "Mozilla/5.0 (Windows NT 5.1; rv:18.0) Gecko/20100101 Firefox/18.0";
141
142 if (in_array ('curl', get_loaded_extensions())) {
143 # Fetch feed from URL
144 $curl = curl_init();
145 curl_setopt($curl, CURLOPT_URL, $url);
146 curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
147 if (!ini_get('open_basedir') && !ini_get('safe_mode')) {
148 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
149 }
150 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
151 curl_setopt($curl, CURLOPT_HEADER, false);
152
153 # for ssl, do not verified certificate
154 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
155 curl_setopt($curl, CURLOPT_AUTOREFERER, TRUE );
156
157 # FeedBurner requires a proper USER-AGENT...
158 curl_setopt($curl, CURL_HTTP_VERSION_1_1, true);
159 curl_setopt($curl, CURLOPT_ENCODING, "gzip, deflate");
160 curl_setopt($curl, CURLOPT_USERAGENT, $useragent);
161
162 $data = curl_exec($curl);
163 $httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
164 $httpcodeOK = isset($httpcode) and ($httpcode == 200 or $httpcode == 301);
165 curl_close($curl);
166 } else {
167 # create http context and add timeout and user-agent
168 $context = stream_context_create(
169 array(
170 'http' => array(
171 'timeout' => $timeout,
172 'header' => "User-Agent: " . $useragent,
173 'follow_location' => true
174 ),
175 'ssl' => array(
176 'verify_peer' => false,
177 'allow_self_signed' => true
178 )
179 )
180 );
181
182 # only download page lesser than 4MB
183 $data = @file_get_contents($url, false, $context, -1, 4000000);
184
185 if (isset($http_response_header) and isset($http_response_header[0])) {
186 $httpcodeOK = isset($http_response_header) and isset($http_response_header[0]) and ((strpos($http_response_header[0], '200 OK') !== FALSE) or (strpos($http_response_header[0], '301 Moved Permanently') !== FALSE));
187 }
188 }
189
190 # if response is not empty and response is OK
191 if (isset($data) and isset($httpcodeOK) and $httpcodeOK) {
192
193 # take charset of page and get it
194 preg_match('#<meta .*charset=.*>#Usi', $data, $meta);
195
196 # if meta tag is found
197 if (!empty($meta[0])) {
198 preg_match('#charset="?(.*)"#si', $meta[0], $encoding);
199 # if charset is found set it otherwise, set it to utf-8
200 $html_charset = (!empty($encoding[1])) ? strtolower($encoding[1]) : 'utf-8';
201 if (empty($encoding[1])) $encoding[1] = 'utf-8';
202 } else {
203 $html_charset = 'utf-8';
204 $encoding[1] = '';
205 }
206
207 # replace charset of url to charset of page
208 $data = str_replace('charset=' . $encoding[1], 'charset=' . $html_charset, $data);
209
210 return $data;
211 }
212 else {
213 return FALSE;
214 }
215 }
216
217 /**
218 * Headers for JSON export
219 *
220 * @param $data
221 */
222 public static function renderJson($data)
223 {
224 header('Cache-Control: no-cache, must-revalidate');
225 header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
226 header('Content-type: application/json; charset=UTF-8');
227 echo json_encode($data);
228 exit();
229 }
230
231 /**
232 * Create new line in log file
233 *
234 * @param $message
235 */
236 public static function logm($message)
237 {
238 if (DEBUG_POCHE && php_sapi_name() != 'cli') {
239 $t = strval(date('Y/m/d_H:i:s')) . ' - ' . $_SERVER["REMOTE_ADDR"] . ' - ' . strval($message) . "\n";
240 file_put_contents(CACHE . '/log.txt', $t, FILE_APPEND);
241 error_log('DEBUG POCHE : ' . $message);
242 }
243 }
244
245 /**
246 * Encode a URL by using a salt
247 *
248 * @param $string
249 * @return string
250 */
251 public static function encodeString($string)
252 {
253 return sha1($string . SALT);
254 }
255
256 /**
257 * Cleans a variable
258 *
259 * @param $var
260 * @param string $default
261 * @return string
262 */
263 public static function checkVar($var, $default = '')
264 {
265 return ((isset($_REQUEST["$var"])) ? htmlentities($_REQUEST["$var"]) : $default);
266 }
267
268 /**
269 * Returns the domain name for a URL
270 *
271 * @param $url
272 * @return string
273 */
274 public static function getDomain($url)
275 {
276 return parse_url($url, PHP_URL_HOST);
277 }
278
279 /**
280 * For a given text, we calculate reading time for an article
281 *
282 * @param $text
283 * @return float
284 */
285 public static function getReadingTime($text)
286 {
287 return floor(str_word_count(strip_tags($text)) / 200);
288 }
289
290 /**
291 * Returns the correct header for a status code
292 *
293 * @param $status_code
294 */
295 private static function _status($status_code)
296 {
297 if (strpos(php_sapi_name(), 'apache') !== false) {
298
299 header('HTTP/1.0 '.$status_code);
300 }
301 else {
302
303 header('Status: '.$status_code);
304 }
305 }
306
307 /**
308 * Get the content for a given URL (by a call to FullTextFeed)
309 *
310 * @param Url $url
311 * @return mixed
312 */
313 public static function getPageContent(Url $url)
314 {
315 // Saving and clearing context
316 $REAL = array();
317 foreach( $GLOBALS as $key => $value ) {
318 if( $key != 'GLOBALS' && $key != '_SESSION' && $key != 'HTTP_SESSION_VARS' ) {
319 $GLOBALS[$key] = array();
320 $REAL[$key] = $value;
321 }
322 }
323 // Saving and clearing session
324 if (isset($_SESSION)) {
325 $REAL_SESSION = array();
326 foreach( $_SESSION as $key => $value ) {
327 $REAL_SESSION[$key] = $value;
328 unset($_SESSION[$key]);
329 }
330 }
331
332 // Running code in different context
333 $scope = function() {
334 extract( func_get_arg(1) );
335 $_GET = $_REQUEST = array(
336 "url" => $url->getUrl(),
337 "max" => 5,
338 "links" => "preserve",
339 "exc" => "",
340 "format" => "json",
341 "submit" => "Create Feed"
342 );
343 ob_start();
344 require func_get_arg(0);
345 $json = ob_get_contents();
346 ob_end_clean();
347 return $json;
348 };
349
350 // Silence $scope function to avoid
351 // issues with FTRSS when error_reporting is to high
352 // FTRSS generates PHP warnings which break output
353 $json = @$scope("vendor/wallabag/Fivefilters_Libraries/makefulltextfeed.php", array("url" => $url));
354
355 // Clearing and restoring context
356 foreach ($GLOBALS as $key => $value) {
357 if($key != "GLOBALS" && $key != "_SESSION" ) {
358 unset($GLOBALS[$key]);
359 }
360 }
361 foreach ($REAL as $key => $value) {
362 $GLOBALS[$key] = $value;
363 }
364
365 // Clearing and restoring session
366 if (isset($REAL_SESSION)) {
367 foreach($_SESSION as $key => $value) {
368 unset($_SESSION[$key]);
369 }
370
371 foreach($REAL_SESSION as $key => $value) {
372 $_SESSION[$key] = $value;
373 }
374 }
375
376 return json_decode($json, true);
377 }
378
379 /**
380 * Returns whether we handle an AJAX (XMLHttpRequest) request.
381 *
382 * @return boolean whether we handle an AJAX (XMLHttpRequest) request.
383 */
384 public static function isAjaxRequest()
385 {
386 return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH']==='XMLHttpRequest';
387 }
388
389 /*
390 * Empty cache folder
391 */
392 public static function emptyCache()
393 {
394 $files = new RecursiveIteratorIterator(
395 new RecursiveDirectoryIterator(CACHE, RecursiveDirectoryIterator::SKIP_DOTS),
396 RecursiveIteratorIterator::CHILD_FIRST
397 );
398
399 foreach ($files as $fileInfo) {
400 $todo = ($fileInfo->isDir() ? 'rmdir' : 'unlink');
401 $todo($fileInfo->getRealPath());
402 }
403
404 Tools::logm('empty cache');
405 Tools::redirect();
406 }
407
408 public static function generateToken()
409 {
410 if (ini_get('open_basedir') === '') {
411 if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
412 // alternative to /dev/urandom for Windows
413 $token = substr(base64_encode(uniqid(mt_rand(), true)), 0, 20);
414 } else {
415 $token = substr(base64_encode(file_get_contents('/dev/urandom', false, null, 0, 20)), 0, 15);
416 }
417 }
418 else {
419 $token = substr(base64_encode(uniqid(mt_rand(), true)), 0, 20);
420 }
421
422 return str_replace('+', '', $token);
423 }
424
425}
diff --git a/src/Wallabag/Wallabag/Url.php b/src/Wallabag/Wallabag/Url.php
deleted file mode 100644
index b18fe3d4..00000000
--- a/src/Wallabag/Wallabag/Url.php
+++ /dev/null
@@ -1,33 +0,0 @@
1<?php
2/**
3 * wallabag, self hostable application allowing you to not miss any content anymore
4 *
5 * @category wallabag
6 * @author Nicolas Lœuillet <nicolas@loeuillet.org>
7 * @copyright 2013
8 * @license http://opensource.org/licenses/MIT see COPYING file
9 */
10
11namespace Wallabag\Wallabag;
12
13class Url
14{
15 public $url;
16
17 function __construct($url)
18 {
19 $this->url = base64_decode($url);
20 }
21
22 public function getUrl() {
23 return $this->url;
24 }
25
26 public function setUrl($url) {
27 $this->url = $url;
28 }
29
30 public function isCorrect() {
31 return filter_var($this->url, FILTER_VALIDATE_URL) !== FALSE;
32 }
33} \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/User.php b/src/Wallabag/Wallabag/User.php
deleted file mode 100644
index 4a10c2ed..00000000
--- a/src/Wallabag/Wallabag/User.php
+++ /dev/null
@@ -1,59 +0,0 @@
1<?php
2/**
3 * wallabag, self hostable application allowing you to not miss any content anymore
4 *
5 * @category wallabag
6 * @author Nicolas Lœuillet <nicolas@loeuillet.org>
7 * @copyright 2013
8 * @license http://opensource.org/licenses/MIT see COPYING file
9 */
10
11namespace Wallabag\Wallabag;
12
13class User
14{
15 public $id;
16 public $username;
17 public $name;
18 public $password;
19 public $email;
20 public $config;
21
22 function __construct($user = array())
23 {
24 if ($user != array()) {
25 $this->id = $user['id'];
26 $this->username = $user['username'];
27 $this->name = $user['name'];
28 $this->password = $user['password'];
29 $this->email = $user['email'];
30 $this->config = $user['config'];
31 }
32 }
33
34 public function getId()
35 {
36 return $this->id;
37 }
38
39 public function getUsername()
40 {
41 return $this->username;
42 }
43
44 public function setConfig($config)
45 {
46 $this->config = $config;
47 }
48
49 /**
50 * Returns configuration entry for a user
51 *
52 * @param $name
53 * @return bool
54 */
55 public function getConfigValue($name)
56 {
57 return (isset($this->config[$name])) ? $this->config[$name] : FALSE;
58 }
59} \ No newline at end of file
diff --git a/src/Wallabag/Wallabag/Wallabag.php b/src/Wallabag/Wallabag/Wallabag.php
deleted file mode 100755
index 0a498ebf..00000000
--- a/src/Wallabag/Wallabag/Wallabag.php
+++ /dev/null
@@ -1,866 +0,0 @@
1<?php
2/**
3 * wallabag, self hostable application allowing you to not miss any content anymore
4 *
5 * @category wallabag
6 * @author Nicolas Lœuillet <nicolas@loeuillet.org>
7 * @copyright 2013
8 * @license http://opensource.org/licenses/MIT see COPYING file
9 */
10
11namespace Wallabag\Wallabag;
12
13use \Paginator;
14use \Session;
15use \Messages;
16use \FeedWriter;
17
18class Wallabag
19{
20 /**
21 * @var User
22 */
23 public $user;
24 /**
25 * @var Database
26 */
27 public $store;
28 /**
29 * @var Template
30 */
31 public $tpl;
32 /**
33 * @var Language
34 */
35 public $language;
36 /**
37 * @var Routing
38 */
39 public $routing;
40 /**
41 * @var Messages
42 */
43 public $messages;
44 /**
45 * @var Paginator
46 */
47 public $pagination;
48
49 public function __construct()
50 {
51 $this->init();
52 }
53
54 private function init()
55 {
56 Tools::initPhp();
57
58 $pocheUser = \Session::getParam('poche_user');
59
60 if ($pocheUser && $pocheUser != array()) {
61 $this->user = $pocheUser;
62 } else {
63 // fake user, just for install & login screens
64 $this->user = new User();
65 $this->user->setConfig($this->getDefaultConfig());
66 }
67
68 $this->pagination = new Paginator($this->user->getConfigValue('pager'), 'p');
69 $this->language = new Language($this);
70 $this->tpl = new Template($this);
71 $this->store = new Database();
72 $this->messages = new Messages();
73 $this->routing = new Routing($this);
74 }
75
76 public function run()
77 {
78 $this->routing->run();
79 }
80
81 /**
82 * Creates a new user
83 */
84 public function createNewUser($username, $password, $email = "")
85 {
86 if (!empty($username) && !empty($password)){
87 $newUsername = filter_var($username, FILTER_SANITIZE_STRING);
88 $email = filter_var($email, FILTER_SANITIZE_STRING);
89 if (!$this->store->userExists($newUsername)){
90 if ($this->store->install($newUsername, Tools::encodeString($password . $newUsername), $email)) {
91 Tools::logm('The new user ' . $newUsername . ' has been installed');
92 $this->messages->add('s', sprintf(_('The new user %s has been installed. Do you want to <a href="?logout">logout ?</a>'), $newUsername));
93 Tools::redirect();
94 }
95 else {
96 Tools::logm('error during adding new user');
97 Tools::redirect();
98 }
99 }
100 else {
101 $this->messages->add('e', sprintf(_('Error : An user with the name %s already exists !'), $newUsername));
102 Tools::logm('An user with the name ' . $newUsername . ' already exists !');
103 Tools::redirect();
104 }
105 }
106 }
107
108 /**
109 * Delete an existing user
110 */
111 public function deleteUser($password)
112 {
113 if ($this->store->listUsers() > 1) {
114 if (Tools::encodeString($password . $this->user->getUsername()) == $this->store->getUserPassword($this->user->getId())) {
115 $username = $this->user->getUsername();
116 $this->store->deleteUserConfig($this->user->getId());
117 Tools::logm('The configuration for user '. $username .' has been deleted !');
118 $this->store->deleteTagsEntriesAndEntries($this->user->getId());
119 Tools::logm('The entries for user '. $username .' has been deleted !');
120 $this->store->deleteUser($this->user->getId());
121 Tools::logm('User '. $username .' has been completely deleted !');
122 Session::logout();
123 Tools::logm('logout');
124 Tools::redirect();
125 $this->messages->add('s', sprintf(_('User %s has been successfully deleted !'), $username));
126 }
127 else {
128 Tools::logm('Bad password !');
129 $this->messages->add('e', _('Error : The password is wrong !'));
130 }
131 }
132 else {
133 Tools::logm('Only user !');
134 $this->messages->add('e', _('Error : You are the only user, you cannot delete your account !'));
135 }
136 }
137
138 public function getDefaultConfig()
139 {
140 return array(
141 'pager' => PAGINATION,
142 'language' => LANG,
143 'theme' => DEFAULT_THEME
144 );
145 }
146
147 /**
148 * Call action (mark as fav, archive, delete, etc.)
149 */
150 public function action($action, Url $url, $id = 0, $import = FALSE, $autoclose = FALSE, $tags = null)
151 {
152 switch ($action)
153 {
154 case 'add':
155 $content = Tools::getPageContent($url);
156 $title = ($content['rss']['channel']['item']['title'] != '') ? $content['rss']['channel']['item']['title'] : _('Untitled');
157 $body = $content['rss']['channel']['item']['description'];
158
159 // clean content from prevent xss attack
160 $purifier = $this->_getPurifier();
161 $title = $purifier->purify($title);
162 $body = $purifier->purify($body);
163
164 //search for possible duplicate
165 $duplicate = NULL;
166 $duplicate = $this->store->retrieveOneByURL($url->getUrl(), $this->user->getId());
167
168 $last_id = $this->store->add($url->getUrl(), $title, $body, $this->user->getId());
169 if ( $last_id ) {
170 Tools::logm('add link ' . $url->getUrl());
171 if (DOWNLOAD_PICTURES) {
172 $content = Picture::filterPicture($body, $url->getUrl(), $last_id);
173 Tools::logm('updating content article');
174 $this->store->updateContent($last_id, $content, $this->user->getId());
175 }
176
177 if ($duplicate != NULL) {
178 // duplicate exists, so, older entry needs to be deleted (as new entry should go to the top of list), BUT favorite mark and tags should be preserved
179 Tools::logm('link ' . $url->getUrl() . ' is a duplicate');
180 // 1) - preserve tags and favorite, then drop old entry
181 $this->store->reassignTags($duplicate['id'], $last_id);
182 if ($duplicate['is_fav']) {
183 $this->store->favoriteById($last_id, $this->user->getId());
184 }
185 if ($this->store->deleteById($duplicate['id'], $this->user->getId())) {
186 Tools::logm('previous link ' . $url->getUrl() .' entry deleted');
187 }
188 }
189
190 // if there are tags, add them to the new article
191 if (isset($_GET['tags'])) {
192 $_POST['value'] = $_GET['tags'];
193 $_POST['entry_id'] = $last_id;
194 $this->action('add_tag', $url);
195 }
196
197 $this->messages->add('s', _('the link has been added successfully'));
198 }
199 else {
200 $this->messages->add('e', _('error during insertion : the link wasn\'t added'));
201 Tools::logm('error during insertion : the link wasn\'t added ' . $url->getUrl());
202 }
203
204 if ($autoclose == TRUE) {
205 Tools::redirect('?view=home');
206 } else {
207 Tools::redirect('?view=home&closewin=true');
208 }
209 break;
210 case 'delete':
211 if (isset($_GET['search'])) {
212 //when we want to apply a delete to a search
213 $tags = array($_GET['search']);
214 $allentry_ids = $this->store->search($tags[0], $this->user->getId());
215 $entry_ids = array();
216 foreach ($allentry_ids as $eachentry) {
217 $entry_ids[] = $eachentry[0];
218 }
219 } else { // delete a single article
220 $entry_ids = array($id);
221 }
222 foreach($entry_ids as $id) {
223 $msg = 'delete link #' . $id;
224 if ($this->store->deleteById($id, $this->user->getId())) {
225 if (DOWNLOAD_PICTURES) {
226 Picture::removeDirectory(ABS_PATH . $id);
227 }
228 $this->messages->add('s', _('the link has been deleted successfully'));
229 }
230 else {
231 $this->messages->add('e', _('the link wasn\'t deleted'));
232 $msg = 'error : can\'t delete link #' . $id;
233 }
234 Tools::logm($msg);
235 }
236 Tools::redirect('?');
237 break;
238 case 'toggle_fav' :
239 $this->store->favoriteById($id, $this->user->getId());
240 Tools::logm('mark as favorite link #' . $id);
241 if ( Tools::isAjaxRequest() ) {
242 echo 1;
243 exit;
244 }
245 else {
246 Tools::redirect();
247 }
248 break;
249 case 'toggle_archive' :
250 if (isset($_GET['tag_id'])) {
251 //when we want to archive a whole tag
252 $tag_id = $_GET['tag_id'];
253 $allentry_ids = $this->store->retrieveEntriesByTag($tag_id, $this->user->getId());
254 $entry_ids = array();
255 foreach ($allentry_ids as $eachentry) {
256 $entry_ids[] = $eachentry[0];
257 }
258 } else { //archive a single article
259 $entry_ids = array($id);
260 }
261 foreach($entry_ids as $id) {
262 $this->store->archiveById($id, $this->user->getId());
263 Tools::logm('archive link #' . $id);
264 }
265 if ( Tools::isAjaxRequest() ) {
266 echo 1;
267 exit;
268 }
269 else {
270 Tools::redirect();
271 }
272 break;
273 case 'archive_all' :
274 $this->store->archiveAll($this->user->getId());
275 Tools::logm('archive all links');
276 Tools::redirect();
277 break;
278 case 'add_tag' :
279 if (isset($_GET['search'])) {
280 //when we want to apply a tag to a search
281 $tags = array($_GET['search']);
282 $allentry_ids = $this->store->search($tags[0], $this->user->getId());
283 $entry_ids = array();
284 foreach ($allentry_ids as $eachentry) {
285 $entry_ids[] = $eachentry[0];
286 }
287 } else { //add a tag to a single article
288 $tags = explode(',', $_POST['value']);
289 $entry_ids = array($_POST['entry_id']);
290 }
291 foreach($entry_ids as $entry_id) {
292 $entry = $this->store->retrieveOneById($entry_id, $this->user->getId());
293 if (!$entry) {
294 $this->messages->add('e', _('Article not found!'));
295 Tools::logm('error : article not found');
296 Tools::redirect();
297 }
298 //get all already set tags to preven duplicates
299 $already_set_tags = array();
300 $entry_tags = $this->store->retrieveTagsByEntry($entry_id);
301 foreach ($entry_tags as $tag) {
302 $already_set_tags[] = $tag['value'];
303 }
304 foreach($tags as $key => $tag_value) {
305 $value = trim($tag_value);
306 if ($value && !in_array($value, $already_set_tags)) {
307 $tag = $this->store->retrieveTagByValue($value);
308 if (is_null($tag)) {
309 # we create the tag
310 $tag = $this->store->createTag($value);
311 $sequence = '';
312 if (STORAGE == 'postgres') {
313 $sequence = 'tags_id_seq';
314 }
315 $tag_id = $this->store->getLastId($sequence);
316 }
317 else {
318 $tag_id = $tag['id'];
319 }
320
321 # we assign the tag to the article
322 $this->store->setTagToEntry($tag_id, $entry_id);
323 }
324 }
325 }
326 $this->messages->add('s', _('The tag has been applied successfully'));
327 Tools::logm('The tag has been applied successfully');
328 Tools::redirect();
329 break;
330 case 'remove_tag' :
331 $tag_id = $_GET['tag_id'];
332 $entry = $this->store->retrieveOneById($id, $this->user->getId());
333 if (!$entry) {
334 $this->messages->add('e', _('Article not found!'));
335 Tools::logm('error : article not found');
336 Tools::redirect();
337 }
338 $this->store->removeTagForEntry($id, $tag_id);
339 Tools::logm('tag entry deleted');
340 if ($this->store->cleanUnusedTag($tag_id)) {
341 Tools::logm('tag deleted');
342 }
343 $this->messages->add('s', _('The tag has been successfully deleted'));
344 Tools::redirect();
345 break;
346 default:
347 break;
348 }
349 }
350
351 function displayView($view, $id = 0)
352 {
353 $tpl_vars = array();
354
355 switch ($view)
356 {
357 case 'about':
358 break;
359 case 'config':
360 $dev_infos = $this->_getPocheVersion('dev');
361 $dev = trim($dev_infos[0]);
362 $check_time_dev = date('d-M-Y H:i', $dev_infos[1]);
363 $prod_infos = $this->_getPocheVersion('prod');
364 $prod = trim($prod_infos[0]);
365 $check_time_prod = date('d-M-Y H:i', $prod_infos[1]);
366 $compare_dev = version_compare(POCHE, $dev);
367 $compare_prod = version_compare(POCHE, $prod);
368 $themes = $this->tpl->getInstalledThemes();
369 $languages = $this->language->getInstalledLanguages();
370 $token = $this->user->getConfigValue('token');
371 $http_auth = (isset($_SERVER['PHP_AUTH_USER']) || isset($_SERVER['REMOTE_USER'])) ? true : false;
372 $only_user = ($this->store->listUsers() > 1) ? false : true;
373 $tpl_vars = array(
374 'themes' => $themes,
375 'languages' => $languages,
376 'dev' => $dev,
377 'prod' => $prod,
378 'check_time_dev' => $check_time_dev,
379 'check_time_prod' => $check_time_prod,
380 'compare_dev' => $compare_dev,
381 'compare_prod' => $compare_prod,
382 'token' => $token,
383 'user_id' => $this->user->getId(),
384 'http_auth' => $http_auth,
385 'only_user' => $only_user
386 );
387 Tools::logm('config view');
388 break;
389 case 'edit-tags':
390 # tags
391 $entry = $this->store->retrieveOneById($id, $this->user->getId());
392 if (!$entry) {
393 $this->messages->add('e', _('Article not found!'));
394 Tools::logm('error : article not found');
395 Tools::redirect();
396 }
397 $tags = $this->store->retrieveTagsByEntry($id);
398 $tpl_vars = array(
399 'entry_id' => $id,
400 'tags' => $tags,
401 'entry' => $entry,
402 );
403 break;
404 case 'tags':
405 $token = $this->user->getConfigValue('token');
406 //if term is set - search tags for this term
407 $term = Tools::checkVar('term');
408 $tags = $this->store->retrieveAllTags($this->user->getId(), $term);
409 if (Tools::isAjaxRequest()) {
410 $result = array();
411 foreach ($tags as $tag) {
412 $result[] = $tag['value'];
413 }
414 echo json_encode($result);
415 exit;
416 }
417 $tpl_vars = array(
418 'token' => $token,
419 'user_id' => $this->user->getId(),
420 'tags' => $tags,
421 );
422 break;
423 case 'search':
424 if (isset($_GET['search'])) {
425 $search = filter_var($_GET['search'], FILTER_SANITIZE_STRING);
426 $tpl_vars['entries'] = $this->store->search($search, $this->user->getId());
427 $count = count($tpl_vars['entries']);
428 $this->pagination->set_total($count);
429 $page_links = str_replace(array('previous', 'next'), array(_('previous'), _('next')),
430 $this->pagination->page_links('?view=' . $view . '?search=' . $search . '&sort=' . $_SESSION['sort'] . '&' ));
431 $tpl_vars['page_links'] = $page_links;
432 $tpl_vars['nb_results'] = $count;
433 $tpl_vars['searchterm'] = $search;
434 }
435 break;
436 case 'view':
437 $entry = $this->store->retrieveOneById($id, $this->user->getId());
438 if ($entry != NULL) {
439 Tools::logm('view link #' . $id);
440 $content = $entry['content'];
441 if (function_exists('tidy_parse_string')) {
442 $tidy = tidy_parse_string($content, array('indent'=>true, 'show-body-only' => true), 'UTF8');
443 $tidy->cleanRepair();
444 $content = $tidy->value;
445 }
446
447 # flattr checking
448 $flattr = NULL;
449 if (FLATTR) {
450 $flattr = new FlattrItem();
451 $flattr->checkItem($entry['url'], $entry['id']);
452 }
453
454 # tags
455 $tags = $this->store->retrieveTagsByEntry($entry['id']);
456
457 $tpl_vars = array(
458 'entry' => $entry,
459 'content' => $content,
460 'flattr' => $flattr,
461 'tags' => $tags
462 );
463 }
464 else {
465 Tools::logm('error in view call : entry is null');
466 }
467 break;
468 default: # home, favorites, archive and tag views
469 $tpl_vars = array(
470 'entries' => '',
471 'page_links' => '',
472 'nb_results' => '',
473 'listmode' => (isset($_COOKIE['listmode']) ? true : false),
474 );
475
476 //if id is given - we retrieve entries by tag: id is tag id
477 if ($id) {
478 $tpl_vars['tag'] = $this->store->retrieveTag($id, $this->user->getId());
479 $tpl_vars['id'] = intval($id);
480 }
481
482 $count = $this->store->getEntriesByViewCount($view, $this->user->getId(), $id);
483
484 if ($count > 0) {
485 $this->pagination->set_total($count);
486 $page_links = str_replace(array('previous', 'next'), array(_('previous'), _('next')),
487 $this->pagination->page_links('?view=' . $view . '&sort=' . $_SESSION['sort'] . (($id)?'&id='.$id:'') . '&' ));
488 $tpl_vars['entries'] = $this->store->getEntriesByView($view, $this->user->getId(), $this->pagination->get_limit(), $id);
489 $tpl_vars['page_links'] = $page_links;
490 $tpl_vars['nb_results'] = $count;
491 }
492 Tools::logm('display ' . $view . ' view');
493 break;
494 }
495
496 return $tpl_vars;
497 }
498
499 /**
500 * update the password of the current user.
501 * if MODE_DEMO is TRUE, the password can't be updated.
502 * @todo add the return value
503 * @todo set the new password in function header like this updatePassword($newPassword)
504 * @return boolean
505 */
506 public function updatePassword($password, $confirmPassword)
507 {
508 if (MODE_DEMO) {
509 $this->messages->add('i', _('in demo mode, you can\'t update your password'));
510 Tools::logm('in demo mode, you can\'t do this');
511 Tools::redirect('?view=config');
512 }
513 else {
514 if (isset($password) && isset($confirmPassword)) {
515 if ($password == $confirmPassword && !empty($password)) {
516 $this->messages->add('s', _('your password has been updated'));
517 $this->store->updatePassword($this->user->getId(), Tools::encodeString($password . $this->user->getUsername()));
518 Session::logout();
519 Tools::logm('password updated');
520 Tools::redirect();
521 }
522 else {
523 $this->messages->add('e', _('the two fields have to be filled & the password must be the same in the two fields'));
524 Tools::redirect('?view=config');
525 }
526 }
527 }
528 }
529
530 /**
531 * Get credentials from differents sources
532 * It redirects the user to the $referer link
533 *
534 * @return array
535 */
536 private function credentials()
537 {
538 if (isset($_SERVER['PHP_AUTH_USER'])) {
539 return array($_SERVER['PHP_AUTH_USER'], 'php_auth', true);
540 }
541 if (!empty($_POST['login']) && !empty($_POST['password'])) {
542 return array($_POST['login'], $_POST['password'], false);
543 }
544 if (isset($_SERVER['REMOTE_USER'])) {
545 return array($_SERVER['REMOTE_USER'], 'http_auth', true);
546 }
547
548 return array(false, false, false);
549 }
550
551 /**
552 * checks if login & password are correct and save the user in session.
553 * it redirects the user to the $referer link
554 * @param string $referer the url to redirect after login
555 * @todo add the return value
556 * @return boolean
557 */
558 public function login($referer)
559 {
560 list($login,$password,$isauthenticated)=$this->credentials();
561 if($login === false || $password === false) {
562 $this->messages->add('e', _('login failed: you have to fill all fields'));
563 Tools::logm('login failed');
564 Tools::redirect();
565 }
566 if (!empty($login) && !empty($password)) {
567 $user = $this->store->login($login, Tools::encodeString($password . $login), $isauthenticated);
568 if ($user != array()) {
569 # Save login into Session
570 $longlastingsession = isset($_POST['longlastingsession']);
571 $passwordTest = ($isauthenticated) ? $user['password'] : Tools::encodeString($password . $login);
572 Session::login($user['username'], $user['password'], $login, $passwordTest, $longlastingsession, array('poche_user' => new User($user)));
573
574 # reload l10n
575 $language = $user['config']['language'];
576 @putenv('LC_ALL=' . $language);
577 setlocale(LC_ALL, $language);
578 bindtextdomain($language, LOCALE);
579 textdomain($language);
580
581 $this->messages->add('s', _('welcome to your wallabag'));
582 Tools::logm('login successful');
583 Tools::redirect($referer);
584 }
585 $this->messages->add('e', _('login failed: bad login or password'));
586 // log login failure in web server log to allow fail2ban usage
587 error_log('user '.$login.' authentication failure');
588 Tools::logm('login failed');
589 Tools::redirect();
590 }
591 }
592
593 /**
594 * log out the poche user. It cleans the session.
595 * @todo add the return value
596 * @return boolean
597 */
598 public function logout()
599 {
600 $this->user = array();
601 Session::logout();
602 Tools::logm('logout');
603 Tools::redirect();
604 }
605
606 /**
607 * import datas into your wallabag
608 * @return boolean
609 */
610
611 public function import() {
612
613 if ( isset($_FILES['file']) && $_FILES['file']['tmp_name'] ) {
614 Tools::logm('Import stated: parsing file');
615
616 // assume, that file is in json format
617 $str_data = file_get_contents($_FILES['file']['tmp_name']);
618 $data = json_decode($str_data, true);
619
620 if ( $data === null ) {
621 //not json - assume html
622 $html = new simple_html_dom();
623 $html->load_file($_FILES['file']['tmp_name']);
624 $data = array();
625 $read = 0;
626 foreach (array('ol','ul') as $list) {
627 foreach ($html->find($list) as $ul) {
628 foreach ($ul->find('li') as $li) {
629 $tmpEntry = array();
630 $a = $li->find('a');
631 $tmpEntry['url'] = $a[0]->href;
632 $tmpEntry['tags'] = $a[0]->tags;
633 $tmpEntry['is_read'] = $read;
634 if ($tmpEntry['url']) {
635 $data[] = $tmpEntry;
636 }
637 }
638 # the second <ol/ul> is for read links
639 $read = ((sizeof($data) && $read)?0:1);
640 }
641 }
642 }
643
644 // for readability structure
645
646 foreach($data as $record) {
647 if (is_array($record)) {
648 $data[] = $record;
649 foreach($record as $record2) {
650 if (is_array($record2)) {
651 $data[] = $record2;
652 }
653 }
654 }
655 }
656
657 $urlsInserted = array(); //urls of articles inserted
658 foreach($data as $record) {
659 $url = trim(isset($record['article__url']) ? $record['article__url'] : (isset($record['url']) ? $record['url'] : ''));
660 if ($url and !in_array($url, $urlsInserted)) {
661 $title = (isset($record['title']) ? $record['title'] : _('Untitled - Import - ') . '</a> <a href="./?import">' . _('click to finish import') . '</a><a>');
662 $body = (isset($record['content']) ? $record['content'] : '');
663 $isRead = (isset($record['is_read']) ? intval($record['is_read']) : (isset($record['archive']) ? intval($record['archive']) : 0));
664 $isFavorite = (isset($record['is_fav']) ? intval($record['is_fav']) : (isset($record['favorite']) ? intval($record['favorite']) : 0));
665
666 // insert new record
667
668 $id = $this->store->add($url, $title, $body, $this->user->getId() , $isFavorite, $isRead);
669 if ($id) {
670 $urlsInserted[] = $url; //add
671 if (isset($record['tags']) && trim($record['tags'])) {
672
673 // @TODO: set tags
674
675 }
676 }
677 }
678 }
679
680 $i = sizeof($urlsInserted);
681 if ($i > 0) {
682 $this->messages->add('s', _('Articles inserted: ') . $i . _('. Please note, that some may be marked as "read".'));
683 }
684
685 Tools::logm('Import of articles finished: '.$i.' articles added (w/o content if not provided).');
686 }
687 else {
688 $this->messages->add('s', _('Did you forget to select a file?'));
689 }
690 // file parsing finished here
691 // now download article contents if any
692 // check if we need to download any content
693
694 $recordsDownloadRequired = $this->store->retrieveUnfetchedEntriesCount($this->user->getId());
695
696 if ($recordsDownloadRequired == 0) {
697
698 // nothing to download
699
700 $this->messages->add('s', _('Import finished.'));
701 Tools::logm('Import finished completely');
702 Tools::redirect();
703 }
704 else {
705
706 // if just inserted - don't download anything, download will start in next reload
707
708 if (!isset($_FILES['file'])) {
709
710 // download next batch
711
712 Tools::logm('Fetching next batch of articles...');
713 $items = $this->store->retrieveUnfetchedEntries($this->user->getId() , IMPORT_LIMIT);
714 $purifier = $this->_getPurifier();
715 foreach($items as $item) {
716 $url = new Url(base64_encode($item['url']));
717 Tools::logm('Fetching article ' . $item['id']);
718 $content = Tools::getPageContent($url);
719 $title = (($content['rss']['channel']['item']['title'] != '') ? $content['rss']['channel']['item']['title'] : _('Untitled'));
720 $body = (($content['rss']['channel']['item']['description'] != '') ? $content['rss']['channel']['item']['description'] : _('Undefined'));
721
722 // clean content to prevent xss attack
723
724 $title = $purifier->purify($title);
725 $body = $purifier->purify($body);
726 $this->store->updateContentAndTitle($item['id'], $title, $body, $this->user->getId());
727 Tools::logm('Article ' . $item['id'] . ' updated.');
728 }
729 }
730 }
731
732 return array(
733 'includeImport' => true,
734 'import' => array(
735 'recordsDownloadRequired' => $recordsDownloadRequired,
736 'recordsUnderDownload' => IMPORT_LIMIT,
737 'delay' => IMPORT_DELAY * 1000
738 )
739 );
740 }
741
742 /**
743 * export poche entries in json
744 * @return json all poche entries
745 */
746 public function export()
747 {
748 $filename = "wallabag-export-".$this->user->getId()."-".date("Y-m-d").".json";
749 header('Content-Disposition: attachment; filename='.$filename);
750
751 $entries = $this->store->retrieveAll($this->user->getId());
752 echo $this->tpl->render('export.twig', array(
753 'export' => Tools::renderJson($entries),
754 ));
755 Tools::logm('export view');
756 }
757
758 /**
759 * Checks online the latest version of poche and cache it
760 * @param string $which 'prod' or 'dev'
761 * @return string latest $which version
762 */
763 private function _getPocheVersion($which = 'prod') {
764 $cache_file = CACHE . '/' . $which;
765 $check_time = time();
766
767 # checks if the cached version file exists
768 if (file_exists($cache_file) && (filemtime($cache_file) > (time() - 86400 ))) {
769 $version = file_get_contents($cache_file);
770 $check_time = filemtime($cache_file);
771 } else {
772 $version = file_get_contents('http://static.wallabag.org/versions/' . $which);
773 file_put_contents($cache_file, $version, LOCK_EX);
774 }
775 return array($version, $check_time);
776 }
777
778 /**
779 * Update token for current user
780 */
781 public function updateToken()
782 {
783 $token = Tools::generateToken();
784 $this->store->updateUserConfig($this->user->getId(), 'token', $token);
785 $currentConfig = $_SESSION['poche_user']->config;
786 $currentConfig['token'] = $token;
787 $_SESSION['poche_user']->setConfig($currentConfig);
788 Tools::redirect();
789 }
790
791 /**
792 * Generate RSS feeds for current user
793 *
794 * @param $token
795 * @param $user_id
796 * @param $tag_id if $type is 'tag', the id of the tag to generate feed for
797 * @param string $type the type of feed to generate
798 * @param int $limit the maximum number of items (0 means all)
799 */
800 public function generateFeeds($token, $user_id, $tag_id, $type = 'home', $limit = 0)
801 {
802 $allowed_types = array('home', 'fav', 'archive', 'tag');
803 $config = $this->store->getConfigUser($user_id);
804
805 if ($config == null) {
806 die(sprintf(_('User with this id (%d) does not exist.'), $user_id));
807 }
808
809 if (!in_array($type, $allowed_types) || !isset($config['token']) || $token != $config['token']) {
810 die(_('Uh, there is a problem while generating feed. Wrong token used?'));
811 }
812
813 $feed = new FeedWriter(RSS2);
814 $feed->setTitle('wallabag — ' . $type . ' feed');
815 $feed->setLink(Tools::getPocheUrl());
816 $feed->setChannelElement('pubDate', date(DATE_RSS , time()));
817 $feed->setChannelElement('generator', 'wallabag');
818 $feed->setDescription('wallabag ' . $type . ' elements');
819
820 if ($type == 'tag') {
821 $entries = $this->store->retrieveEntriesByTag($tag_id, $user_id);
822 }
823 else {
824 $entries = $this->store->getEntriesByView($type, $user_id);
825 }
826
827 // if $limit is set to zero, use all entries
828 if (0 == $limit) {
829 $limit = count($entries);
830 }
831 if (count($entries) > 0) {
832 for ($i = 0; $i < min(count($entries), $limit); $i++) {
833 $entry = $entries[$i];
834 $newItem = $feed->createNewItem();
835 $newItem->setTitle($entry['title']);
836 $newItem->setSource(Tools::getPocheUrl() . '?view=view&amp;id=' . $entry['id']);
837 $newItem->setLink($entry['url']);
838 $newItem->setDate(time());
839 $newItem->setDescription($entry['content']);
840 $feed->addItem($newItem);
841 }
842 }
843
844 $feed->genarateFeed();
845 exit;
846 }
847
848
849
850 /**
851 * Returns new purifier object with actual config
852 */
853 private function _getPurifier()
854 {
855 $config = HTMLPurifier_Config::createDefault();
856 $config->set('Cache.SerializerPath', CACHE);
857 $config->set('HTML.SafeIframe', true);
858
859 //allow YouTube, Vimeo and dailymotion videos
860 $config->set('URI.SafeIframeRegexp', '%^(https?:)?//(www\.youtube(?:-nocookie)?\.com/embed/|player\.vimeo\.com/video/|www\.dailymotion\.com/embed/video/)%');
861
862 return new HTMLPurifier($config);
863 }
864
865
866}