Removed old, not so maintained and buggy baggy theme

This commit is contained in:
Nicolas Lœuillet 2020-04-14 16:01:14 +02:00 committed by Nicolas Lœuillet
parent 0883bda18d
commit 29308024ac
52 changed files with 42 additions and 4736 deletions

View file

@ -0,0 +1,23 @@
<?php
namespace Application\Migrations;
use Doctrine\DBAL\Migrations\SkipMigrationException;
use Doctrine\DBAL\Schema\Schema;
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
/**
* Remove baggy theme.
*/
final class Version20200414120227 extends WallabagMigration
{
public function up(Schema $schema): void
{
$this->addSql('UPDATE ' . $this->getTable('config', true) . " SET theme = 'material';");
}
public function down(Schema $schema): void
{
throw new SkipMigrationException('Not possible ... ');
}
}

View file

@ -1,164 +0,0 @@
#article {
width: 70%;
margin-bottom: 3em;
text-align: justify;
.tags {
margin-bottom: 1em;
}
i {
font-style: normal;
}
h1 {
text-align: left;
}
h2::after {
content: none;
}
h2,
h3,
h4 {
text-transform: none;
}
}
blockquote {
border: 1px solid #999;
background-color: #fff;
padding: 1em;
margin: 0;
}
.topPosF {
position: fixed;
right: 20%;
bottom: 2em;
font-size: 1.5em;
}
#article_toolbar {
margin-bottom: 1em;
li {
display: inline-block;
margin: 3px auto;
}
a {
background-color: #000;
padding: 0.3em 0.5em 0.2em;
color: #fff;
text-decoration: none;
&:hover,
&:focus {
background-color: #999;
}
}
}
#nav-btn-add-tag {
cursor: pointer;
}
.shaarli::before {
content: "*";
}
.return {
text-decoration: none;
margin-top: 1em;
display: block;
}
.return::before {
margin-right: 0.5em;
}
.notags {
font-style: italic;
color: #999;
}
.icon-feed {
background-color: #000;
color: #fff;
padding: 0.2em 0.5em;
&::before {
position: relative;
top: 2px;
}
}
.list-tags {
li {
margin-bottom: 0.5em;
}
.icon-feed:hover,
.icon-feed:focus {
background-color: #fff;
color: #000;
text-decoration: none;
}
a {
text-decoration: none;
&:hover,
&:focus {
text-decoration: underline;
}
}
}
pre code {
font-family: "Courier New", Courier, monospace;
}
#filters {
position: fixed;
width: 20%;
height: 100%;
top: 0;
right: 0;
background-color: #fff;
padding: 30px 30px 15px 15px;
border-left: 1px #333 solid;
z-index: 12;
min-width: 300px;
form .filter-group {
margin: 5px;
}
}
#download-form {
position: fixed;
width: 10%;
height: 100%;
top: 0;
right: 0;
background-color: #fff;
padding: 30px 30px 15px 15px;
border-left: 1px #333 solid;
z-index: 12;
min-width: 200px;
li {
display: block;
padding: 0.5em 2em 0.5em 1em;
color: #fff;
position: relative;
text-transform: uppercase;
text-decoration: none;
font-weight: 400;
font-family: "PT Sans", sans-serif;
transition: all 0.5s ease;
}
}

View file

@ -1,258 +0,0 @@
::selection {
color: #fff;
background-color: #000;
}
.desktopHide {
display: none;
}
.logo {
position: fixed;
z-index: 20;
top: 0.4em;
left: 0.6em;
}
h2,
h3,
h4 {
font-family: "PT Sans", sans-serif;
text-transform: uppercase;
}
p,
li,
label {
color: #666;
}
a {
color: #000;
font-weight: bold;
&.nostyle {
text-decoration: none;
}
&:hover,
&:focus {
text-decoration: none;
}
}
form fieldset {
border: 0;
padding: 0;
margin: 0;
}
form input[type="text"],
form input[type="number"],
select,
form input[type="password"],
form input[type="url"],
form input[type="email"] {
border: 1px solid #999;
padding: 0.5em 1em;
min-width: 12em;
color: #666;
}
@media screen {
select {
appearance: none;
border-radius: 0;
background: #fff url("../../_global/img/bg-select.png") no-repeat right center;
}
}
.inline {
.row {
display: inline-block;
margin-right: 0.5em;
}
label {
min-width: 6em;
}
}
fieldset label {
display: inline-block;
min-width: 12.5em;
color: #666;
}
label {
margin-right: 0.5em;
}
form .row {
margin-bottom: 0.5em;
}
form button,
input[type="submit"] {
cursor: pointer;
background-color: #000;
color: #fff;
padding: 0.5em 1em;
display: inline-block;
border: 1px solid #000;
}
form button:hover,
form button:focus,
input[type="submit"]:hover,
input[type="submit"]:focus {
background-color: #fff;
color: #000;
transition: all 0.5s ease;
}
#bookmarklet {
cursor: move;
}
h2::after {
content: "";
height: 4px;
width: 20%;
background-color: #000;
display: block;
}
.links {
padding: 0;
margin: 0;
li {
list-style: none;
margin: 0;
padding: 0;
}
}
#links {
position: fixed;
top: 0;
width: 10em;
left: 0;
text-align: right;
background-color: #333;
padding-top: 9.5em;
height: 100%;
box-shadow: inset -4px 0 20px rgb(0 0 0 / 60%);
z-index: 15;
> li > a {
display: block;
padding: 0.5em 2em 0.5em 1em;
color: #fff;
position: relative;
text-transform: uppercase;
text-decoration: none;
font-weight: normal;
font-family: "PT Sans", sans-serif;
transition: all 0.5s ease;
&:hover,
&:focus {
background-color: #999;
color: #000;
}
}
.current::after {
content: "";
width: 0;
height: 0;
position: absolute;
border: 10px solid transparent;
border-right-color: #eee;
right: 0;
top: 50%;
margin-top: -10px;
}
li:last-child {
position: fixed;
bottom: 1em;
width: 10em;
a::before {
font-size: 1.2em;
position: relative;
top: 2px;
}
}
}
#main {
margin-left: 12em;
position: relative;
z-index: 10;
padding-right: 5%;
padding-bottom: 1em;
}
#sort {
padding: 0;
list-style-type: none;
opacity: 0.5;
display: inline-block;
li {
display: inline;
font-size: 0.9em;
& + li {
margin-left: 10px;
}
}
a {
padding: 2px 2px 0;
vertical-align: middle;
}
img {
vertical-align: baseline;
:hover {
cursor: pointer;
}
}
}
#display-mode {
float: right;
margin-top: 10px;
margin-bottom: 10px;
opacity: 0.5;
}
#listmode {
width: 16px;
display: inline-block;
text-decoration: none;
&.tablemode {
background: url("../../_global/img/table.png") no-repeat bottom;
}
.listmode {
background: url("../../_global/img/list.png") no-repeat bottom;
}
}
#warning_message {
position: fixed;
background-color: #ff6347;
z-index: 1000;
bottom: 0;
left: 0;
width: 100%;
color: #000;
}

View file

@ -1,13 +0,0 @@
/* Style */
@import "guide";
@import "layout";
@import "article";
@import "pictos";
@import "login";
@import "save";
@import "messages";
/* Tools */
@import "media_queries";
@import "print";
@import "ratatouille";

View file

@ -1,309 +0,0 @@
#content {
margin-top: 2em;
min-height: 30em;
}
footer {
text-align: right;
position: relative;
bottom: 0;
right: 5em;
color: #999;
font-size: 0.8em;
font-style: italic;
z-index: 20;
a {
color: #999;
font-weight: normal;
}
}
.list-entries {
letter-spacing: -5px;
}
.listmode.entry {
width: 100%;
height: inherit;
}
.card-entry-tags {
max-height: 2em;
overflow-y: hidden;
padding: 0;
margin: 0;
}
.card-entry-tags li,
.card-entry-tags span {
display: inline-block;
margin: 0 5px;
padding: 5px 12px;
background-color: rgb(0 0 0 / 60%);
border-radius: 3px;
max-height: 2em;
overflow: hidden;
text-overflow: ellipsis;
}
.card-entry-tags a,
.card-entry-labels a {
text-decoration: none;
font-weight: normal;
color: #fff;
}
.nav-panel-add-tag {
margin-top: 10px;
}
.list-entries + .results {
margin-bottom: 2em;
}
.reading-time,
.created-at {
color: #999;
font-style: italic;
font-weight: normal;
font-size: 0.9em;
}
.estimatedTime small {
position: relative;
top: -1px;
}
.entry {
background-color: #fff;
letter-spacing: normal;
box-shadow: 0 3px 7px rgb(0 0 0 / 30%);
display: inline-block;
width: 32%;
margin-bottom: 1.5em;
vertical-align: top;
margin-right: 1%;
position: relative;
overflow: hidden;
padding: 1.5em 0 3em;
height: 440px;
img.preview {
width: 100%;
object-fit: cover;
height: 100%;
}
&::before {
content: "";
width: 0;
height: 0;
border: 10px solid transparent;
border-bottom-color: #000;
position: absolute;
bottom: 0.7em;
z-index: 10;
right: 1.5em;
transition: all 0.5s ease;
}
&::after {
content: "";
position: absolute;
height: 7px;
width: 100%;
bottom: 0;
left: 0;
background-color: #000;
transition: all 0.5s ease;
}
&:hover {
box-shadow: 0 3px 10px rgb(0 0 0 / 100%);
&::after {
height: 40px;
}
&::before {
bottom: 2.3em;
}
h2 a {
color: #666;
}
.tools {
bottom: 0;
}
}
h2 {
text-transform: none;
margin-bottom: 0;
line-height: 1.2;
margin-left: 5px;
}
&::after {
content: none;
}
a {
display: block;
text-decoration: none;
color: #000;
word-wrap: break-word;
transition: all 0.5s ease;
}
p {
color: #666;
font-size: 0.9em;
line-height: 1.7;
margin: 5px 5px auto;
}
h2 a::first-letter {
text-transform: uppercase;
}
.tools {
position: absolute;
bottom: -40px;
left: 0;
background: #000;
width: 100%;
z-index: 10;
padding-right: 0.5em;
text-align: right;
transition: all 0.5s ease;
a {
color: #666;
text-decoration: none;
display: block;
padding: 0.4em;
&:hover {
color: #fff;
}
}
li {
display: inline-block;
margin-top: 10px;
}
li:first-child {
float: left;
font-size: 0.9em;
max-width: calc(100% - 40px * 4);
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
max-height: 2em;
margin-left: 10px;
}
}
.card-entry-labels {
position: absolute;
top: 100px;
left: -1em;
z-index: 90;
max-width: 50%;
padding-left: 0;
li {
margin: 10px 10px 10px auto;
padding: 5px 12px 5px 25px;
background-color: rgb(0 0 0 / 60%);
border-radius: 0 3px 3px 0;
color: #fff;
cursor: default;
max-height: 2em;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
a {
color: #fff;
}
}
}
}
.entry:nth-child(3n+1) {
margin-left: 0;
}
.results {
letter-spacing: -5px;
padding: 0 0 0.5em;
> * {
display: inline-block;
vertical-align: top;
letter-spacing: normal;
width: 50%;
text-align: right;
}
}
div.pagination ul {
text-align: right;
}
.nb-results {
text-align: left;
font-style: italic;
color: #999;
display: inline-flex;
}
div.pagination ul {
a {
color: #999;
text-decoration: none;
&:hover,
&:focus {
text-decoration: underline;
}
}
> * {
display: inline-block;
margin-left: 0.5em;
}
.prev.disabled,
.next.disabled {
display: none;
}
.current {
height: 25px;
padding: 4px 8px;
border: 1px solid #d5d5d5;
text-decoration: none;
font-weight: bold;
color: #000;
background-color: #ccc;
}
}
.card-tag-form {
display: inline-block;
}
.card-tag-form input[type="text"] {
min-width: 20em;
}
.hide,
.hidden {
display: none;
}

