mirror of
https://github.com/wallabag/wallabag.git
synced 2024-11-25 18:41:05 +00:00
Removed old, not so maintained and buggy baggy theme
This commit is contained in:
parent
0883bda18d
commit
29308024ac
52 changed files with 42 additions and 4736 deletions
23
app/DoctrineMigrations/Version20200414120227.php
Normal file
23
app/DoctrineMigrations/Version20200414120227.php
Normal 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 ... ');
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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";
|
|
@ -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;
|
||||
}
|
|
@ -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
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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%;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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 |
|
@ -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();
|
||||
});
|
||||
});
|
|
@ -1,8 +0,0 @@
|
|||
function split(val) {
|
||||
return val.split(/,\s*/);
|
||||
}
|
||||
function extractLast(term) {
|
||||
return split(term).pop();
|
||||
}
|
||||
|
||||
export default { split, extractLast };
|
|
@ -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();
|
||||
});
|
||||
}
|
||||
});
|
|
@ -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;
|
||||
});
|
||||
});
|
|
@ -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;
|
|
@ -169,7 +169,6 @@ nelmio_cors:
|
|||
liip_theme:
|
||||
load_controllers: false
|
||||
themes:
|
||||
- baggy
|
||||
- material
|
||||
autodetect_theme: Wallabag\CoreBundle\Helper\DetectActiveTheme
|
||||
|
||||
|
|
|
@ -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: {
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
0
src/Wallabag/CoreBundle/Resources/config/services.yml
Normal file
0
src/Wallabag/CoreBundle/Resources/config/services.yml
Normal 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>
|
||||
»
|
||||
<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><=</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><</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>>=</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>></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 %}
|
|
@ -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 %}
|
|
@ -1,7 +0,0 @@
|
|||
{% extends "@WallabagCore/layout.html.twig" %}
|
||||
|
||||
{% block title %}{{ 'entry.edit.page_title'|trans }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{{ form(form) }}
|
||||
{% endblock %}
|
|
@ -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) }}…</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">×</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">×</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 %}
|
|
@ -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 }}&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 }}&tags={{ entry.tags|join(',')|url_encode }}{% if craue_setting('shaarli_share_origin_url') %}&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 }}¬es=&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 }}&title={{ entry.title|url_encode }}&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&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 %}
|
|
@ -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 %}
|
|
@ -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>
|
|
@ -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">×</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>
|
|
@ -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 %}
|
|
@ -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 %}
|
|
@ -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 %}
|
|
@ -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 %}
|
|
@ -1,6 +0,0 @@
|
|||
Hello {{ username }}!
|
||||
|
||||
To reset your password - please visit {{ confirmationUrl }}
|
||||
|
||||
Regards,
|
||||
Wallabag bot
|
|
@ -1,3 +0,0 @@
|
|||
# Baggy Theme
|
||||
|
||||
theme created by Thomas LEBEAU alias Courgette http://thomaslebeau.fr/
|
|
@ -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 %}
|
|
@ -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 %}
|
|
@ -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 %}
|
|
@ -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>
|
|
@ -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 }} ({{ 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 %}
|
|
@ -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 |
|
@ -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>
|
||||
|
|
|
@ -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');
|
||||
}
|
||||
|
|
|
@ -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');
|
||||
|
|
|
@ -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');
|
||||
|
|
Loading…
Reference in a new issue