]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Merge remote-tracking branch 'origin/master' into 2.1
authorJeremy Benoist <jeremy.benoist@gmail.com>
Mon, 22 Aug 2016 21:03:16 +0000 (23:03 +0200)
committerJeremy Benoist <jeremy.benoist@gmail.com>
Mon, 22 Aug 2016 21:03:16 +0000 (23:03 +0200)
22 files changed:
1  2 
.travis.yml
app/Resources/static/themes/baggy/css/ratatouille.css
app/Resources/static/themes/material/css/main.css
app/config/config.yml
src/Wallabag/CoreBundle/Resources/translations/messages.da.yml
src/Wallabag/CoreBundle/Resources/translations/messages.de.yml
src/Wallabag/CoreBundle/Resources/translations/messages.en.yml
src/Wallabag/CoreBundle/Resources/translations/messages.es.yml
src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml
src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml
src/Wallabag/CoreBundle/Resources/translations/messages.it.yml
src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml
src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml
src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml
src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml
src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig
src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entry.html.twig
src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig
src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig
src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig
src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig
tests/Wallabag/CoreBundle/Command/InstallCommandTest.php

diff --cc .travis.yml
index 69b4f91984928960a3cae24ed311ddd6351880c1,73f9491ab62d6922eb75c83a8b29db7a88a6448f..65e7e3047520236450f84b824093b53187e5feba
@@@ -23,29 -20,41 +23,46 @@@ php
      - 5.5
      - 5.6
      - 7.0
+     - 7.1
      - nightly
-     - hhvm
  
 +node_js:
 +    - "5"
 +
  env:
 -    - DB=mysql
 -    - DB=pgsql
 -    - DB=sqlite
 +    - DB=mysql ASSETS=nobuild
 +    - DB=pgsql ASSETS=nobuild
 +    - DB=sqlite ASSETS=nobuild
  
  matrix:
      fast_finish: true
      include:
+         # driver for PostgreSQL currently unsupported by HHVM, requires 3rd party dependency
+         - php: hhvm-3.12
+           sudo: required
+           dist: trusty
+           group: edge
+           env: DB=mysql
+           addons:
+             apt:
+                 packages:
+                     - mysql-server-5.6
+                     - mysql-client-core-5.6
+                     - mysql-client-5.6
+           services:
+             - mysql
+         - php: hhvm-3.12
+           sudo: required
+           dist: trusty
+           group: edge
+           env: DB=sqlite
          - php: 7.0
 -          env: CS_FIXER=run VALIDATE_TRANSLATION_FILE=run DB=sqlite
 +          env: CS_FIXER=run VALIDATE_TRANSLATION_FILE=run DB=sqlite ASSETS=nobuild
 +        - php: 7.0
 +          env: DB=sqlite ASSETS=build
-     exclude:
-         - php: hhvm
-           env: DB=pgsql  # driver for PostgreSQL currently unsupported by HHVM, requires 3rd party dependency
      allow_failures:
-         - php: hhvm
+         - php: hhvm-3.12
+         - php: nightly
  
  # exclude v1 branches
  branches:
          - legacy
  
  before_script:
-     - if [[ $TRAVIS_PHP_VERSION != hhvm ]]; then echo "memory_limit=-1" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini; fi;
-     - if [[ $TRAVIS_PHP_VERSION != hhvm ]]; then phpenv config-rm xdebug.ini; fi;
-     - if [ "$TRAVIS_PHP_VERSION" = "5.5" ]; then composer require "phpunit/phpunit:4.*" --no-update; fi;
+     - PHP=$TRAVIS_PHP_VERSION
+     - if [[ ! $PHP = hhvm* ]]; then echo "memory_limit=-1" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini; fi;
+     # xdebug isn't enable for PHP 7.1
+     - if [[ ! $PHP = hhvm* ]]; then phpenv config-rm xdebug.ini || echo "xdebug not available"; fi
++    - if [[ $PHP = 5.5 ]]; then composer require "phpunit/phpunit:4.*" --no-update; fi;
      - composer self-update --no-progress
      - if [[ "$DB" = "pgsql" ]]; then psql -c 'create database wallabag_test;' -U postgres; fi;
  
index bf89d8816e66be7b21a2aade9c58d1769e29fed9,605eb64117e263ed03153b4d35ffbc95c4b154a2..b5aeb54e415352e81898c01e1fdaecdee27f607b
@@@ -60,13 -61,12 +60,12 @@@ pre 
  
  .inner {
    margin: 0 auto;
 -  max-width: 61.25em;/*980px*/
 +  max-width: 61.25em; /* 980px */
  }
  