View file

@ -1,26 +0,0 @@
.login {
background-color: #333;
#main {
padding: 0;
margin: 0;
}
form {
background-color: #fff;
padding: 1.5em;
box-shadow: 0 1px 8px rgb(0 0 0 / 90%);
width: 20em;
position: absolute;
top: 8em;
left: 50%;
margin-left: -10em;
}
.logo {
position: absolute;
top: 2em;
left: 50%;
margin-left: -55px;
}
}

File diff suppressed because it is too large Load diff

View file

@ -1,177 +0,0 @@
@media screen and (max-width: 1050px) {
.entry {
width: 49%;
}
.entry:nth-child(3n+1) {
margin-left: 1.5%;
}
.entry:nth-child(2n+1) {
margin-left: 0;
}
}
@media screen and (max-width: 900px) {
#article {
width: 80%;
}
.topPosF {
right: 2.5em;
}
}
@media screen and (max-width: 700px) {
.entry {
width: 100%;
margin-left: 0;
}
#display-mode {
display: none;
}
}
@media screen and (max-height: 770px) {
.menu.users,
.menu.internal,
.menu.developer {
display: none;
}
}
@media screen and (max-width: 500px) {
.entry {
width: 100%;
margin-left: 0;
}
body > header {
background-color: #333;
position: fixed;
top: 0;
width: 100%;
height: 3em;
z-index: 11;
}
#links li:last-child {
position: static;
width: auto;
}
#links li:last-child a::before {
content: none;
}
.logo {
width: 1.25em;
height: 1.25em;
left: 0;
top: 0;
}
.login > header {
position: static;
}
.login form {
width: 100%;
position: static;
margin-left: 0;
}
.login .logo {
height: auto;
top: 0.5em;
width: 75px;
margin-left: -37.5px;
}
.desktopHide {
display: block;
position: fixed;
z-index: 20;
top: 0;
right: 0;
border: 0;
width: 2.5em;
height: 2.5em;
cursor: pointer;
background-color: #999;
font-size: 1.2em;
}
.desktopHide:hover,
.desktopHide:focus {
background-color: #fff;
}
#links {
display: none;
width: 100%;
height: auto;
padding-top: 3em;
}
#links.menu--open {
display: block;
}
footer {
position: static;
margin-right: 3em;
}
#main {
margin-left: 1.5em;
padding-right: 1.5em;
position: static;
margin-top: 3em;
}
.card-entry-labels {
display: none;
}
#article_toolbar .topPosF {
display: none;
}
#article {
width: 100%;
}
#article h1 {
font-size: 1.5em;
}
#article_toolbar a {
padding: 0.3em 0.4em 0.2em;
}
#display-mode {
display: none;
}
.popup-form,
#bagit-form,
#search-form {
left: 0;
width: 100%;
border-left: none;
}
.popup-form form,
#bagit-form form,
#search-form form {
width: 100%;
}
}
@media only print {
header h1.logo {
display: none;
}
}

View file

@ -1,50 +0,0 @@
/* ==========================================================================
Messages
========================================================================== */
.messages {
text-align: left;
width: 60%;
margin: auto 17%;
> * {
display: inline-block;
}
.install {
text-align: left;
&.error {
border: 1px solid #c42608;
color: #c00 !important;
background: #fff0ef;
}
&.notice {
border: 1px solid #ebcd41;
color: #000;
background: #fffcd3;
}
&.success {
border: 1px solid #6dc70c;
background: #e0fbcc !important;
}
}
}
.warning {
font-weight: bold;
display: block;
width: 100%;
}
.more-info {
font-size: 0.85em;
line-height: 1.5;
color: #aaa;
a {
color: #aaa;
}
}

View file

@ -1,200 +0,0 @@
/* ==========================================================================
Pictos
========================================================================== */
@font-face {
font-family: icomoon;
src: url("~icomoon-free-npm/Font/IcoMoon-Free.ttf");
font-weight: normal;
font-style: normal;
}
.material-icons {
font-family: "Material Icons";
font-weight: normal;
font-style: normal;
font-size: 1em; /* 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";
.md-18 { font-size: 18px; }
.md-24 { font-size: 24px; }
.md-36 { font-size: 36px; }
.md-48 { font-size: 48px; }
.vertical-align-middle {
vertical-align: middle !important;
}
}
.icon span,
.icon-image span {
position: absolute;
top: -9999px;
}
[class^="icon-"]::before,
[class*=" icon-"]::before {
font-family: icomoon;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
/* Enable Ligatures ================ */
letter-spacing: 0;
font-feature-settings: "liga";
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-flattr::before {
content: "\ead4";
}
.icon-mail::before {
content: "\ea86";
}
.icon-up-open::before {
content: "\e80b";
}
.icon-star::before {
content: "\e9d9";
}
.icon-check::before {
content: "\ea10";
}
.icon-link::before {
content: "\e9cb";
}
.icon-reply::before {
content: "\e806";
}
.icon-menu::before {
content: "\e9bd";
}
.icon-clock::before {
content: "\e803";
}
.icon-twitter::before {
content: "\ea96";
}
.icon-down-open::before {
content: "\e809";
}
.icon-trash::before {
content: "\e9ac";
}
.icon-delete::before {
content: "\ea0d";
}
.icon-power::before {
content: "\ea14";
}
.icon-arrow-up-thick::before {
content: "\ea3a";
}
.icon-feed::before {
content: "\e808";
}
.icon-print::before {
content: "\e954";
}
.icon-reload::before {
content: "\ea2e";
}
.icon-price-tags::before {
content: "\e936";
}
.icon-eye::before {
content: "\e9ce";
}
.icon-no-eye::before {
content: "\e9d1";
}
.icon-calendar::before {
content: "\e953";
}
.icon-time::before {
content: "\e952";
}
/* .icon-image class, for image-based icons
========================================================================== */
.icon-image {
background: no-repeat center/80%;
padding-right: 1em !important;
padding-left: 1em !important;
}
/* Diaspora */
.icon-image--diaspora {
background-image: url("../../_global/img/icons/Diaspora-asterisk.svg");
}
/* Unmark.it */
.icon-image--unmark {
background-image: url("../../_global/img/icons/unmark-icon--black.png");
}
/* shaarli */
.icon-image--shaarli {
background-image: url("../../_global/img/icons/shaarli.png");
}
/* ==========================================================================
Icon selected
========================================================================== */
.icon-star.fav::before {
color: #fff;
}
.icon-check.archive::before {
color: #fff;
}

View file

@ -1,63 +0,0 @@
@media print {
/* ### Layout ### */
body {
font-family: serif;
background-color: #fff;
}
@page {
margin: 1cm;
}
img {
max-width: 100% !important;
}
/* ### Content ### */
/* Hide useless blocks */
body > .logo,
#article_toolbar,
#links,
#sort,
body > footer,
.top_link,
div.tools,
header div,
.messages,
.entrie + .results,
#article .mbm a,
#article-informations {
display: none !important;
}
article {
border: none !important;
}
/* Add URL after links */
.vieworiginal a::after {
content: " (" attr(href) ")";
}
/* Add explanation after abbr */
abbr[title]::after {
content: " (" attr(title) ")";
}
/* Change border on current pager item */
.pagination span.current {
border-style: dashed;
}
#main {
width: 100%;
margin: 0;
padding: 0;
}
#article {
width: 100%;
}
}

View file

