directories:
- vendor
- $HOME/.composer/cache
+ - node_modules
+ - $HOME/.cache/bower
+ - $HOME/.npm
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;
+install:
+ - if [[ $ASSETS != nobuild ]]; then source ~/.nvm/nvm.sh && nvm install 5.0; fi;
+ - if [[ $ASSETS != nobuild ]]; then npm install -g npm@latest; fi;
+
before_install:
- if [[ $TRAVIS_REPO_SLUG = wallabag/wallabag ]]; then cp .composer-auth.json ~/.composer/auth.json; fi;
script:
- - travis_wait composer install --no-interaction --no-progress --prefer-dist -o
+ - travis_wait bash install.sh
- ant prepare-$DB
- phpunit -v
- if [ "$CS_FIXER" = "run" ]; then php bin/php-cs-fixer fix src/ --verbose --dry-run ; fi;
* {
-webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
html {
body {
font-size: 1em;
- line-height:1.5;
+ line-height: 1.5;
margin: 0;
}
p:first-child,
ul:first-child,
ol:first-child,
-dl:first-child{
+dl:first-child {
margin-top: 0;
}
kbd,
pre,
samp {
- font-family: monospace, serif;
+ font-family: monospace, serif;
}
pre {
- white-space: pre-wrap;
+ white-space: pre-wrap;
}
-
.upper {
text-transform: uppercase;
}
.inner {
margin: 0 auto;
- max-width: 61.25em;/*980px*/
+ max-width: 61.25em; /* 980px */
}
- table,
- img {
+ table, img, figure {
max-width: 100%;
- height :auto;
+ height: auto;
}
iframe {
input,
select,
textarea {
- font-family: inherit;
- font-size: 100%;
- margin: 0;
+ font-family: inherit;
+ font-size: 100%;
+ margin: 0;
}
input[type="search"] {
- -webkit-appearance: textfield;
+ -webkit-appearance: textfield;
}
/* ==========================================================================
display: none;
}
-.dtable { display:table }
+.dtable {
+ display: table;
+}
- .dtable > * { display:table-row; }
+.dtable > * {
+ display: table-row;
+}
- .dtable > * > * { display:table-cell; }
+.dtable > * > * {
+ display: table-cell;
+}
.element-invisible {
border: 0;
}
.small {
- font-size:0.8em;
+ font-size: 0.8em;
}
.big {
font-size: 1.2em;
}
-/*Width*/
+/* Width */
-.w100 { width:100%; }
-.w90 { width:90%; }
-.w80 { width:80%; }
-.w70 { width:70%; }
-.w60 { width:60%; }
-.w50 { width:50%; }
-.w40 { width:40%; }
-.w30 { width:30%; }
-.w20 { width:20%; }
-.w10 { width:10%; }
+.w100 {
+ width: 100%;
+}
+
+.w90 {
+ width: 90%;
+}
+
+.w80 {
+ width: 80%;
+}
+.w70 {
+ width: 70%;
+}
+
+.w60 {
+ width: 60%;
+}
+
+.w50 {
+ width: 50%;
+}
+
+.w40 {
+ width: 40%;
+}
+
+.w30 {
+ width: 30%;
+}
+
+.w20 {
+ width: 20%;
+}
+
+.w10 {
+ width: 10%;
+}
/* ==========================================================================
Internet Explorer
========================================================================== */
-/*IE8 and IE9*/
+/* IE8 and IE9 */
article,
aside,
nav,
section,
summary {
- display: block;
+ display: block;
}
-/*IE8 and IE9*/
+/* IE8 and IE9 */
audio,
canvas,
video {
- display: inline-block;
+ display: inline-block;
}
-@media screen and (-webkit-min-device-pixel-ratio:0){
- select{
+@media screen and (-webkit-min-device-pixel-ratio: 0) {
+ select {
-webkit-appearance: none;
border-radius: 0;
}
}
-
-/* ==========================================================================
- Medias Queries
- ========================================================================== */
-
-/*Desktop 1080px*/
-
-@media screen and (max-width: 67.50em) {
-}
-
-/*Tablet 800px*/
-
-@media screen and (max-width: 50em) {
-}
-
-/*Mobile 640px*/
-
-@media screen and (max-width: 40em) {
-}
-
--- /dev/null
- #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;
+}
assets: ~
wallabag_core:
- version: 2.0.5
+ version: 2.0.7
paypal_url: "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9UBA65LG3FX9Y&lc=gb"
languages:
en: 'English'
form_themes:
- "LexikFormFilterBundle:Form:form_div_layout.html.twig"
-# Assetic Configuration
-assetic:
- debug: "%kernel.debug%"
- use_controller: false
- bundles: [ ]
- #java: /usr/bin/java
- filters:
- cssrewrite: ~
- #closure:
- # jar: "%kernel.root_dir%/Resources/java/compiler.jar"
- #yui_css:
- # jar: "%kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar"
-
# Doctrine Configuration
doctrine:
dbal:
#origin_regex: false
paths:
'^/api/':
+ allow_origin: ['*']
+ allow_headers: ['X-Custom-Auth']
+ allow_methods: ['POST', 'PUT', 'PATCH','GET', 'DELETE']
+ max_age: 3600
+ '^/oauth/':
allow_origin: ['*']
allow_headers: ['X-Custom-Auth']
allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
reading_time: 'estimeret læsetid'
reading_time_minutes: 'estimeret læsetid: %readingTime% min'
reading_time_less_one_minute: 'estimeret læsetid: <small class="inferieur"><</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"><</small> 1 min'
original_article: 'original'
toogle_as_read: 'Marker som læst'
toogle_as_star: 'Skift favoritstatus'
back_to_homepage: 'Tilbage'
set_as_read: 'Marker som læst'
# set_as_unread: 'Mark as unread'
- set_as_favorite: 'Marker som favorit'
+ set_as_starred: 'Marker som favorit'
view_original_article: 'Originalartikel'
# re_fetch_content: 'Re-fetch content'
delete: 'Slet'
edit_title: 'Rediger titel'
original_article: 'original'
# annotations_on_the_entry: '{0} No annotations|{1} One annotation|]1,Inf[ %nbAnnotations% annotations'
+ created_at: 'Oprettelsesdato'
new:
page_title: 'Gem ny artikel'
placeholder: 'http://website.com'
reading_time: 'geschätzte Lesezeit'
reading_time_minutes: 'geschätzte Lesezeit: %readingTime% min'
reading_time_less_one_minute: 'geschätzte Lesezeit: <small class="inferieur"><</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"><</small> 1 min'
original_article: 'original'
toogle_as_read: 'Gelesen-Status ändern'
toogle_as_star: 'Favoriten-Status ändern'
back_to_homepage: 'Zurück'
set_as_read: 'Als gelesen markieren'
set_as_unread: 'Als ungelesen markieren'
- set_as_favorite: 'Favorisieren'
+ set_as_starred: 'Favorisieren'
view_original_article: 'Original-Artikel'
re_fetch_content: 'Inhalt neu laden'
delete: 'Löschen'
edit_title: 'Titel ändern'
original_article: 'original'
annotations_on_the_entry: '{0} Keine Anmerkungen|{1} Eine Anmerkung|]1,Inf[ %nbAnnotations% Anmerkungen'
+ created_at: 'Erstellungsdatum'
new:
page_title: 'Neuen Artikel speichern'
placeholder: 'https://website.de'
entry:
notice:
entry_already_saved: 'Eintrag bereits am %date% gespeichert'
- entry_saved: 'Eintag gespeichert'
+ entry_saved: 'Eintrag gespeichert'
# entry_saved_failed: 'Failed to save entry'
entry_updated: 'Eintrag aktualisiert'
entry_reloaded: 'Eintrag neugeladen'
reading_time: 'estimated reading time'
reading_time_minutes: 'estimated reading time: %readingTime% min'
reading_time_less_one_minute: 'estimated reading time: <small class="inferieur"><</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"><</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:
back_to_homepage: 'Back'
set_as_read: 'Mark as read'
set_as_unread: 'Mark as unread'
- set_as_favorite: 'Favorite'
+ set_as_starred: 'Toggle starred'
view_original_article: 'Original article'
re_fetch_content: 'Re-fetch content'
delete: 'Delete'
edit_title: 'Edit title'
original_article: 'original'
annotations_on_the_entry: '{0} No annotations|{1} One annotation|]1,Inf[ %nbAnnotations% annotations'
+ created_at: 'Creation date'
new:
page_title: 'Save new entry'
placeholder: 'http://website.com'
field_grant_types: 'Grant type allowed'
no_client: 'No client yet.'
remove:
- warn_message_1: 'You have the ability to remove this client. This action is IRREVERSIBLE !'
+ warn_message_1: 'You have the ability to remove the client %name%. This action is IRREVERSIBLE !'
warn_message_2: "If you remove it, every app configured with that client won't be able to auth on your wallabag."
- action: 'Remove this client'
+ action: 'Remove the client %name%'
client:
page_title: 'Developer > New client'
page_description: 'You are about to create a new client. Please fill the field below for the redirect URI of your application.'
form:
- redirect_uris_label: 'Redirect URIs'
+ name_label: 'Name of the client'
+ redirect_uris_label: 'Redirect URIs (optional)'
save_label: 'Create a new client'
action_back: 'Back'
client_parameter:
page_title: 'Developer > Client parameters'
page_description: 'Here are your client parameters.'
+ field_name: 'Client name'
field_id: 'Client ID'
field_secret: 'Client secret'
back: 'Back'
summary: 'Import summary: %imported% imported, %skipped% already saved.'
developer:
notice:
- client_created: 'New client created.'
- client_deleted: 'Client deleted'
+ client_created: 'New client %name% created.'
+ client_deleted: 'Client %name% deleted'
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"><</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"><</small> 1 min'
original_article: 'original'
toogle_as_read: 'Marcar como leído/ no leído'
toogle_as_star: 'Marcar como favorito/ no favorito'
back_to_homepage: 'Regrese a la página principal'
set_as_read: 'Marcar como leído'
set_as_unread: 'Marcar como no leído'
- set_as_favorite: 'Marcar como favorito'
+ set_as_starred: 'Marcar como favorito'
view_original_article: 'Artículo original'
re_fetch_content: 'Redescargar el contenido'
delete: 'Suprimir'
edit_title: 'Modificar el título'
original_article: 'original'
annotations_on_the_entry: '{0} Sin anotaciones|{1} Una anotación|]1,Inf[ %nbAnnotations% anotaciones'
+ created_at: 'Fecha de creación'
new:
page_title: 'Guardar un nuevo artículo'
placeholder: 'http://website.com'
reading_time: 'زمان تخمینی برای خواندن'
reading_time_minutes: 'زمان تخمینی برای خواندن: %readingTime% min'
reading_time_less_one_minute: 'زمان تخمینی برای خواندن: <small class="inferieur"><</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"><</small> 1 min'
original_article: 'original'
toogle_as_read: 'خواندهشده/خواندهنشده'
toogle_as_star: 'برگزیده/نابرگزیده'
back_to_homepage: 'بازگشت'
set_as_read: 'خواندهشده'
set_as_unread: 'به عنوان خواندهنشده علامت بزن'
- set_as_favorite: 'برگزیده'
+ set_as_starred: 'برگزیده'
view_original_article: 'مقالهٔ اصلی'
re_fetch_content: 'مقالهها را دوباره دریافت کن'
delete: 'پاک کردن'
edit_title: 'ویرایش عنوان'
original_article: 'اصلی'
annotations_on_the_entry: '{0} بدون حاشیه|{1} یک حاشیه|]1,Inf[ %nbحاشیه% annotations'
+ created_at: 'زمان ساخت'
new:
page_title: 'ذخیرهٔ مقالهٔ تازه'
placeholder: 'http://website.com'
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"><</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"><</small> 1 min'
original_article: 'original'
toogle_as_read: 'Marquer comme lu/non lu'
toogle_as_star: 'Marquer comme favori'
back_to_homepage: 'Retour'
set_as_read: 'Marquer comme lu'
set_as_unread: 'Marquer comme non lu'
- set_as_favorite: 'Mettre en favori'
+ set_as_starred: 'Mettre en favori'
view_original_article: 'Article original'
re_fetch_content: 'Recharger le contenu'
delete: 'Supprimer'
edit_title: 'Modifier le titre'
original_article: 'original'
annotations_on_the_entry: '{0} Aucune annotation|{1} Une annotation|]1,Inf[ %nbAnnotations% annotations'
+ created_at: 'Date de création'
new:
page_title: 'Sauvegarder un nouvel article'
placeholder: 'http://website.com'
list_methods: "Lister toutes les méthodes de l'API"
clients:
title: 'Clients'
- create_new: 'Créer une nouveau client'
+ create_new: 'Créer un nouveau client'
existing_clients:
title: 'Les clients existants'
field_id: 'ID Client'
field_grant_types: 'Type de privilège accordé'
no_client: 'Aucun client pour le moment'
remove:
- warn_message_1: 'Vous avez la possibilité de supprimer un client. Cette action est IRREVERSIBLE !'
- warn_message_2: "Si vous supprimez un client, toutes les applications qui l'utilisaient ne fonctionneront plus avec votre compte wallabag."
- action: 'Supprimer ce client'
+ warn_message_1: 'Vous avez la possibilité de supprimer le client %name%. Cette action est IRREVERSIBLE !'
+ warn_message_2: "Si vous supprimez le client %name%, toutes les applications qui l'utilisaient ne fonctionneront plus avec votre compte wallabag."
+ action: 'Supprimer le client %name%'
client:
page_title: 'Développeur > Nouveau client'
page_description: "Vous allez créer un nouveau client. Merci de remplir l'url de redirection vers votre application."
form:
- redirect_uris_label: 'URLs de redirection'
+ name_label: "Nom du client"
+ redirect_uris_label: 'URLs de redirection (optionnel)'
save_label: 'Créer un nouveau client'
action_back: 'Retour'
client_parameter:
page_title: 'Développeur > Les paramètres de votre client'
page_description: 'Voilà les paramètres de votre client'
+ field_name: 'Nom du client'
field_id: 'ID Client'
field_secret: 'Clé secrète'
back: 'Retour'
summary: "Rapport d'import: %imported% importés, %skipped% déjà présent."
developer:
notice:
- client_created: 'Nouveau client créé'
- client_deleted: 'Client supprimé'
+ client_created: 'Nouveau client %name% créé'
+ client_deleted: 'Client %name% supprimé'
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"><</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"><</small> 1 min'
original_article: 'originale'
toogle_as_read: 'Segna come da leggere'
toogle_as_star: 'Segna come non preferito'
back_to_homepage: 'Indietro'
set_as_read: 'Segna come già letto'
set_as_unread: 'Segna come da leggere'
- set_as_favorite: 'Segna come preferito'
+ set_as_starred: 'Segna come preferito'
view_original_article: 'Contenuto originale'
re_fetch_content: 'Ri-ottieni pagina'
delete: 'Elimina'
edit_title: 'Modifica titolo'
original_article: 'originale'
annotations_on_the_entry: '{0} Nessuna annotazione|{1} Una annotazione|]1,Inf[ %nbAnnotations% annotazioni'
+ created_at: 'Data di creazione'
new:
page_title: 'Salva un nuovo contenuto'
placeholder: 'http://website.com'
reading_time: 'durada de lectura'
reading_time_minutes: 'durada de lectura : %readingTime% min'
reading_time_less_one_minute: 'durada de lectura : <small class="inferieur"><</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"><</small> 1 min'
original_article: 'original'
toogle_as_read: 'Marcar coma legit/pas legit'
toogle_as_star: 'Marcar coma favorit'
back_to_homepage: 'Tornar'
set_as_read: 'Marcar coma legit'
set_as_unread: 'Marcar coma pas legit'
- set_as_favorite: 'Metre en favori'
+ set_as_starred: 'Metre en favori'
view_original_article: 'Article original'
re_fetch_content: 'Tornar cargar lo contengut'
delete: 'Suprimir'
edit_title: 'Modificar lo títol'
original_article: 'original'
annotations_on_the_entry: "{0} Pas cap d'anotacion|{1} Una anotacion|]1,Inf[ %nbAnnotations% anotacions"
+ created_at: 'Data de creacion'
new:
page_title: 'Enregistrar un novèl article'
placeholder: 'http://website.com'
reading_time: 'szacunkowy czas czytania'
reading_time_minutes: 'szacunkowy czas czytania: %readingTime% min'
reading_time_less_one_minute: 'szacunkowy czas czytania: <small class="inferieur"><</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"><</small> 1 min'
original_article: 'oryginał'
toogle_as_read: 'Oznacz jako przeczytane'
toogle_as_star: 'Oznacz jako ulubione'
back_to_homepage: 'Cofnij'
set_as_read: 'Oznacz jako przeczytane'
set_as_unread: 'Oznacz jako nieprzeczytane'
- set_as_favorite: 'Ulubione'
+ set_as_starred: 'Ulubione'
view_original_article: 'Oryginalny artykuł'
re_fetch_content: 'Pobierz ponownie treść'
delete: 'Usuń'
edit_title: 'Edytuj tytuł'
original_article: 'oryginalny'
annotations_on_the_entry: '{0} Nie ma adnotacji |{1} Jedna adnotacja |]1,Inf[ %nbAnnotations% adnotacji'
+ created_at: 'Czas stworzenia'
new:
page_title: 'Zapisz nowy wpis'
placeholder: 'http://website.com'
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"><</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"><</small> 1 min'
original_article: 'original'
toogle_as_read: 'Comută marcat ca citit'
toogle_as_star: 'Comută marcat ca favorit'
back_to_homepage: 'Înapoi'
set_as_read: 'Marchează ca citit'
# set_as_unread: 'Mark as unread'
- set_as_favorite: 'Favorit'
+ set_as_starred: 'Favorit'
view_original_article: 'Articol original'
# re_fetch_content: 'Re-fetch content'
delete: 'Șterge'
edit_title: 'Editează titlul'
original_article: 'original'
# annotations_on_the_entry: '{0} No annotations|{1} One annotation|]1,Inf[ %nbAnnotations% annotations'
+ created_at: 'Data creării'
new:
page_title: 'Salvează un nou articol'
placeholder: 'http://website.com'
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"><</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"><</small> 1 min'
original_article: 'orijinal'
toogle_as_read: 'Okundu/okunmadı olarak işaretle'
toogle_as_star: 'Favorilere ekle/çıkar'
back_to_homepage: 'Back'
set_as_read: 'Okundu olarak işaretle'
set_as_unread: 'Okunmadı olarak işaretle'
- set_as_favorite: 'Favorilere ekle/çıkar'
+ set_as_starred: 'Favorilere ekle/çıkar'
view_original_article: 'Orijinal makale'
re_fetch_content: 'İçeriği yenile'
delete: 'Sil'
edit_title: 'Başlığı düzenle'
original_article: 'orijinal'
# annotations_on_the_entry: '{0} No annotations|{1} One annotation|]1,Inf[ %nbAnnotations% annotations'
+ created_at: 'Oluşturulma tarihi'
new:
page_title: 'Yeni makaleyi kaydet'
placeholder: 'http://website.com'
</fieldset>
{% endif %}
- {{ form_rest(form.user) }}
+ {{ form_widget(form.user._token) }}
+ {{ form_widget(form.user.save) }}
</form>
<h2>{{ 'config.tab_menu.password'|trans }}</h2>
{{ form_rest(form.new_tagging_rule) }}
</form>
-
<div class="row">
<div class="input-field col s12">
<h3>{{ 'config.form_rules.faq.title'|trans }}</h3>
{% block content %}
<div id="article">
<header class="mbm">
- <h1>{{ entry.title|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1>
+ <h1>{{ entry.title|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" class="nostyle" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1>
</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 }}&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 }}&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 }}¬es=&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&method=id&value={{ entry.id }}" title="Generate ePub file">EPUB</a></li>{% endif %}
-- {% if craue_setting('export_mobi') %}<li><a href="?mobi&method=id&value={{ entry.id }}" title="Generate Mobi file">MOBI</a></li>{% endif %}
-- {% if craue_setting('export_pdf') %}<li><a href="?pdf&method=id&value={{ entry.id }}" title="Generate PDF file">PDF</a></li>{% endif %}
-- <li><a href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&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 }}&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 }}&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 }}¬es=&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&method=id&value={{ entry.id }}" title="Generate ePub file">EPUB</a></li>{% endif %}
++ {% if craue_setting('export_mobi') %}<li><a href="?mobi&method=id&value={{ entry.id }}" title="Generate Mobi file">MOBI</a></li>{% endif %}
++ {% if craue_setting('export_pdf') %}<li><a href="?pdf&method=id&value={{ entry.id }}" title="Generate PDF file">PDF</a></li>{% endif %}
++ <li><a href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&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 %}
{% endif %}
{{ form_widget(form.user.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
- {{ form_rest(form.user) }}
+ {{ form_widget(form.user._token) }}
</form>
</div>
{{ 'config.form_rules.then_tag_as_label'|trans }}
« {{ tagging_rule.tags|join(', ') }} »
<a href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.delete_rule_label'|trans }}">
- <i class="tool grey-text delete mdi-action-delete"></i>
+ <i class="tool grey-text delete material-icons">delete</i>
</a>
</li>
{% endfor %}
<div class="card-body">
{% if not entry.previewPicture is null %}
<div class="card-image waves-effect waves-block waves-light">
+ <ul class="card-entry-labels">
+ {% for tag in entry.tags | slice(0, 3) %}
+ <li>{{ tag.label }}</li>
+ {% endfor %}
+ </ul>
<div class="preview activator" style="background-image: url({{ entry.previewPicture }})"></div>
</div>
{% endif %}
<div class="card-content">
{% if not entry.previewPicture is null %}
- <i class="card-title grey-text text-darken-4 activator mdi-navigation-more-horiz right"></i>
+ <i class="card-title grey-text text-darken-4 activator material-icons right">more_vert</i>
{% endif %}
- <span class="card-title"><a href="{{ path('view', { 'id': entry.id }) }}" title="{{ entry.title|raw }}">{{ entry.title|striptags|slice(0, 42)|raw }}</a></span>
+ <span class="card-title"><a href="{{ path('view', { 'id': entry.id }) }}" title="{{ entry.title|striptags }}">{{ entry.title|striptags|raw }}</a></span>
<div class="estimatedTime grey-text">
<span class="tool reading-time">
{% if entry.previewPicture is null %}
<p>{{ entry.content|striptags|slice(0, 300)|raw }}…</p>
+ <ul class="card-entry-labels-hidden">
+ {% for tag in entry.tags | slice(0, 2) %}
+ <li>{{ tag.label }}</li>
+ {% endfor %}
+ </ul>
{% endif %}
</div>
</div>
{% if not entry.previewPicture is null %}
<div class="card-reveal">
- <i class="card-title grey-text text-darken-4 mdi-card-close right"></i>
+ <i class="card-title grey-text text-darken-4 material-icons right">clear</i>
<span class="card-title"><a href="{{ path('view', { 'id': entry.id }) }}">{{ entry.title|raw }}</a></span>
<div class="estimatedTime grey-text">
</div>
<p>{{ entry.content|striptags|slice(0, 300)|raw }}…</p>
+
+ <ul class="card-entry-tags">
+ {% for tag in entry.tags %}
+ <li>{{ tag.label }}</li>
+ {% endfor %}
+ </ul>
</div>
{% endif %}
<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>
<ul>
<li>
<a class="waves-effect" href="{{ path('homepage') }}">
- <i class="mdi-action-exit-to-app"></i>
+ <i class="material-icons">exit_to_app</i>
</a>
</li>
</ul>
<ul class="right">
<li>
<a class="waves-effect" title="{{ 'entry.view.left_menu.set_as_read'|trans }}" href="{{ path('archive_entry', { 'id': entry.id }) }}" id="markAsRead">
- <i class="{% if entry.isArchived == 0 %}mdi-action-done{% else %}mdi-content-redo{% endif %} small"></i>
+ <i class="material-icons small">{% if entry.isArchived == 0 %}done{% else %}redo{% endif %}</i>
</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>
<a href="#" data-activates="slide-out" class="button-collapse right">
- <i class="mdi-navigation-menu"></i>
+ <i class="material-icons">menu</i>
</a>
</li>
</ul>
<ul id="slide-out" class="collapsible side-nav fixed reader-mode" data-collapsible="accordion">
<li class="bold border-bottom hide-on-med-and-down">
<a class="waves-effect collapsible-header" href="{{ path('homepage') }}">
- <i class="mdi-action-exit-to-app small"></i>
+ <i class="material-icons small">exit_to_app</i>
<span>{{ 'entry.view.left_menu.back_to_homepage'|trans }}</span>
</a>
<div class="collapsible-body"></div>
<li class="bold border-bottom hide-on-med-and-down">
<a class="waves-effect collapsible-header" href="{{ entry.url|e }}">
- <i class="mdi-content-link small"></i>
+ <i class="material-icons small">link</i>
<span>{{ 'entry.view.left_menu.view_original_article'|trans }}</span>
</a>
<div class="collapsible-body"></div>
<li class="bold hide-on-med-and-down">
<a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.re_fetch_content'|trans }}" href="{{ path('reload_entry', { 'id': entry.id }) }}" id="reload">
- <i class="mdi-action-autorenew small"></i>
+ <i class="material-icons small">autorenew</i>
<span>{{ 'entry.view.left_menu.re_fetch_content'|trans }}</span>
</a>
<div class="collapsible-body"></div>
<li class="bold hide-on-med-and-down">
<a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.set_as_read'|trans }}" href="{{ path('archive_entry', { 'id': entry.id }) }}" id="markAsRead">
- <i class="{% if entry.isArchived == 0 %}mdi-action-done{% else %}mdi-content-redo{% endif %} small"></i>
+ <i class="material-icons small">{% if entry.isArchived == 0 %}done{% else %}redo{% endif %}</i>
<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>
<div class="collapsible-body"></div>
</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>
<li class="bold border-bottom hide-on-med-and-down">
<a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.delete'|trans }}" href="{{ path('delete_entry', { 'id': entry.id }) }}">
- <i class="mdi-action-delete small"></i>
+ <i class="material-icons small">delete</i>
<span>{{ 'entry.view.left_menu.delete'|trans }}</span>
</a>
<div class="collapsible-body"></div>
<li class="bold border-bottom hide-on-med-and-down">
<a class="waves-effect collapsible-header" id="nav-btn-add-tag">
- <i class="mdi-action-label-outline small"></i>
+ <i class="material-icons small">label_outline</i>
<span>{{ 'entry.view.left_menu.add_a_tag'|trans }}</span>
</a>
<div class="collapsible-body"></div>
<li class="bold">
<a class="waves-effect collapsible-header">
- <i class="mdi-social-share small"></i>
+ <i class="material-icons small">share</i>
<span>{{ 'entry.view.left_menu.share_content'|trans }}</span>
</a>
<div class="collapsible-body">
{% endif %}
{% if craue_setting('share_mail') %}
<li>
- <a href="mailto:?subject={{ entry.title|url_encode }}&body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email icon icon-mail" title="{{ 'entry.view.left_menu.share_email_label'|trans }}">
+ <a href="mailto:?subject={{ entry.title|url_encode }}&body={{ entry.url|url_encode }}%20via%20@wallabagapp" title="{{ 'entry.view.left_menu.share_email_label'|trans }}">
+ <i class="material-icons">email</i>
<span>{{ 'entry.view.left_menu.share_email_label'|trans }}</span>
</a>
</li>
{% if craue_setting('show_printlink') %}
<li class="bold border-bottom hide-on-med-and-down">
<a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.print'|trans }}" href="javascript: window.print();">
- <i class="mdi-action-print small"></i>
+ <i class="material-icons small">print</i>
<span>{{ 'entry.view.left_menu.print'|trans }}</span>
</a>
<div class="collapsible-body"></div>
<li class="bold">
<a class="waves-effect collapsible-header">
- <i class="mdi-file-file-download small"></i>
+ <i class="material-icons small">file_download</i>
<span>{{ 'entry.view.left_menu.download'|trans }}</span>
</a>
<div class="collapsible-body">
<li class="bold hide-on-large-only">
<a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.delete'|trans }}" href="{{ path('delete_entry', { 'id': entry.id }) }}">
- <i class="mdi-action-delete small"></i>
+ <i class="material-icons small">delete</i>
<span>{{ 'entry.view.left_menu.delete'|trans }}</span>
</a>
<div class="collapsible-body"></div>
<li class="bold">
<a class="waves-effect collapsible-header" href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&body={{ entry.url|url_encode }}" title="{{ 'entry.view.left_menu.problem.description'|trans }}">
- <i class="mdi-alert-error small"></i>
+ <i class="material-icons small">error</i>
<span>{{ 'entry.view.left_menu.problem.label'|trans }}</span>
</a>
<div class="collapsible-body"></div>
<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">
- {{ tag.label }} <a href="{{ path('remove_tag', { 'entry': entry.id, 'tag': tag.id }) }}"><i class="mdi-action-delete"></i></a>
+ {{ tag.label }} <a href="{{ path('remove_tag', { 'entry': entry.id, 'tag': tag.id }) }}"><i class="material-icons">delete</i></a>
</div>
{% endfor %}
</div>
</article>
</div>
-<script type="text/javascript">
-
-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 }}});
-});
-</script>
+<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>
{% endblock %}
{% block css %}
{{ parent() }}
-
- <link rel="stylesheet" href="{{ asset('bundles/wallabagcore/themes/material/css/materialize.min.css') }}" media="screen,projection"/>
- <link rel="stylesheet" href="{{ asset('bundles/wallabagcore/themes/material/css/main.css') }}" media="all">
- <link rel="stylesheet" href="{{ asset('bundles/wallabagcore/themes/material/css/print.css') }}" media="print">
+ <link rel="stylesheet" href="{{ asset('bundles/wallabagcore/themes/material/css/style.min.css') }}" media="screen,projection,print"/>
{% endblock %}
{% block scripts %}
{{ parent() }}
-
- <script src="{{ asset('bundles/wallabagcore/themes/material/js/materialize.min.js') }}"></script>
- <script src="{{ asset('bundles/wallabagcore/themes/material/js/init.js') }}"></script>
+ <script src="{{ asset('bundles/wallabagcore/themes/material/js/material.min.js') }}"></script>
{% endblock %}
{% block header %}
<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 %}
</li>
</ul>
<div class="nav-wrapper nav-panels">
- <a href="#" data-activates="slide-out" class="nav-panel-menu button-collapse"><i class="mdi-navigation-menu"></i></a>
+ <a href="#" data-activates="slide-out" class="nav-panel-menu button-collapse"><i class="material-icons">menu</i></a>
<div class="left action">
{% block title %}
{% endblock %}
<ul>
<li class="bold">
<a title="{{ 'menu.top.add_new_entry'|trans }}" class="waves-effect" href="{{ path('new') }}" id="nav-btn-add">
- <i class="mdi-content-add"></i>
+ <i class="material-icons">add</i>
</a>
</li>
<!--<li>
<a title="{{ 'menu.top.search'|trans }}" class="waves-effect" href="javascript: void(null);" id="nav-btn-search">
- <i class="mdi-action-search"></i>
+ <i class="material-icons">search</i>
</a>
</li>-->
<li id="button_filters">
<a title="{{ 'menu.top.filter_entries'|trans }}" href="#" data-activates="filters" class="nav-panel-menu button-collapse-right">
- <i class="mdi-content-filter-list"></i>
+ <i class="material-icons">filter_list</i>
</a>
</li>
<li id="button_export">
- <a title="{{ 'menu.top.export'|trans }}" class="nav-panel-menu button-collapse-right" href="#" data-activates="export" class="nav-panel-menu button-collapse-right">
- <i class="mdi-file-file-download"></i>
+ <a title="{{ 'menu.top.export'|trans }}" class="nav-panel-menu button-collapse-right" href="#" data-activates="export">
+ <i class="material-icons">file_download</i>
</a>
</li>
</ul>
<form method="get" action="index.php">
<div class="input-field nav-panel-search" style="display: none">
<input name="search" id="searchfield" type="search" required placeholder="{{ 'menu.search_form.input_label'|trans }}">
- <label for="search"><i class="mdi-action-search"></i></label>
- <i class="mdi-navigation-close"></i>
+ <label for="search"><i class="material-icons search">search</i></label>
+ <i class="material-icons close">clear</i>
</div>
</form>
<div class="input-field nav-panel-add" style="display: none">
{{ render(controller("WallabagCoreBundle:Entry:addEntryForm")) }}
- <label for="add" class="active"><i class="mdi-content-add"></i></label>
- <i class="mdi-navigation-close"></i>
+ <label for="add" class="active"><i class="material-icons add">add</i></label>
+ <i class="material-icons close">clear</i>
</div>
</div>
</nav>
{% endblock %}
{% block footer %}
- <footer class="page-footer cyan darken-2">
- <div class="container">
- <div class="row">
- <div class="col l6 s12">
- <h5 class="white-text">{{ 'footer.wallabag.elsewhere'|trans }}</h5>
- <p class="grey-text text-lighten-4">
- <a target="_blank" class="grey-text text-lighten-3" href="https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche" title="Android">
- <span class="icon-android"></span>
- </a>
- <a target="_blank" class="grey-text text-lighten-3" href="https://itunes.apple.com/app/id828331015" title="iOS">
- <span class="icon-apple"></span>
- </a>
- <a target="_blank" class="grey-text text-lighten-3" href="https://addons.mozilla.org/firefox/addon/wallabag-v2/" title="Firefox">
- <span class="icon-firefox"></span>
- </a>
- <a target="_blank" class="grey-text text-lighten-3" href="https://chrome.google.com/webstore/detail/wallabagger/gbmgphmejlcoihgedabhgjdkcahacjlj" title="Chrome">
- <span class="icon-chrome"></span>
- </a>
- </p>
- </div>
- <div class="col l4 offset-l2 s12">
- <h5 class="white-text">{{ 'footer.wallabag.social'|trans }}</h5>
- <a target="_blank" class="grey-text text-lighten-3" href="https://twitter.com/wallabagapp" title="Twitter">
- <span class="icon-twitter"></span>
- </a>
- <a target="_blank" class="grey-text text-lighten-3" href="https://plus.google.com/+WallabagOrg/posts" title="Google+">
- <span class="icon-google-plus2"></span>
- </a>
- <a target="_blank" class="grey-text text-lighten-3" href="https://facebook.com/Wallabag" title="Facebook">
- <span class="icon-facebook2"></span>
- </a>
- </div>
- </div>
- </div>
- <div class="footer-copyright">
- <div class="container">
- <p>{{ 'footer.wallabag.powered_by'|trans }} <a target="_blank" href="https://wallabag.org" class="grey-text text-lighten-4">wallabag</a></p>
- <a class="grey-text text-lighten-4 right" href="{{ path('about') }}">{{ 'footer.wallabag.about'|trans }}</a>
- </div>
- </div>
- </footer>
+ {{ render(controller("WallabagCoreBundle:Footer:index")) }}
{% endblock %}
*
* http://stackoverflow.com/a/14374832/569101
*/
- $this->markTestSkipped('PostgreSQL spotted: can find a good way to drop current database, skipping.');
+ $this->markTestSkipped('PostgreSQL spotted: can\'t find a good way to drop current database, skipping.');
}
}
+ /**
+ * Ensure next tests will have a clean database
+ */
public static function tearDownAfterClass()
{
$application = new Application(static::$kernel);
$application->setAutoExit(false);
- $code = $application->run(new ArrayInput([
+ $application->run(new ArrayInput([
+ 'command' => 'doctrine:schema:drop',
+ '--no-interaction' => true,
+ '--force' => true,
+ '--env' => 'test',
+ ]), new NullOutput());
+
+ $application->run(new ArrayInput([
+ 'command' => 'doctrine:schema:create',
+ '--no-interaction' => true,
+ '--env' => 'test',
+ ]), new NullOutput());
+
+ $application->run(new ArrayInput([
'command' => 'doctrine:fixtures:load',
'--no-interaction' => true,
'--env' => 'test',
$this->assertContains('Setting up database.', $tester->getDisplay());
$this->assertContains('Administration setup.', $tester->getDisplay());
$this->assertContains('Config setup.', $tester->getDisplay());
- $this->assertContains('Installing assets.', $tester->getDisplay());
}
public function testRunInstallCommandWithReset()
$this->assertContains('Droping database, creating database and schema, clearing the cache', $tester->getDisplay());
$this->assertContains('Administration setup.', $tester->getDisplay());
$this->assertContains('Config setup.', $tester->getDisplay());
- $this->assertContains('Installing assets.', $tester->getDisplay());
// we force to reset everything
$this->assertContains('Droping database, creating database and schema, clearing the cache', $tester->getDisplay());
$this->assertContains('Setting up database.', $tester->getDisplay());
$this->assertContains('Administration setup.', $tester->getDisplay());
$this->assertContains('Config setup.', $tester->getDisplay());
- $this->assertContains('Installing assets.', $tester->getDisplay());
// the current database doesn't already exist
$this->assertContains('Creating database and schema, clearing the cache', $tester->getDisplay());
$this->assertContains('Setting up database.', $tester->getDisplay());
$this->assertContains('Administration setup.', $tester->getDisplay());
$this->assertContains('Config setup.', $tester->getDisplay());
- $this->assertContains('Installing assets.', $tester->getDisplay());
$this->assertContains('Droping schema and creating schema', $tester->getDisplay());
}
$this->assertContains('Setting up database.', $tester->getDisplay());
$this->assertContains('Administration setup.', $tester->getDisplay());
$this->assertContains('Config setup.', $tester->getDisplay());
- $this->assertContains('Installing assets.', $tester->getDisplay());
$this->assertContains('Creating schema', $tester->getDisplay());
}
$this->assertContains('Setting up database.', $tester->getDisplay());
$this->assertContains('Administration setup.', $tester->getDisplay());
$this->assertContains('Config setup.', $tester->getDisplay());
- $this->assertContains('Installing assets.', $tester->getDisplay());
}
}