- table,
- img {
+ table, img, figure {
    max-width: 100%;
 -  height :auto;
 +  heightauto;
  }
  
  iframe {
index 2ffe0b4681846e6e306842ce137889184d250f9d,0000000000000000000000000000000000000000..cade37f634f79d6744ded02292a8bb1c3055c7b6
mode 100755,000000..100755
--- /dev/null
@@@ -1,657 -1,0 +1,658 @@@
- #article img {
 +/* ==========================================================================
 +   Sommaire
 +
 +   0 = Common
 +   1 = Nav
 +   2 = Side-nav
 +   3 = Filters slider
 +   4 = Cards
 +   5 = Article
 +   6 = Media queries
 +   7 = Font
 +   8 = Others
 +
 +   ========================================================================== */
 +
 +/* ==========================================================================
 +   0 = Common
 +   ========================================================================== */
 +
 +@font-face {
 +  font-family: icomoon;
 +  src: url("../fonts/icomoon.eot");
 +  src:
 +    url("../fonts/icomoon.eot#iefix") format("embedded-opentype"),
 +    url("../fonts/icomoon.ttf") format("truetype"),
 +    url("../fonts/icomoon.woff") format("woff"),
 +    url("../fonts/icomoon.svg#icomoon") format("svg");
 +  font-weight: normal;
 +  font-style: normal;
 +}
 +
 +@font-face {
 +  font-family: 'Material Icons';
 +  font-style: normal;
 +  font-weight: 400;
 +  src: url(../fonts/MaterialIcons-Regular.eot);
 +
 +  /* For IE6-8 */
 +  src: local("Material Icons"), local("MaterialIcons-Regular"), url(../fonts/MaterialIcons-Regular.woff2) format("woff2"), url(../fonts/MaterialIcons-Regular.woff) format("woff"), url(../fonts/MaterialIcons-Regular.ttf) format("truetype");
 +}
 +
 +.material-icons {
 +  font-family: 'Material Icons';
 +  font-weight: normal;
 +  font-style: normal;
 +  font-size: 24px;  /* Preferred icon size */
 +  width: 1em;
 +  height: 1em;
 +  display: inline-block;
 +  line-height: 1;
 +  text-transform: none;
 +  letter-spacing: normal;
 +  word-wrap: normal;
 +  white-space: nowrap;
 +  direction: ltr;
 +
 +  /* Support for all WebKit browsers. */
 +  -webkit-font-smoothing: antialiased;
 +
 +  /* Support for Safari and Chrome. */
 +  text-rendering: optimizeLegibility;
 +
 +  /* Support for Firefox. */
 +  -moz-osx-font-smoothing: grayscale;
 +
 +  /* Support for IE. */
 +  font-feature-settings: 'liga';
 +}
 +
 +[class^="icon-"],
 +[class*=" icon-"] {
 +  font-family: icomoon;
 +  speak: none;
 +  font-style: normal;
 +  font-weight: normal;
 +  font-variant: normal;
 +  text-transform: none;
 +  line-height: 1;
 +
 +  /* Better Font Rendering =========== */
 +  -webkit-font-smoothing: antialiased;
 +  -moz-osx-font-smoothing: grayscale;
 +}
 +
 +body {
 +  display: flex;
 +  min-height: 100vh;
 +  flex-direction: column;
 +  background: #f0f0f0;
 +}
 +
 +body.login main {
 +  padding: 0;
 +}
 +
 +.border-bottom {
 +  border-bottom: 1px solid #ddd;
 +}
 +
 +nav,
 +main,
 +footer {
 +  padding-left: 240px;
 +}
 +
 +main,
 +#content,
 +.valign-wrapper {
 +  height: 100%;
 +}
 +
 +#main {
 +  flex: 1 0 auto;
 +}
 +
 +.results {
 +  height: 1em;
 +  line-height: 30px;
 +}
 +
 +.results .nb-results,
 +.results .pagination {
 +  margin: 15px;
 +  margin-bottom: 0;
 +}
 +
 +.pagination {
 +  float: right;
 +}
 +
 +.pagination ul {
 +  margin: 0 !important;
 +}
 +
 +.pagination li {
 +  padding: 0;
 +}
 +
 +.pagination a {
 +  padding: 0 10px;
 +  height: 30px;
 +  display: block;
 +}
 +
 +.pagination .disabled {
 +  margin-right: 10px;
 +  margin-left: 10px;
 +}
 +
 +div.pagination ul .prev.disabled,
 +div.pagination ul .next.disabled {
 +  display: none;
 +}
 +
 +.pagination li.active span {
 +  padding: 0 10px;
 +  height: 30px;
 +  display: block;
 +  color: #fff;
 +}
 +
 +.page-footer .footer-copyright p {
 +  display: inline;
 +}
 +
 +.hidden {
 +  display: none;
 +}
 +
 +.picker__date-display {
 +  display: none;
 +}
 +
 +footer.page-footer {
 +  margin-top: 10px;
 +  padding-top: 10px;
 +}
 +
 +footer .row {
 +  margin-bottom: 10px;
 +}
 +
 +/* ==========================================================================
 +   1 = Nav
 +   ========================================================================== */
 +
 +nav input {
 +  color: #aaa;
 +}
 +
 +.nav-wrapper .button-collapse {
 +  padding: 0 15px;
 +}
 +
 +.nav-input {
 +  display: none;
 +}
 +
 +.nav-panels {
 +  overflow: hidden;
 +}
 +
 +.nav-panel-buttom li {
 +  max-height: 64px;
 +}
 +
 +.nav-panels {
 +  transition: background 0.2s ease;
 +}
 +
 +.nav-panel-add .add,
 +.nav-panel-search .search,
 +.nav-panels .close {
 +  color: #444 !important;
 +}
 +
 +.nav-panels .action {
 +  padding-left: 0.75rem;
 +  font-size: 2.1rem;
 +  white-space: nowrap;
 +}
 +
 +.nav-panels .input-field input {
 +  display: block;
 +  line-height: inherit;
 +  padding-left: 4rem !important;
 +  width: calc(100% - 8rem);
 +}
 +
 +.nav-panels .input-field input:focus {
 +  background-color: #fff;
 +  border: 0;
 +  box-shadow: none;
 +  color: #444;
 +}
 +
 +.input-field.nav-panel-add label {
 +  left: 1rem;
 +}
 +
 +.input-field.nav-panel-add .close {
 +  position: absolute;
 +  top: 0;
 +  right: 1rem;
 +  color: transparent;
 +  cursor: pointer;
 +  font-size: 2rem;
 +  transition: 0.3s color;
 +}
 +
 +#button_filters {
 +  display: none;
 +}
 +
 +#button_export {
 +  display: none;
 +}
 +
 +/* ==========================================================================
 +   2 = Side-nav
 +   ========================================================================== */
 +
 +.side-nav.fixed a {
 +  font-size: 13px;
 +  line-height: 44px;
 +  height: 44px;
 +}
 +
 +.side-nav .collapsible-header,
 +.side-nav.fixed .collapsible-header {
 +  height: 45px;
 +  line-height: 44px;
 +  padding: 0 20px;
 +}
 +
 +.bold > a {
 +  font-weight: bold;
 +}
 +
 +.side-nav > li.logo {
 +  line-height: 0;
 +  text-align: center;
 +}
 +
 +#main .logo a {
 +  height: 100pt;
 +}
 +
 +#main .logo img {
 +  height: 100pt;
 +  width: 100pt;
 +}
 +
 +#main .logo:hover {
 +  background: transparent;
 +}
 +
 +.side-nav li {
 +  padding: 0;
 +}
 +
 +.side-nav a {
 +  margin: 0 1rem;
 +}
 +
 +/* ==========================================================================
 + * 3 = Filters slider
 + * ========================================================================== */
 +
 +#filters button {
 +  padding: 0;
 +  width: 100%;
 +}
 +
 +.side-nav.fixed.right-aligned {
 +  right: -250px;
 +  left: auto !important;
 +  overflow-y: visible;
 +}
 +
 +#filters div.with-checkbox {
 +  height: 3rem;
 +  margin-top: 0;
 +}
 +
 +/* ==========================================================================
 +   4 = Cards
 +   ========================================================================== */
 +
 +main #content {
 +  padding: 0 0.5rem;
 +}
 +
 +main ul.row {
 +  padding: 0 0.75rem;
 +}
 +
 +.data .card .card-body {
 +  height: 22em;
 +  overflow: hidden;
 +}
 +
 +.card .card-content .card-title {
 +  line-height: 32px;
 +}
 +
 +.card .card-entry-labels {
 +  position: absolute;
 +  top: 10px;
 +  z-index: 90;
 +  max-width: 50%;
 +}
 +
 +.card .card-entry-labels li {
 +  margin: 10px 10px 10px auto;
 +  padding: 5px 12px 5px 16px;
 +  background-color: rgba(0, 151, 167, 0.85);
 +  border-radius: 0 3px 3px 0;
 +  color: #fff;
 +  cursor: default;
 +  max-height: 2em;
 +  overflow: hidden;
 +  text-overflow: ellipsis;
 +  white-space: nowrap;
 +}
 +
 +.card .card-entry-labels-hidden {
 +  margin-top: 5px;
 +}
 +
 +.card .card-entry-labels-hidden li {
 +  display: inline-block;
 +  background-color: rgba(0, 151, 167, 0.85);
 +  margin: 0 5px;
 +  padding: 5px 12px;
 +  border-radius: 3px;
 +  color: #fff;
 +  max-height: 2em;
 +  max-width: calc(100% - 15px);
 +  overflow: hidden;
 +  text-overflow: ellipsis;
 +  white-space: nowrap;
 +}
 +
 +.card .card-content .estimatedTime {
 +  margin-bottom: 10px;
 +}
 +
 +.card .card-action .original {
 +  line-height: 24px;
 +}
 +
 +.card .card-action ul.links {
 +  margin: 0;
 +  font-size: 24px;
 +  line-height: 24px;
 +}
 +
 +.card .card-action a {
 +  color: #fff;
 +  margin: 0;
 +}
 +
 +.card .card-action a:hover {
 +  color: #fff;
 +}
 +
 +.settings .div_tabs {
 +  padding-bottom: 15px;
 +}
 +
 +.card.sw {
 +  max-width: 370px;
 +  margin-left: auto;
 +  margin-right: auto;
 +}
 +
 +.card .card-image {
 +  height: 14em;
 +}
 +
 +.card .card-image .preview {
 +  height: 14em;
 +  background-size: cover;
 +  background-repeat: no-repeat;
 +  background-position: 50%;
 +}
 +
 +/* ==========================================================================
 +   5 = Article
 +   ========================================================================== */
 +
 +#article {
 +  font-size: 20px;
 +  margin: 0 auto;
 +  max-width: 40em;
 +}
 +