@ -1,223 +0,0 @@
/*
Ratatouille mini Framework css by Thomas LEBEAU
Base on KNACSS => www.KNACSS.com (2013-10) @author: Raphael Goetter, Alsacreations
and normalize.css
*/
* {
box-sizing: border-box;
}
html {
font-family: sans-serif; /* 1 */
text-size-adjust: 100%; /* 2 */
}
body {
font-size: 1em;
line-height: 1.5;
margin: 0;
}
/* ==========================================================================
Mise en forme
========================================================================== */
h1:first-child,
h2:first-child,
h3:first-child,
h4:first-child,
h5:first-child,
h6:first-child,
p:first-child,
ul:first-child,
ol:first-child,
dl:first-child {
margin-top: 0;
}
code,
kbd,
pre,
samp {
font-family: monospace, serif;
}
pre {
white-space: pre-wrap;
}
.upper {
text-transform: uppercase;
}
.bold {
font-weight: bold;
}
.inner {
margin: 0 auto;
max-width: 61.25em; /* 980px */
}
table,
img,
figure {
max-width: 100%;
height: auto;
}
iframe {
max-width: 100%;
}
.fl {
float: left;
}
.fr {
float: right;
}
table {
border-collapse: collapse;
}
figure {
margin: 0;
}
button,
input,
select,
textarea {
font-family: inherit;
font-size: 100%;
margin: 0;
}
input[type="search"] {
appearance: textfield;
}
/* ==========================================================================
Mise en page
========================================================================== */
.dib {
display: inline-block;
vertical-align: middle;
}
.dnone {
display: none;
}
.dtable {
display: table;
}
.dtable > * {
display: table-row;
}
.dtable > * > * {
display: table-cell;
}
.element-invisible {
border: 0;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
.small {
font-size: 0.8em;
}
.big {
font-size: 1.2em;
}
/* 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%;
}
/* ==========================================================================
Internet Explorer
========================================================================== */
/* IE8 and IE9 */
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section,
summary {
display: block;
}
/* IE8 and IE9 */
audio,
canvas,
video {
display: inline-block;
}
@media screen {
select {
appearance: none;
border-radius: 0;
}
}

View file

@ -1,115 +0,0 @@
/* ==========================================================================
"save a link" related styles
========================================================================== */
.popup-form {
background: rgb(0 0 0 / 50%);
position: absolute;
top: 0;
left: 10em;
z-index: 20;
height: 100%;
width: 100%;
margin: 0;
margin-top: -30% !important;
padding: 2em;
display: none;
border-left: 1px #eee solid;
form {
background-color: #fff;
position: absolute;
top: 0;
left: 0;
z-index: 20;
border: 10px solid #000;
width: 400px;
height: 200px;
padding: 2em;
}
}
#bagit-form-form .addurl {
margin-left: 0;
}
.closeMessage,
.close-button {
background-color: #000;
color: #fff;
font-size: 1.2em;
line-height: 1.6;
width: 1.6em;
height: 1.6em;
text-align: center;
text-decoration: none;
&:hover,
&:focus {
background-color: #999;
color: #000;
}
}
.close-button--popup {
display: inline-block;
position: absolute;
top: 0;
right: 0;
font-size: 1.4em;
}
.active-current {
background-color: #999;
&::after {
content: "";
width: 0;
height: 0;
position: absolute;
border: 10px solid transparent;
border-right-color: #eee;
right: 0;
top: 50%;
margin-top: -10px;
}
}
.opacity03 {
opacity: 0.3;
}
.add-to-wallabag-link-after {
background-color: #000;
color: #fff;
padding: 0 3px 2px;
}
a.add-to-wallabag-link-after {
visibility: hidden;
position: absolute;
opacity: 0;
transition-duration: 2s;
transition-timing-function: ease-out;
}
#article article a:hover + a.add-to-wallabag-link-after,
a.add-to-wallabag-link-after:hover {
opacity: 1;
visibility: visible;
transition-duration: 0.3s;
transition-timing-function: ease-in;
}
a.add-to-wallabag-link-after::after {
content: "w";
}
#add-link-result {
font-weight: bold;
font-size: 0.9em;
}
.btn-clickable {
cursor: pointer;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

View file

@ -1,266 +0,0 @@
import $ from 'jquery';
/* Global imports */
import '../_global/index';
/* Shortcuts */
import './js/shortcuts/main';
import './js/shortcuts/entry';
/* Tools */
import toggleSaveLinkForm from './js/uiTools';
/* Theme style */
import './css/index.scss';
$(document).ready(() => {
/* ==========================================================================
Menu
========================================================================== */
$('#menu').click(() => {
$('#links').toggleClass('menu--open');
const content = $('#content');
if (content.hasClass('opacity03')) {
content.removeClass('opacity03');
}
});
/* ==========================================================================
Add tag panel
========================================================================== */
$('#nav-btn-add-tag').on('click', () => {
$('.baggy-add-tag').toggle(100);
$('.nav-panel-menu').addClass('hidden');
$('#tag_label').focus();
return false;
});
/**
* Filters & Export
*/
// no display if filters not available
if ($('div').is('#filters')) {
$('#button_filters').show();
$('#clear_form_filters').on('click', () => {
$('#filters input').val('');
$('#filters :checked').removeAttr('checked');
return false;
});
}
/**
* Close window after adding entry if popup
*/
const currentUrl = window.location.href;
if (currentUrl.match('&closewin=true')) {
window.close();
}
/**
if ($('article').size() > 0) {
const waypoint = new Waypoint({
element: $('.wallabag-title').get(0),
handler: (direction) => {
console.log(direction);
if (direction === 'down') {
$('aside.tags').fadeIn('slow');
} else {
$('aside.tags').fadeOut('slow');
}
},
offset: 250,
});
}
*/
/**
* Tags autocomplete
*/
/**
* Not working on v2
*
$('#value').bind('keydown', (event) => {
if (event.keyCode === $.ui.keyCode.TAB && $(this).data('ui-autocomplete').menu.active) {
event.preventDefault();
}
}).autocomplete({
source: function source(request, response) {
$.getJSON('./?view=tags', {
term: extractLast(request.term),
//id: $(':hidden#entry_id').val()
}, response);
},
search: function search() {
// custom minLength
const term = extractLast(this.value);
return term.length >= 1;
},
focus: function focus() {
// prevent value inserted on focus
return false;
},
select: function select(event, ui) {
const terms = split(this.value);
// remove the current input
terms.pop();
// add the selected item
terms.push(ui.item.value);
// add placeholder to get the comma-and-space at the end
terms.push('');
this.value = terms.join(', ');
return false;
},
});
*/
//---------------------------------------------------------------------------
// Close the message box when the user clicks the close icon
//---------------------------------------------------------------------------
$('a.closeMessage').on('click', () => {
$(this).parents('div.messages').slideUp(300, () => { $(this).remove(); });
return false;
});
$('#search-form').hide();
$('#bagit-form').hide();
$('#filters').hide();
$('#download-form').hide();
//---------------------------------------------------------------------------
// Toggle the 'Search' popup in the sidebar
//---------------------------------------------------------------------------
function toggleSearch() {
$('#search-form').toggle();
$('#search').toggleClass('current');
$('#search').toggleClass('active-current');
$('#search-arrow').toggleClass('arrow-down');
if ($('#search').hasClass('current')) {
$('#content').addClass('opacity03');
} else {
$('#content').removeClass('opacity03');
}
}
//---------------------------------------------------------------------------
// Toggle the 'Filter' popup on entries list
//---------------------------------------------------------------------------
function toggleFilter() {
$('#filters').toggle();
}
//---------------------------------------------------------------------------
// Toggle the 'Download' popup on entries list
//---------------------------------------------------------------------------
function toggleDownload() {
$('#download-form').toggle();
}
//---------------------------------------------------------------------------
// Toggle the 'Save a Link' popup in the sidebar
//---------------------------------------------------------------------------
function toggleBagit() {
$('#bagit-form').toggle();
$('#bagit').toggleClass('current');
$('#bagit').toggleClass('active-current');
$('#bagit-arrow').toggleClass('arrow-down');
if ($('#bagit').hasClass('current')) {
$('#content').addClass('opacity03');
} else {
$('#content').removeClass('opacity03');
}
}
//---------------------------------------------------------------------------
// Close all #links popups in the sidebar
//---------------------------------------------------------------------------
function closePopups() {
$('#links .messages').hide();
$('#links > li > a').removeClass('active-current');
$('#links > li > a').removeClass('current');
$('[id$=-arrow]').removeClass('arrow-down');
$('#content').removeClass('opacity03');
}
$('#search').click(() => {
closePopups();
toggleSearch();
$('#searchfield').focus();
});
$('.filter-btn').click(() => {
closePopups();
toggleFilter();
});
$('.download-btn').click(() => {
closePopups();
toggleDownload();
});
$('#bagit').click(() => {
closePopups();
toggleBagit();
$('#plainurl').focus();
});
$('#search-form-close').click(() => {
toggleSearch();
});
$('#filter-form-close').click(() => {
toggleFilter();
});
$('#download-form-close').click(() => {
toggleDownload();
});
$('#bagit-form-close').click(() => {
toggleBagit();
});
const bagitFormForm = $('#bagit-form-form');
/* ==========================================================================
bag it link and close button
========================================================================== */
// send 'bag it link' form request via ajax
bagitFormForm.submit((event) => {
$('body').css('cursor', 'wait');
$('#add-link-result').empty();
$.ajax({
type: bagitFormForm.attr('method'),
url: bagitFormForm.attr('action'),
data: bagitFormForm.serialize(),
success: function success() {
$('#add-link-result').html('Done!');
$('#plainurl').val('').blur('');
$('body').css('cursor', 'auto');
},
error: function error() {
$('#add-link-result').html('Failed!');
$('body').css('cursor', 'auto');
},
});
event.preventDefault();
});
/* ==========================================================================
Process all links inside an article
========================================================================== */
$('article a[href^="http"]').after(
() => `<a href="${$(this).attr('href')}" class="add-to-wallabag-link-after" title="add to wallabag"></a>`,
);
$('.add-to-wallabag-link-after').click((event) => {
toggleSaveLinkForm($(this).attr('href'), event);
event.preventDefault();
});
});

View file

@ -1,8 +0,0 @@
function split(val) {
return val.split(/,\s*/);
}
function extractLast(term) {
return split(term).pop();
}
export default { split, extractLast };

View file

@ -1,26 +0,0 @@
import Mousetrap from 'mousetrap';
import $ from 'jquery';
$(document).ready(() => {
if ($('#article').length > 0) {
/* Article view */
Mousetrap.bind('o', () => {
$('div#article_toolbar ul.links a.original')[0].click();
});
/* mark as favorite */
Mousetrap.bind('f', () => {
$('div#article_toolbar ul.links a.favorite')[0].click();
});
/* mark as read */
Mousetrap.bind('a', () => {
$('div#article_toolbar ul.links a.markasread')[0].click();
});
/* delete */
Mousetrap.bind('del', () => {
$('div#article_toolbar ul.links a.delete')[0].click();
});
}
});

View file

@ -1,10 +0,0 @@
import $ from 'jquery';
import Mousetrap from 'mousetrap';
$(document).ready(() => {
Mousetrap.bind('s', () => {
$('#search').trigger('click');
$('#search_entry_term').focus();
return false;
});
});

View file

@ -1,35 +0,0 @@
import $ from 'jquery';
function toggleSaveLinkForm(url, event) {
$('#add-link-result').empty();
const $bagit = $('#bagit');
const $bagitForm = $('#bagit-form');
$bagit.toggleClass('active-current');
// only if bag-it link is not presented on page
if ($bagit.length === 0) {
if (event !== 'undefined' && event) {
$bagitForm.css({ position: 'absolute', top: event.pageY, left: event.pageX - 200 });
} else {
$bagitForm.css({ position: 'relative', top: 'auto', left: 'auto' });
}
}
const searchForm = $('#search-form');
const plainUrl = $('#plainurl');
if (searchForm.length !== 0) {
$('#search').removeClass('current');
$('#search-arrow').removeClass('arrow-down');
searchForm.hide();
}
$bagitForm.toggle();
$('#content').toggleClass('opacity03');
if (url !== 'undefined' && url) {
plainUrl.val(url);
}
plainUrl.focus();
}
export default toggleSaveLinkForm;

View file

@ -169,7 +169,6 @@ nelmio_cors:
liip_theme:
load_controllers: false
themes:
- baggy
- material
autodetect_theme: Wallabag\CoreBundle\Helper\DetectActiveTheme

View file

@ -7,7 +7,6 @@ const rootDir = path.resolve(__dirname, '../../../');
module.exports = {
entry: {
material: path.join(rootDir, './app/Resources/static/themes/material/index.js'),
baggy: path.join(rootDir, './app/Resources/static/themes/baggy/index.js'),
public: path.join(rootDir, './app/Resources/static/themes/_global/share.js'),
},
output: {

View file

@ -16,15 +16,18 @@ class DetectActiveTheme implements DeviceDetectionInterface
{
protected $tokenStorage;
protected $defaultTheme;
protected $themes;
/**
* @param TokenStorageInterface $tokenStorage Needed to retrieve the current user
* @param string $defaultTheme Default theme when user isn't logged in
* @param array $themes Themes come from the LiipThemeBundle (liip_theme.themes)
*/
public function __construct(TokenStorageInterface $tokenStorage, $defaultTheme)
public function __construct(TokenStorageInterface $tokenStorage, $defaultTheme, $themes)
{
$this->tokenStorage = $tokenStorage;
$this->defaultTheme = $defaultTheme;
$this->themes = $themes;
}
public function setUserAgent($userAgent)
@ -60,6 +63,10 @@ class DetectActiveTheme implements DeviceDetectionInterface
return $this->defaultTheme;
}
if (!\in_array($config->getTheme(), $this->themes, true)) {
return $this->defaultTheme;
}
return $config->getTheme();
}
}

View file

@ -1,503 +0,0 @@
{% extends "@WallabagCore/layout.html.twig" %}
{% block title %}{{ 'config.page_title'|trans }}{% endblock %}
{% block content %}
<h2>{{ 'config.tab_menu.settings'|trans }}</h2>
{{ form_start(form.config) }}
{{ form_errors(form.config) }}
<fieldset class="w500p inline">
<div class="row">
{{ form_label(form.config.theme) }}
{{ form_errors(form.config.theme) }}
{{ form_widget(form.config.theme) }}
</div>
<a href="#" title="{{ 'config.form_settings.help_theme'|trans }}">
<i class="material-icons">live_help</i>
</a>
</fieldset>
<fieldset class="w500p inline">
<div class="row">
{{ form_label(form.config.items_per_page) }}
{{ form_errors(form.config.items_per_page) }}
{{ form_widget(form.config.items_per_page) }}
</div>
<a href="#" title="{{ 'config.form_settings.help_items_per_page'|trans }}">
<i class="material-icons">live_help</i>
</a>
</fieldset>
<fieldset class="w500p inline">
<div class="row">
{{ form_label(form.config.reading_speed) }}
{{ form_errors(form.config.reading_speed) }}
{{ form_widget(form.config.reading_speed) }}
<p>
{{ 'config.form_settings.reading_speed.help_message'|trans }}
<a href="https://wallabag.github.io/myreadspeed/">myreadspeed</a>
</p>
</div>
<a href="#" title="{{ 'config.form_settings.help_reading_speed'|trans }}">
<i class="material-icons">live_help</i>
</a>
</fieldset>
<fieldset class="w500p inline">
<div class="row">
{{ form_label(form.config.action_mark_as_read) }}
{{ form_errors(form.config.action_mark_as_read) }}
{{ form_widget(form.config.action_mark_as_read) }}
</div>
</fieldset>
<fieldset class="w500p inline">
<div class="row">
{{ form_label(form.config.language) }}
{{ form_errors(form.config.language) }}
{{ form_widget(form.config.language) }}
</div>
<a href="#" title="{{ 'config.form_settings.help_language'|trans }}">
<i class="material-icons">live_help</i>
</a>
</fieldset>
<fieldset class="w500p inline">
<div class="row">
{{ form_label(form.config.pocket_consumer_key) }}
{{ form_errors(form.config.pocket_consumer_key) }}
{{ form_widget(form.config.pocket_consumer_key) }}
<p>
&raquo;
<a href="https://getpocket.com/developer/docs/authentication">https://getpocket.com/developer/docs/authentication</a>
</p>
</div>
<a href="#" title="{{ 'config.form_settings.help_pocket_consumer_key'|trans }}">
<i class="material-icons">live_help</i>
</a>
</fieldset>
<fieldset class="w500p inline">
<div class="row">
<h3>{{ 'config.form_settings.android_configuration'|trans }}</h3>
<a href="wallabag://{{ app.user.username }}@{{ wallabag_url }}">{{ 'config.form_settings.android_instruction'|trans }}</a>
<br/>
<img id="androidQrcode" alt="{{ 'config.otp.app.qrcode_label'|trans }}" />
<script>
document.getElementById('androidQrcode').src = jrQrcode.getQrBase64('wallabag://{{ app.user.username }}@{{ wallabag_url }}');
</script>
</div>
</fieldset>
{{ form_rest(form.config) }}
</form>
<h2>{{ 'config.tab_menu.feed'|trans }}</h2>
{{ form_start(form.feed) }}
{{ form_errors(form.feed) }}
<div class="row">
{{ 'config.form_feed.description'|trans }}
</div>
<fieldset class="w500p inline">
<div class="row">
<label>{{ 'config.form_feed.token_label'|trans }}</label>
{% if feed.token %}
{{ feed.token }}
{% else %}
<em>{{ 'config.form_feed.no_token'|trans }}</em>
{% endif %}
{% if feed.token %}
<a href="{{ path('generate_token') }}">{{ 'config.form_feed.token_reset'|trans }}</a>
<a href="{{ path('revoke_token') }}">{{ 'config.form_feed.token_revoke'|trans }}</a>
{% else %}
<a href="{{ path('generate_token') }}">{{ 'config.form_feed.token_create'|trans }}</a>
{% endif %}
</div>
</fieldset>
{% if feed.token %}
<fieldset class="w500p inline">
<div class="row">
<label>{{ 'config.form_feed.feed_links'|trans }}</label>
<ul>
<li><a href="{{ path('unread_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_link.unread'|trans }}</a></li>
<li><a href="{{ path('starred_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_link.starred'|trans }}</a></li>
<li><a href="{{ path('archive_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_link.archive'|trans }}</a></li>
<li><a href="{{ path('all_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_link.all'|trans }}</a></li>
</ul>
</div>
</fieldset>
{% endif %}
<fieldset class="w500p inline">
<div class="row">
{{ form_label(form.feed.feed_limit) }}
{{ form_errors(form.feed.feed_limit) }}
{{ form_widget(form.feed.feed_limit) }}
</div>
</fieldset>
{{ form_rest(form.feed) }}
</form>
<h2>{{ 'config.tab_menu.user_info'|trans }}</h2>
{{ form_start(form.user) }}
{{ form_errors(form.user) }}
<fieldset class="w500p inline">
<div class="row">
<label>{{ 'config.form_user.login_label'|trans }}</label>
{{ app.user.username }}
</div>
</fieldset>
<fieldset class="w500p inline">
<div class="row">
{{ form_label(form.user.name) }}
{{ form_errors(form.user.name) }}
{{ form_widget(form.user.name) }}
</div>
</fieldset>
<fieldset class="w500p inline">
<div class="row">
{{ form_label(form.user.email) }}
{{ form_errors(form.user.email) }}
{{ form_widget(form.user.email) }}
</div>
</fieldset>
{{ form_widget(form.user.save) }}
{% if twofactor_auth %}
<h5>{{ 'config.otp.page_title'|trans }}</h5>
<div class="row">
{{ 'config.form_user.two_factor_description'|trans }}
</div>
<table>
<thead>
<tr>
<th>{{ 'config.form_user.two_factor.table_method'|trans }}</th>
<th>{{ 'config.form_user.two_factor.table_state'|trans }}</th>
<th>{{ 'config.form_user.two_factor.table_action'|trans }}</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{ 'config.form_user.two_factor.emailTwoFactor_label'|trans }}</td>
<td>{% if app.user.isEmailTwoFactor %}<b>{{ 'config.form_user.two_factor.state_enabled'|trans }}</b>{% else %}{{ 'config.form_user.two_factor.state_disabled'|trans }}{% endif %}</td>
<td><a href="{{ path('config_otp_email') }}" class="waves-effect waves-light btn{% if app.user.isEmailTwoFactor %} disabled{% endif %}">{{ 'config.form_user.two_factor.action_email'|trans }}</a> {% if app.user.isEmailTwoFactor %}<a href="{{ path('disable_otp_email') }}" class="waves-effect waves-light btn">Disable</a>{% endif %}</td>
</tr>
<tr>
<td>{{ 'config.form_user.two_factor.googleTwoFactor_label'|trans }}</td>
<td>{% if app.user.isGoogleTwoFactor %}<b>{{ 'config.form_user.two_factor.state_enabled'|trans }}</b>{% else %}{{ 'config.form_user.two_factor.state_disabled'|trans }}{% endif %}</td>
<td><a href="{{ path('config_otp_app') }}" class="waves-effect waves-light btn{% if app.user.isGoogleTwoFactor %} disabled{% endif %}">{{ 'config.form_user.two_factor.action_app'|trans }}</a> {% if app.user.isGoogleTwoFactor %}<a href="{{ path('disable_otp_app') }}" class="waves-effect waves-light btn">Disable</a>{% endif %}</td>
</tr>
</tbody>
</table>
{% endif %}
{{ form_widget(form.user._token) }}
</form>
{% if enabled_users > 1 %}
<h2>{{ 'config.form_user.delete.title'|trans }}</h2>
<p>{{ 'config.form_user.delete.description'|trans }}</p>
<a href="{{ path('delete_account') }}" onclick="return confirm('{{ 'config.form_user.delete.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red delete-account">
{{ 'config.form_user.delete.button'|trans }}
</a>
{% endif %}
<h2>{{ 'config.tab_menu.password'|trans }}</h2>
{{ form_start(form.pwd) }}
{{ form_errors(form.pwd) }}
<div class="row">
{{ 'config.form_password.description'|trans }}
</div>
<fieldset class="w500p inline">
<div class="row">
{{ form_label(form.pwd.old_password) }}
{{ form_errors(form.pwd.old_password) }}
{{ form_widget(form.pwd.old_password) }}
</div>
</fieldset>
<fieldset class="w500p inline">
<div class="row">
{{ form_label(form.pwd.new_password.first) }}
{{ form_errors(form.pwd.new_password.first) }}
{{ form_widget(form.pwd.new_password.first) }}
</div>
</fieldset>
<fieldset class="w500p inline">
<div class="row">
{{ form_label(form.pwd.new_password.second) }}
{{ form_errors(form.pwd.new_password.second) }}
{{ form_widget(form.pwd.new_password.second) }}
</div>
</fieldset>
{{ form_rest(form.pwd) }}
</form>
<h2>{{ 'config.tab_menu.rules'|trans }}</h2>
<ul>
{% for tagging_rule in app.user.config.taggingRules %}
<li>
{{ 'config.form_rules.if_label'|trans }}
« {{ tagging_rule.rule }} »
{{ 'config.form_rules.then_tag_as_label'|trans }}
« {{ tagging_rule.tags|join(', ') }} »
<a href="{{ path('edit_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.edit_rule_label'|trans }}" class="tool mode_edit">✎</a>
<a href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.delete_rule_label'|trans }}" class="tool delete icon-trash icon"></a>
</li>
{% endfor %}
</ul>
{{ form_start(form.new_tagging_rule) }}
{{ form_errors(form.new_tagging_rule) }}
<fieldset class="w500p inline">
<div class="row">
{{ form_label(form.new_tagging_rule.rule) }}
{{ form_errors(form.new_tagging_rule.rule) }}
{{ form_widget(form.new_tagging_rule.rule) }}
</div>
</fieldset>
<fieldset class="w500p inline">
<div class="row">
{{ form_label(form.new_tagging_rule.tags) }}
{{ form_errors(form.new_tagging_rule.tags) }}
{{ form_widget(form.new_tagging_rule.tags) }}
</div>
</fieldset>
{{ form_rest(form.new_tagging_rule) }}
</form>
<div class="row">
<h3>{{ 'config.form_rules.card.import_tagging_rules'|trans }}</h3>
<p>{{ 'config.form_rules.card.import_tagging_rules_detail'|trans }}</p>
</div>
{{ form_start(form.import_tagging_rule) }}
{{ form_errors(form.import_tagging_rule) }}
<fieldset class="w500p inline">
<div class="row">
{{ form_label(form.import_tagging_rule.file) }}
{{ form_errors(form.import_tagging_rule.file) }}
{{ form_widget(form.import_tagging_rule.file) }}
</div>
</fieldset>
{{ form_rest(form.import_tagging_rule) }}
</form>
{% if app.user.config.taggingRules is not empty %}
<div class="row">
<h3>{{ 'config.form_rules.card.export_tagging_rules'|trans }}</h3>
<p>{{ 'config.form_rules.card.export_tagging_rules_detail'|trans }}</p>
<p><a href="{{ path('export_tagging_rule') }}" class="waves-effect waves-light btn">{{ 'config.form_rules.export'|trans }}</a></p>
</div>
{% endif %}
<div class="row">
<div class="input-field col s12">
<h3>{{ 'config.form_rules.faq.title'|trans }}</h3>
<h4>{{ 'config.form_rules.faq.tagging_rules_definition_title'|trans }}</h4>
<p class="help">{{ 'config.form_rules.faq.tagging_rules_definition_description'|trans|raw }}</p>
<h4>{{ 'config.form_rules.faq.how_to_use_them_title'|trans }}</h4>
<p class="help">{{ 'config.form_rules.faq.how_to_use_them_description'|trans|raw }}</p>
<h4>{{ 'config.form_rules.faq.variables_available_title'|trans }}</h4>
<p class="help">
{{ 'config.form_rules.faq.variables_available_description'|trans }}
</p>
<table class="bordered">
<thead>
<tr>
<th>{{ 'config.form_rules.faq.variable_description.label'|trans }}</th>
<th>{{ 'config.form_rules.faq.meaning'|trans }}</th>
<th>{{ 'config.form_rules.faq.operator_description.label'|trans }}</th>
<th>{{ 'config.form_rules.faq.meaning'|trans }}</th>
</tr>
</thead>
<tbody>
<tr>
<td>title</td>
<td>{{ 'config.form_rules.faq.variable_description.title'|trans }}</td>
<td>&lt;=</td>
<td>{{ 'config.form_rules.faq.operator_description.less_than'|trans }}</td>
</tr>
<tr>
<td>url</td>
<td>{{ 'config.form_rules.faq.variable_description.url'|trans }}</td>
<td>&lt;</td>
<td>{{ 'config.form_rules.faq.operator_description.strictly_less_than'|trans }}</td>
</tr>
<tr>
<td>isArchived</td>
<td>{{ 'config.form_rules.faq.variable_description.isArchived'|trans }}</td>
<td>&gt;=</td>
<td>{{ 'config.form_rules.faq.operator_description.greater_than'|trans }}</td>
</tr>
<tr>
<td>isStarred</td>
<td>{{ 'config.form_rules.faq.variable_description.isStarred'|trans }}</td>
<td>&gt;</td>
<td>{{ 'config.form_rules.faq.operator_description.strictly_greater_than'|trans }}</td>
</tr>
<tr>
<td>content</td>
<td>{{ 'config.form_rules.faq.variable_description.content'|trans }}</td>
<td>=</td>
<td>{{ 'config.form_rules.faq.operator_description.equal_to'|trans }}</td>
</tr>
<tr>
<td>language</td>
<td>{{ 'config.form_rules.faq.variable_description.language'|trans }}</td>
<td>!=</td>
<td>{{ 'config.form_rules.faq.operator_description.not_equal_to'|trans }}</td>
</tr>
<tr>
<td>mimetype</td>
<td>{{ 'config.form_rules.faq.variable_description.mimetype'|trans }}</td>
<td>OR</td>
<td>{{ 'config.form_rules.faq.operator_description.or'|trans }}</td>
</tr>
<tr>
<td>readingTime</td>
<td>{{ 'config.form_rules.faq.variable_description.readingTime'|trans }}</td>
<td>AND</td>
<td>{{ 'config.form_rules.faq.operator_description.and'|trans }}</td>
</tr>
<tr>
<td>domainName</td>
<td>{{ 'config.form_rules.faq.variable_description.domainName'|trans }}</td>
<td>matches</td>
<td>{{ 'config.form_rules.faq.operator_description.matches'|trans|raw }}</td>
</tr>
</tbody>
</table>
</div>
</div>
<h2>{{ 'config.tab_menu.ignore_origin'|trans }}</h2>
<ul>
{% for ignore_origin_rule in app.user.config.ignoreOriginRules %}
<li>
{{ 'config.form_rules.if_label'|trans }}
« {{ ignore_origin_rule.rule }} »
<a href="{{ path('edit_ignore_origin_rule', {id: ignore_origin_rule.id}) }}" title="{{ 'config.form_rules.edit_rule_label'|trans }}" class="tool mode_edit">✎</a>
<a href="{{ path('delete_ignore_origin_rule', {id: ignore_origin_rule.id}) }}" title="{{ 'config.form_rules.delete_rule_label'|trans }}" class="tool delete icon-trash icon"></a>
</li>
{% endfor %}
</ul>
{{ form_start(form.new_ignore_origin_user_rule) }}
{{ form_errors(form.new_ignore_origin_user_rule) }}
<fieldset class="w500p inline">
<div class="row">
{{ form_label(form.new_ignore_origin_user_rule.rule) }}
{{ form_errors(form.new_ignore_origin_user_rule.rule) }}
{{ form_widget(form.new_ignore_origin_user_rule.rule) }}
</div>
</fieldset>
{{ form_rest(form.new_ignore_origin_user_rule) }}
</form>
<div class="row">
<div class="input-field col s12">
<h4>{{ 'config.form_ignore_origin_rules.faq.title'|trans }}</h4>
<h5>{{ 'config.form_ignore_origin_rules.faq.ignore_origin_rules_definition_title'|trans }}</h5>
<p class="help">{{ 'config.form_ignore_origin_rules.faq.ignore_origin_rules_definition_description'|trans|raw }}</p>
<h5>{{ 'config.form_ignore_origin_rules.faq.how_to_use_them_title'|trans }}</h5>
<p class="help">{{ 'config.form_ignore_origin_rules.faq.how_to_use_them_description'|trans|raw }}</p>
<h5>{{ 'config.form_ignore_origin_rules.faq.variables_available_title'|trans }}</h5>
<p class="help">
{{ 'config.form_ignore_origin_rules.faq.variables_available_description'|trans }}
</p>
<table class="bordered">
<thead>
<tr>
<th>{{ 'config.form_ignore_origin_rules.faq.variable_description.label'|trans }}</th>
<th>{{ 'config.form_ignore_origin_rules.faq.meaning'|trans }}</th>
<th>{{ 'config.form_ignore_origin_rules.faq.operator_description.label'|trans }}</th>
<th>{{ 'config.form_ignore_origin_rules.faq.meaning'|trans }}</th>
</tr>
</thead>
<tbody>
<tr>
<td>host</td>
<td>{{ 'config.form_ignore_origin_rules.faq.variable_description.host'|trans }}</td>
<td>=</td>
<td>{{ 'config.form_ignore_origin_rules.faq.operator_description.equal_to'|trans }}</td>
</tr>
<tr>
<td>_all</td>
<td>{{ 'config.form_ignore_origin_rules.faq.variable_description._all'|trans }}</td>
<td>~</td>
<td>{{ 'config.form_ignore_origin_rules.faq.operator_description.matches'|trans|raw }}</td>
</tr>
</tbody>
</table>
</div>
</div>
<h2>{{ 'config.reset.title'|trans }}</h2>
<fieldset class="w500p inline">
<p>{{ 'config.reset.description'|trans }}</p>
<ul>
<li>
<a href="{{ path('config_reset', {type: 'annotations'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red">
{{ 'config.reset.annotations'|trans }}
</a>
</li>
<li>
<a href="{{ path('config_reset', {type: 'tags'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red">
{{ 'config.reset.tags'|trans }}
</a>
</li>
<li>
<a href="{{ path('config_reset', {type: 'archived'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red">
{{ 'config.reset.archived'|trans }}
</a>
</li>
<li>
<a href="{{ path('config_reset', {type: 'entries'}) }}" onclick="return confirm('{{ 'config.reset.confirm'|trans|escape('js') }}')" class="waves-effect waves-light btn red">
{{ 'config.reset.entries'|trans }}
</a>
</li>
</ul>
</fieldset>
{% endblock %}

View file

@ -1,55 +0,0 @@
{% extends "@WallabagCore/layout.html.twig" %}
{% block title %}{{ 'config.page_title'|trans }} > {{ 'config.otp.page_title'|trans }}{% endblock %}
{% block content %}
<h5>{{ 'config.otp.page_title'|trans }}</h5>
<ol>
<li>
<p>{{ 'config.otp.app.two_factor_code_description_1'|trans }}</p>
<p>{{ 'config.otp.app.two_factor_code_description_2'|trans }}</p>
<p>
<img id="2faQrcode" class="hide-on-med-and-down" />
<script>
document.getElementById('2faQrcode').src = jrQrcode.getQrBase64('{{ qr_code|raw }}');
</script>
</p>
</li>
<li>
<p>{{ 'config.otp.app.two_factor_code_description_3'|trans }}</p>
<p><strong>{{ backupCodes|join("\n")|nl2br }}</strong></p>
</li>
<li>
<p>{{ 'config.otp.app.two_factor_code_description_4'|trans }}</p>
{% for flash_message in app.session.flashbag.get("two_factor") %}
<div class="card-panel red darken-1 black-text">
{{ flash_message|trans }}
</div>
{% endfor %}
<form class="form" action="{{ path("config_otp_app_check") }}" method="post">
<div class="card-content">
<div class="row">
<div class="input-field col s12">
<label for="_auth_code">{{ "auth_code"|trans({}, 'SchebTwoFactorBundle') }}</label>
<input id="_auth_code" type="text" autocomplete="off" name="_auth_code" />
</div>
</div>
</div>
<div class="card-action">
<a href="{{ path('config_otp_app_cancel') }}" class="waves-effect waves-light grey btn">
{{ 'config.otp.app.cancel'|trans }}
</a>
<button class="btn waves-effect waves-light" type="submit" name="send">
{{ 'config.otp.app.enable'|trans }}
<i class="material-icons right">send</i>
</button>
</div>
</form>
</li>
</ol>
{% endblock %}