++#article img,
++#article figure {
 +  max-width: 100%;
 +  height: auto;
 +}
 +
 +#article > header > h1 {
 +  font-size: 2em;
 +}
 +
 +.reader-mode {
 +  width: 95px !important;
 +  transition: width 0.2s ease;
 +}
 +
 +.reader-mode:hover {
 +  width: 240px !important;
 +}
 +
 +.reader-mode .collapsible-body {
 +  height: 0;
 +  overflow: hidden;
 +}
 +
 +.reader-mode:hover .collapsible-body {
 +  height: auto;
 +}
 +
 +.reader-mode span {
 +  opacity: 0;
 +  transition: opacity 0.2s ease;
 +}
 +
 +.reader-mode:hover span {
 +  opacity: 1;
 +}
 +
 +.progress {
 +  position: fixed;
 +  top: 0;
 +  width: 100%;
 +  height: 3px;
 +  margin: 0;
 +  z-index: 9999;
 +}
 +
 +#article aside .link {
 +  color: #000;
 +  font-size: 0.8em;
 +  text-decoration: none;
 +}
 +
 +#article aside #list {
 +  float: right;
 +  margin: 0 15px 10px;
 +}
 +
 +#article aside .chip {
 +  background-color: rgba(0, 151, 167, 0.85);
 +  color: #fff;
 +  padding: 0 15px 0 10px;
 +}
 +
 +#article aside .chip i {
 +  color: #fff;
 +}
 +
 +/* ==========================================================================
 +   6 = Media queries
 +   ========================================================================== */
 +
 +@media only screen and (max-width: 992px) {
 +  header,
 +  main,
 +  footer {
 +    padding-left: 0;
 +  }
 +  nav,
 +  main,
 +  footer {
 +    padding-left: 0;
 +  }
 +  .pagination {
 +    width: auto;
 +  }
 +  .reader-mode {
 +    width: 240px !important;
 +  }
 +  .reader-mode span {
 +    opacity: 1;
 +  }
 +  .tabs {
 +    display: inline-block;
 +    height: auto;
 +  }
 +  .tab {
 +    min-width: 100%;
 +  }
 +  .indicator {
 +    display: none;
 +  }
 +  .pagination li.prev,
 +  .pagination li.next {
 +    width: auto;
 +  }
 +}
 +
 +@media only screen and (min-width: 400px) {
 +  .nav-panel-buttom {
 +    float: right;
 +  }
 +}
 +
 +@media only screen and (min-width: 993px) and (max-width: 1180px) {
 +  .row .col.l1 {
 +    width: 25%;
 +    margin-left: 0;
 +  }
 +  .row .col.l2 {
 +    width: 33.33333%;
 +    margin-left: 0;
 +  }
 +  .row .col.l3 {
 +    width: 41.66667%;
 +    margin-left: 0;
 +  }
 +  .row .col.l4 {
 +    width: 50%;
 +    margin-left: 0;
 +  }
 +  .row .col.l5 {
 +    width: 58.33333%;
 +    margin-left: 0;
 +  }
 +  .row .col.l6 {
 +    width: 66.66667%;
 +    margin-left: 0;
 +  }
 +  .row .col.l7 {
 +    width: 75%;
 +    margin-left: 0;
 +  }
 +  .row .col.l8 {
 +    width: 83.33333%;
 +    margin-left: 0;
 +  }
 +  .row .col.l9 {
 +    width: 91.66667%;
 +    margin-left: 0;
 +  }
 +  .row .col.l10 {
 +    width: 100%;
 +    margin-left: 0;
 +  }
 +}
 +
 +@media only screen and (max-width: 350px) {
 +  .nb-results {
 +    display: none;
 +  }
 +}
 +
 +/* ==========================================================================
 +   7 = Font
 +   ========================================================================== */
 +
 +.icon-google-plus2::before {
 +  content: "\ea89";
 +}
 +
 +.icon-facebook2::before {
 +  content: "\ea8d";
 +}
 +
 +.icon-twitter::before {
 +  content: "\ea91";
 +}
 +
 +.icon-apple::before {
 +  content: "\eabf";
 +}
 +
 +.icon-android::before {
 +  content: "\eac1";
 +}
 +
 +.icon-chrome::before {
 +  content: "\eae5";
 +}
 +
 +.icon-firefox::before {
 +  content: "\eae6";
 +}
 +
 +footer [class^="icon-"],
 +footer [class*=" icon-"] {
 +  font-size: 2em;
 +  transition: text-shadow 0.2s ease;
 +  padding-right: 10px;
 +}
 +
 +footer [class^="icon-"]:hover,
 +footer [class*=" icon-"]:hover {
 +  text-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
 +}
 +
 +/* ==========================================================================
 +   8 = Others
 +   ========================================================================== */
 +
 +/* force height on non-input field in the settings page */
 +div.settings div.input-field div,
 +div.settings div.input-field ul {
 +  margin-top: 40px;
 +}
 +
 +/* but avoid to kill all file input */
 +div.settings div.file-field div {
 +  margin-top: inherit;
 +}