View file

@ -1,7 +0,0 @@
{% extends "@WallabagCore/layout.html.twig" %}
{% block title %}{{ 'entry.edit.page_title'|trans }}{% endblock %}
{% block content %}
{{ form(form) }}
{% endblock %}

View file

@ -1,219 +0,0 @@
{% extends "@WallabagCore/layout.html.twig" %}
{% block head %}
{{ parent() }}
{% if tag is defined and app.user.config.feedToken %}
<link rel="alternate" type="application/atom+xml" href="{{ path('tag_feed', {'username': app.user.username, 'token': app.user.config.feedToken, 'slug': tag.slug}) }}" />
{% endif %}
{% endblock %}
{% block title %}
{% set filter = '' %}
{% if tag is defined %}
{% set filter = tag %}
{% endif %}
{% if searchTerm is defined and searchTerm is not empty %}
{% set filter = searchTerm %}
{% endif %}
{% include "@WallabagCore/themes/common/Entry/_title.html.twig" with {'filter': filter} %}
{% endblock %}
{% block content %}
{% set current_route = app.request.attributes.get('_route') %}
{% if current_route == 'homepage' %}
{% set current_route = 'unread' %}
{% endif %}
{% set list_mode = app.user.config.listMode %}
<div class="results">
<div class="nb-results">{{ 'entry.list.number_on_the_page'|transchoice(entries.count) }}</div>
<div class="pagination">
<a href="{{ path('switch_view_mode') }}"><i class="listMode-btn material-icons md-24">{% if list_mode == 0 %}list{% else %}view_module{% endif %}</i></a>
{% if app.user.config.feedToken %}
{% include "@WallabagCore/themes/common/Entry/_feed_link.html.twig" %}
{% endif %}
{% if current_route in ['unread', 'starred', 'archive', 'untagged', 'all'] %}
<a href="{{ path('random_entry', {'type': current_route}) }}"><i class="btn-clickable material-icons md-24 js-random-action">casino</i></a>
{% endif %}
<i class="btn-clickable download-btn material-icons md-24 js-export-action">file_download</i>
<i class="btn-clickable filter-btn material-icons md-24 js-filters-action">filter_list</i>
{% if entries.getNbPages > 1 %}
{{ pagerfanta(entries, 'twitter_bootstrap_translated', {'proximity': 1}) }}
{% endif %}
</div>
</div>
{% for entry in entries %}
<div id="entry-{{ entry.id|e }}" class="{% if list_mode == 0 %}entry{% else %}listmode entry{% endif %}">
<h2><a href="{{ path('view', {'id': entry.id}) }}" title="{{ entry.title|e|raw }}">{{ entry.title|striptags|truncate(80, true, '…')|default('entry.default_title'|trans)|raw }}</a></h2>
{% set reading_time = entry.readingTime / app.user.config.readingSpeed * 200 %}
<div class="estimatedTime">
<span class="tool reading-time">
{% if reading_time > 0 %}
{{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': reading_time|round}) }}
{% else %}
{{ 'entry.list.reading_time_less_one_minute'|trans|raw }}
{% endif %}
</span>
<span class="tool created-at">
<i class="tool icon icon-calendar" title="{{ 'entry.view.created_at'|trans }}">
{{ entry.createdAt|date('Y-m-d') }}
</i>
</span>
</div>
<ul class="tools links">
<li><a href="{{ entry.url|e }}" target="_blank" rel="noopener" title="{{ 'entry.list.original_article'|trans }} : {{ entry.title|e }}"><span>{{ entry.domainName|removeWww }}</span></a></li>
<li><a title="{{ 'entry.list.toogle_as_read'|trans }}" class="tool icon {% if entry.isArchived == 0 %}archive-off{% else %}archive{% endif %}" href="{{ path('archive_entry', {'id': entry.id}) }}"><i class="material-icons md-24 vertical-align-middle">check</i><span>{{ 'entry.list.toogle_as_read'|trans }}</span></a></li>
<li><a title="{{ 'entry.list.toogle_as_star'|trans }}" class="tool icon {% if entry.isStarred == 0 %}fav-off{% else %}fav{% endif %}" href="{{ path('star_entry', {'id': entry.id}) }}"><i class="material-icons md-24 vertical-align-middle">star_rate</i><span>{{ 'entry.list.toogle_as_star'|trans }}</span></a></li>
<li><a title="{{ 'entry.list.delete'|trans }}" class="tool icon" onclick="return confirm('{{ 'entry.confirm.delete'|trans|escape('js') }}')" href="{{ path('delete_entry', {'id': entry.id}) }}"><i class="material-icons md-24 vertical-align-middle">delete</i><span>{{ 'entry.list.delete'|trans }}</span></a></li>
</ul>
{% if (entry.previewPicture is null or list_mode == 1) %}
<ul class="card-entry-tags">
{% for tag in entry.tags %}
<li><a href="{{ path('tag_entries', {'slug': tag.slug}) }}">{{ tag.label }}</a></li>
{% endfor %}
</ul>
<p {% if list_mode == 1 %}class="hide"{% endif %}>{{ entry.content|striptags|slice(0, 300) }}&hellip;</p>
{% else %}
<ul class="card-entry-labels">
{% for tag in entry.tags|slice(0, 3) %}
<li><a href="{{ path('tag_entries', {'slug': tag.slug}) }}">{{ tag.label }}</a></li>
{% endfor %}
</ul>
<img class="preview" src="{{ entry.previewPicture }}" alt="{{ entry.title|e|raw }}" />
{% endif %}
</div>
{% endfor %}
{% if entries.getNbPages > 1 %}
{{ pagerfanta(entries, 'twitter_bootstrap_translated', {'proximity': 1}) }}
{% endif %}
<!-- Export -->
<aside id="download-form">
{% set current_tag = null %}
{% if tag is defined %}
{% set current_tag = tag %}
{% endif %}
{% set export_search_term = null %}
{% if searchTerm is defined %}
{% set export_search_term = searchTerm %}
{% endif %}
{% set previous_route = app.request.attributes.get('currentRoute') %}
<h2>{{ 'entry.list.export_title'|trans }}</h2>
<a href="javascript: void(null);" id="download-form-close" class="close-button--popup close-button">&times;</a>
<ul>
{% if craue_setting('export_epub') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'epub', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route}) }}">EPUB</a></li>{% endif %}
{% if craue_setting('export_mobi') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'mobi', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route}) }}">MOBI (deprecated)</a></li>{% endif %}
{% if craue_setting('export_pdf') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'pdf', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route}) }}">PDF</a></li>{% endif %}
{% if craue_setting('export_json') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'json', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route}) }}">JSON</a></li>{% endif %}
{% if craue_setting('export_csv') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'csv', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route}) }}">CSV</a></li>{% endif %}
{% if craue_setting('export_txt') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'txt', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route}) }}">TXT</a></li>{% endif %}
{% if craue_setting('export_xml') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'xml', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route}) }}">XML</a></li>{% endif %}
</ul>
</aside>
<!-- Filter -->
{% if form is not null %}
<div id="filters">
<form method="get" action="{{ path('all') }}">
<h2>{{ 'entry.filters.title'|trans }}</h2>
<a href="javascript: void(null);" id="filter-form-close" class="close-button--popup close-button">&times;</a>
<div id="filter-status" class="filter-group">
{% if current_route != 'untagged' and nbEntriesUntagged != 0 %}
<div class="">
<a href="{{ path('untagged') }}">{{ 'tag.list.see_untagged_entries'|trans }} ({{ nbEntriesUntagged }})</a>
</div>
{% endif %}
<div class="">
<label>{{ 'entry.filters.status_label'|trans }}</label>
</div>
<div class="input-field">
{{ form_widget(form.isArchived) }}
{{ form_label(form.isArchived) }}
</div>
<div class="input-field">
{{ form_widget(form.isStarred) }}
{{ form_label(form.isStarred) }}
</div>
<div class="input-field">
{{ form_widget(form.isUnread) }}
{{ form_label(form.isUnread) }}
</div>
<div class="input-field">
{{ form_widget(form.previewPicture) }}
{{ form_label(form.previewPicture) }}
</div>
<div class="input-field">
{{ form_widget(form.isPublic) }}
{{ form_label(form.isPublic) }}
</div>
</div>
<div id="filter-language" class="filter-group">
{{ form_label(form.language) }}
<div class="input-field ">
{{ form_widget(form.language) }}
</div>
</div>
<div id="filter-http-status" class="filter-group">
{{ form_label(form.httpStatus) }}
<div class="input-field ">
{{ form_widget(form.httpStatus) }}
</div>
</div>
<div id="filter-reading-time" class="filter-group">
<div class="">
{{ form_label(form.readingTime) }}
</div>
<div class="input-field ">
<label for="entry_filter_readingTime_left_number">{{ 'entry.filters.reading_time.from'|trans }}</label>
{{ form_widget(form.readingTime.left_number, {'type': 'number'}) }}
</div>
<div class="input-field ">
<label for="entry_filter_readingTime_right_number">{{ 'entry.filters.reading_time.to'|trans }}</label>
{{ form_widget(form.readingTime.right_number, {'type': 'number'}) }}
</div>
</div>
<div id="filter-domain-name" class="filter-group">
{{ form_label(form.domainName) }}
<div class="input-field ">
{{ form_widget(form.domainName, {'type': 'text', 'attr': {'placeholder': 'website.com'}}) }}
</div>
</div>
<div id="filter-creation-date" class="filter-group">
<div class="">
{{ form_label(form.createdAt) }}
</div>
<div class="input-field ">
<label for="entry_filter_createdAt_left_date" class="active">{{ 'entry.filters.created_at.from'|trans }}</label>
{{ form_widget(form.createdAt.left_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.left_date.vars.value}}) }}
</div>
<div class="input-field ">
<label for="entry_filter_createdAt_right_date" class="active">{{ 'entry.filters.created_at.to'|trans }}</label>
{{ form_widget(form.createdAt.right_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.right_date.vars.value}}) }}
</div>
</div>
<div id="filter-buttons" class="filter-group">
<div class="">
<a href="#!" class="center waves-effect waves-green btn-flat" id="clear_form_filters">{{ 'entry.filters.action.clear'|trans }}</a>
</div>
<button class="btn waves-effect waves-light" type="submit" id="submit-filter" value="filter">{{ 'entry.filters.action.filter'|trans }}</button>
</div>
</form>
</div>
{% endif %}
{% endblock %}

View file

@ -1,114 +0,0 @@
{% extends "@WallabagCore/layout.html.twig" %}
{% block title %}{{ entry.title|e|default('entry.default_title'|trans)|raw }} ({{ entry.domainName|removeWww }}){% endblock %}
{% block content %}
<div id="article">
<header class="mbm">
<h1><span{% if entry.language is defined and entry.language is not null %} lang="{{ entry.getHTMLLanguage() }}"{% endif %}>{{ entry.title|e|default('entry.default_title'|trans)|raw }}</span> <a href="{{ path('edit', {'id': entry.id}) }}" class="nostyle" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1>
</header>
<div id="article_toolbar" dir="auto">
<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" rel="noopener" title="{{ 'entry.view.original_article'|trans }} : {{ entry.title|e }}" class="tool link icon icon-link original"><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>
{% set mark_as_read_label = 'entry.view.left_menu.set_as_unread' %}
{% if entry.isArchived == 0 %}
{% set mark_as_read_label = 'entry.view.left_menu.set_as_read' %}
{% endif %}
<li><a title="{{ mark_as_read_label|trans }}" class="tool icon icon-check {% if entry.isArchived == 0 %}archive-off{% else %}archive{% endif %} markasread" href="{{ path('archive_entry', {'id': entry.id}) }}"><span>{{ mark_as_read_label|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 %} favorite" 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" class="tool icon icon-price-tags" 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 }}" onclick="return confirm('{{ 'entry.confirm.delete'|trans|escape('js') }}')" 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_public') %}
<li><a href="{{ path('share', {'id': entry.id}) }}" target="_blank" class="tool icon icon-eye" title="{{ 'entry.view.left_menu.public_link'|trans }}"><span>{{ 'entry.view.left_menu.public_link'|trans }}</span></a></li>
<li><a href="{{ path('delete_share', {'id': entry.id}) }}" class="tool icon icon-no-eye" title="{{ 'entry.view.left_menu.delete_public_link'|trans }}"><span>{{ 'entry.view.left_menu.delete_public_link'|trans }}</span></a></li>
{% endif %}
{% if craue_setting('share_twitter') %}<li><a href="https://twitter.com/share?text={{ entry.title|url_encode }}%20{{ entry.url|url_encode }}%20via%20@wallabagapp" target="_blank" rel="noopener" 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 }}&amp;tags={{ entry.tags|join(',')|url_encode }}{% if craue_setting('shaarli_share_origin_url') %}&amp;original_url={{ entry.originUrl|url_encode }}{% endif %}" target="_blank" rel="noopener" class="tool icon-image icon-image--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" rel="noopener" class="tool diaspora icon-image icon-image--diaspora" title="diaspora"><span>diaspora</span></a></li>{% endif %}
{% if craue_setting('share_unmark') %}<li><a href="{{ craue_setting('unmark_url') }}/mark/add?url={{ entry.url|url_encode }}&amp;title={{ entry.title|url_encode }}&amp;v=6" target="_blank" rel="noopener" class="tool unmark icon-image icon-image--unmark" title="unmark"><span>unmark.it</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="{{ path('export_entry', {'id': entry.id, 'format': 'epub'}) }}" title="Generate ePub file">EPUB</a></li>{% endif %}
{% if craue_setting('export_mobi') %}<li><a href="{{ path('export_entry', {'id': entry.id, 'format': 'mobi'}) }}" title="Generate Mobi file">MOBI (deprecated)</a></li>{% endif %}
{% if craue_setting('export_pdf') %}<li><a href="{{ path('export_entry', {'id': entry.id, 'format': 'pdf'}) }}" title="Generate PDF file">PDF</a></li>{% endif %}
<li><a href="mailto:siteconfig@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 id="article-informations">
<i class="tool icon icon-calendar" title="{{ 'entry.view.created_at'|trans }}">
{{ entry.createdAt|date('Y-m-d H:i') }}
</i>
{% if entry.publishedAt is not null %}
<i class="tool icon icon-pencil2" title="{{ 'entry.view.published_at'|trans }}">
{{ entry.publishedAt|date('Y-m-d H:i') }}
</i>
{% endif %}
{% if entry.publishedBy is not empty %}
<i class="tool icon icon-users" title="{{ 'entry.view.published_by'|trans }}">
{% for author in entry.publishedBy %}
{{ author }}{% if not loop.last %}, {% endif %}
{% endfor %}
</i>
{% endif %}
<i class="tool icon icon-time">
{% set reading_time = entry.readingTime / app.user.config.readingSpeed * 200 %}
{% if reading_time > 0 %}
{{ 'entry.list.reading_time_minutes_short'|trans({'%readingTime%': reading_time|round}) }}
{% else %}
{{ 'entry.list.reading_time_less_one_minute_short'|trans|raw }}
{% endif %}
</i>
<span class="tool link"><i class="material-icons">comment</i> {{ 'entry.view.annotations_on_the_entry'|transchoice(entry.annotations|length) }}</span>
{% if entry.originUrl is not empty %}
<i class="material-icons" title="{{ 'entry.view.provided_by'|trans }}">launch</i>
<a href="{{ entry.originUrl|e }}" target="_blank" rel="noopener" class="tool">
{{ entry.originUrl|striptags|removeSchemeAndWww|truncate(32) }}
</a>
{% endif %}
<aside class="tags">
<div class="card-entry-tags">
{% for tag in entry.tags %}
<span class="label-outline">
<i class="material-icons">label_outline</i>
<a href="{{ path('tag_entries', {'slug': tag.slug}) }}">{{ tag.label }}</a>
<a href="{{ path('remove_tag', {'entry': entry.id, 'tag': tag.id}) }}" onclick="return confirm('{{ 'entry.confirm.delete_tag'|trans|escape('js') }}')" class="nostyle">
<i>✘</i>
</a>
</span>
{% endfor %}
</div>
<div class="input-field baggy-add-tag" style="display: none">
{{ render(controller('Wallabag\\CoreBundle\\Controller\\TagController::addTagFormAction', {'id': entry.id})) }}
</div>
</aside>
</div>
<article{% if entry.language is defined and entry.language is not null %} lang="{{ entry.getHTMLLanguage() }}"{% endif %}>
{{ entry.content|raw }}
</article>
</div>
<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 %}

View file

@ -1,7 +0,0 @@
{% extends "@WallabagCore/layout.html.twig" %}
{% block title %}{{ 'entry.new.page_title'|trans }}{% endblock %}
{% block content %}
{{ render(controller('Wallabag\\CoreBundle\\Controller\\EntryController::addEntryFormAction')) }}
{% endblock %}

View file

@ -1,14 +0,0 @@
<form name="entry" method="post" action="{{ path('new_entry') }}">
{% if form_errors(form) %}
<span class="black-text">{{ form_errors(form) }}</span>
{% endif %}
{% if form_errors(form.url) %}
<span class="black-text">{{ form_errors(form.url) }}</span>
{% endif %}
{{ form_label(form.url) }}
{{ form_widget(form.url, {'attr': {'autocomplete': 'off', 'placeholder': 'entry.new.placeholder'}}) }}
{{ form_rest(form) }}
</form>

View file