Simple merge
index 798d8cbad0c909fbb99bceb99d52c7f65a515f18,c066aaf798b52ab4ef7cbbeafb3e5e784506083e..c24475d2688b1780bd4e78a124d5a264f67e048b
@@@ -144,7 -144,8 +144,9 @@@ entry
          reading_time: 'estimeret læsetid'
          reading_time_minutes: 'estimeret læsetid: %readingTime% min'
          reading_time_less_one_minute: 'estimeret læsetid: <small class="inferieur">&lt;</small> 1 min'
 +        # number_of_tags: '{1}and one other tag|]1,Inf[and %count% other tags'
+         reading_time_minutes_short: '%readingTime% min'
+         reading_time_less_one_minute_short: '<small class="inferieur">&lt;</small> 1 min'
          original_article: 'original'
          toogle_as_read: 'Marker som læst'
          toogle_as_star: 'Skift favoritstatus'
index 0b8516ee733ee8174613f5d7adbd584caad6873e,28d826b66d1a5c7c1c11b86411f422829a09d826..384ec09a15eeda9ad4a312f2aa5332508bae6923
@@@ -144,7 -144,8 +144,9 @@@ entry
          reading_time: 'geschätzte Lesezeit'
          reading_time_minutes: 'geschätzte Lesezeit: %readingTime% min'
          reading_time_less_one_minute: 'geschätzte Lesezeit: <small class="inferieur">&lt;</small> 1 min'
 +        # number_of_tags: '{1}and one other tag|]1,Inf[and %count% other tags'
+         reading_time_minutes_short: '%readingTime% min'
+         reading_time_less_one_minute_short: '<small class="inferieur">&lt;</small> 1 min'
          original_article: 'original'
          toogle_as_read: 'Gelesen-Status ändern'
          toogle_as_star: 'Favoriten-Status ändern'
index 2c087421d33adcde57f31fbcbfb3574453ad9f1b,c6633f5ba115e04204bb0c3f64df00cfe6349f91..ea860564b9eabf177b824bd59d6dfc241d15104e
@@@ -144,10 -144,11 +144,12 @@@ entry
          reading_time: 'estimated reading time'
          reading_time_minutes: 'estimated reading time: %readingTime% min'
          reading_time_less_one_minute: 'estimated reading time: <small class="inferieur">&lt;</small> 1 min'
 +        number_of_tags: '{1}and one other tag|]1,Inf[and %count% other tags'
+         reading_time_minutes_short: '%readingTime% min'
+         reading_time_less_one_minute_short: '<small class="inferieur">&lt;</small> 1 min'
          original_article: 'original'
          toogle_as_read: 'Toggle mark as read'
-         toogle_as_star: 'Toggle favorite'
+         toogle_as_star: 'Toggle starred'
          delete: 'Delete'
          export_title: 'Export'
      filters:
index 5a755e6c095bbc655708e015dd7171ca83144f58,266b4af5b933f3a732069b7e4a7713d6b17ff85e..f64e95d5acac8bf3943db45d55f841169e93f8d4
@@@ -144,7 -144,8 +144,9 @@@ entry
          reading_time: 'tiempo estimado de lectura'
          reading_time_minutes: 'tiempo estimado de lectura: %readingTime% min'
          reading_time_less_one_minute: 'tiempo estimado de lectura: <small class="inferieur">&lt;</small> 1 min'
 +        # number_of_tags: '{1}and one other tag|]1,Inf[and %count% other tags'
+         reading_time_minutes_short: '%readingTime% min'
+         reading_time_less_one_minute_short: '<small class="inferieur">&lt;</small> 1 min'
          original_article: 'original'
          toogle_as_read: 'Marcar como leído/ no leído'
          toogle_as_star: 'Marcar como favorito/ no favorito'
index 5a8bc5c4b4395894e292fe9337ea09dd07371ff0,c2350019c3df9180c5801fdc334de0858f415ce8..e3592a782865c8bb0f0a6acfa7d7f116325e2086
@@@ -144,7 -144,8 +144,9 @@@ entry
          reading_time: 'زمان تخمینی برای خواندن'
          reading_time_minutes: 'زمان تخمینی برای خواندن: %readingTime% min'
          reading_time_less_one_minute: 'زمان تخمینی برای خواندن: <small class="inferieur">&lt;</small> 1 min'
 +        # number_of_tags: '{1}and one other tag|]1,Inf[and %count% other tags'
+         reading_time_minutes_short: '%readingTime% min'
+         reading_time_less_one_minute_short: '<small class="inferieur">&lt;</small> 1 min'
          original_article: 'original'
          toogle_as_read: 'خوانده‌شده/خوانده‌نشده'
          toogle_as_star: 'برگزیده/نابرگزیده'
index 542f61c2081e43be9581ae646816ff21826971ed,25d9ec59bacc5c9d33d380a72d9c8c581f5710e0..9e47d600a005af84c7b2faae6441c7514cfe659b
@@@ -144,7 -144,8 +144,9 @@@ entry
          reading_time: 'durée de lecture'
          reading_time_minutes: 'durée de lecture: %readingTime% min'
          reading_time_less_one_minute: 'durée de lecture: <small class="inferieur">&lt;</small> 1 min'
 +        number_of_tags: '{1}et un autre tag|]1,Inf[et %count% autres tags'