@ -1,17 +0,0 @@
<form name="search" method="GET" action="{{ path('search') }}">
<h2>{{ 'menu.left.search'|trans }}</h2>
<a href="javascript: void(null);" id="search-form-close" class="close-button--popup close-button">&times;</a>
{% if form_errors(form) %}
<span class="black-text">{{ form_errors(form) }}</span>
{% endif %}
{% if form_errors(form.term) %}
<span class="black-text">{{ form_errors(form.term) }}</span>
{% endif %}
<input type="hidden" name="currentRoute" value="{{ currentRoute }}" />
{{ form_widget(form.term, {'attr': {'autocomplete': 'off', 'placeholder': 'entry.search.placeholder'}}) }}
{{ form_rest(form) }}
</form>

View file

@ -1,24 +0,0 @@
{% extends "@WallabagCore/layout.html.twig" %}
{% block title %}{{ 'error.page_title'|trans }}{% endblock %}
{% block body_class %}login{% endblock %}
{% block menu %}{% endblock %}
{% block messages %}{% endblock %}
{% block header %}{% endblock %}
{% block content %}
<main class="valign-wrapper">
<div class="valign row">
<div class="card sw">
<div class="center"><img src="{{ asset('img/logo-w.png') }}" alt="wallabag logo" /></div>
<h2>{{ status_code }}: {{ status_text }}</h2>
<p>{{ exception.message }}</p>
</div>
</div>
</main>
{% endblock %}
{% block footer %}
{% endblock %}

View file

@ -1,87 +0,0 @@
{% extends "@WallabagCore/layout.html.twig" %}
{% block title %}{{ 'ignore_origin_instance_rule.page_title'|trans }}{% endblock %}
{% block content %}
<div class="row">
<div class="col s12">
<div class="card-panel">
<div class="row">
<div class="input-field col s12">
<h4>{{ 'ignore_origin_instance_rule.edit_ignore_origin_instance_rule'|trans }}</h4>
<div id="set6" class="col s12">
{{ form_start(edit_form) }}
{{ form_errors(edit_form) }}
<div class="row">
<div class="input-field col s12">
{{ form_label(edit_form.rule) }}
{{ form_errors(edit_form.rule) }}
{{ form_widget(edit_form.rule) }}
</div>
</div>
<br/>
{{ form_widget(edit_form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
{{ form_widget(edit_form._token) }}
</form>
<p>
{{ form_start(delete_form) }}
<button onclick="return confirm('{{ 'ignore_origin_instance_rule.form.delete_confirm'|trans|escape('js') }}')" type="submit" class="btn waves-effect waves-light red">{{ 'ignore_origin_instance_rule.form.delete'|trans }}</button>
{{ form_end(delete_form) }}
</p>
<p><a class="waves-effect waves-light btn blue-grey" href="{{ path('ignore_origin_instance_rules_index') }}">{{ 'ignore_origin_instance_rule.form.back_to_list'|trans }}</a></p>
</div>
</div>
</div>
<div class="row">
<div class="input-field col s12">
<h4>{{ 'config.form_ignore_origin_rules.faq.title'|trans }}</h4>
<h5>{{ 'config.form_ignore_origin_rules.faq.ignore_origin_rules_definition_title'|trans }}</h5>
<p class="help">{{ 'config.form_ignore_origin_rules.faq.ignore_origin_rules_definition_description'|trans|raw }}</p>
<h5>{{ 'config.form_ignore_origin_rules.faq.how_to_use_them_title'|trans }}</h5>
<p class="help">{{ 'config.form_ignore_origin_rules.faq.how_to_use_them_description'|trans|raw }}</p>
<h5>{{ 'config.form_ignore_origin_rules.faq.variables_available_title'|trans }}</h5>
<p class="help">
{{ 'config.form_ignore_origin_rules.faq.variables_available_description'|trans }}
</p>
<table class="bordered">
<thead>
<tr>
<th>{{ 'config.form_ignore_origin_rules.faq.variable_description.label'|trans }}</th>
<th>{{ 'config.form_ignore_origin_rules.faq.meaning'|trans }}</th>
<th>{{ 'config.form_ignore_origin_rules.faq.operator_description.label'|trans }}</th>
<th>{{ 'config.form_ignore_origin_rules.faq.meaning'|trans }}</th>
</tr>
</thead>
<tbody>
<tr>
<td>host</td>
<td>{{ 'config.form_ignore_origin_rules.faq.variable_description.host'|trans }}</td>
<td>=</td>
<td>{{ 'config.form_ignore_origin_rules.faq.operator_description.equal_to'|trans }}</td>
</tr>
<tr>
<td>_all</td>
<td>{{ 'config.form_ignore_origin_rules.faq.variable_description._all'|trans }}</td>
<td>~</td>
<td>{{ 'config.form_ignore_origin_rules.faq.operator_description.matches'|trans|raw }}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
{% endblock %}

View file

@ -1,42 +0,0 @@
{% extends "@WallabagCore/layout.html.twig" %}
{% block title %}{{ 'ignore_origin_instance_rule.page_title'|trans }}{% endblock %}
{% block content %}
<div class="row">
<div class="col s12">
<div class="card-panel">
<div class="row">
<div class="input-field col s12">
<p class="help">{{ 'ignore_origin_instance_rule.description'|trans|raw }}</p>
<table class="bordered">
<thead>
<tr>
<th>{{ 'ignore_origin_instance_rule.form.rule_label'|trans }}</th>
<th>{{ 'ignore_origin_instance_rule.list.actions'|trans }}</th>
</tr>
</thead>
<tbody>
{% for rule in rules %}
<tr>
<td>{{ rule.rule }}</td>
<td>
<a href="{{ path('ignore_origin_instance_rules_edit', {'id': rule.id}) }}">{{ 'ignore_origin_instance_rule.list.edit_action'|trans }}</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<br />
<p>
<a href="{{ path('ignore_origin_instance_rules_new') }}" class="waves-effect waves-light btn">{{ 'ignore_origin_instance_rule.list.create_new_one'|trans }}</a>
</p>
</div>
</div>
</div>
</div>
</div>
{% endblock %}

View file

@ -1,80 +0,0 @@
{% extends "@WallabagCore/layout.html.twig" %}
{% block title %}{{ 'ignore_origin_instance_rule.page_title'|trans }}{% endblock %}
{% block content %}
<div class="row">
<div class="col s12">
<div class="card-panel">
<div class="row">
<div class="input-field col s12">
<h4>{{ 'ignore_origin_instance_rule.new_ignore_origin_instance_rule'|trans }}</h4>
<div id="set6" class="col s12">
{{ form_start(form) }}
{{ form_errors(form) }}
<div class="row">
<div class="input-field col s12">
{{ form_label(form.rule) }}
{{ form_errors(form.rule) }}
{{ form_widget(form.rule) }}
</div>
</div>
{{ form_widget(form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
{{ form_rest(form) }}
</form>
<p><a class="waves-effect waves-light btn blue-grey" href="{{ path('ignore_origin_instance_rules_index') }}">{{ 'ignore_origin_instance_rule.form.back_to_list'|trans }}</a></p>
</div>
</div>
</div>
<div class="row">
<div class="input-field col s12">
<h4>{{ 'config.form_ignore_origin_rules.faq.title'|trans }}</h4>
<h5>{{ 'config.form_ignore_origin_rules.faq.ignore_origin_rules_definition_title'|trans }}</h5>
<p class="help">{{ 'config.form_ignore_origin_rules.faq.ignore_origin_rules_definition_description'|trans|raw }}</p>
<h5>{{ 'config.form_ignore_origin_rules.faq.how_to_use_them_title'|trans }}</h5>
<p class="help">{{ 'config.form_ignore_origin_rules.faq.how_to_use_them_description'|trans|raw }}</p>
<h5>{{ 'config.form_ignore_origin_rules.faq.variables_available_title'|trans }}</h5>
<p class="help">
{{ 'config.form_ignore_origin_rules.faq.variables_available_description'|trans }}
</p>
<table class="bordered">
<thead>
<tr>
<th>{{ 'config.form_ignore_origin_rules.faq.variable_description.label'|trans }}</th>
<th>{{ 'config.form_ignore_origin_rules.faq.meaning'|trans }}</th>
<th>{{ 'config.form_ignore_origin_rules.faq.operator_description.label'|trans }}</th>
<th>{{ 'config.form_ignore_origin_rules.faq.meaning'|trans }}</th>
</tr>
</thead>
<tbody>
<tr>
<td>host</td>
<td>{{ 'config.form_ignore_origin_rules.faq.variable_description.host'|trans }}</td>
<td>=</td>
<td>{{ 'config.form_ignore_origin_rules.faq.operator_description.equal_to'|trans }}</td>
</tr>
<tr>
<td>_all</td>
<td>{{ 'config.form_ignore_origin_rules.faq.variable_description._all'|trans }}</td>
<td>~</td>
<td>{{ 'config.form_ignore_origin_rules.faq.operator_description.matches'|trans|raw }}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
{% endblock %}

View file

@ -1,6 +0,0 @@
Hello {{ username }}!
To reset your password - please visit {{ confirmationUrl }}
Regards,
Wallabag bot

View file

@ -1,3 +0,0 @@
# Baggy Theme
theme created by Thomas LEBEAU alias Courgette http://thomaslebeau.fr/

View file

@ -1,60 +0,0 @@
{% extends "@WallabagCore/layout.html.twig" %}
{% block title %}{{ 'site_credential.page_title'|trans }}{% endblock %}
{% block content %}
<div class="row">
<div class="col s12">
<div class="card-panel">
<div class="row">
<div class="input-field col s12">
<h4>{{ 'site_credential.edit_site_credential'|trans }}</h4>
<div id="set6" class="col s12">
{{ form_start(edit_form) }}
{{ form_errors(edit_form) }}
<div class="row">
<div class="input-field col s12">
{{ form_label(edit_form.host) }}
{{ form_errors(edit_form.host) }}
{{ form_widget(edit_form.host) }}
</div>
</div>
<div class="row">
<div class="input-field col s12">
{{ form_label(edit_form.username) }}
{{ form_errors(edit_form.username) }}
{{ form_widget(edit_form.username) }}
</div>
</div>
<div class="row">
<div class="input-field col s12">
{{ form_label(edit_form.password) }}
{{ form_errors(edit_form.password) }}
{{ form_widget(edit_form.password) }}
</div>
</div>
<br/>
{{ form_widget(edit_form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
{{ form_widget(edit_form._token) }}
</form>
<p>
{{ form_start(delete_form) }}
<button onclick="return confirm('{{ 'site_credential.form.delete_confirm'|trans|escape('js') }}')" type="submit" class="btn waves-effect waves-light red">{{ 'site_credential.form.delete'|trans }}</button>
{{ form_end(delete_form) }}
</p>
<p><a class="waves-effect waves-light btn blue-grey" href="{{ path('site_credentials_index') }}">{{ 'site_credential.form.back_to_list'|trans }}</a></p>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}

View file

@ -1,42 +0,0 @@
{% extends "@WallabagCore/layout.html.twig" %}
{% block title %}{{ 'site_credential.page_title'|trans }}{% endblock %}
{% block content %}
<div class="row">
<div class="col s12">
<div class="card-panel">
<div class="row">
<div class="input-field col s12">
<p class="help">{{ 'site_credential.description'|trans|raw }}</p>
<table class="bordered">
<thead>
<tr>
<th>{{ 'site_credential.form.host_label'|trans }}</th>
<th>{{ 'site_credential.list.actions'|trans }}</th>
</tr>
</thead>
<tbody>
{% for credential in credentials %}
<tr>
<td>{{ credential.host }}</td>
<td>
<a href="{{ path('site_credentials_edit', {'id': credential.id}) }}">{{ 'site_credential.list.edit_action'|trans }}</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<br />
<p>
<a href="{{ path('site_credentials_new') }}" class="waves-effect waves-light btn">{{ 'site_credential.list.create_new_one'|trans }}</a>
</p>
</div>
</div>
</div>
</div>
</div>
{% endblock %}

View file

@ -1,53 +0,0 @@
{% extends "@WallabagCore/layout.html.twig" %}
{% block title %}{{ 'site_credential.page_title'|trans }}{% endblock %}
{% block content %}
<div class="row">
<div class="col s12">
<div class="card-panel">
<div class="row">
<div class="input-field col s12">
<h4>{{ 'site_credential.new_site_credential'|trans }}</h4>
<div id="set6" class="col s12">
{{ form_start(form) }}
{{ form_errors(form) }}
<div class="row">
<div class="input-field col s12">
{{ form_label(form.host) }}
{{ form_errors(form.host) }}
{{ form_widget(form.host) }}
</div>
</div>
<div class="row">
<div class="input-field col s12">
{{ form_label(form.username) }}
{{ form_errors(form.username) }}
{{ form_widget(form.username) }}
</div>
</div>
<div class="row">
<div class="input-field col s12">
{{ form_label(form.password) }}
{{ form_errors(form.password) }}
{{ form_widget(form.password) }}
</div>
</div>
{{ form_widget(form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
{{ form_rest(form) }}
</form>
<p><a class="waves-effect waves-light btn blue-grey" href="{{ path('site_credentials_index') }}">{{ 'site_credential.form.back_to_list'|trans }}</a></p>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}

View file

@ -1,13 +0,0 @@
<form name="tag" method="post" action="{{ path('new_tag', {'entry': entry.id}) }}">
{% if form_errors(form) %}
<span class="black-text">{{ form_errors(form) }}</span>
{% endif %}
{% if form_errors(form.label) %}
<span class="black-text">{{ form_errors(form.label) }}</span>
{% endif %}
{{ form_widget(form.label, {'attr': {'autocomplete': 'off'}}) }}
{{ form_rest(form) }}
</form>

View file

@ -1,40 +0,0 @@
{% extends "@WallabagCore/layout.html.twig" %}
{% block title %}{{ 'tag.page_title'|trans }}{% endblock %}
{% block content %}
<div class="results">
<div class="nb-results">{{ 'tag.list.number_on_the_page'|transchoice(tags|length) }}</div>
</div>
<ul>
{% for tag in tags %}
<li id="tag-{{ tag.id|e }}">
<a href="{{ path('tag_entries', {'slug': tag.slug}) }}" data-handle="tag-link">{{ tag.label }}&nbsp;({{ tag.nbEntries }})</a>
{% if renameForms is defined and renameForms[tag.id] is defined %}
<form class="card-tag-form hidden" data-handle="tag-rename-form" action="{{ path('tag_rename', {'slug': tag.slug}) }}" method="POST">
{{ form_widget(renameForms[tag.id].label, {'attr': {'value': tag.label}}) }}
{{ form_rest(renameForms[tag.id]) }}
</form>
<a class="card-tag-rename" data-handler="tag-rename" href="javascript:void(0);">
<i class="material-icons">mode_edit</i>
</a>
{% endif %}
{% if app.user.config.feedToken %}
<a rel="alternate" type="application/atom+xml" href="{{ path('tag_feed', {'username': app.user.username, 'token': app.user.config.feedToken, 'slug': tag.slug}) }}" class="right">
<i class="material-icons md-24">rss_feed</i>
</a>
{% endif %}
</li>
{% endfor %}
</ul>
<div>
{% if nbEntriesUntagged == 0 %}
{{ 'tag.list.no_untagged_entries'|trans }}
{% else %}
<a href="{{ path('untagged') }}">{{ 'tag.list.see_untagged_entries'|trans }} ({{ nbEntriesUntagged }})</a>
{% endif %}
</div>
{% endblock %}

View file

@ -1,77 +0,0 @@
{% extends "@WallabagCore/base.html.twig" %}
{% block css %}
{{ parent() }}
{% if not app.debug %}
<link rel="stylesheet" href="{{ asset('wallassets/baggy.css') }}">
{% endif %}
{% endblock %}
{% block scripts %}
{{ parent() }}
<script src="{{ asset('wallassets/baggy' ~ (app.debug ? '.dev' : '') ~ '.js') }}"></script>
{% endblock %}
{% block header %}
<header class="w600p center mbm">
<h1 class="logo">
{% block logo %}
<a title="{{ 'menu.left.back_to_unread'|trans }}" href="{{ path('unread') }}">
<img width="100" height="100" src="{{ asset('img/logo-w.png') }}" alt="wallabag logo" />
</a>
{% endblock %}
</h1>
</header>
{% endblock %}
{% block menu %}
<button id="menu" class="icon icon-menu desktopHide"><span>Menu</span></button>
<ul id="links" class="links">
<li class="menu unread"><a href="{{ path('unread') }}">{{ 'menu.left.unread'|trans }}</a></li>
<li class="menu starred"><a href="{{ path('starred') }}">{{ 'menu.left.starred'|trans }}</a></li>
<li class="menu archive"><a href="{{ path('archive') }}">{{ 'menu.left.archive'|trans }}</a></li>
<li class="menu all"><a href="{{ path('all') }}">{{ 'menu.left.all_articles'|trans }}</a></li>
<li class="menu tag"><a href="{{ path('tag') }}">{{ 'menu.left.tags'|trans }}</a></li>
<li class="menu new"><a href="{{ path('new') }}">{{ 'menu.left.save_link'|trans }}</a></li>
<li style="position: relative;"><a href="javascript: void(null);" id="search">{{ 'menu.left.search'|trans }}</a>
<div id="search-form" class="messages info popup-form">
{{ render(controller('Wallabag\\CoreBundle\\Controller\\EntryController::searchFormAction', {'currentRoute': app.request.attributes.get('_route')})) }}
</div>
</li>
{% if craue_setting('restricted_access') %}
<li class="menu site_credentials"><a href="{{ path('site_credentials_index') }}">{{ 'menu.left.site_credentials'|trans }}</a></li>
{% endif %}
<li class="menu config"><a href="{{ path('config') }}">{{ 'menu.left.config'|trans }}</a></li>
{% if is_granted('ROLE_SUPER_ADMIN') %}
<li class="menu users"><a href="{{ path('user_index') }}">{{ 'menu.left.users_management'|trans }}</a></li>
<li class="menu internal"><a href="{{ path('craue_config_settings_modify') }}">{{ 'menu.left.internal_settings'|trans }}</a></li>
<li class="menu ignore"><a href="{{ path('ignore_origin_instance_rules_index') }}">{{ 'menu.left.ignore_origin_instance_rules'|trans }}</a></li>
{% endif %}
<li class="menu import"><a href="{{ path('import') }}">{{ 'menu.left.import'|trans }}</a></li>
<li class="menu howto"><a href="{{ path('howto') }}">{{ 'menu.left.howto'|trans }}</a></li>
<li class="menu developer"><a href="{{ path('developer') }}">{{ 'menu.left.developer'|trans }}</a></li>
<li class="menu about"><a href="{{ path('about') }}">{{ 'footer.wallabag.about'|trans }}</a></li>
<li class="menu quickstart"><a href="{{ path('quickstart') }}">{{ 'menu.left.quickstart'|trans }}</a></li>
<li class="menu logout"><a class="icon icon-power" href="{{ path('fos_user_security_logout') }}">{{ 'menu.left.logout'|trans }}</a></li>
</ul>
{% endblock %}
{% block messages %}
<div style="margin-top: 10px; color: #e01a15; border-left: 20px #e01a15 solid; padding-left: 10px; border-bottom: 6px #e01a15 solid; border-bottom-left-radius: 10px;">
<h3>⚠️ You are using the Baggy theme which is now deprecated.</h3>
<p>It will be removed in the next version. You can use the Material theme by <a href="{{ path('config') }}">updating the theme config</a>.</p>
</div>
{% for flash_message in app.session.flashbag.get('notice') %}
<div class="messages success">
<a href="#" class="closeMessage">×</a>
<p>{{ flash_message|trans }}</p>
</div>
{% endfor %}
{% endblock %}
{% block footer %}
<footer class="w600p center mt3 mb3 smaller txtright">
<p>{{ 'footer.wallabag.powered_by'|trans }} <a href="http://wallabag.org">wallabag</a></p>
</footer>
{% endblock %}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 237 KiB

View file

@ -295,6 +295,7 @@
« {{ tagging_rule.rule }} »
{{ 'config.form_rules.then_tag_as_label'|trans }}
« {{ tagging_rule.tags|join(', ') }} »
<a href="{{ path('edit_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.edit_rule_label'|trans }}" class="mode_edit">
<i class="tool grey-text material-icons">mode_edit</i>
</a>

View file

@ -55,7 +55,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
$form = $crawler->filter('button[id=config_save]')->form();
$data = [
'config[theme]' => 'baggy',
'config[theme]' => 'material',
'config[items_per_page]' => '30',
'config[reading_speed]' => '100',
'config[action_mark_as_read]' => '0',
@ -74,7 +74,6 @@ class ConfigControllerTest extends WallabagCoreTestCase
public function testChangeReadingSpeed()
{
$this->logInAs('admin');
$this->useTheme('baggy');
$client = $this->getClient();
$entry = new Entry($this->getLoggedInUser());
@ -92,7 +91,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
'entry_filter[readingTime][left_number]' => 22,
];
$crawler = $client->submit($form, $dataFilters);
$this->assertCount(1, $crawler->filter('div[class=entry]'));
$this->assertCount(0, $crawler->filter('div[class=entry]'));
// Change reading speed
$crawler = $client->request('GET', '/config');
@ -121,7 +120,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
{
return [
[[
'config[theme]' => 'baggy',
'config[theme]' => 'material',
'config[items_per_page]' => '',
'config[language]' => 'en',
]],
@ -462,7 +461,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
$this->assertStringContainsString('flashes.config.notice.tagging_rules_updated', $crawler->filter('body')->extract(['_text'])[0]);
$editLink = $crawler->filter('div[id=set5] a.mode_edit')->last()->link();
$editLink = $crawler->filter('.edit-rule')->last()->link();
$crawler = $client->click($editLink);
$this->assertSame(302, $client->getResponse()->getStatusCode());
@ -487,7 +486,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
$this->assertStringContainsString('readingTime <= 30', $crawler->filter('body')->extract(['_text'])[0]);
$deleteLink = $crawler->filter('div[id=set5] a.delete')->last()->link();
$deleteLink = $crawler->filter('.delete-rule')->last()->link();
$crawler = $client->click($deleteLink);
$this->assertSame(302, $client->getResponse()->getStatusCode());
@ -1111,19 +1110,18 @@ class ConfigControllerTest extends WallabagCoreTestCase
public function testSwitchViewMode()
{
$this->logInAs('admin');
$this->useTheme('baggy');
$client = $this->getClient();
$client->request('GET', '/unread/list');
$this->assertStringNotContainsString('listmode', $client->getResponse()->getContent());
$this->assertNotContains('collection', $client->getResponse()->getContent());
$client->request('GET', '/config/view-mode');
$crawler = $client->followRedirect();
$client->request('GET', '/unread/list');
$this->assertStringContainsString('listmode', $client->getResponse()->getContent());
$this->assertContains('collection', $client->getResponse()->getContent());
$client->request('GET', '/config/view-mode');
}

View file

@ -86,7 +86,7 @@ class EntryControllerTest extends WallabagCoreTestCase
public function testGetNew()
{
$this->logInAs('admin');
$this->useTheme('baggy');
$this->useTheme('material');
$client = $this->getClient();
$crawler = $client->request('GET', '/new');

View file

@ -32,7 +32,7 @@ class CreateConfigListenerTest extends TestCase
$this->listener = new CreateConfigListener(
$this->em,
'baggy',
'material',
20,
50,
'fr',
@ -61,7 +61,7 @@ class CreateConfigListenerTest extends TestCase
);
$config = new Config($user);
$config->setTheme('baggy');
$config->setTheme('material');
$config->setItemsPerPage(20);
$config->setFeedLimit(50);
$config->setLanguage('fr');