+         reading_time_minutes_short: '%readingTime% min'
+         reading_time_less_one_minute_short: '<small class="inferieur">&lt;</small> 1 min'
          original_article: 'original'
          toogle_as_read: 'Marquer comme lu/non lu'
          toogle_as_star: 'Marquer comme favori'
index 0bcc94a5a93e17434033eb85a7ed81964aaeadf3,231ba7596761e0f5d21970090f2c39465065f1b8..3760c2d64f4d3de3e290a48d87cee085dcbf40b7
@@@ -144,7 -144,8 +144,9 @@@ entry
          reading_time: 'tempo di lettura stimato'
          reading_time_minutes: 'tempo di lettura stimato: %readingTime% min'
          reading_time_less_one_minute: 'tempo di lettura stimato: <small class="inferieur">&lt;</small> 1 min'
 +        # number_of_tags: '{1}and one other tag|]1,Inf[and %count% other tags'
+         reading_time_minutes_short: '%readingTime% min'
+         reading_time_less_one_minute_short: '<small class="inferieur">&lt;</small> 1 min'
          original_article: 'originale'
          toogle_as_read: 'Segna come da leggere'
          toogle_as_star: 'Segna come non preferito'
index bf6b4100ba967cbd9e5e1a93b0f8d453ebba473d,6e71b850492f3ef56901cfb010005bf85b817d3a..1e23168bf7ff8c49e20837ef0f741037f4f98b45
@@@ -144,7 -144,8 +144,9 @@@ entry
          reading_time: 'durada de lectura'
          reading_time_minutes: 'durada de lectura : %readingTime% min'
          reading_time_less_one_minute: 'durada de lectura : <small class="inferieur">&lt;</small> 1 min'
 +        # number_of_tags: '{1}and one other tag|]1,Inf[and %count% other tags'
+         reading_time_minutes_short: '%readingTime% min'
+         reading_time_less_one_minute_short: '<small class="inferieur">&lt;</small> 1 min'
          original_article: 'original'
          toogle_as_read: 'Marcar coma legit/pas legit'
          toogle_as_star: 'Marcar coma favorit'
index 09428c890e6c17078e5b1c457157dc683372c302,2db26cf182a1cbe8b71ba2e32c6b7eb8a26bb22d..0a325c574ff68e3857247c7bf13a9f6437071f9e
@@@ -144,7 -144,8 +144,9 @@@ entry
          reading_time: 'szacunkowy czas czytania'
          reading_time_minutes: 'szacunkowy czas czytania: %readingTime% min'
          reading_time_less_one_minute: 'szacunkowy czas czytania: <small class="inferieur">&lt;</small> 1 min'
 +        # number_of_tags: '{1}and one other tag|]1,Inf[and %count% other tags'
+         reading_time_minutes_short: '%readingTime% min'
+         reading_time_less_one_minute_short: '<small class="inferieur">&lt;</small> 1 min'
          original_article: 'oryginał'
          toogle_as_read: 'Oznacz jako przeczytane'
          toogle_as_star: 'Oznacz jako ulubione'
index bc16eddc1a5383b5305985903196b686cedfdb33,d8f09bc98cac95509d746cac6434a838d7ecf77e..42ad28eec58f04dd45edd9ac0cf5c9c3ff7fb7fa
@@@ -144,7 -144,8 +144,9 @@@ entry
          reading_time: 'timp estimat de citire'
          reading_time_minutes: 'timp estimat de citire: %readingTime% min'
          reading_time_less_one_minute: 'timp estimat de citire: <small class="inferieur">&lt;</small> 1 min'
 +        # number_of_tags: '{1}and one other tag|]1,Inf[and %count% other tags'
+         reading_time_minutes_short: '%readingTime% min'
+         reading_time_less_one_minute_short: '<small class="inferieur">&lt;</small> 1 min'
          original_article: 'original'
          toogle_as_read: 'Comută marcat ca citit'
          toogle_as_star: 'Comută marcat ca favorit'
index 240bc53acf41e08504ce7204d1f52475b364080c,074d13e24183f22fc6f07c04ddeb9d3ff68a79f4..a60dfc86105c9b226c4d58c485979711fd56a85b
@@@ -144,7 -144,8 +144,9 @@@ entry
          reading_time: 'tahmini okuma süresi'
          reading_time_minutes: 'tahmini okuma süresi: %readingTime% min'
          reading_time_less_one_minute: 'tahmini okuma süresi: <small class="inferieur">&lt;</small> 1 min'
 +        # number_of_tags: '{1}and one other tag|]1,Inf[and %count% other tags'
+         reading_time_minutes_short: '%readingTime% min'
+         reading_time_less_one_minute_short: '<small class="inferieur">&lt;</small> 1 min'
          original_article: 'orijinal'
          toogle_as_read: 'Okundu/okunmadı olarak işaretle'
          toogle_as_star: 'Favorilere ekle/çıkar'
index 8c06cf110c32092cc3c31aaa7d737f0574670ec2,d7374dc7551a34e156395ccfc3db37ab3bf963b1..ce47a6771977718ce7a590e27f67df3483468a18
@@@ -9,31 -9,44 +9,44 @@@
          </header>
  
          <div id="article_toolbar">
--        <ul class="links">
--            <li class="topPosF"><a href="#top" title="{{ 'entry.view.left_menu.back_to_top'|trans }}" class="tool top icon icon-arrow-up-thick"><span>{{ 'entry.view.left_menu.set_as_read'|trans }}</span></a></li>
--            <li><a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.view.original_article'|trans }} : {{ entry.title|e }}" class="tool link icon icon-link"><span>{{ entry.domainName|removeWww }}</span></a></li>
--            <li><a title="{{ 'entry.view.left_menu.re_fetch_content'|trans }}" class="tool icon icon-reload" href="{{ path('reload_entry', { 'id': entry.id }) }}"><span>{{ 'entry.view.left_menu.re_fetch_content'|trans }}</span></a></li>
--            <li><a title="{% if entry.isArchived == 0 %}{{ 'entry.view.left_menu.set_as_read'|trans }}{% else %}{{ 'entry.view.left_menu.set_as_unread'|trans }}{% endif %}" class="tool icon icon-check {% if entry.isArchived == 0 %}archive-off{% else %}archive{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"><span>{% if entry.isArchived == 0 %}{{ 'entry.view.left_menu.set_as_read'|trans }}{% else %}{{ 'entry.view.left_menu.set_as_unread'|trans }}{% endif %}</span></a></li>
-             <li><a title="{{ 'entry.view.left_menu.set_as_favorite'|trans }}" class="tool icon icon-star {% if entry.isStarred == 0 %}fav-off{% else %}fav{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"><span>{{ 'entry.view.left_menu.set_as_favorite'|trans }}</span></a></li>
 -            <li><a title="{{ 'entry.view.left_menu.set_as_starred'|trans }}" class="tool icon icon-star {% if entry.isStarred == 0 %}fav-off{% else %}fav{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"><span>{{ 'entry.view.left_menu.set_as_starred'|trans }}</span></a></li>
--            <li><a id="nav-btn-add-tag" title="{{ 'entry.view.left_menu.add_a_tag'|trans }}"><span>{{ 'entry.view.left_menu.add_a_tag'|trans }}</span></a></li>
--            <li><a title="{{ 'entry.view.left_menu.delete'|trans }}" class="tool delete icon icon-trash" href="{{ path('delete_entry', { 'id': entry.id }) }}"><span>{{ 'entry.view.left_menu.delete'|trans }}</span></a></li>
--            {% if craue_setting('share_twitter') %}<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="Tweet"><span>Tweet</span></a></li>{% endif %}
--            {% if craue_setting('share_mail') %}<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="Email"><span>Email</span></a></li>{% endif %}
--            {% if craue_setting('share_shaarli') %}<li><a href="{{ craue_setting('shaarli_url') }}/index.php?post={{ entry.url|url_encode }}&amp;title={{ entry.title|url_encode }}" target="_blank" class="tool shaarli" title="shaarli"><span>shaarli</span></a></li>{% endif %}
--            {% if craue_setting('share_diaspora') %}<li><a href="{{ craue_setting('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="diaspora"><span>diaspora</span></a></li>{% endif %}
--            {% if craue_setting('carrot') %}<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="carrot"><span>Carrot</span></a></li>{% endif %}
--            {% if craue_setting('show_printlink') %}<li><a title="{{ 'entry.view.left_menu.print'|trans }}" class="tool icon icon-print" href="javascript: window.print();"><span>{{ 'entry.view.left_menu.print'|trans }}</span></a></li>{% endif %}
--            {% if craue_setting('export_epub') %}<li><a href="?epub&amp;method=id&amp;value={{ entry.id }}" title="Generate ePub file">EPUB</a></li>{% endif %}
--            {% if craue_setting('export_mobi') %}<li><a href="?mobi&amp;method=id&amp;value={{ entry.id }}" title="Generate Mobi file">MOBI</a></li>{% endif %}
--            {% if craue_setting('export_pdf') %}<li><a href="?pdf&amp;method=id&amp;value={{ entry.id }}" title="Generate PDF file">PDF</a></li>{% endif %}
--            <li><a href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&amp;body={{ entry.url|url_encode }}" title="{{ 'entry.view.left_menu.problem.label'|trans }}" class="tool bad-display icon icon-delete"><span>{{ 'entry.view.left_menu.problem.label'|trans }}</span></a></li>
--        </ul>
--    </div>
++            <ul class="links">
++                <li class="topPosF"><a href="#top" title="{{ 'entry.view.left_menu.back_to_top'|trans }}" class="tool top icon icon-arrow-up-thick"><span>{{ 'entry.view.left_menu.set_as_read'|trans }}</span></a></li>
++                <li><a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.view.original_article'|trans }} : {{ entry.title|e }}" class="tool link icon icon-link"><span>{{ entry.domainName|removeWww }}</span></a></li>
++                <li><a title="{{ 'entry.view.left_menu.re_fetch_content'|trans }}" class="tool icon icon-reload" href="{{ path('reload_entry', { 'id': entry.id }) }}"><span>{{ 'entry.view.left_menu.re_fetch_content'|trans }}</span></a></li>
++                <li><a title="{% if entry.isArchived == 0 %}{{ 'entry.view.left_menu.set_as_read'|trans }}{% else %}{{ 'entry.view.left_menu.set_as_unread'|trans }}{% endif %}" class="tool icon icon-check {% if entry.isArchived == 0 %}archive-off{% else %}archive{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"><span>{% if entry.isArchived == 0 %}{{ 'entry.view.left_menu.set_as_read'|trans }}{% else %}{{ 'entry.view.left_menu.set_as_unread'|trans }}{% endif %}</span></a></li>
++                <li><a title="{{ 'entry.view.left_menu.set_as_starred'|trans }}" class="tool icon icon-star {% if entry.isStarred == 0 %}fav-off{% else %}fav{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"><span>{{ 'entry.view.left_menu.set_as_starred'|trans }}</span></a></li>
++                <li><a id="nav-btn-add-tag" title="{{ 'entry.view.left_menu.add_a_tag'|trans }}"><span>{{ 'entry.view.left_menu.add_a_tag'|trans }}</span></a></li>
++                <li><a title="{{ 'entry.view.left_menu.delete'|trans }}" class="tool delete icon icon-trash" href="{{ path('delete_entry', { 'id': entry.id }) }}"><span>{{ 'entry.view.left_menu.delete'|trans }}</span></a></li>
++                {% if craue_setting('share_twitter') %}<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="Tweet"><span>Tweet</span></a></li>{% endif %}
++                {% if craue_setting('share_mail') %}<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="Email"><span>Email</span></a></li>{% endif %}
++                {% if craue_setting('share_shaarli') %}<li><a href="{{ craue_setting('shaarli_url') }}/index.php?post={{ entry.url|url_encode }}&amp;title={{ entry.title|url_encode }}" target="_blank" class="tool shaarli" title="shaarli"><span>shaarli</span></a></li>{% endif %}
++                {% if craue_setting('share_diaspora') %}<li><a href="{{ craue_setting('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="diaspora"><span>diaspora</span></a></li>{% endif %}
++                {% if craue_setting('carrot') %}<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="carrot"><span>Carrot</span></a></li>{% endif %}
++                {% if craue_setting('show_printlink') %}<li><a title="{{ 'entry.view.left_menu.print'|trans }}" class="tool icon icon-print" href="javascript: window.print();"><span>{{ 'entry.view.left_menu.print'|trans }}</span></a></li>{% endif %}
++                {% if craue_setting('export_epub') %}<li><a href="?epub&amp;method=id&amp;value={{ entry.id }}" title="Generate ePub file">EPUB</a></li>{% endif %}
++                {% if craue_setting('export_mobi') %}<li><a href="?mobi&amp;method=id&amp;value={{ entry.id }}" title="Generate Mobi file">MOBI</a></li>{% endif %}
++                {% if craue_setting('export_pdf') %}<li><a href="?pdf&amp;method=id&amp;value={{ entry.id }}" title="Generate PDF file">PDF</a></li>{% endif %}
++                <li><a href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&amp;body={{ entry.url|url_encode }}" title="{{ 'entry.view.left_menu.problem.label'|trans }}" class="tool bad-display icon icon-delete"><span>{{ 'entry.view.left_menu.problem.label'|trans }}</span></a></li>
++            </ul>
++        </div>
+         <div class="link mdi-action-today">
+             {{ 'entry.view.created_at'|trans }}: {{ entry.createdAt|date('Y-m-d') }}
+         </div>
+         <div class="link mdi-action-query-builder">
+             {% set readingTime = entry.readingTime / app.user.config.readingSpeed %}
+             {% if readingTime > 0 %}
+                 {{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': readingTime|round})|capitalize }}
+             {% else %}
+                 {{ 'entry.list.reading_time_less_one_minute'|trans|raw }}
+             {% endif %}
+         </div>
          {% set nbAnnotations = entry.annotations | length %}
 -        <span class="tool link mdi-communication-comment"> {{ 'entry.view.annotations_on_the_entry'|transchoice(entry.annotations | length) }}</span>
 +        <span class="tool link"><i class="material-icons link">comment</i> {{ 'entry.view.annotations_on_the_entry'|transchoice(entry.annotations | length) }}</span>
          <aside class="tags">
              {% for tag in entry.tags %}
 -                <span class="mdi-action-label-outline">{{ tag.label }}</span> <a href="{{ path('remove_tag', { 'entry': entry.id, 'tag': tag.id }) }}"><i>✘</i></a>
 +                <span class="label-outline"><i class="material-icons">label_outline</i> {{ tag.label }}</span> <a href="{{ path('remove_tag', { 'entry': entry.id, 'tag': tag.id }) }}"class="nostyle"><i>✘</i></a>
              {% endfor %}
              <div class="input-field nav-panel-add-tag" style="display: none">
                  {{ render(controller( "WallabagCoreBundle:Tag:addTagForm", { 'id': entry.id } )) }}
              {{ entry.content | raw }}
          </article>
      </div>
 -
 -            // toggle read property of current article
 -          /*  $('#markAsRead').click(function(){
 -                $("body").css("cursor", "wait");
 -                $.ajax( { url: '{{ path('archive_entry', { 'id': entry.id }) }}' }).done(
 -                        function( data ) {
 -                            if ( data == '1' ) {
 -                                if ( $('#markAsRead').hasClass("archive-off") ) {
 -                                    $('#markAsRead').removeClass("archive-off");
 -                                    $('#markAsRead').addClass("archive");
 -                                }
 -                                else {
 -                                    $('#markAsRead').removeClass("archive");
 -                                    $('#markAsRead').addClass("archive-off");
 -                                }
 -                            }
 -                            else {
 -                                alert('Error! Pls check if you are logged in.');
 -                            }
 -                        });
 -                $("body").css("cursor", "auto");
 -            });*/
 -
 -            // toggle starred property of current article
 -          /*  $('#setFav').click(function(){
 -                $("body").css("cursor", "wait");
 -                $.ajax( { url: '{{ path('star_entry', { 'id': entry.id }) }}' }).done(
 -                        function( data ) {
 -                            if ( data == '1' ) {
 -                                if ( $('#setFav').hasClass("fav-off") ) {
 -                                    $('#setFav').removeClass("fav-off");
 -                                    $('#setFav').addClass("fav");
 -                                }
 -                                else {
 -                                    $('#setFav').removeClass("fav");
 -                                    $('#setFav').addClass("fav-off");
 -                                }
 -                            }
 -                            else {
 -                                alert('Error! Pls check if you are logged in.');
 -                            }
 -                        });
 -                $("body").css("cursor", "auto");
 -            });*/
 -
++
 +    <script id="annotationroutes" type="application/json">
 +    {
 +        "prefix": "",
 +        "urls": {
 +            "create": "{{ path('annotations_post_annotation', { 'entry': entry.id }) }}",
 +            "update": "{{ path('annotations_put_annotation', { 'annotation': 'idAnnotation' }) }}",
 +            "destroy": "{{ path('annotations_delete_annotation', { 'annotation': 'idAnnotation' }) }}",
 +            "search": "{{ path('annotations_get_annotations', { 'entry': entry.id }) }}"
 +        },
 +        "entryId": "{{ entry.id }}"
 +    }
 +    </script>
+     <script src="{{ asset('bundles/wallabagcore/themes/_global/js/restoreScroll.js')}}"></script>
+     <script type="text/javascript">
+         $(document).ready(function() {
 -
 -        var app = new annotator.App();
 -        app.include(annotator.ui.main, {
 -            element: document.querySelector('article')
 -        });
 -        app.include(annotator.storage.http, {
 -            prefix: '',
 -            urls: {
 -                create: '{{ path('annotations_post_annotation', { 'entry': entry.id }) }}',
 -                update: '{{ path('annotations_put_annotation', { 'annotation': 'idAnnotation' }) }}',
 -                destroy: '{{ path('annotations_delete_annotation', { 'annotation': 'idAnnotation' }) }}',
 -                search: '{{ path('annotations_get_annotations', { 'entry': entry.id }) }}'
 -            }
 -        });
 -        app
 -            .start()
 -            .then(function () {
 -                app.annotations.load({entry: {{ entry.id }}});
 -            });
+             $(window).scroll(function(e){
+                 var scrollTop = $(window).scrollTop();
+                 var docHeight = $(document).height();
+                 var scrollPercent = (scrollTop) / (docHeight);
+                 var scrollPercentRounded = Math.round(scrollPercent*100)/100;
+                 savePercent({{ entry.id }}, scrollPercentRounded);
+             });
+             retrievePercent({{ entry.id }});
+             $(window).resize(function(){
+                 retrievePercent({{ entry.id }});
+             });
+         });
 -
+     </script>
  {% endblock %}
index e9a2b1831063fa2ce7d0c157a916b22ca26230cf,c8e4a533902ab1ee2844a694fb72d6bc23811614..eca8924ec6149845bbc473a5f0e0f56d14c4a365
                              <a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.list.original_article'|trans }}: {{ entry.title|e }} - {{ entry.domainName|removeWww }}" class="tool original grey-text"><span>{{ entry.domainName|removeWww|truncate(18) }}</span></a>
                          </bold>
  
 -                        <ul class="tools links right">
 +                        <ul class="tools right">
                              <li>
 -                                <a title="{{ 'entry.list.toogle_as_read'|trans }}" class="tool grey-text {% if entry.isArchived == 0 %}mdi-action-done{% else %}mdi-content-redo{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"></a>
 -                                <a title="{{ 'entry.list.toogle_as_star'|trans }}" class="tool grey-text {% if entry.isStarred == 0 %}mdi-toggle-star-outline{% else %}mdi-toggle-star{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"></a>
 -                                <a title="{{ 'entry.list.delete'|trans }}" class="tool grey-text delete mdi-action-delete " href="{{ path('delete_entry', { 'id': entry.id }) }}"></a>
 +                                <a title="{{ 'entry.list.toogle_as_read'|trans }}" class="tool grey-text" href="{{ path('archive_entry', { 'id': entry.id }) }}"><i class="material-icons">{% if entry.isArchived == 0 %}done{% else %}redo{% endif %}</i></a>
-                                 <a title="{{ 'entry.list.toogle_as_star'|trans }}" class="tool grey-text" href="{{ path('star_entry', { 'id': entry.id }) }}"><i class="material-icons">{% if entry.isStarred == 0 %}favorite_border{% else %}favorite{% endif %}</i></a>
++                                <a title="{{ 'entry.list.toogle_as_star'|trans }}" class="tool grey-text" href="{{ path('star_entry', { 'id': entry.id }) }}"><i class="material-icons">{% if entry.isStarred == 0 %}star_border{% else %}star{% endif %}</i></a>
 +                                <a title="{{ 'entry.list.delete'|trans }}" class="tool grey-text delete" href="{{ path('delete_entry', { 'id': entry.id }) }}"><i class="material-icons">delete</i></a>
                              </li>
                          </ul>
                      </div>
index 2a5cdfac1ddb419d782cd5e09fd100f0df42017a,2ee615aa03dbf467ba92d557f83e5948f1308beb..5dd2afb3e32d58d52b953067086da402ea844557
@@@ -24,8 -24,8 +24,8 @@@
                      </a>
                  </li>
                  <li>
-                     <a class="waves-effect" title="{{ 'entry.view.left_menu.set_as_favorite'|trans }}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav">
-                         <i class="material-icons small">{% if entry.isStarred == 0 %}favorite_outline{% else %}favorite{% endif %}</i>
+                     <a class="waves-effect" title="{{ 'entry.view.left_menu.set_as_starred'|trans }}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav">
 -                        <i class="{% if entry.isStarred == 0 %}mdi-toggle-star-outline{% else %}mdi-toggle-star{% endif %} small"></i>
++                        <i class="material-icons small">{% if entry.isStarred == 0 %}star_outline{% else %}star{% endif %}</i>
                      </a>
                  </li>
                  <li>
@@@ -70,9 -70,9 +70,9 @@@
          </li>
  
          <li class="bold hide-on-med-and-down">
-             <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.set_as_favorite'|trans }}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav">
-                 <i class="material-icons spall">{% if entry.isStarred == 0 %}favorite_outline{% else %}favorite{% endif %}</i>
-                 <span>{{ 'entry.view.left_menu.set_as_favorite'|trans }}</span>
+             <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.set_as_starred'|trans }}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav">
 -                <i class="{% if entry.isStarred == 0 %}mdi-toggle-star-outline{% else %}mdi-toggle-star{% endif %} small"></i>
++                <i class="material-icons spall">{% if entry.isStarred == 0 %}star_outline{% else %}star{% endif %}</i>
+                 <span>{{ 'entry.view.left_menu.set_as_starred'|trans }}</span>
              </a>
              <div class="collapsible-body"></div>
          </li>
              <h1>{{ entry.title|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1>
          </header>
          <aside>
 -            <span class="link mdi-action-today" title="{{ 'entry.view.created_at'|trans }}"> {{ entry.createdAt|date('Y-m-d') }}</span>
+             {% set readingTime = entry.readingTime / app.user.config.readingSpeed %}
+             <span class="link mdi-action-query-builder">
+                 {% if readingTime > 0 %}
+                     {{ 'entry.list.reading_time_minutes_short'|trans({'%readingTime%': readingTime|round}) }}
+                 {% else %}
+                     {{ 'entry.list.reading_time_less_one_minute_short'|trans|raw }}
+                 {% endif %}
+             </span>
 -            <a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.view.original_article'|trans }} : {{ entry.title|e }}" class="tool link mdi-content-link"> <span>{{ entry.domainName|removeWww }}</span></a>
 -            <span class="tool link mdi-communication-comment"> {{ 'entry.view.annotations_on_the_entry'|transchoice(entry.annotations | length) }}</span>
++            <span class="link mdi-action-today" title="{{ 'entry.view.created_at'|trans }}"> {{ entry.createdAt|date('Y-m-d') }}</span>
 +            <a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.view.original_article'|trans }} : {{ entry.title|e }}" class="tool">
 +            <span class="link"><i class="material-icons link">link</i> {{ entry.domainName|removeWww }}</span></a>
 +            <span class="tool link"><i class="material-icons link">comment</i> {{ 'entry.view.annotations_on_the_entry'|transchoice(entry.annotations | length) }}</span>
              <div id="list">
                  {% for tag in entry.tags %}
                      <div class="chip">
index 563820969c42f1c92fa50e2956cdda3c2f6f4c5b,a5c16792c2716f2dad6e763d19f94f0aca47b733..50134357f942a47327a10b8c146f80c3244d94ea
@@@ -26,8 -31,8 +26,8 @@@
          <ul id="slide-out" class="side-nav fixed">
              {% block logo %}
                  <li class="logo border-bottom">
-                     <a title="{% trans %}Back to unread articles{% endtrans %}" href="{{ path('unread') }}">
+                     <a title="{{ 'menu.left.back_to_unread'|trans }}" href="{{ path('unread') }}">
 -                        <img src="{{ asset('bundles/wallabagcore/themes/material/img/logo-square.png') }}" alt="wallabag logo" />
 +                        <img src="{{ asset('bundles/wallabagcore/themes/_global/img/logo-square.png') }}" alt="wallabag logo" />
                      </a>
                  </li>
              {% endblock %}