Compare commits

..

1 Commits

Author SHA1 Message Date
a45f644148 Release wallabag 2.0.0-alpha.2 2016-01-22 11:37:17 +01:00
643 changed files with 23161 additions and 161214 deletions

View File

@ -1,7 +0,0 @@
{
"github-oauth": {
"github.com": "PLEASE DO NOT USE THIS TOKEN IN YOUR OWN PROJECTS/FORKS",
"github.com": "This token is reserved for testing the wallabag/wallabag repository",
"github.com": "73d9411c719a0a56259dbfa16673793b39973091"
}
}

View File

@ -1,10 +0,0 @@
{
"extends": "airbnb-base",
"parser": "babel-eslint",
"env": {
"browser": true
},
"rules": {
"import/no-extraneous-dependencies": ["error", {"devDependencies": true, "optionalDependencies": true, "peerDependencies": true}]
}
}

View File

@ -1,13 +0,0 @@
# How to contribute
## You found a bug
Please [open a new issue](https://github.com/wallabag/wallabag/issues/new).
To fix the bug quickly, we need some infos: please answer to the questions in the issue form.
If you have the skills, look for errors into php, server and application (see `var/logs`) logs.
Note : If you have large portions of text, use [Github's Gist service](https://gist.github.com/) or other pastebin-like.
## You want to fix a bug or to add a feature
Please fork wallabag and work with **the master branch**.

View File

@ -1,19 +0,0 @@
### Issue details
Please provide issue details here.
Remember, this is _not_ a place to ask questions. For that, go to http://gitter.im/wallabag/wallabag.
### Environment
* wallabag version (or git revision) that exhibits the issue:
* How did you install wallabag? Via `git clone` or by downloading the package?
* Last wallabag version that did not exhibit the issue (if applicable):
* php version:
* OS:
* type of hosting (shared or dedicated):
* which storage system you choose at install (SQLite, MySQL/MariaDB or PostgreSQL):
### Steps to reproduce/test case
Please provide necessary steps for reproduction of this issue, or better the
reduced test case (without any external dependencies, if possible).

View File

@ -1,11 +0,0 @@
| Q | A
| ------------- | ---
| Bug fix? | yes|no
| New feature? | yes|no
| BC breaks? | yes|no
| Deprecations? | yes|no
| Tests pass? | yes|no
| Documentation | yes|no
| Translation | yes|no
| Fixed tickets | comma-separated list of tickets fixed by the PR, if any
| License | MIT

16
.gitignore vendored
View File

@ -10,9 +10,6 @@
/var/sessions/* /var/sessions/*
!var/sessions/.gitkeep !var/sessions/.gitkeep
!var/SymfonyRequirements.php !var/SymfonyRequirements.php
/bin/*
!/bin/console
!/bin/symfony_requirements
# Parameters # Parameters
/app/config/parameters.yml /app/config/parameters.yml
@ -21,10 +18,8 @@
/vendor/ /vendor/
# Assets and user uploads # Assets and user uploads
web/uploads/ /web/bundles/
!web/bundles /web/uploads/
web/bundles/*
!web/bundles/wallabagcore
# Build # Build
/app/build /app/build
@ -43,10 +38,3 @@ docker/data/
# To avoid crazy stuff on some PR, we must manually FORCE ADD IT on each new release # To avoid crazy stuff on some PR, we must manually FORCE ADD IT on each new release
composer.lock composer.lock
# assets stuff
node_modules/
bin
app/Resources/build/
!/src/Wallabag/CoreBundle/Resources/public
/src/Wallabag/CoreBundle/Resources/public/*

View File

@ -1,3 +0,0 @@
{
"extends": "stylelint-config-standard"
}

View File

@ -1,9 +1,5 @@
language: php language: php
services:
- rabbitmq
- redis
# faster builds on docker-container setup # faster builds on docker-container setup
sudo: false sudo: false
@ -15,64 +11,41 @@ addons:
# cache vendor dirs # cache vendor dirs
cache: cache:
apt: true
directories: directories:
- vendor - vendor
- $HOME/.composer/cache - $HOME/.composer/cache
- node_modules
- $HOME/.cache/bower
- $HOME/.npm
php: php:
- 5.5 - 5.5
- 5.6 - 5.6
- 7.0 - 7.0
- 7.1 - hhvm
- nightly
node_js:
- "5"
env: env:
- DB=mysql - DB=mysql
- DB=pgsql - DB=pgsql
- DB=sqlite - DB=sqlite
matrix: matrix:
fast_finish: true fast_finish: true
include: exclude:
- php: 7.0 - php: hhvm
env: CS_FIXER=run VALIDATE_TRANSLATION_FILE=run ASSETS=build DB=sqlite env: DB=pgsql # driver for PostgreSQL currently unsupported by HHVM, requires 3rd party dependency
allow_failures: allow_failures:
- php: 7.1 - php: hhvm
- php: nightly
# exclude v1 branches
branches: branches:
except: only:
- legacy - v2
before_script: before_script:
- PHP=$TRAVIS_PHP_VERSION - if [[ $TRAVIS_PHP_VERSION != hhvm ]]; then echo "memory_limit=-1" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini; fi;
- if [[ ! $PHP = hhvm* ]]; then echo "memory_limit=-1" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini; fi; - if [[ $TRAVIS_PHP_VERSION != hhvm ]]; then phpenv config-rm xdebug.ini; fi;
# xdebug isn't enable for PHP 7.1
- if [[ ! $PHP = hhvm* ]]; then phpenv config-rm xdebug.ini || echo "xdebug not available"; fi
- if [[ $PHP = 5.5 ]]; then composer require "phpunit/phpunit:4.*" --no-update; fi;
- composer self-update --no-progress - composer self-update --no-progress
- if [[ $DB = pgsql ]]; then psql -c 'create database wallabag_test;' -U postgres; fi; - if [ -n "$GH_TOKEN" ]; then composer config github-oauth.github.com ${GH_TOKEN}; fi;
- if [[ "$DB" = "pgsql" ]]; then psql -c 'create database wallabag;' -U postgres; fi;
install:
- if [[ $ASSETS = build ]]; then source ~/.nvm/nvm.sh && nvm install 5.0; fi;
- if [[ $ASSETS = build ]]; then npm install -g npm@latest; fi;
- if [[ $ASSETS = build ]]; then npm install; fi;
before_install:
- if [[ $TRAVIS_REPO_SLUG = wallabag/wallabag ]]; then cp .composer-auth.json ~/.composer/auth.json; fi;
script: script:
- travis_wait bash composer update --no-interaction --no-progress - travis_wait composer update --no-interaction --no-progress
- ant prepare-$DB - ant prepare-$DB
- if [[ $VALIDATE_TRANSLATION_FILE = '' ]]; then phpunit -v ; fi; - bin/phpunit -v
- if [[ $CS_FIXER = run ]]; then php bin/php-cs-fixer fix src/ --verbose --dry-run ; fi;
- if [[ $VALIDATE_TRANSLATION_FILE = run ]]; then php bin/console lint:yaml src/Wallabag/CoreBundle/Resources/translations -v ; fi;
- if [[ $ASSETS = build ]]; then ./node_modules/grunt-cli/bin/grunt tests; fi;

View File

@ -1,26 +0,0 @@
# see https://zappr.opensource.zalan.do/
autobranch: false
commit: false
approvals:
minimum: 1
ignore: pr_opener
pattern: "^(:\\+1:|👍)$"
veto:
pattern: "^(:\\-1:|👎)$"
from:
orgs:
- wallabag
collaborators: true
specification:
title:
minimum-length:
enabled: true
length: 8
body:
minimum-length:
enabled: true
length: 8
contains-url: false
contains-issue-number: false
template:
differs-from-body: true

View File

@ -1,261 +0,0 @@
# Changelog
All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/).
## [2.1.1] - 2016-10-04
### Changed
- [#2340](https://github.com/wallabag/wallabag/pull/2340) Updated german translation (Strubbl)
- [#2341](https://github.com/wallabag/wallabag/pull/2341) Updated polish translation (Mateusz Rumiński)
- [#2354](https://github.com/wallabag/wallabag/pull/2354) Add php-bcmath extension to requirements (Godinez Pablo)
### Fixed
- [#2338](https://github.com/wallabag/wallabag/pull/2338) Fixed 2.1 installation (Jeremy Benoist)
- [#2345](https://github.com/wallabag/wallabag/issues/2345) Fixed 2.0.x update (Jeremy Benoist)
- [#2353](https://github.com/wallabag/wallabag/pull/2353) Fixed assets problem (Thomas Citharel)
- [#2359](https://github.com/wallabag/wallabag/pull/2359) Create config even if user is disabled (Jeremy Benoist)
## [2.1.0] - 2016-10-03
### Added
- [#1990](https://github.com/wallabag/wallabag/pull/1990) Added command line import for wallabag files (Nicolas Lœuillet)
- [#2142](https://github.com/wallabag/wallabag/pull/2142) Manage assets through npm (Thomas Citharel)
- [#2174](https://github.com/wallabag/wallabag/pull/2174) Added filter for tags on API (Thomas Citharel)
- [#2176](https://github.com/wallabag/wallabag/pull/2176) Added `since` parameter in API (Thomas Citharel)
- [#2170](https://github.com/wallabag/wallabag/pull/2170), [#2183](https://github.com/wallabag/wallabag/pull/2183) Added tags on entries view (Thomas Citharel)
- [#2186](https://github.com/wallabag/wallabag/pull/2186) Added option to disable registration (Thomas Citharel)
- [#1904](https://github.com/wallabag/wallabag/pull/1904) Share entry with a public URL (Nicolas Lœuillet)
- [#2243](https://github.com/wallabag/wallabag/pull/2243) Added list of untagged articles (Nicolas Lœuillet)
- [#2255](https://github.com/wallabag/wallabag/pull/2255) Added Readability import (Jeremy Benoist)
- [#2002](https://github.com/wallabag/wallabag/pull/2002) Added articles counter in sidebar (Nicolas Lœuillet)
- [#2275](https://github.com/wallabag/wallabag/pull/2275) Added date from entries in export (Jeremy Benoist)
- [#2266](https://github.com/wallabag/wallabag/pull/2266) Added tags counter in sidebar (Nicolas Lœuillet)
- [#1941](https://github.com/wallabag/wallabag/pull/1941) Added asynchronous import (Jeremy Benoist, Nicolas Lœuillet)
- [#2192](https://github.com/wallabag/wallabag/pull/2192) Added Firefox / Chrome bookmarks import (Thomas Citharel)
- [#2310](https://github.com/wallabag/wallabag/pull/2310) Added Instapaper import (Jeremy Benoist)
- [#2322](https://github.com/wallabag/wallabag/pull/2322) Added customized errors templates (Jeremy Benoist)
- [#2323](https://github.com/wallabag/wallabag/pull/2323) Added simple stats in footer (Jeremy Benoist)
- [#2324](https://github.com/wallabag/wallabag/pull/2324) Added ability to edit a tagging rule (Jeremy Benoist)
- [#2325](https://github.com/wallabag/wallabag/pull/2325) Added an `exists` endpoint in API (Jeremy Benoist)
### Changed
- [#2170](https://github.com/wallabag/wallabag/pull/2170) Entry titles are now smaller on entry view (Thomas Citharel)
- [#2245](https://github.com/wallabag/wallabag/pull/2245) Changed where page title is displayed (Nicolas Lœuillet)
- [#2274](https://github.com/wallabag/wallabag/pull/2274) Re use JsonResponse in API (Jeremy Benoist)
- [#2257](https://github.com/wallabag/wallabag/pull/2257) Use created date for imported content (Jeremy Benoist)
- [#2326](https://github.com/wallabag/wallabag/pull/2326) Quickstart layout (Nicolas Lœuillet)
### Fixed
- [#2328](https://github.com/wallabag/wallabag/pull/2328) Fixed duplicate URL with accents (Jeremy Benoist)
- [#2319](https://github.com/wallabag/wallabag/pull/2319) Fixed `gd` extension missing in Dockerfile (Pascal Martin)
- [#2313](https://github.com/wallabag/wallabag/pull/2313) Fixed long loading on Firefox (Nicolas Lœuillet)
- [#2320](https://github.com/wallabag/wallabag/pull/2320) Fixed user config which wasn't created in some cases (Jeremy Benoist)
- [#2301](https://github.com/wallabag/wallabag/pull/2301) Fixed feeds not syncing on android application (Thomas Citharel)
- [#2308](https://github.com/wallabag/wallabag/pull/2308) Fixed duplicate tags on import (Jeremy Benoist)
- [#2297](https://github.com/wallabag/wallabag/pull/2297) Fixed epub export with special characters in title (morhelluin)
- [#2292](https://github.com/wallabag/wallabag/pull/2292) Fixed label for mark as read link in entry view (Nicolas Lœuillet)
- [#2260](https://github.com/wallabag/wallabag/pull/2260) Fixed different font-size for labels in config screen (Nicolas Lœuillet)
- [#2242](https://github.com/wallabag/wallabag/pull/2242) Fixed print / article views (Nicolas Lœuillet)
- [#2328](https://github.com/wallabag/wallabag/pull/2328) Avoid duplicate url with accents (Jeremy Benoist)
- [#2330](https://github.com/wallabag/wallabag/pull/2330) Remove error message when creating ePub versions (Paulino Michelazzo)
- [#2331](https://github.com/wallabag/wallabag/pull/2331) Fix parameters in API links (Jeremy Benoist)
### Removed
- [#2318](https://github.com/wallabag/wallabag/pull/2318) Removed duplicated templates files (Nicolas Lœuillet)
- [#2287](https://github.com/wallabag/wallabag/pull/2287) Useless area in footer for material theme (Nicolas Lœuillet)
## [2.0.8] - 2016-09-07
### Added
- [#2262](https://github.com/wallabag/wallabag/pull/2262) Added a check for the database connection during installation (Jeremy Benoist)
- [#2235](https://github.com/wallabag/wallabag/pull/2235) Added configuration for german documentation website, [available here](http://doc.wallabag.org/de/latest/) (Nicolas Lœuillet)
### Changed
- [graby](https://github.com/j0k3r/graby/releases/tag/1.4.3) Update Graby version, which now handles ZIP files (Jeremy Benoist)
- [#2230](https://github.com/wallabag/wallabag/pull/2230) Changed title display in card view (Danilow Alexandr)
### Fixed
- [#2234](https://github.com/wallabag/wallabag/pull/2234) Fixed mailto link in documentation (Christian Studer)
- [#2241](https://github.com/wallabag/wallabag/pull/2241) Fixed the height of the "Add new article" field in Chrome (Danilow Alexandr)
- [#2238](https://github.com/wallabag/wallabag/pull/2238) Fixed login page in Qupzilla (Danilow Alexandr)
## [2.0.7] - 2016-08-22
### Added
- [#2222](https://github.com/wallabag/wallabag/pull/2222) Added creation date and reading time on article view (Nicolas Lœuillet)
- [#2134](https://github.com/wallabag/wallabag/pull/2134) Run tests on an uptodate HHVM (Jeremy Benoist)
### Changed
- [#2221](https://github.com/wallabag/wallabag/pull/2221) Replaced favorite word/icon with star one (Nicolas Lœuillet)
### Fixed
- [#2224](https://github.com/wallabag/wallabag/pull/2224) Avoid breaking import when fetching fail (Jeremy Benoist)
- [#2216](https://github.com/wallabag/wallabag/pull/2216), [#2220](https://github.com/wallabag/wallabag/pull/2220) Enable CORS headers for OAUTH part (Rurik19)
- [#2095](https://github.com/wallabag/wallabag/pull/2095) Fix form user display when 2FA is disabled (Nicolas Lœuillet)
## [2.0.6] - 2016-08-10
### Changed
- [#2199](https://github.com/wallabag/wallabag/pull/2199) Handling socials links into a config file (Simon Alberny)
- [#2172](https://github.com/wallabag/wallabag/pull/2172) Change the way to login user in tests (Jeremy Benoist)
- [#2155](https://github.com/wallabag/wallabag/pull/2155) Use friendsofphp instead of fabpot for PHP CS Fixer (Jeremy Benoist)
### Fixed
- [#2200](https://github.com/wallabag/wallabag/pull/2200) Fixed typo in entry:notice:entry_saved (charno6)
- [#2185](https://github.com/wallabag/wallabag/pull/2185) Fix 3rd-Party Apps links (Chrome & Firefox) (Thomas Citharel)
- [#2165](https://github.com/wallabag/wallabag/pull/2165) Fix a few french translations typos (Thomas Citharel)
- [#2157](https://github.com/wallabag/wallabag/pull/2157) Handle only upper or only lower reading filter (Jeremy Benoist)
- [#2156](https://github.com/wallabag/wallabag/pull/2156) Try to find bad redirection after delete (Jeremy Benoist)
## [2.0.5] - 2016-05-31
### Added
- [#2052](https://github.com/wallabag/wallabag/pull/2052) Add unread filter to entries pages (Dan Bartram)
### Changed
- [#2093](https://github.com/wallabag/wallabag/pull/2093) Replace vertical dots in material theme with horizontal dots (Nicolas Lœuillet)
- [#2054](https://github.com/wallabag/wallabag/pull/2054) Update italian translation (Daniele Conca)
- [#2068](https://github.com/wallabag/wallabag/pull/2068), [#2049](https://github.com/wallabag/wallabag/pull/2049) Update documentation (Josh Panter, Mario Vormstein)
### Fixed
- [#2122](https://github.com/wallabag/wallabag/pull/2122) Fix the deletion of Tags/Entries relation when delete an entry (Jeremy Benoist, Nicolas Lœuillet)
- [#2095](https://github.com/wallabag/wallabag/pull/2095) Fix form user display when 2FA is disabled (Nicolas Lœuillet)
- [#2092](https://github.com/wallabag/wallabag/pull/2092) API: Starred and archived clears if article is already exists (Rurik19)
- [#2097](https://github.com/wallabag/wallabag/issues/2097) Fix image path in 2-factor authentification email (Baptiste Mille-Mathias)
- [#2069](https://github.com/wallabag/wallabag/pull/2069) Do not specify language in Firefox addon link (Merouane Atig)
## [2.0.4] - 2016-05-07
### Added
- [#2016](https://github.com/wallabag/wallabag/pull/2016) Big updates in [our documentation](http://doc.wallabag.org/en/master/) (Nicolas Lœuillet)
- [#2028](https://github.com/wallabag/wallabag/pull/2028) Documentation about android application (Strubbl)
- [#2019](https://github.com/wallabag/wallabag/pull/2019) Italian translation (Daniele Conca)
- [#2011](https://github.com/wallabag/wallabag/pull/2011) Documentation about wallabag upgrade (biva)
- [#1985](https://github.com/wallabag/wallabag/pull/1985) Documentation about rights access (FoxMaSk)
- [#1969](https://github.com/wallabag/wallabag/pull/1969) Third resources for API in documentation (Nicolas Lœuillet)
- [#1967](https://github.com/wallabag/wallabag/pull/1967) FAQ page in documentation (Nicolas Lœuillet)
### Changed
- [#1977](https://github.com/wallabag/wallabag/pull/1977) Spanish documentation (jami7)
### Fixed
- [#2023](https://github.com/wallabag/wallabag/pull/2023) Fix translation for validators (Nicolas Lœuillet)
- [#2020](https://github.com/wallabag/wallabag/pull/2020) Fix number of entries in tag/list (Nicolas Lœuillet)
- [#2022](https://github.com/wallabag/wallabag/pull/2022) Fix pagination bar on small devices (Nicolas Lœuillet)
- [#2013](https://github.com/wallabag/wallabag/pull/2013) Fix tag listing (Nicolas Lœuillet)
- [#1976](https://github.com/wallabag/wallabag/pull/1976) Fix filter reading time (Nicolas Lœuillet)
- [#2005](https://github.com/wallabag/wallabag/pull/2005) Fix reading speed not defined when user was created via config page (Nicolas Lœuillet)
- [#2010](https://github.com/wallabag/wallabag/pull/2010) Set the title via POST /api/entries (Nicolas Lœuillet)
## [2.0.3] - 2016-04-22
### Added
- [#1962](https://github.com/wallabag/wallabag/pull/1962) cURL examples in documentation about API (Dirk Deimeke)
### Fixed
- Forgot `composer.lock` file in 2.0.2 release so some users may encounter `Fatal error: Out of memory` error during installation
## [2.0.2] - 2016-04-21
### Added
- [#1945](https://github.com/wallabag/wallabag/pull/1945) cURL examples in documentation about API (Dirk Deimeke)
- [#1911](https://github.com/wallabag/wallabag/pull/1911) Add title hover on entry titles (Thomas Citharel)
### Changed
- [#1944](https://github.com/wallabag/wallabag/pull/1944), [#1953](https://github.com/wallabag/wallabag/pull/1953), [#1954](https://github.com/wallabag/wallabag/pull/1954) Due to branches renaming, update documentation and configuration (maxi62330, Nicolas Lœuillet)
- [#1942](https://github.com/wallabag/wallabag/pull/1942) Optimize import (Nicolas Lœuillet)
- [#1935](https://github.com/wallabag/wallabag/pull/1935) Update spanish translation (jami7)
- [#1929](https://github.com/wallabag/wallabag/pull/1929) Change guid and link in RSS feeds to give original entry URL (Nicolas Lœuillet)
- [#1918](https://github.com/wallabag/wallabag/pull/1918) Improve pagination when user has lot of entries (Nicolas Lœuillet)
- [#1916](https://github.com/wallabag/wallabag/pull/1916) Change PHP arrays and move test parameters in a separated file (Jeremy Benoist)
### Fixed
- [#1957](https://github.com/wallabag/wallabag/pull/1957) Fix translation for `Go to your account` button (Nicolas Lœuillet)
- [#1925](https://github.com/wallabag/wallabag/pull/1925) Redirect to homepage if refered is null (Nicolas Lœuillet)
- [#1912](https://github.com/wallabag/wallabag/pull/1912) Fix 500 Internal Server Error -> "Setting piwik_enabled couldn't be found" (Jeremy Benoist)
## [2.0.1] - 2016-04-11
### Added
- [Documentation about importing large file](http://doc.wallabag.org/en/v2/user/installation.html#installing-on-nginx) into nginx. (Nicolas Lœuillet)
- [Documentation about wallabag API](http://doc.wallabag.org/en/v2/developer/api.html) (Nicolas Lœuillet)
- [#1861](https://github.com/wallabag/wallabag/pull/1861) Round estimated time and add reading speed for Baggy (Nicolas Lœuillet)
- [Documentation about wallabag v1 CLI import](http://doc.wallabag.org/en/v2/user/migration.html#import-via-command-line-interface-cli) (Nicolas Lœuillet)
- [Add migrate link](http://doc.wallabag.org/en/v2/user/migration.html) in documentation (Nicolas Lœuillet)
### Changed
- [#1823](https://github.com/wallabag/wallabag/pull/1823) Persian translation (Masoud Abkenar)
- [#1901](https://github.com/wallabag/wallabag/pull/1901) Spanish translation (Jeremy Benoist)
- [#1879](https://github.com/wallabag/wallabag/pull/1879) Move tag form in Material theme (Nicolas Lœuillet)
### Fixed
- [#1903](https://github.com/wallabag/wallabag/pull/1903) Force server version to avoid connection error (Jeremy Benoist)
- [#1887](https://github.com/wallabag/wallabag/pull/1887) Fix duplicate article when added via the bookmarklet (Nicolas Lœuillet)
- [#1895](https://github.com/wallabag/wallabag/pull/1895) API: All the entries are fetched via GET /api/entries (Nicolas Lœuillet)
- [#1898](https://github.com/wallabag/wallabag/pull/1898) Fix estimated reading time in material view #1893 (Nicolas Lœuillet)
- [#1896](https://github.com/wallabag/wallabag/pull/1896) remove download_picture setting and manage show_printlink in material theme #1867 (Nicolas Lœuillet)
- [#1894](https://github.com/wallabag/wallabag/pull/1894) Fix documentation link in developer page (Nicolas Lœuillet)
- [#1891](https://github.com/wallabag/wallabag/pull/1891) Fix typo on configuration page (Nicolas Lœuillet)
- [#1884](https://github.com/wallabag/wallabag/pull/1884) Change the installation method in issue template (Nicolas Lœuillet)
- [#1844](https://github.com/wallabag/wallabag/pull/1844) Lock ocramius/proxy-manager (Jeremy Benoist)
- [#1840](https://github.com/wallabag/wallabag/pull/1840) Fix Archive page title translation (Nicolas Lœuillet)
- [#1801](https://github.com/wallabag/wallabag/pull/1804) Force user-agent for iansommerville.com (Jeremy Benoist)
### Removed
- [#1900](https://github.com/wallabag/wallabag/pull/1900) Remove empty portugese documentation (Nicolas Lœuillet)
- [#1868](https://github.com/wallabag/wallabag/pull/1868) Remove keyboard shortcut and add tagging rule panel in baggy (Nicolas Lœuillet)
- [#1824](https://github.com/wallabag/wallabag/pull/1824) Remove SMTP configuration environment overrides (Mathieu Bruyen)
## [2.0.0] - 2016-04-03
### Added
* save an article, read it, favorite it, archive it. (Hopefully)
* annotations: In each article you read, you can write annotations. ([read the doc](http://doc.wallabag.org/en/v2/user/annotations.html))
* filter entries by reading time, domain name, creation date, status, etc.
* assign tags to entries
* edit article titles
* a REST API ([you can have a look to the documentation](http://v2.wallabag.org/api/doc))
* authorization via oAuth2
* a new default theme, called `material`
* RSS feeds (with ability to limit number of articles)
* create a new account from the config page (for super admin only)
* recover passwords from login page (you have to fill your email on config page)
* picture preview, if available, is displayed for each entry
* Public registration
* migration from wallabag v1/v2 (based on JSON export) ([read the doc](http://doc.wallabag.org/en/v2/user/import.html))
* migration from Pocket (it works, but we need to implement asynchronous import: if you have too many articles, it can fail) ([read the doc](http://doc.wallabag.org/en/v2/user/import.html))
* exports in many formats (PDF, JSON, EPUB, MOBI, XML, CSV and TXT).
* 2-Factor authentication via email ([read the doc](http://doc.wallabag.org/en/v2/user/configuration.html#two-factor-authentication))
* Tagging rule: create a rule to automatically assign tags to entries! ([read the doc](http://doc.wallabag.org/en/v2/user/configuration.html#tagging-rules))
* Occitan, German, French, Turkish, Persian, Romanian, Polish, Danish, Spanish and English translations
* Quickstart for beginners (when you don't have any entries)
* Internal settings for administrator (the account created during installation)
* For 3rd apps developers, a developer page is available to create API token

30
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,30 @@
# How to contribute
## You found a bug
Please [open a new issue](https://github.com/wallabag/wallabag/issues/new).
To fix the bug quickly, we need some infos:
* your wallabag version (on top of the ./index.php file, and also on config page)
* your webserver installation :
* type of hosting (shared or dedicated)
* in case of a dedicated server, the server and OS used
* the php version used, eventually `phpinfo()`
* which storage system you choose at install (SQLite, MySQL/MariaDB or PostgreSQL)
* any problem on the `wallabag_compatibility_test.php` page
* any particular details which could be related
If relevant :
* the link you want to save and which causes problem
* the file you want to import into wallabag, or just an extract
If you have the skills :
* enable DEBUG mode and look the output at cache/log.txt
* look for errors into php and server logs
Note : If you have large portions of text, use [Github's Gist service](https://gist.github.com/) or other pastebin-like.
## You want to fix a bug or to add a feature
Please fork wallabag and work with **the dev branch** only. **Do not work on master branch**.
[Don't forget to read our guidelines](https://github.com/wallabag/wallabag/blob/dev/GUIDELINES.md).

View File

@ -1,5 +1,5 @@
source "https://rubygems.org" source "https://rubygems.org"
gem 'capistrano', '~> 3.4' gem 'capistrano', '~> 3.1'
gem 'capistrano-symfony', '~> 1.0.0.rc1' gem 'capistrano-symfony', '~> 0.1', :github => 'capistrano/symfony'
gem 'capistrano-composer', '~> 0.0.3' gem 'capistrano-composer', '~> 0.0.3'

View File

@ -1,3 +1,12 @@
GIT
remote: git://github.com/capistrano/symfony.git
revision: ca56a01b817097d2831400ef9b1867fc8e07dcf8
specs:
capistrano-symfony (0.4.0)
capistrano (~> 3.1)
capistrano-composer (~> 0.0.3)
capistrano-file-permissions (~> 0.1.0)
GEM GEM
remote: https://rubygems.org/ remote: https://rubygems.org/
specs: specs:
@ -7,12 +16,8 @@ GEM
sshkit (~> 1.3) sshkit (~> 1.3)
capistrano-composer (0.0.6) capistrano-composer (0.0.6)
capistrano (>= 3.0.0.pre) capistrano (>= 3.0.0.pre)
capistrano-file-permissions (1.0.0) capistrano-file-permissions (0.1.1)
capistrano (~> 3.0)
capistrano-symfony (1.0.0.rc1)
capistrano (~> 3.1) capistrano (~> 3.1)
capistrano-composer (~> 0.0.3)
capistrano-file-permissions (~> 1.0)
colorize (0.7.7) colorize (0.7.7)
i18n (0.7.0) i18n (0.7.0)
net-scp (1.2.1) net-scp (1.2.1)
@ -28,9 +33,9 @@ PLATFORMS
ruby ruby
DEPENDENCIES DEPENDENCIES
capistrano (~> 3.4) capistrano (~> 3.1)
capistrano-composer (~> 0.0.3) capistrano-composer (~> 0.0.3)
capistrano-symfony (~> 1.0.0.rc1) capistrano-symfony (~> 0.1)!
BUNDLED WITH BUNDLED WITH
1.11.2 1.10.6

View File

@ -1,239 +0,0 @@
module.exports = function (grunt) {
require('load-grunt-tasks')(grunt);
grunt.initConfig({
appDir: 'app/Resources/static',
buildDir: 'app/Resources/build',
modulesDir: 'node_modules',
releaseDir: 'web/bundles/wallabagcore',
postcss: {
material: {
options: {
map: {
inline: false,
},
processors: [
require('pixrem')(),
require('autoprefixer')({ browsers: 'last 2 versions' }),
require('cssnano')(),
],
},
src: '<%= buildDir %>/material.css',
dest: '<%= releaseDir %>/themes/material/css/style.min.css',
},
baggy: {
options: {
map: {
inline: false,
},
processors: [
require('pixrem')(),
require('autoprefixer')({ browsers: 'last 2 versions' }),
require('cssnano')(),
],
},
src: '<%= buildDir %>/baggy.css',
dest: '<%= releaseDir %>/themes/baggy/css/style.min.css',
},
},
concat: {
options: {
separator: ';',
},
cssMaterial: {
src: [
'node_modules/materialize-css/bin/materialize.css',
'<%= appDir %>/themes/material/css/*.css',
],
dest: '<%= buildDir %>/material.css',
},
cssBaggy: {
src: [
'<%= appDir %>/themes/baggy/css/*.css',
],
dest: '<%= buildDir %>/baggy.css',
},
},
browserify: {
dist: {
files: {
'<%= buildDir %>/material.browser.js': ['<%= appDir %>/themes/material/js/init.js'],
'<%= buildDir %>/baggy.browser.js': ['<%= appDir %>/themes/baggy/js/init.js']
}
},
options: {
sourceType: "module",
transform: [
["babelify", {
presets: ["es2015"]
}], ["browserify-shim", {
"jquery": {
"exports": "$"
},
"materialize": "materialize",
"jquery-ui": {
"depends": "jquery",
"exports": null
}
}]
],
browserifyOptions: {
browser: {
"jQuery": "./node_modules/jquery/dist/jquery.js",
"jquery.tinydot": "./node_modules/jquery.tinydot/src/jquery.tinydot.js",
"jquery.ui": "./node_modules/jquery-ui-browserify/dist/jquery-ui.js"
}
}
}
},
uglify: {
material: {
files: {
'<%= releaseDir %>/themes/material/js/material.min.js':
['<%= buildDir %>/material.browser.js'],
},
options: {
sourceMap: true,
},
},
baggy: {
files: {
'<%= releaseDir %>/themes/baggy/js/baggy.min.js':
['<%= buildDir %>/baggy.browser.js'],
},
options: {
sourceMap: true,
},
},
},
copy: {
pickerjs: {
expand: true,
cwd: '<%= modulesDir %>/pickadate/lib',
src: 'picker.js',
dest: '<%= buildDir %>',
},
annotator: {
expand: true,
cwd: '<%= modulesDir %>/annotator/pkg',
src: 'annotator.min.js',
dest: '<%= buildDir %>/themes/_global/js/',
},
baggyfonts: {
files: [
{
expand: true,
cwd: '<%= modulesDir %>/icomoon-free-npm/Font',
src: 'IcoMoon-Free.ttf',
dest: '<%= releaseDir %>/themes/baggy/fonts/',
},
{
expand: true,
cwd: '<%= modulesDir %>/ptsans-npm-webfont/fonts',
src: 'ptsansbold.woff',
dest: '<%= releaseDir %>/themes/baggy/fonts/',
},
{
expand: true,
cwd: '<%= modulesDir %>/material-design-icons-iconfont/dist/fonts/',
src: ['MaterialIcons-Regular.eot', 'MaterialIcons-Regular.woff2', 'MaterialIcons-Regular.woff', 'MaterialIcons-Regular.ttf'],
dest: '<%= releaseDir %>/themes/baggy/fonts/',
},
],
},
materialfonts: {
files: [
{
expand: true,
overwrite: true,
cwd: '<%= modulesDir %>/icomoon-free-npm/Font',
src: 'IcoMoon-Free.ttf',
dest: '<%= releaseDir %>/themes/material/fonts',
},
{
expand: true,
overwrite: true,
cwd: '<%= modulesDir %>/roboto-fontface/fonts/Roboto',
src: '*',
dest: '<%= releaseDir %>/themes/material/font/roboto',
},
{
expand: true,
overwrite: true,
cwd: '<%= modulesDir %>/material-design-icons-iconfont/dist/fonts/',
src: ['MaterialIcons-Regular.eot', 'MaterialIcons-Regular.woff2', 'MaterialIcons-Regular.woff', 'MaterialIcons-Regular.ttf'],
dest: '<%= releaseDir %>/themes/material/fonts/',
},
],
},
},
symlink: {
pics: {
files: [
{
expand: true,
overwrite: true,
cwd: '<%= appDir %>/themes/_global/',
src: 'img',
dest: '<%= releaseDir %>/themes/_global/',
},
],
},
},
clean: {
css: {
src: ['<%= buildDir %>/**/*.css'],
},
js: {
src: ['<%= buildDir %>/**/*.js', '<%= buildDir %>/**/*.map'],
},
all: {
src: ['./<%= buildDir %>'],
},
release: {
src: ['./<%= releaseDir %>/*'],
}
},
eslint: {
target: ['<%= appDir %>/themes/material/js/init.js', '<%= appDir %>/themes/baggy/js/init.js']
},
stylelint: {
target: ['<%= appDir %>/themes/material/css/*.css', '<%= appDir %>/themes/baggy/css/*.css']
}
});
grunt.registerTask(
'fonts',
'Install fonts',
['copy:baggyfonts', 'copy:materialfonts']
);
grunt.registerTask(
'js',
'Build and install js files',
['clean:js', 'copy:pickerjs', 'browserify', 'uglify']
);
grunt.registerTask(
'default',
'Build and install everything',
['clean', 'copy:pickerjs', 'concat', 'browserify', 'uglify', 'postcss', 'copy', 'symlink']
);
grunt.registerTask(
'css',
'Compiles the stylesheets.',
['clean:css', 'concat:cssMaterial', 'concat:cssBaggy', 'postcss']
);
grunt.registerTask(
'tests',
'Test css and js style conformity',
['eslint', 'stylelint', 'default']
)
};

View File

@ -1,25 +1,23 @@
[![Build Status](https://api.travis-ci.org/wallabag/wallabag.svg?branch=master)](https://travis-ci.org/wallabag/wallabag) [![Build Status](https://travis-ci.org/wallabag/wallabag.svg?branch=v2)](https://travis-ci.org/wallabag/wallabag)
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/wallabag/wallabag/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/wallabag/wallabag/?branch=master) [![Code Coverage](https://scrutinizer-ci.com/g/wallabag/wallabag/badges/coverage.png?b=v2)](https://scrutinizer-ci.com/g/wallabag/wallabag/?branch=v2)
[![Gitter](https://badges.gitter.im/gitterHQ/gitter.svg)](https://gitter.im/wallabag/wallabag) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/wallabag/wallabag/badges/quality-score.png?b=v2)](https://scrutinizer-ci.com/g/wallabag/wallabag/?branch=v2)
# What is wallabag? # What is wallabag?
wallabag is a self hostable application allowing you to not miss any content anymore. wallabag is a self hostable application allowing you to not miss any content anymore.
Click, save and read it when you can. It extracts content so that you can read it when you have time. Click, save and read it when you can. It extracts content so that you can read it when you have time.
More informations on our website: [wallabag.org](https://wallabag.org) More informations on our website: [wallabag.org](http://wallabag.org)
# Install wallabag # Want to test the v2?
If you don't have it yet, please [install composer](https://getcomposer.org/download/) or be sure to use Composer 1.2 (`composer selfupdate` can help you about that). Read [our documentation](http://doc.wallabag.org) to have more information about installation. Keep in mind it's an **unstable** branch, everything can be broken :)
Then you can install wallabag by executing the following commands:
If you don't have it yet, please [install composer](https://getcomposer.org/download/). Then you can install wallabag by executing the following commands:
``` ```
git clone https://github.com/wallabag/wallabag.git composer create-project wallabag/wallabag wallabag 2.0.*@alpha
cd wallabag php bin/console wallabag:install
git checkout 2.1.1 php bin/console server:run
SYMFONY_ENV=prod composer install --no-dev -o --prefer-dist
php bin/console wallabag:install --env=prod
php bin/console server:run --env=prod
``` ```
## License ## License

View File

@ -1,67 +0,0 @@
## Definition
A release is mostly a git tag of http://github.com/wallabag/wallabag, following [semantic versioning](http://semver.org).
The last release at the time of writing is 2.0.0-alpha.2, from the v2 branch.
### Steps to release
During this documentation, we assume the release is `release-2.0.0-beta.1`.
#### Files to edit
- `app/config/config.yml` (`wallabag_core.version`)
- `README.md` (`composer create-project` command)
- `docs/en/user/installation.rst` and its translations (`composer create-project` command)
#### Create release on GitHub
- Run these commands to create the tag:
```
git checkout v2
git pull origin v2
git checkout -b release-2.0.0-beta.1
SYMFONY_ENV=prod composer up --no-dev
git add --force composer.lock
git add README.md
git commit -m "Release wallabag 2.0.0-beta.1"
git push origin release-2.0.0-beta.1
```
- Create a new pull request with this title `DON'T MERGE Release wallabag 2.0.0-beta.1`. This pull request is used to launch builds on Travis-CI.
- Run these commands to create the package:
```
git clone git@github.com:wallabag/wallabag.git -b release-2.0.0-beta.1 release-2.0.0-beta.1
SYMFONY_ENV=prod composer up -d=release-2.0.0-beta.1 --no-dev
tar czf wallabag-release-2.0.0-beta.1.tar.gz --exclude="var/*" --exclude=".git" release-2.0.0-beta.1
```
- [Create the new release on GitHub](https://github.com/wallabag/wallabag/releases/new). You have to upload on this page the package.
- Delete the `release-2.0.0-beta.1` branch and close the pull request (**DO NOT MERGE IT**).
- Update the URL shortener (used on `wllbg.org` to generate links like `http://wllbg.org/latest-v2-package` or `http://wllbg.org/latest-v2`)
- Update [the downloads page](https://github.com/wallabag/wallabag.org/blob/master/content/pages/download.md) on the website (MD5 sum, release date)
- Drink a beer!
### `composer.lock`
A release tag must contain a `composer.lock` file. It sets which dependencies were available at the time a release was done,
making it easier to fix issues after the release. It also speeds up `composer install` on stable versions a LOT, by skipping the
dependencies resolution part.
Since `composer.lock` is ignored by default, either it must be removed from `.gitignore` _in the release branch_,
or it must be added using `git add --force composer.lock`.
### Target PHP version
`composer.lock` is _always_ built for a particular version, by default the one it is generated (with `composer update`).
If the PHP version used to generate the .lock isn't a widely available one (like PHP 7), a more common one should
be locally specified in `composer.lock`:
```json
"config": {
"platform": {
"php": "5.5.9",
"ext-something": "4.0"
}
}
```

View File

@ -13,6 +13,7 @@ class AppKernel extends Kernel
new Symfony\Bundle\TwigBundle\TwigBundle(), new Symfony\Bundle\TwigBundle\TwigBundle(),
new Symfony\Bundle\MonologBundle\MonologBundle(), new Symfony\Bundle\MonologBundle\MonologBundle(),
new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(), new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
new Symfony\Bundle\AsseticBundle\AsseticBundle(),
new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(), new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(), new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
new FOS\RestBundle\FOSRestBundle(), new FOS\RestBundle\FOSRestBundle(),
@ -21,24 +22,17 @@ class AppKernel extends Kernel
new Nelmio\ApiDocBundle\NelmioApiDocBundle(), new Nelmio\ApiDocBundle\NelmioApiDocBundle(),
new Nelmio\CorsBundle\NelmioCorsBundle(), new Nelmio\CorsBundle\NelmioCorsBundle(),
new Liip\ThemeBundle\LiipThemeBundle(), new Liip\ThemeBundle\LiipThemeBundle(),
new Wallabag\CoreBundle\WallabagCoreBundle(),
new Wallabag\ApiBundle\WallabagApiBundle(),
new Bazinga\Bundle\HateoasBundle\BazingaHateoasBundle(), new Bazinga\Bundle\HateoasBundle\BazingaHateoasBundle(),
new Lexik\Bundle\FormFilterBundle\LexikFormFilterBundle(), new Lexik\Bundle\FormFilterBundle\LexikFormFilterBundle(),
new FOS\OAuthServerBundle\FOSOAuthServerBundle(), new FOS\OAuthServerBundle\FOSOAuthServerBundle(),
new Wallabag\UserBundle\WallabagUserBundle(),
new Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle(), new Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle(),
new Scheb\TwoFactorBundle\SchebTwoFactorBundle(), new Scheb\TwoFactorBundle\SchebTwoFactorBundle(),
new KPhoen\RulerZBundle\KPhoenRulerZBundle(), new KPhoen\RulerZBundle\KPhoenRulerZBundle(),
new Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle(),
new Craue\ConfigBundle\CraueConfigBundle(),
new Lexik\Bundle\MaintenanceBundle\LexikMaintenanceBundle(),
new WhiteOctober\PagerfantaBundle\WhiteOctoberPagerfantaBundle(),
// wallabag bundles
new Wallabag\CoreBundle\WallabagCoreBundle(),
new Wallabag\ApiBundle\WallabagApiBundle(),
new Wallabag\UserBundle\WallabagUserBundle(),
new Wallabag\ImportBundle\WallabagImportBundle(), new Wallabag\ImportBundle\WallabagImportBundle(),
new Wallabag\AnnotationBundle\WallabagAnnotationBundle(), new Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle(),
new OldSound\RabbitMqBundle\OldSoundRabbitMqBundle(),
]; ];
if (in_array($this->getEnvironment(), ['dev', 'test'], true)) { if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {

View File

@ -1,46 +0,0 @@
<?php
namespace Application\Migrations;
use Doctrine\DBAL\Migrations\AbstractMigration;
use Doctrine\DBAL\Schema\Schema;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
class Version20160410190541 extends AbstractMigration implements ContainerAwareInterface
{
/**
* @var ContainerInterface
*/
private $container;
public function setContainer(ContainerInterface $container = null)
{
$this->container = $container;
}
private function getTable($tableName)
{
return $this->container->getParameter('database_table_prefix') . $tableName;
}
/**
* @param Schema $schema
*/
public function up(Schema $schema)
{
$this->addSql('ALTER TABLE `'.$this->getTable('entry').'` ADD `uuid` LONGTEXT DEFAULT NULL');
$this->addSql("INSERT INTO `".$this->getTable('craue_config_setting')."` (`name`, `value`, `section`) VALUES ('share_public', '1', 'entry')");
}
/**
* @param Schema $schema
*/
public function down(Schema $schema)
{
$this->abortIf($this->connection->getDatabasePlatform()->getName() != 'sqlite', 'This down migration can\'t be executed on SQLite databases, because SQLite don\'t support DROP COLUMN.');
$this->addSql('ALTER TABLE `'.$this->getTable('entry').'` DROP `uuid`');
$this->addSql("DELETE FROM `".$this->getTable('craue_config_setting')."` WHERE `name` = 'share_public'");
}
}

View File

@ -1,48 +0,0 @@
<?php
namespace Application\Migrations;
use Doctrine\DBAL\Migrations\AbstractMigration;
use Doctrine\DBAL\Schema\Schema;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
class Version20160812120952 extends AbstractMigration implements ContainerAwareInterface
{
/**
* @var ContainerInterface
*/
private $container;
public function setContainer(ContainerInterface $container = null)
{
$this->container = $container;
}
private function getTable($tableName)
{
return $this->container->getParameter('database_table_prefix') . $tableName;
}
/**
* @param Schema $schema
*/
public function up(Schema $schema)
{
if ($this->connection->getDatabasePlatform()->getName() == 'sqlite') {
$this->addSql('ALTER TABLE '.$this->getTable('oauth2_clients').' ADD name longtext DEFAULT NULL');
} else {
$this->addSql('ALTER TABLE '.$this->getTable('oauth2_clients').' ADD name longtext COLLATE \'utf8_unicode_ci\' DEFAULT NULL');
}
}
/**
* @param Schema $schema
*/
public function down(Schema $schema)
{
$this->abortIf($this->connection->getDatabasePlatform()->getName() == 'sqlite', 'Migration can only be executed safely on \'mysql\' or \'postgresql\'.');
$this->addSql('ALTER TABLE '.$this->getTable('oauth2_clients').' DROP COLUMN name');
}
}

View File

@ -1,42 +0,0 @@
<?php
namespace Application\Migrations;
use Doctrine\DBAL\Migrations\AbstractMigration;
use Doctrine\DBAL\Schema\Schema;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
class Version20160911214952 extends AbstractMigration implements ContainerAwareInterface
{
/**
* @var ContainerInterface
*/
private $container;
public function setContainer(ContainerInterface $container = null)
{
$this->container = $container;
}
private function getTable($tableName)
{
return $this->container->getParameter('database_table_prefix') . $tableName;
}
/**
* @param Schema $schema
*/
public function up(Schema $schema)
{
$this->addSql('INSERT INTO `'.$this->getTable('craue_config_setting').'` (`name`, `value`, `section`) VALUES (\'import_with_redis\', \'0\', \'import\')');
$this->addSql('INSERT INTO `'.$this->getTable('craue_config_setting').'` (`name`, `value`, `section`) VALUES (\'import_with_rabbitmq\', \'0\', \'import\')');
}
/**
* @param Schema $schema
*/
public function down(Schema $schema)
{
}
}

View File

@ -1,46 +0,0 @@
<?php
namespace Application\Migrations;
use Doctrine\DBAL\Migrations\AbstractMigration;
use Doctrine\DBAL\Schema\Schema;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
class Version20160916201049 extends AbstractMigration implements ContainerAwareInterface
{
/**
* @var ContainerInterface
*/
private $container;
public function setContainer(ContainerInterface $container = null)
{
$this->container = $container;
}
private function getTable($tableName)
{
return $this->container->getParameter('database_table_prefix') . $tableName;
}
/**
* @param Schema $schema
*/
public function up(Schema $schema)
{
$this->addSql('ALTER TABLE '.$this->getTable('config').' ADD pocket_consumer_key VARCHAR(255) DEFAULT NULL');
$this->addSql("DELETE FROM `".$this->getTable('craue_config_setting')."` WHERE `name` = 'pocket_consumer_key';");
}
/**
* @param Schema $schema
*/
public function down(Schema $schema)
{
$this->abortIf($this->connection->getDatabasePlatform()->getName() == 'sqlite', 'Migration can only be executed safely on \'mysql\' or \'postgresql\'.');
$this->addSql('ALTER TABLE `'.$this->getTable('config').'` DROP pocket_consumer_key');
$this->addSql("INSERT INTO `".$this->getTable('craue_config_setting')."` (`name`, `value`, `section`) VALUES ('pocket_consumer_key', NULL, 'import')");
}
}

View File

@ -1,31 +0,0 @@
download_pictures: Download billeder på din server
carrot: Aktiver deling til Carrot
diaspora_url: Diaspora URL, hvis tjenesten er aktiv
export_epub: Aktiver eksport til ePub
export_mobi: Aktiver eksport til .mobi
export_pdf: Aktiver eksport til PDF
export_csv: Aktiver eksport til CSV
export_json: Aktiver eksport til JSON
export_txt: Aktiver eksport til TXT
export_xml: Aktiver eksport til XML
# import_with_rabbitmq: Enable RabbitMQ to import data asynchronously
# import_with_redis: Enable Redis to import data asynchronously
shaarli_url: Shaarli-URL, hvis tjenesten er aktiv
share_diaspora: Aktiver deling til Diaspora
share_mail: Aktiver deling med email
share_shaarli: Aktiver deling gennem Shaarli
share_twitter: Aktiver deling gennem Twitter
show_printlink: Vis et link til print-indhold
wallabag_support_url: Support-URL for wallabag
wallabag_url: URL for *sin* wallabag-installation
entry: "artikel"
export: "eksport"
import: "import"
misc: "misc"
modify_settings: "Gem ændring"
piwik_host: Hosting af din side hos Piwik
piwik_site_id: ID for din side hos Piwik
piwik_enabled: Aktiver Piwik
demo_mode_enabled: "Aktiver demo-indstilling? (anvendes kun til wallabags offentlige demo)"
demo_mode_username: "Demobruger"
# share_public: Allow public url for entries

View File

@ -1,31 +0,0 @@
download_pictures: Bilder auf den Server herunterladen
carrot: Teilen zu Carrot aktivieren
diaspora_url: Diaspora-URL, sofern der Service aktiviert ist
export_epub: ePUB-Export aktivieren
export_mobi: .mobi-Export aktivieren
export_pdf: PDF-Export aktivieren
export_csv: CSV-Export aktivieren
export_json: JSON-Export aktivieren
export_txt: TXT-Export aktivieren
export_xml: XML-Export aktivieren
# import_with_rabbitmq: Enable RabbitMQ to import data asynchronously
# import_with_redis: Enable Redis to import data asynchronously
shaarli_url: Shaarli-URL, sofern der Service aktiviert ist
share_diaspora: Teilen zu Diaspora aktiveren
share_mail: Teilen via E-Mail aktiveren
share_shaarli: Teilen zu Shaarli aktiveren
share_twitter: Teilen zu Twitter aktiveren
show_printlink: Link anzeigen, um den Inhalt auszudrucken
wallabag_support_url: Support-URL für wallabag
wallabag_url: URL von *deiner* wallabag-Instanz
entry: "Artikel"
export: "Export"
import: "Import"
misc: "Verschiedenes"
modify_settings: "Übernehmen"
piwik_host: Host deiner Webseite in Piwik
piwik_site_id: ID deiner Webseite in Piwik
piwik_enabled: Piwik aktivieren
demo_mode_enabled: "Test-Modus aktivieren? (nur für die öffentliche wallabag-Demo genutzt)"
demo_mode_username: "Test-Benutzer"
# share_public: Allow public url for entries

View File

@ -1,31 +0,0 @@
download_pictures: Download pictures on your server
carrot: Enable share to Carrot
diaspora_url: Diaspora URL, if the service is enabled
export_epub: Enable ePub export
export_mobi: Enable .mobi export
export_pdf: Enable PDF export
export_csv: Enable CSV export
export_json: Enable JSON export
export_txt: Enable TXT export
export_xml: Enable XML export
import_with_rabbitmq: Enable RabbitMQ to import data asynchronously
import_with_redis: Enable Redis to import data asynchronously
shaarli_url: Shaarli URL, if the service is enabled
share_diaspora: Enable share to Diaspora
share_mail: Enable share by email
share_shaarli: Enable share to Shaarli
share_twitter: Enable share to Twitter
show_printlink: Display a link to print content
wallabag_support_url: Support URL for wallabag
wallabag_url: URL of *your* wallabag instance
entry: "article"
export: "export"
import: "import"
misc: "misc"
modify_settings: "apply"
piwik_host: Host of your website in Piwik
piwik_site_id: ID of your website in Piwik
piwik_enabled: Enable Piwik
demo_mode_enabled: "Enable demo mode ? (only used for the wallabag public demo)"
demo_mode_username: "Demo user"
share_public: Allow public url for entries

View File

@ -1,31 +0,0 @@
download_pictures: Descargar imágenes
carrot: Activar compartir con Carrot
diaspora_url: Diaspora URL, si el servicio está activado
export_epub: Activar exportación a ePub
export_mobi: Activar exportación a .mobi
export_pdf: Activar exportación a PDF
export_csv: Activar exportación a CSV
export_json: Activar exportación a JSON
export_txt: Activar exportación a TXT
export_xml: Activar exportación a XML
# import_with_rabbitmq: Enable RabbitMQ to import data asynchronously
# import_with_redis: Enable Redis to import data asynchronously
shaarli_url: Shaarli URL, si el servicio está activado
share_diaspora: Activar compartir con Diaspora
share_mail: Activar compartir con email
share_shaarli: Activar compartir con Shaarli
share_twitter: Activar compartir con Twitter
show_printlink: Mostrar un enlace para imprimir contenido
wallabag_support_url: URL de soporte de wallabag
wallabag_url: URL de *tu* instancia de wallabag
entry: "artículo"
export: "exportar"
import: "importar"
misc: "misc"
modify_settings: "modificar configuración"
piwik_host: Host de tu website de Piwik
piwik_site_id: ID de tu website de Piwik
piwik_enabled: Activar Piwik
demo_mode_enabled: "Activar modo demo (sólo usado para la demo de wallabag)"
demo_mode_username: "Nombre de usuario demo"
# share_public: Allow public url for entries

View File

@ -1,31 +0,0 @@
download_pictures: تصاویر را در کارگزار خودتان باربگیرید
carrot: فعال‌سازی هم‌رسانی به Carrot
diaspora_url: نشانی Diaspora، اگر فعال بود
export_epub: فعال‌سازی برون‌سپاری به ePub
export_mobi: فعال‌سازی برون‌سپاری به mobi
export_pdf: فعال‌سازی برون‌سپاری به PDF
export_csv: فعال‌سازی برون‌سپاری به CSV
export_json: فعال‌سازی برون‌سپاری به JSON
export_txt: فعال‌سازی برون‌سپاری به TXT
export_xml: فعال‌سازی برون‌سپاری به XML
# import_with_rabbitmq: Enable RabbitMQ to import data asynchronously
# import_with_redis: Enable Redis to import data asynchronously
shaarli_url: نشانی Shaarli، اگر فعال بود
share_diaspora: فعال‌سازی هم‌رسانی به Diaspora
share_mail: فعال‌سازی هم‌رسانی با ایمیل
share_shaarli: فعال‌سازی هم‌رسانی به Shaarli
share_twitter: فعال‌سازی هم‌رسانی به Twitter
show_printlink: نمایش پیوندی برای چاپ مطلب
wallabag_support_url: نشانی صفحهٔ پشتیبانی wallabag
wallabag_url: نشانی صفحهٔ wallabag *شما*
entry: "مقاله"
export: "برون‌سپاری"
import: "درون‌ریزی"
misc: "غیره"
modify_settings: "اعمال"
# piwik_host: Host of your website in Piwik
# piwik_site_id: ID of your website in Piwik
# piwik_enabled: Enable Piwik
# demo_mode_enabled: "Enable demo mode ? (only used for the wallabag public demo)"
# demo_mode_username: "Demo user"
# share_public: Allow public url for entries

View File

@ -1,31 +0,0 @@
download_pictures: Télécharger les images sur le serveur
carrot: Activer le partage vers Carrot
diaspora_url: URL de Diaspora, si le service Diaspora est activé
export_epub: Activer l'export ePub
export_mobi: Activer l'export .mobi
export_pdf: Activer l'export PDF
export_csv: Activer l'export CSV
export_json: Activer l'export JSON
export_txt: Activer l'export TXT
export_xml: Activer l'export XML
import_with_rabbitmq: Activer RabbitMQ pour gérer les imports de façon asynchrone
import_with_redis: Activer Redis pour gérer les imports de façon asynchrone
shaarli_url: URL de Shaarli, si le service Shaarli est activé
share_diaspora: Activer le partage vers Diaspora
share_mail: Activer le partage par email
share_shaarli: Activer le partage vers Shaarli
share_twitter: Activer le partage vers Twitter
show_printlink: Afficher un lien pour imprimer
wallabag_support_url: URL de support de wallabag
wallabag_url: URL de *votre* instance de wallabag
entry: "article"
export: "export"
import: "import"
misc: "divers"
modify_settings: "appliquer"
piwik_host: URL de votre site dans Piwik
piwik_site_id: ID de votre site dans Piwik
piwik_enabled: Activer Piwik
demo_mode_enabled: "Activer le mode démo ? (utiliser uniquement pour la démo publique de wallabag)"
demo_mode_username: "Utilisateur de la démo"
share_public: Autoriser une URL publique pour les articles

View File

@ -1,31 +0,0 @@
download_pictures: Scarica le immagini sul tuo server
carrot: Abilita la condivisione con Carrot
diaspora_url: Diaspora URL, se il servizio è abilitato
export_epub: Abilita esportazione ePub
export_mobi: Abilita esportazione .mobi
export_pdf: Abilita esportazione PDF
export_csv: Abilita esportazione CSV
export_json: Abilita esportazione JSON
export_txt: Abilita esportazione TXT
export_xml: Abilita esportazione XML
# import_with_rabbitmq: Enable RabbitMQ to import data asynchronously
# import_with_redis: Enable Redis to import data asynchronously
shaarli_url: Shaarli URL, se il servizio è abilitato
share_diaspora: Abilita la condivisione con Diaspora
share_mail: Abilita la condivisione per email
share_shaarli: Abilita la condivisione con Shaarli
share_twitter: Abilita la condivisione con Twitter
show_printlink: Mostra un collegamento per stampare il contenuto
wallabag_support_url: URL di supporto per wallabag
wallabag_url: URL della *tua* installazione di wallabag
entry: "contenuto"
export: "esporta"
import: "importa"
misc: "misc"
modify_settings: "applica"
piwik_host: Host del tuo sito in Piwik
piwik_site_id: ID del tuo sito in Piwik
piwik_enabled: Abilita Piwik
demo_mode_enabled: "Abilita modalità demo ? (usato solo per la demo pubblica di wallabag)"
demo_mode_username: "Utente Demo"
# share_public: Allow public url for entries

View File

@ -1,31 +0,0 @@
download_pictures: Telecargar los imatges sul servidor
carrot: Activar lo partatge cap a Carrot
diaspora_url: URL de Diaspora, se lo servici Diaspora es activat
export_epub: Activar l'expòrt ePub
export_mobi: Activar l'expòrt .mobi
export_pdf: Activar l'expòrt PDF
export_csv: Activar l'expòrt CSV
export_json: Activar l'expòrt JSON
export_txt: Activar l'expòrt TXT
export_xml: Activar l'expòrt XML
# import_with_rabbitmq: Enable RabbitMQ to import data asynchronously
# import_with_redis: Enable Redis to import data asynchronously
shaarli_url: URL de Shaarli, se lo servici Shaarli es activat
share_diaspora: Activar lo partatge cap a Diaspora
share_mail: Activar lo partatge per corrièl
share_shaarli: Activar lo partatge cap a Shaarli
share_twitter: Activar lo partatge cap a Twitter
show_printlink: Afichar un ligam per imprimir
wallabag_support_url: URL d'assisténcia de wallabag
wallabag_url: URL de *vòstra* instància de wallabag
entry: "article"
export: "expòrt"
import: "impòrt"
misc: "divèrs"
modify_settings: "aplicar"
piwik_host: URL de vòstre site dins Piwik
piwik_site_id: ID de vòstre site dins Piwik
piwik_enabled: Activar Piwik
demo_mode_enabled: "Activar lo mode demostracion ? (utilizar solament per la demostracion publica de wallabag)"
demo_mode_username: "Utilizaire de la demostracion"
# share_public: Allow public url for entries

View File

@ -1,31 +0,0 @@
download_pictures: Pobierz obrazy na swój serwer
carrot: Włącz udostępnianie dla Carrot
diaspora_url: Adres URL Diaspora, jeżeli usługa jest włączona
export_epub: Włącz eksport do ePub
export_mobi: Włącz eksport do .mobi
export_pdf: Włącz eksport do PDF
export_csv: Włącz eksport do CSV
export_json: Włącz eksport do JSON
export_txt: Włącz eksport do TXT
export_xml: Włącz eksport do XML
import_with_rabbitmq: Włącz RabbitMQ dla asynchronicznego importu danych
import_with_redis: Włącz Redis dla asynchronicznego importu danych
shaarli_url: Adress URL Shaarli, jeżeli usługa jest włączona
share_diaspora: Włącz udostępnianie dla Diaspora
share_mail: Włącz udostępnianie przez email
share_shaarli: Włącz udostępnianie dla Shaarli
share_twitter: Włącz udostępnianie dla Twitter
show_printlink: Pokaż link do wydrukowania zawartości
wallabag_support_url: Adres URL wsparcia dla wallabag
wallabag_url: Adres *twojej* instacji wallabag
entry: "artykuł"
export: "eksport"
import: "import"
misc: "różne"
modify_settings: "zatwierdz"
piwik_host: Host twojej strony Piwik
piwik_site_id: ID twojej strony Piwik
piwik_enabled: Włacz Piwik
demo_mode_enabled: "Włacz tryb demo? (używany wyłącznie dla publicznej demonstracji Wallabag)"
demo_mode_username: "Użytkownik Demonstracyjny"
share_public: Zezwalaj na publiczny adres url dla wpisow

View File

@ -1,31 +0,0 @@
download_pictures: Descarcă poze pe server
carrot: Permite share către Carrot
diaspora_url: Diaspora URL, dacă serviciul este permis
export_epub: Permite exportare ePub
export_mobi: Permite exportare .mobi
export_pdf: Permite exportare PDF
export_csv: Permite exportare CSV
export_json: Permite exportare JSON
export_txt: Permite exportare TXT
export_xml: Permite exportare XML
# import_with_rabbitmq: Enable RabbitMQ to import data asynchronously
# import_with_redis: Enable Redis to import data asynchronously
shaarli_url: Shaarli URL, dacă serviciul este permis
share_diaspora: Permite share către Diaspora
share_mail: Permite share prin email
share_shaarli: Permite share către Shaarli
share_twitter: Permite share către Twitter
show_printlink: Afișează un link pentru a printa content-ul
wallabag_support_url: URL-ul de suport pentru wallabag
wallabag_url: URL-ul instanței tale wallabag
entry: "alticol"
export: "exportă"
import: "importă"
misc: "diverse"
modify_settings: "aplică"
# piwik_host: Host of your website in Piwik
# piwik_site_id: ID of your website in Piwik
# piwik_enabled: Enable Piwik
# demo_mode_enabled: "Enable demo mode ? (only used for the wallabag public demo)"
# demo_mode_username: "Demo user"
# share_public: Allow public url for entries

View File

@ -1,31 +0,0 @@
# download_pictures: Download pictures on your server
# carrot: Enable share to Carrot
# diaspora_url: Diaspora URL, if the service is enabled
# export_epub: Enable ePub export
# export_mobi: Enable .mobi export
# export_pdf: Enable PDF export
# export_csv: Enable CSV export
# export_json: Enable JSON export
# export_txt: Enable TXT export
# export_xml: Enable XML export
# import_with_rabbitmq: Enable RabbitMQ to import data asynchronously
# import_with_redis: Enable Redis to import data asynchronously
# shaarli_url: Shaarli URL, if the service is enabled
# share_diaspora: Enable share to Diaspora
# share_mail: Enable share by email
# share_shaarli: Enable share to Shaarli
# share_twitter: Enable share to Twitter
# show_printlink: Display a link to print content
# wallabag_support_url: Support URL for wallabag
# wallabag_url: URL of *your* wallabag instance
# entry: "article"
# export: "export"
# import: "import"
# misc: "misc"
# modify_settings: "apply"
# piwik_host: Host of your website in Piwik
# piwik_site_id: ID of your website in Piwik
# piwik_enabled: Enable Piwik
# demo_mode_enabled: "Enable demo mode ? (only used for the wallabag public demo)"
# demo_mode_username: "Demo user"
# share_public: Allow public url for entries

View File

@ -1,43 +0,0 @@
{% extends "WallabagCoreBundle::layout.html.twig" %}
{% block title %}{% trans %}internal settings{% endtrans %}{% endblock %}
{% block content %}
<div class="row">
<div class="col s12">
<div class="card-panel settings">
{{ form_start(form, {'attr': {'class': 'craue_config_settings_modify'}}) }}
{{ form_errors(form) }}
<div class="row">
<div class="div_tabs col s12">
<ul class="tabs">
{% for section in sections | craue_sortSections %}
<li class="tab col s3"><a href="#set-{{ section }}">{{ section | trans({}, 'CraueConfigBundle') }}</a></li>
{% endfor %}
</ul>
</div>
{% for section in sections | craue_sortSections %}
<div id="set-{{ section }}" class="col s12">
{% for setting in form.settings if setting.section.vars.value == section %}
{{ form_row(setting.name) }}
{{ form_row(setting.section) }}
{{ form_row(setting.value, {
'label': setting.name.vars.value | trans({}, 'CraueConfigBundle'),
}) }}
{% endfor %}
</div>
{% endfor %}
</div>
<button class="btn waves-effect waves-light" type="submit" name="action">
{{ 'modify_settings' | trans({}, 'CraueConfigBundle') }}
</button>
{{ form_rest(form) }}
{{ form_end(form) }}
</div>
</div>
</div>
{% endblock %}

View File

@ -1,2 +0,0 @@
Login: "Log ind"
Enter your email address below and we'll send you password reset instructions.: "Indtast din emailadresse nedenfor, så sender vi dig instrukser til at nulstille din adgangskode."

View File

@ -1,2 +0,0 @@
Login: "Anmelden"
Enter your email address below and we'll send you password reset instructions.: "Tippe deine E-Mail-Adresse unten ein und wir senden dir die Anweisungen, wie du dein Kennwort zurücksetzen kannst."

View File

@ -1,2 +0,0 @@
Login: "Logearse"
Enter your email address below and we'll send you password reset instructions.: "Introduzca su dirección de email y le enviaremos las instrucciones para resetear su contraseña."

View File

@ -1,2 +0,0 @@
Login: "Se connecter"
Enter your email address below and we'll send you password reset instructions.: "Renseignez votre adresse email, nous vous enverrons les instructions pour réinitialiser votre mot de passe."

View File

@ -1,2 +0,0 @@
Login: "Se connectar"
Enter your email address below and we'll send you password reset instructions.: "Picatz vòstra adreça de corrièl çai-jos, vos mandarem las instruccions per reïnicializar vòstre senhal."

View File

@ -1,2 +0,0 @@
Login: "Logowanie"
Enter your email address below and we'll send you password reset instructions.: "Wpisz poniżej swój adres email, abyśmy mogli wysłać ci instrukcję resetowania hasła."

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -1,6 +0,0 @@
top['bookmarklet-url@wallabag.org'] =
'<!DOCTYPE html><html><head><title>bag it!</title>' +
'<link rel="icon" href="tpl/img/favicon.ico" />' +
'</head><body><script>window.onload=function(){window.setTimeout' +
'(function(){history.back();},250);};</script></body></html>';

View File

@ -1,50 +0,0 @@
const $ = require('jquery');
function supportsLocalStorage() {
try {
return 'localStorage' in window && window.localStorage !== null;
} catch (e) {
return false;
}
}
function savePercent(id, percent) {
if (!supportsLocalStorage()) { return false; }
localStorage[`wallabag.article.${id}.percent`] = percent;
return true;
}
function retrievePercent(id) {
if (!supportsLocalStorage()) { return false; }
const bheight = $(document).height();
const percent = localStorage[`wallabag.article.${id}.percent`];
const scroll = bheight * percent;
$('html,body').animate({ scrollTop: scroll }, 'fast');
return true;
}
function initFilters() {
// no display if filters not available
if ($('div').is('#filters')) {
$('#button_filters').show();
$('.button-collapse-right').sideNav({ edge: 'right' });
$('#clear_form_filters').on('click', () => {
$('#filters input').val('');
$('#filters :checked').removeAttr('checked');
return false;
});
}
}
function initExport() {
// no display if export not available
if ($('div').is('#export')) {
$('#button_export').show();
$('.button-collapse-right').sideNav({ edge: 'right' });
}
}
export { savePercent, retrievePercent, initFilters, initExport };

View File

@ -1,6 +0,0 @@
@font-face {
font-family: "PT Sans";
font-style: normal;
font-weight: 700;
src: local("PT Sans Bold"), local("PTSans-Bold"), url("../fonts/ptsansbold.woff") format("woff");
}

View File

@ -1,19 +0,0 @@
.messages.error.install {
border: 1px solid #c42608;
color: #c00 !important;
background: #fff0ef;
text-align: left;
}
.messages.notice.install {
border: 1px solid #ebcd41;
color: #000;
background: #fffcd3;
text-align: left;
}
.messages.success.install {
border: 1px solid #6dc70c;
background: #e0fbcc !important;
text-align: left;
}

View File

@ -1,66 +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 > header,
#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%;
padding: 0;
margin: 0;
margin-left: 0;
padding-right: 0;
padding-bottom: 0;
}
#article {
width: 100%;
}
}

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 307 KiB

View File

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

View File

@ -1,314 +0,0 @@
import { savePercent, retrievePercent } from '../../_global/js/tools';
import { toggleSaveLinkForm } from './uiTools';
const $ = global.jquery = require('jquery');
require('jquery.cookie');
require('jquery-ui-browserify');
const annotator = require('annotator');
$.fn.ready(() => {
const $listmode = $('#listmode');
const $listentries = $('#list-entries');
/* ==========================================================================
Menu
========================================================================== */
$('#menu').click(() => {
$('#links').toggleClass('menu--open');
const content = $('#content');
if (content.hasClass('opacity03')) {
content.removeClass('opacity03');
}
});
/* ==========================================================================
List mode or Table Mode
========================================================================== */
$listmode.click(() => {
if ($.cookie('listmode') === 1) {
// Cookie
$.removeCookie('listmode');
$listentries.removeClass('listmode');
$listmode.removeClass('tablemode');
$listmode.addClass('listmode');
} else {
// Cookie
$.cookie('listmode', 1, { expires: 365 });
$listentries.addClass('listmode');
$listmode.removeClass('listmode');
$listmode.addClass('tablemode');
}
});
/* ==========================================================================
Cookie listmode
========================================================================== */
if ($.cookie('listmode') === 1) {
$listentries.addClass('listmode');
$listmode.removeClass('listmode');
$listmode.addClass('tablemode');
}
/* ==========================================================================
Add tag panel
========================================================================== */
$('#nav-btn-add-tag').on('click', () => {
$('.nav-panel-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;
});
}
/* ==========================================================================
Annotations & Remember position
========================================================================== */
if ($('article').length) {
const app = new annotator.App();
app.include(annotator.ui.main, {
element: document.querySelector('article'),
});
const x = JSON.parse($('#annotationroutes').html());
app.include(annotator.storage.http, x);
app.start().then(() => {
app.annotations.load({ entry: x.entryId });
});
$(window).scroll(() => {
const scrollTop = $(window).scrollTop();
const docHeight = $(document).height();
const scrollPercent = (scrollTop) / (docHeight);
const scrollPercentRounded = Math.round(scrollPercent * 100) / 100;
savePercent(x.entryId, scrollPercentRounded);
});
retrievePercent(x.entryId);
$(window).resize(() => {
retrievePercent(x.entryId);
});
}
/**
* Close window after adding entry if popup
*/
const currentUrl = window.location.href;
if (currentUrl.match('&closewin=true')) {
window.close();
}
/**
* 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('');
$('#plainurl').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" ` +
'alt="add to wallabag" title="add to wallabag"></a>'
);
$('.add-to-wallabag-link-after').click((event) => {
toggleSaveLinkForm($(this).attr('href'), event);
event.preventDefault();
});
});

View File

@ -1,35 +0,0 @@
const $ = require('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 { toggleSaveLinkForm };

View File

@ -1,751 +0,0 @@
/* ==========================================================================
Sommaire
0 = Common
1 = Nav
2 = Side-nav
3 = Filters slider
4 = Cards
5 = Article
6 = Media queries
7 = Font
8 = Others
========================================================================== */
/* ==========================================================================
0 = Common
========================================================================== */
@font-face {
font-family: icomoon;
src: url("../fonts/IcoMoon-Free.ttf");
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'Material Icons';
font-style: normal;
font-weight: 400;
src: url(../fonts/MaterialIcons-Regular.eot);
/* For IE6-8 */
src: local("Material Icons"), local("MaterialIcons-Regular"), url(../fonts/MaterialIcons-Regular.woff2) format("woff2"), url(../fonts/MaterialIcons-Regular.woff) format("woff"), url(../fonts/MaterialIcons-Regular.ttf) format("truetype");
}
.material-icons {
font-family: 'Material Icons';
font-weight: normal;
font-style: normal;
font-size: 24px; /* Preferred icon size */
width: 1em;
height: 1em;
display: inline-block;
line-height: 1;
text-transform: none;
letter-spacing: normal;
word-wrap: normal;
white-space: nowrap;
direction: ltr;
/* Support for all WebKit browsers. */
-webkit-font-smoothing: antialiased;
/* Support for Safari and Chrome. */
text-rendering: optimizeLegibility;
/* Support for Firefox. */
-moz-osx-font-smoothing: grayscale;
/* Support for IE. */
font-feature-settings: 'liga';
}
[class^="icon-"]::before,
[class*=" icon-"]::before {
font-family: icomoon;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
background-size: 24px;
/* Enable Ligatures ================ */
letter-spacing: 0;
-webkit-font-feature-settings: "liga";
-moz-font-feature-settings: "liga=1";
-moz-font-feature-settings: "liga";
-ms-font-feature-settings: "liga" 1;
-o-font-feature-settings: "liga";
font-feature-settings: "liga";
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-image {
background-size: 16px;
background-repeat: no-repeat;
padding-right: 1em !important;
padding-left: 1em !important;
}
.icon-eye::before {
content: "\e9ce";
}
.icon-no-eye::before {
content: "\e9d1";
}
.icon-calendar::before {
content: "\e953";
}
.icon-mail::before {
content: "\ea86";
}
.icon-time::before {
content: "\e952";
}
/* Carrot (http://carrot.org) */
.icon-image--carrot {
background-image: url("../../_global/img/icons/carrot-icon--black.png");
}
/* Diaspora */
.icon-image--diaspora {
background-image: url("../../_global/img/icons/diaspora-icon--black.png");
}
/* Shaarli */
.icon-image--shaarli {
background-image: url("../../_global/img/icons/shaarli.png");
}
body {
display: flex;
min-height: 100vh;
flex-direction: column;
background: #f0f0f0;
}
body.login main {
padding: 0;
min-height: 100vh;
}
.border-bottom {
border-bottom: 1px solid #ddd;
}
nav,
main,
footer {
padding-left: 240px;
}
main,
#content,
.valign-wrapper {
height: 100%;
}
#main {
flex: 1 0 auto;
}
.results {
height: 1em;
line-height: 30px;
}
.results .nb-results,
.results .pagination {
margin: 15px;
margin-bottom: 0;
}
.pagination {
float: right;
}
.pagination ul {
margin: 0 !important;
}
.pagination li {
padding: 0;
}
.pagination a {
padding: 0 10px;
height: 30px;
display: block;
}
.pagination .disabled {
margin-right: 10px;
margin-left: 10px;
}
div.pagination ul .prev.disabled,
div.pagination ul .next.disabled {
display: none;
}
.pagination li.active span {
padding: 0 10px;
height: 30px;
display: block;
color: #fff;
}
.page-footer .footer-copyright p {
display: inline;
}
.hidden {
display: none;
}
.picker__date-display {
display: none;
}
footer.page-footer {
margin-top: 10px;
padding-top: 0;
}
footer .row {
margin-bottom: 10px;
}
/* ==========================================================================
1 = Nav
========================================================================== */
nav input {
color: #aaa;
}
.nav-wrapper .button-collapse {
padding: 0 15px;
}
.nav-input {
display: none;
}
.nav-panels {
overflow: hidden;
}
.nav-panel-buttom li {
max-height: 64px;
}
.nav-panels {
transition: background 0.2s ease;
}
.nav-panel-add .add,
.nav-panel-search .search,
.nav-panels .close {
color: #444 !important;
}
.nav-panels .action {
padding-left: 0.75rem;
font-size: 2.1rem;
white-space: nowrap;
}
.nav-panels .input-field input {
display: block;
line-height: inherit;
padding-left: 4rem !important;
width: calc(100% - 8rem);
}
.nav-panels .input-field input:focus {
background-color: #fff;
border: 0;
box-shadow: none;
color: #444;
}
.input-field.nav-panel-add label {
left: 1rem;
}
.input-field.nav-panel-add .close {
position: absolute;
top: 0;
right: 1rem;
color: transparent;
cursor: pointer;
font-size: 2rem;
transition: 0.3s color;
}
#button_filters {
display: none;
}
#button_export {
display: none;
}
.input-field.nav-panel-add,
.input-field.nav-panel-add form {
height: 100%;
}
/* ==========================================================================
2 = Side-nav
========================================================================== */
.side-nav.fixed a {
font-size: 13px;
line-height: 44px;
height: 44px;
}
.side-nav .collapsible-header,
.side-nav.fixed .collapsible-header {
height: 45px;
line-height: 44px;
padding: 0 20px;
}
.bold > a {
font-weight: bold;
}
.side-nav > li.logo {
line-height: 0;
text-align: center;
}
#main .logo a {
height: 100pt;
}
#main .logo img {
height: 100pt;
width: 100pt;
}
#main .logo:hover {
background: transparent;
}
.side-nav li {
padding: 0;
}
.side-nav a {
margin: 0 1rem;
}
span.numberItems {
float: right;
}
/* ==========================================================================
* 3 = Filters slider
* ========================================================================== */
#filters button {
padding: 0;
width: 100%;
}
.side-nav.fixed.right-aligned {
right: -250px;
left: auto !important;
overflow-y: visible;
}
#filters div.with-checkbox {
height: 3rem;
margin-top: 0;
}
/* ==========================================================================
4 = Cards
========================================================================== */
main #content {
padding: 0 0.5rem;
}
main ul.row {
padding: 0 0.75rem;
}
.data .card .card-body {
height: 22em;
overflow: hidden;
}
.card .card-content .card-title {
line-height: 32px;
max-height: 64px;
}
.card .card-content i.right,
.card .card-reveal i.right {
margin-left: 0;
}
.card .card-entry-labels {
position: absolute;
top: 10px;
z-index: 90;
max-width: 50%;
}
.card .card-entry-labels li {
margin: 10px 10px 10px auto;
padding: 5px 12px 5px 16px;
background-color: rgba(0, 151, 167, 0.85);
border-radius: 0 3px 3px 0;
color: #fff;
cursor: default;
max-height: 2em;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.card .card-entry-labels-hidden {
margin-top: 5px;
}
.card .card-entry-labels-hidden li {
display: inline-block;
background-color: rgba(0, 151, 167, 0.85);
margin: 0 5px;
padding: 5px 12px;
border-radius: 3px;
color: #fff;
max-height: 2em;
max-width: calc(100% - 15px);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.card .card-content .estimatedTime {
margin-bottom: 10px;
}
.card .card-action .original {
line-height: 24px;
}
.card .card-action ul.links {
margin: 0;
font-size: 24px;
line-height: 24px;
}
.card .card-action a {
color: #fff;
margin: 0;
}
.card .card-action a:hover {
color: #fff;
}
.quickstart .card .card-action a,
.quickstart .card .card-action a:hover {
color: #fff !important;
}
.settings .div_tabs {
padding-bottom: 15px;
}
.card.sw {
max-width: 370px;
margin-left: auto;
margin-right: auto;
}
.card .card-image {
height: 14em;
}
.card .card-image .preview {
height: 14em;
background-size: cover;
background-repeat: no-repeat;
background-position: 50%;
}
/* ==========================================================================
5 = Article
========================================================================== */
#article {
font-size: 20px;
margin: 0 auto;
max-width: 40em;
}
#article img,
#article figure {
max-width: 100%;
height: auto;
}
#article > header > h1 {
font-size: 2em;
}
.reader-mode {
width: 95px !important;
transition: width 0.2s ease;
}
.reader-mode:hover {
width: 240px !important;
}
.reader-mode .collapsible-body {
height: 0;
overflow: hidden;
}
.reader-mode:hover .collapsible-body {
height: auto;
}
.reader-mode span {
opacity: 0;
transition: opacity 0.2s ease;
}
.reader-mode:hover span {
opacity: 1;
}
.progress {
position: fixed;
top: 0;
width: 100%;
height: 3px;
margin: 0;
z-index: 9999;
}
#article aside .link {
color: #000;
font-size: 0.8em;
text-decoration: none;
}
#article aside #list {
float: right;
margin: 0 15px 10px;
}
#article aside .chip {
background-color: rgba(0, 151, 167, 0.85);
color: #fff;
padding: 0 15px 0 10px;
}
#article aside .chip i {
color: #fff;
}
/* ==========================================================================
6 = Media queries
========================================================================== */
@media only screen and (max-width: 992px) {
header,
main,
footer {
padding-left: 0;
}
nav,
main,
footer {
padding-left: 0;
}
.pagination {
width: auto;
}
.reader-mode {
width: 240px !important;
}
.reader-mode span {
opacity: 1;
}
.tabs {
display: inline-block;
height: auto;
}
.tab {
min-width: 100%;
}
.indicator {
display: none;
}
.pagination li.prev,
.pagination li.next {
width: auto;
}
}
@media only screen and (min-width: 400px) {
.nav-panel-buttom {
float: right;
}
}
@media only screen and (min-width: 993px) and (max-width: 1180px) {
.row .col.l1 {
width: 25%;
margin-left: 0;
}
.row .col.l2 {
width: 33.33333%;
margin-left: 0;
}
.row .col.l3 {
width: 41.66667%;
margin-left: 0;
}
.row .col.l4 {
width: 50%;
margin-left: 0;
}
.row .col.l5 {
width: 58.33333%;
margin-left: 0;
}
.row .col.l6 {
width: 66.66667%;
margin-left: 0;
}
.row .col.l7 {
width: 75%;
margin-left: 0;
}
.row .col.l8 {
width: 83.33333%;
margin-left: 0;
}
.row .col.l9 {
width: 91.66667%;
margin-left: 0;
}
.row .col.l10 {
width: 100%;
margin-left: 0;
}
}
@media only screen and (max-width: 350px) {
.nb-results {
display: none;
}
}
/* ==========================================================================
7 = Font
========================================================================== */
.icon-google-plus2::before {
content: "\ea89";
}
.icon-facebook2::before {
content: "\ea8d";
}
.icon-twitter::before {
content: "\ea96";
}
.icon-apple::before {
content: "\eabf";
}
.icon-android::before {
content: "\eac1";
}
.icon-chrome::before {
content: "\eae5";
}
.icon-firefox::before {
content: "\eae6";
}
.icon-link::before {
content: "\e9cb";
}
footer [class^="icon-"],
footer [class*=" icon-"] {
font-size: 2em;
transition: text-shadow 0.2s ease;
padding-right: 10px;
}
footer [class^="icon-"]:hover,
footer [class*=" icon-"]:hover {
text-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
}
/* ==========================================================================
8 = Others
========================================================================== */
/* force height on non-input field in the settings page */
div.settings div.input-field div,
div.settings div.input-field ul {
margin-top: 40px;
}
/* but avoid to kill all file input */
div.settings div.file-field div {
margin-top: inherit;
}
.input-field label.active {
font-size: 1rem;
}

View File

@ -1,77 +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 > header,
#article_toolbar,
#links,
#sort,
body > footer,
.top_link,
div.tools,
header div,
.messages,
.entry + .results,
#slide-out,
.progress,
.hide-on-large-only,
#article > aside,
#article .mbm a {
display: none !important;
}
main {
padding-left: 0 !important;
}
#article {
margin: inherit !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%;
padding: 0;
margin: 0;
margin-left: 0;
padding-right: 0;
padding-bottom: 0;
}
#article {
width: 100%;
}
}

View File

@ -1,99 +0,0 @@
import { savePercent, retrievePercent, initFilters, initExport } from '../../_global/js/tools';
const $ = require('jquery');
global.jQuery = $;
require('materialize'); // eslint-disable-line
const annotator = require('annotator');
$(document).ready(() => {
// sideNav
$('.button-collapse').sideNav();
$('select').material_select();
$('.collapsible').collapsible({
accordion: false,
});
$('.datepicker').pickadate({
selectMonths: true,
selectYears: 15,
formatSubmit: 'dd/mm/yyyy',
hiddenName: true,
format: 'dd/mm/yyyy',
});
initFilters();
initExport();
$('#nav-btn-add-tag').on('click', () => {
$('.nav-panel-add-tag').toggle(100);
$('.nav-panel-menu').addClass('hidden');
$('#tag_label').focus();
return false;
});
$('#nav-btn-add').on('click', () => {
$('.nav-panel-buttom').hide(100);
$('.nav-panel-add').show(100);
$('.nav-panels .action').hide(100);
$('.nav-panel-menu').addClass('hidden');
$('.nav-panels').css('background', 'white');
$('#entry_url').focus();
return false;
});
$('#nav-btn-search').on('click', () => {
$('.nav-panel-buttom').hide(100);
$('.nav-panel-search').show(100);
$('.nav-panels .action').hide(100);
$('.nav-panel-menu').addClass('hidden');
$('.nav-panels').css('background', 'white');
$('#searchfield').focus();
return false;
});
$('.close').on('click', () => {
$('.nav-panel-add').hide(100);
$('.nav-panel-search').hide(100);
$('.nav-panel-buttom').show(100);
$('.nav-panels .action').show(100);
$('.nav-panel-menu').removeClass('hidden');
$('.nav-panels').css('background', 'transparent');
return false;
});
$(window).scroll(() => {
const s = $(window).scrollTop();
const d = $(document).height();
const c = $(window).height();
const scrollPercent = (s / (d - c)) * 100;
$('.progress .determinate').css('width', `${scrollPercent}%`);
});
/* ==========================================================================
Annotations & Remember position
========================================================================== */
if ($('article').length) {
const app = new annotator.App();
const x = JSON.parse($('#annotationroutes').html());
app.include(annotator.ui.main, {
element: document.querySelector('article'),
});
app.include(annotator.storage.http, x);
app.start().then(() => {
app.annotations.load({ entry: x.entryId });
});
$(window).scroll(() => {
const scrollTop = $(window).scrollTop();
const docHeight = $(document).height();
const scrollPercent = (scrollTop) / (docHeight);
const scrollPercentRounded = Math.round(scrollPercent * 100) / 100;
savePercent(x.entryId, scrollPercentRounded);
});
retrievePercent(x.entryId);
$(window).resize(() => {
retrievePercent(x.entryId);
});
}
});

View File

@ -1,10 +1,6 @@
# config valid only for current version of Capistrano # config valid only for current version of Capistrano
lock '3.4.0' lock '3.4.0'
set :log_path, "var/logs"
set :cache_path, "var/cache"
set :symfony_console_path, 'bin/console'
set :application, 'wallabag' set :application, 'wallabag'
set :repo_url, 'git@github.com:wallabag/wallabag.git' set :repo_url, 'git@github.com:wallabag/wallabag.git'
@ -20,7 +16,8 @@ set :log_level, :info
set :composer_install_flags, '--no-dev --prefer-dist --no-interaction --optimize-autoloader' set :composer_install_flags, '--no-dev --prefer-dist --no-interaction --optimize-autoloader'
set :linked_files, %w{app/config/parameters.yml} set :linked_files, %w{app/config/parameters.yml}
set :linked_dirs, [fetch(:log_path), "var/sessions", "web/uploads", "data"] set :linked_dirs, %w{app/logs web/uploads data}
set :keep_releases, 3 set :keep_releases, 3
after 'deploy:finishing', 'deploy:cleanup' after 'deploy:finishing', 'deploy:cleanup'

View File

@ -1,2 +1,2 @@
set :branch, 'master' set :branch, 'v2'
set :deploy_to, '/var/www/v2.wallabag.org/web/' set :deploy_to, '/var/www/v2.wallabag.org/web/'

View File

@ -5,79 +5,88 @@ imports:
framework: framework:
#esi: ~ #esi: ~
translator: translator: { fallback: "%locale%" }
enabled: true secret: "%secret%"
fallback: "%locale%"
secret: "%secret%"
router: router:
resource: "%kernel.root_dir%/config/routing.yml" resource: "%kernel.root_dir%/config/routing.yml"
strict_requirements: ~ strict_requirements: ~
form: ~ form: ~
csrf_protection: ~ csrf_protection: ~
validation: validation: { enable_annotations: true }
enable_annotations: true
templating: templating:
engines: ['twig'] engines: ['twig']
default_locale: "%locale%" #assets_version: SomeVersionScheme
trusted_hosts: ~ default_locale: "%locale%"
trusted_hosts: ~
trusted_proxies: ~ trusted_proxies: ~
session: session:
# handler_id set to null will use default session handler from php.ini # handler_id set to null will use default session handler from php.ini
handler_id: session.handler.native_file handler_id: session.handler.native_file
save_path: "%kernel.root_dir%/../var/sessions/%kernel.environment%" save_path: "%kernel.root_dir%/../var/sessions/%kernel.environment%"
fragments: ~ fragments: ~
http_method_override: true http_method_override: true
assets: ~ assets: ~
wallabag_core: wallabag_core:
version: 2.1.1
paypal_url: "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9UBA65LG3FX9Y&lc=gb"
languages: languages:
en: 'English' en: 'English'
fr: 'Français' fr: 'Français'
de: 'Deutsch' de: 'Deutsch'
tr: 'Türkçe'
fa: 'فارسی'
ro: 'Română'
pl: 'Polish'
da: 'Dansk'
es: 'Español'
oc: 'Occitan'
it: 'Italiano'
items_on_page: 12
theme: material
language: en
rss_limit: 50
reading_speed: 1
cache_lifetime: 10
wallabag_user:
registration_enabled: "%fosuser_registration%"
wallabag_import: wallabag_import:
allow_mimetypes: ['application/octet-stream', 'application/json', 'text/plain', 'text/csv'] allow_mimetypes: ['application/octet-stream', 'application/json', 'text/plain']
resource_dir: "%kernel.root_dir%/../web/uploads/import" resource_dir: "%kernel.root_dir%/../web/uploads/import"
# Twig Configuration # Twig Configuration
twig: twig:
debug: "%kernel.debug%" debug: "%kernel.debug%"
strict_variables: "%kernel.debug%" strict_variables: "%kernel.debug%"
globals:
share_twitter: %share_twitter%
share_mail: %share_mail%
share_shaarli: %share_shaarli%
shaarli_url: %shaarli_url%
share_diaspora: %share_diaspora%
diaspora_url: %diaspora_url%
flattr: %flattr%
flattrable: 1
flattred: 2
carrot: %carrot%
show_printlink: %show_printlink%
export_epub: %export_epub%
export_mobi: %export_mobi%
export_pdf: %export_pdf%
version: %app.version%
twofactor_auth: %twofactor_auth%
warning_message: %warning_message%
paypal_url: "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9UBA65LG3FX9Y&lc=gb"
form_themes: form_themes:
- "LexikFormFilterBundle:Form:form_div_layout.html.twig" - "LexikFormFilterBundle:Form:form_div_layout.html.twig"
exception_controller: wallabag_core.exception_controller:showAction
# Assetic Configuration
assetic:
debug: "%kernel.debug%"
use_controller: false
bundles: [ ]
#java: /usr/bin/java
filters:
cssrewrite: ~
#closure:
# jar: "%kernel.root_dir%/Resources/java/compiler.jar"
#yui_css:
# jar: "%kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar"
# Doctrine Configuration # Doctrine Configuration
doctrine: doctrine:
dbal: dbal:
driver: "%database_driver%" driver: "%database_driver%"
host: "%database_host%" host: "%database_host%"
port: "%database_port%" port: "%database_port%"
dbname: "%database_name%" dbname: "%database_name%"
user: "%database_user%" user: "%database_user%"
password: "%database_password%" password: "%database_password%"
charset: UTF8 charset: UTF8
path: "%database_path%" path: "%database_path%"
server_version: 5.6
orm: orm:
auto_generate_proxy_classes: "%kernel.debug%" auto_generate_proxy_classes: "%kernel.debug%"
@ -102,11 +111,10 @@ doctrine_migrations:
# Swiftmailer Configuration # Swiftmailer Configuration
swiftmailer: swiftmailer:
transport: "%mailer_transport%" transport: "%mailer_transport%"
host: "%mailer_host%" host: "%mailer_host%"
username: "%mailer_user%" username: "%mailer_user%"
password: "%mailer_password%" password: "%mailer_password%"
spool: spool: { type: memory }
type: memory
fos_rest: fos_rest:
param_fetcher_listener: true param_fetcher_listener: true
@ -143,11 +151,6 @@ nelmio_cors:
#origin_regex: false #origin_regex: false
paths: paths:
'^/api/': '^/api/':
allow_origin: ['*']
allow_headers: ['X-Custom-Auth']
allow_methods: ['POST', 'PUT', 'PATCH','GET', 'DELETE']
max_age: 3600
'^/oauth/':
allow_origin: ['*'] allow_origin: ['*']
allow_headers: ['X-Custom-Auth'] allow_headers: ['X-Custom-Auth']
allow_methods: ['POST', 'PUT', 'GET', 'DELETE'] allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
@ -169,18 +172,16 @@ liip_theme:
path_patterns: path_patterns:
bundle_resource: bundle_resource:
- "%%bundle_path%%/Resources/views/themes/%%current_theme%%/%%template%%" - %%bundle_path%%/Resources/views/themes/%%current_theme%%/%%template%%
fos_user: fos_user:
db_driver: orm db_driver: orm
firewall_name: secured_area firewall_name: main
user_class: Wallabag\UserBundle\Entity\User user_class: Wallabag\UserBundle\Entity\User
registration: registration:
confirmation: confirmation:
enabled: "%fosuser_confirmation%" enabled: true
from_email:
address: "%from_email%"
sender_name: wallabag
fos_oauth_server: fos_oauth_server:
db_driver: orm db_driver: orm
client_class: Wallabag\ApiBundle\Entity\Client client_class: Wallabag\ApiBundle\Entity\Client
@ -197,8 +198,8 @@ scheb_two_factor:
cookie_lifetime: 2592000 cookie_lifetime: 2592000
email: email:
enabled: "%twofactor_auth%" enabled: %twofactor_auth%
sender_email: "%twofactor_sender%" sender_email: %twofactor_sender%
digits: 6 digits: 6
template: WallabagUserBundle:Authentication:form.html.twig template: WallabagUserBundle:Authentication:form.html.twig
mailer: wallabag_user.auth_code_mailer mailer: wallabag_user.auth_code_mailer
@ -206,116 +207,3 @@ scheb_two_factor:
kphoen_rulerz: kphoen_rulerz:
executors: executors:
doctrine: true doctrine: true
lexik_maintenance:
authorized:
ips: ['127.0.0.1']
driver:
ttl: 3600
class: 'Lexik\Bundle\MaintenanceBundle\Drivers\DatabaseDriver'
response:
code: 503
status: "wallabag Service Temporarily Unavailable"
old_sound_rabbit_mq:
connections:
default:
host: "%rabbitmq_host%"
port: "%rabbitmq_port%"
user: "%rabbitmq_user%"
password: "%rabbitmq_password%"
vhost: /
lazy: true
producers:
import_pocket:
connection: default
exchange_options:
name: 'wallabag.import.pocket'
type: topic
import_readability:
connection: default
exchange_options:
name: 'wallabag.import.readability'
type: topic
import_instapaper:
connection: default
exchange_options:
name: 'wallabag.import.instapaper'
type: topic
import_wallabag_v1:
connection: default
exchange_options:
name: 'wallabag.import.wallabag_v1'
type: topic
import_wallabag_v2:
connection: default
exchange_options:
name: 'wallabag.import.wallabag_v2'
type: topic
import_firefox:
connection: default
exchange_options:
name: 'wallabag.import.firefox'
type: topic
import_chrome:
connection: default
exchange_options:
name: 'wallabag.import.chrome'
type: topic
consumers:
import_pocket:
connection: default
exchange_options:
name: 'wallabag.import.pocket'
type: topic
queue_options:
name: 'wallabag.import.pocket'
callback: wallabag_import.consumer.amqp.pocket
import_readability:
connection: default
exchange_options:
name: 'wallabag.import.readability'
type: topic
queue_options:
name: 'wallabag.import.readability'
callback: wallabag_import.consumer.amqp.readability
import_instapaper:
connection: default
exchange_options:
name: 'wallabag.import.instapaper'
type: topic
queue_options:
name: 'wallabag.import.instapaper'
callback: wallabag_import.consumer.amqp.instapaper
import_wallabag_v1:
connection: default
exchange_options:
name: 'wallabag.import.wallabag_v1'
type: topic
queue_options:
name: 'wallabag.import.wallabag_v1'
callback: wallabag_import.consumer.amqp.wallabag_v1
import_wallabag_v2:
connection: default
exchange_options:
name: 'wallabag.import.wallabag_v2'
type: topic
queue_options:
name: 'wallabag.import.wallabag_v2'
callback: wallabag_import.consumer.amqp.wallabag_v2
import_firefox:
connection: default
exchange_options:
name: 'wallabag.import.firefox'
type: topic
queue_options:
name: 'wallabag.import.firefox'
callback: wallabag_import.consumer.amqp.firefox
import_chrome:
connection: default
exchange_options:
name: 'wallabag.import.chrome'
type: topic
queue_options:
name: 'wallabag.import.chrome'
callback: wallabag_import.consumer.amqp.chrome

View File

@ -5,8 +5,7 @@ framework:
router: router:
resource: "%kernel.root_dir%/config/routing_dev.yml" resource: "%kernel.root_dir%/config/routing_dev.yml"
strict_requirements: true strict_requirements: true
profiler: profiler: { only_exceptions: false }
only_exceptions: false
web_profiler: web_profiler:
toolbar: true toolbar: true
@ -15,19 +14,19 @@ web_profiler:
monolog: monolog:
handlers: handlers:
main: main:
type: stream type: stream
path: "%kernel.logs_dir%/%kernel.environment%.log" path: "%kernel.logs_dir%/%kernel.environment%.log"
level: debug level: debug
channels: ['!event'] channels: [!event]
console: console:
type: console type: console
bubble: false bubble: false
verbosity_levels: verbosity_levels:
VERBOSITY_VERBOSE: INFO VERBOSITY_VERBOSE: INFO
VERBOSITY_VERY_VERBOSE: DEBUG VERBOSITY_VERY_VERBOSE: DEBUG
channels: ['!event', '!doctrine'] channels: [!event, !doctrine]
console_very_verbose: console_very_verbose:
type: console type: console
bubble: false bubble: false
verbosity_levels: verbosity_levels:
VERBOSITY_VERBOSE: NOTICE VERBOSITY_VERBOSE: NOTICE
@ -35,16 +34,11 @@ monolog:
VERBOSITY_DEBUG: DEBUG VERBOSITY_DEBUG: DEBUG
channels: [doctrine] channels: [doctrine]
assetic:
use_controller: true
swiftmailer: swiftmailer:
# see http://mailcatcher.me/ # see http://mailcatcher.me/
transport: smtp transport: smtp
host: 'localhost' host: 'localhost'
port: 1025 port: 1025
# If you want to use cache for queries used in WallabagExtension
# Uncomment the following lines
#doctrine:
# orm:
# metadata_cache_driver: apcu
# result_cache_driver: apcu
# query_cache_driver: apcu

View File

@ -2,8 +2,8 @@ imports:
- { resource: config.yml } - { resource: config.yml }
#framework: #framework:
# cache: # validation:
# system: cache.adapter.apcu # cache: apc
#doctrine: #doctrine:
# orm: # orm:
@ -14,12 +14,12 @@ imports:
monolog: monolog:
handlers: handlers:
main: main:
type: fingers_crossed type: fingers_crossed
action_level: error action_level: error
handler: nested handler: nested
nested: nested:
type: stream type: stream
path: "%kernel.logs_dir%/%kernel.environment%.log" path: "%kernel.logs_dir%/%kernel.environment%.log"
level: debug level: debug
console: console:
type: console type: console

View File

@ -1,6 +1,5 @@
imports: imports:
- { resource: config_dev.yml } - { resource: config_dev.yml }
- { resource: parameters_test.yml }
framework: framework:
test: ~ test: ~
@ -8,8 +7,6 @@ framework:
storage_id: session.storage.mock_file storage_id: session.storage.mock_file
profiler: profiler:
collect: false collect: false
translator:
enabled: false
web_profiler: web_profiler:
toolbar: false toolbar: false

View File

@ -19,6 +19,14 @@ parameters:
database_path: "%kernel.root_dir%/../data/db/wallabag.sqlite" database_path: "%kernel.root_dir%/../data/db/wallabag.sqlite"
database_table_prefix: wallabag_ database_table_prefix: wallabag_
test_database_driver: pdo_sqlite
test_database_host: 127.0.0.1
test_database_port: ~
test_database_name: ~
test_database_user: ~
test_database_password: ~
test_database_path: "%kernel.root_dir%/../data/db/wallabag_test.sqlite"
mailer_transport: smtp mailer_transport: smtp
mailer_host: 127.0.0.1 mailer_host: 127.0.0.1
mailer_user: ~ mailer_user: ~
@ -27,26 +35,41 @@ parameters:
locale: en locale: en
# A secret key that's used to generate certain security-related tokens # A secret key that's used to generate certain security-related tokens
secret: ovmpmAWXRCabNlMgzlzFXDYmCFfzGv secret: ThisTokenIsNotSoSecretChangeIt
# two factor stuff # wallabag misc
app.version: 2.0.0-alpha
twofactor_auth: true twofactor_auth: true
twofactor_sender: no-reply@wallabag.org twofactor_sender: no-reply@wallabag.org
# fosuser stuff # message to display at the bottom of the page
fosuser_registration: true warning_message: >
fosuser_confirmation: true You're trying wallabag v2, which is in alpha version. If you find a bug, please have a look to <a href="https://github.com/wallabag/wallabag/issues">our issues list</a> and <a href="https://github.com/wallabag/wallabag/issues/new">open a new if necessary</a>
download_pictures: false # if true, pictures will be stored into data/assets for each article
# Entry view
share_twitter: true
share_mail: true
share_shaarli: true
shaarli_url: http://myshaarli.com
share_diaspora: true
diaspora_url: http://diasporapod.com
flattr: true
carrot: true
show_printlink: true
export_epub: true
export_mobi: true
export_pdf: true
wallabag_url: http://v2.wallabag.org
wallabag_support_url: 'https://www.wallabag.org/pages/support.html'
# default user config
items_on_page: 12
theme: material
language: en
from_email: no-reply@wallabag.org from_email: no-reply@wallabag.org
rss_limit: 50 rss_limit: 50
# RabbitMQ processing # pocket import
rabbitmq_host: localhost pocket_consumer_key: xxxxxxxx
rabbitmq_port: 5672
rabbitmq_user: guest
rabbitmq_password: guest
# Redis processing
redis_host: localhost
redis_port: 6379

View File

@ -1,8 +0,0 @@
parameters:
test_database_driver: pdo_sqlite
test_database_host: 127.0.0.1
test_database_port: null
test_database_name: null
test_database_user: null
test_database_password: null
test_database_path: '%kernel.root_dir%/../data/db/wallabag_test.sqlite'

View File

@ -1,16 +1,7 @@
wallabag_annotation:
type : rest
resource: "@WallabagAnnotationBundle/Resources/config/routing_annotations.yml"
wallabag_import: wallabag_import:
resource: "@WallabagImportBundle/Controller/" resource: "@WallabagImportBundle/Controller/"
type: annotation type: annotation
prefix: /import prefix: /import
wallabag_user:
resource: "@WallabagUserBundle/Controller/"
type: annotation
prefix: /users
wallabag_api: wallabag_api:
resource: "@WallabagApiBundle/Resources/config/routing.yml" resource: "@WallabagApiBundle/Resources/config/routing.yml"
@ -31,9 +22,7 @@ rest :
homepage: homepage:
path: "/{page}" path: "/{page}"
defaults: defaults: { _controller: WallabagCoreBundle:Entry:showUnread, page : 1 }
_controller: WallabagCoreBundle:Entry:showUnread
page : 1
requirements: requirements:
page: \d+ page: \d+
@ -42,8 +31,3 @@ fos_user:
fos_oauth_server_token: fos_oauth_server_token:
resource: "@FOSOAuthServerBundle/Resources/config/routing/token.xml" resource: "@FOSOAuthServerBundle/Resources/config/routing/token.xml"
craue_config_settings_modify:
path: /settings
defaults:
_controller: CraueConfigBundle:Settings:modify

View File

@ -1,14 +1,14 @@
_wdt: _wdt:
resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml" resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml"
prefix: /_wdt prefix: /_wdt
_profiler: _profiler:
resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml" resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml"
prefix: /_profiler prefix: /_profiler
_errors: _errors:
resource: "@TwigBundle/Resources/config/routing/errors.xml" resource: "@TwigBundle/Resources/config/routing/errors.xml"
prefix: /_error prefix: /_error
_main: _main:
resource: routing.yml resource: routing.yml

View File

@ -1,4 +1,3 @@
Rest_Wallabag: Rest_Wallabag:
type : rest type : rest
resource: "@WallabagApiBundle/Resources/config/routing_rest.yml" resource: "@WallabagApiBundle/Resources/config/routing_rest.yml"

View File

@ -3,14 +3,12 @@ security:
FOS\UserBundle\Model\UserInterface: sha512 FOS\UserBundle\Model\UserInterface: sha512
role_hierarchy: role_hierarchy:
ROLE_ADMIN: ROLE_USER ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH ] ROLE_SUPER_ADMIN: [ ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH ]
providers: providers:
administrators: administrators:
entity: entity: { class: WallabagUserBundle:User, property: username }
class: WallabagUserBundle:User
property: username
fos_userbundle: fos_userbundle:
id: fos_user.user_provider.username id: fos_user.user_provider.username
@ -33,7 +31,7 @@ security:
anonymous: true anonymous: true
login_firewall: login_firewall:
pattern: ^/login$ pattern: ^/login$
anonymous: ~ anonymous: ~
secured_area: secured_area:
@ -42,12 +40,12 @@ security:
provider: fos_userbundle provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager csrf_token_generator: security.csrf.token_manager
anonymous: true anonymous: true
remember_me: remember_me:
secret: "%secret%" secret: "%secret%"
lifetime: 31536000 lifetime: 31536000
path: / path: /
domain: ~ domain: ~
logout: logout:
path: /logout path: /logout
@ -55,13 +53,8 @@ security:
access_control: access_control:
- { path: ^/api/doc, roles: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/api/doc, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api/version, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: /(unread|starred|archive).xml$, roles: IS_AUTHENTICATED_ANONYMOUSLY } - { path: /(unread|starred|archive).xml$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/share, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/settings, roles: ROLE_SUPER_ADMIN }
- { path: ^/annotations, roles: ROLE_USER }
- { path: ^/users, roles: ROLE_SUPER_ADMIN }
- { path: ^/, roles: ROLE_USER } - { path: ^/, roles: ROLE_USER }

View File

@ -6,7 +6,7 @@ services:
filesystem_cache: filesystem_cache:
class: Doctrine\Common\Cache\FilesystemCache class: Doctrine\Common\Cache\FilesystemCache
arguments: arguments:
- "%kernel.cache_dir%/doctrine/metadata" - %kernel.cache_dir%/doctrine/metadata
twig.extension.text: twig.extension.text:
class: Twig_Extensions_Extension_Text class: Twig_Extensions_Extension_Text
@ -16,18 +16,6 @@ services:
wallabag.twig_extension: wallabag.twig_extension:
class: Wallabag\CoreBundle\Twig\WallabagExtension class: Wallabag\CoreBundle\Twig\WallabagExtension
public: false public: false
arguments:
- "@wallabag_core.entry_repository"
- "@wallabag_core.tag_repository"
- "@security.token_storage"
- "%wallabag_core.cache_lifetime%"
- "@translator"
tags:
- { name: twig.extension }
wallabag.twig_piwik_extension:
class: PiwikTwigExtension\PiwikTwigExtension
public: false
tags: tags:
- { name: twig.extension } - { name: twig.extension }

View File

@ -0,0 +1,65 @@
# This file is a "template" of what your parameters.yml file should look like
parameters:
database_driver: pdo_sqlite
database_host: 127.0.0.1
database_port: ~
database_name: symfony
database_user: root
database_password: ~
database_path: "%kernel.root_dir%/../data/db/wallabag.sqlite"
database_table_prefix: wallabag_
test_database_driver: pdo_mysql
test_database_host: localhost
test_database_port: 3306
test_database_name: wallabag
test_database_user: root
test_database_password: ~
test_database_path: ~
mailer_transport: smtp
mailer_host: 127.0.0.1
mailer_user: ~
mailer_password: ~
locale: en
# A secret key that's used to generate certain security-related tokens
secret: ThisTokenIsNotSoSecretChangeIt
# wallabag misc
app.version: 2.0.0-alpha
twofactor_auth: true
twofactor_sender: no-reply@wallabag.org
# message to display at the bottom of the page
warning_message: >
You're trying wallabag v2, which is in alpha version. If you find a bug, please have a look to <a href="https://github.com/wallabag/wallabag/issues">our issues list</a> and <a href="https://github.com/wallabag/wallabag/issues/new">open a new if necessary</a>
download_pictures: false # if true, pictures will be stored into data/assets for each article
# Entry view
share_twitter: true
share_mail: true
share_shaarli: true
shaarli_url: http://myshaarli.com
share_diaspora: true
diaspora_url: http://diasporapod.com
flattr: true
carrot: true
show_printlink: true
export_epub: true
export_mobi: true
export_pdf: true
wallabag_url: http://v2.wallabag.org
wallabag_support_url: 'https://www.wallabag.org/pages/support.html'
# default user config
items_on_page: 12
theme: material
language: en_US
from_email: no-reply@wallabag.org
rss_limit: 50
# pocket import
pocket_consumer_key: xxxxxxxx

View File

@ -0,0 +1,65 @@
# This file is a "template" of what your parameters.yml file should look like
parameters:
database_driver: pdo_sqlite
database_host: 127.0.0.1
database_port: ~
database_name: symfony
database_user: root
database_password: ~
database_path: "%kernel.root_dir%/../data/db/wallabag.sqlite"
database_table_prefix: wallabag_
test_database_driver: pdo_pgsql
test_database_host: localhost
test_database_port:
test_database_name: wallabag
test_database_user: travis
test_database_password: ~
test_database_path: ~
mailer_transport: smtp
mailer_host: 127.0.0.1
mailer_user: ~
mailer_password: ~
locale: en
# A secret key that's used to generate certain security-related tokens
secret: ThisTokenIsNotSoSecretChangeIt
# wallabag misc
app.version: 2.0.0-alpha
twofactor_auth: true
twofactor_sender: no-reply@wallabag.org
# message to display at the bottom of the page
warning_message: >
You're trying wallabag v2, which is in alpha version. If you find a bug, please have a look to <a href="https://github.com/wallabag/wallabag/issues">our issues list</a> and <a href="https://github.com/wallabag/wallabag/issues/new">open a new if necessary</a>
download_pictures: false # if true, pictures will be stored into data/assets for each article
# Entry view
share_twitter: true
share_mail: true
share_shaarli: true
shaarli_url: http://myshaarli.com
share_diaspora: true
diaspora_url: http://diasporapod.com
flattr: true
carrot: true
show_printlink: true
export_epub: true
export_mobi: true
export_pdf: true
wallabag_url: http://v2.wallabag.org
wallabag_support_url: 'https://www.wallabag.org/pages/support.html'
# default user config
items_on_page: 12
theme: material
language: en_US
from_email: no-reply@wallabag.org
rss_limit: 50
# pocket import
pocket_consumer_key: xxxxxxxx

View File

@ -0,0 +1,65 @@
# This file is a "template" of what your parameters.yml file should look like
parameters:
database_driver: pdo_sqlite
database_host: 127.0.0.1
database_port: ~
database_name: symfony
database_user: root
database_password: ~
database_path: "%kernel.root_dir%/../data/db/wallabag.sqlite"
database_table_prefix: wallabag_
test_database_driver: pdo_sqlite
test_database_host: localhost
test_database_port:
test_database_name: ~
test_database_user: ~
test_database_password: ~
test_database_path: "%kernel.root_dir%/../data/db/wallabag_test.sqlite"
mailer_transport: smtp
mailer_host: 127.0.0.1
mailer_user: ~
mailer_password: ~
locale: en
# A secret key that's used to generate certain security-related tokens
secret: ThisTokenIsNotSoSecretChangeIt
# wallabag misc
app.version: 2.0.0-alpha
twofactor_auth: true
twofactor_sender: no-reply@wallabag.org
# message to display at the bottom of the page
warning_message: >
You're trying wallabag v2, which is in alpha version. If you find a bug, please have a look to <a href="https://github.com/wallabag/wallabag/issues">our issues list</a> and <a href="https://github.com/wallabag/wallabag/issues/new">open a new if necessary</a>
download_pictures: false # if true, pictures will be stored into data/assets for each article
# Entry view
share_twitter: true
share_mail: true
share_shaarli: true
shaarli_url: http://myshaarli.com
share_diaspora: true
diaspora_url: http://diasporapod.com
flattr: true
carrot: true
show_printlink: true
export_epub: true
export_mobi: true
export_pdf: true
wallabag_url: http://v2.wallabag.org
wallabag_support_url: 'https://www.wallabag.org/pages/support.html'
# default user config
items_on_page: 12
theme: material
language: en_US
from_email: no-reply@wallabag.org
rss_limit: 50
# pocket import
pocket_consumer_key: xxxxxxxx

View File

@ -1,8 +0,0 @@
parameters:
test_database_driver: pdo_mysql
test_database_host: localhost
test_database_port: 3306
test_database_name: wallabag_test
test_database_user: root
test_database_password: ~
test_database_path: ~

View File

@ -1,8 +0,0 @@
parameters:
test_database_driver: pdo_pgsql
test_database_host: localhost
test_database_port:
test_database_name: wallabag_test
test_database_user: travis
test_database_password: ~
test_database_path: ~

View File

@ -1,8 +0,0 @@
parameters:
test_database_driver: pdo_sqlite
test_database_host: localhost
test_database_port:
test_database_name: ~
test_database_user: ~
test_database_password: ~
test_database_path: "%kernel.root_dir%/../data/db/wallabag_test.sqlite"

1
bin/doctrine Symbolic link
View File

@ -0,0 +1 @@
../vendor/doctrine/orm/bin/doctrine

1
bin/doctrine-dbal Symbolic link
View File

@ -0,0 +1 @@
../vendor/doctrine/dbal/bin/doctrine-dbal

1
bin/doctrine-migrations Symbolic link
View File

@ -0,0 +1 @@
../vendor/doctrine/migrations/bin/doctrine-migrations

1
bin/doctrine.php Symbolic link
View File

@ -0,0 +1 @@
../vendor/doctrine/orm/bin/doctrine.php

1
bin/phpunit Symbolic link
View File

@ -0,0 +1 @@
../vendor/phpunit/phpunit/phpunit

1
bin/security-checker Symbolic link
View File

@ -0,0 +1 @@
../vendor/sensiolabs/security-checker/security-checker

View File

@ -7,13 +7,13 @@ $lineSize = 70;
$symfonyRequirements = new SymfonyRequirements(); $symfonyRequirements = new SymfonyRequirements();
$iniPath = $symfonyRequirements->getPhpIniConfigPath(); $iniPath = $symfonyRequirements->getPhpIniConfigPath();
echo_title('Symfony Requirements Checker'); echo_title('Symfony2 Requirements Checker');
echo '> PHP is using the following php.ini file:'.PHP_EOL; echo '> PHP is using the following php.ini file:'.PHP_EOL;
if ($iniPath) { if ($iniPath) {
echo_style('green', ' '.$iniPath); echo_style('green', ' '.$iniPath);
} else { } else {
echo_style('yellow', ' WARNING: No configuration file (php.ini) used by PHP!'); echo_style('warning', ' WARNING: No configuration file (php.ini) used by PHP!');
} }
echo PHP_EOL.PHP_EOL; echo PHP_EOL.PHP_EOL;
@ -22,6 +22,7 @@ echo '> Checking Symfony requirements:'.PHP_EOL.' ';
$messages = array(); $messages = array();
foreach ($symfonyRequirements->getRequirements() as $req) { foreach ($symfonyRequirements->getRequirements() as $req) {
/** @var $req Requirement */
if ($helpText = get_error_message($req, $lineSize)) { if ($helpText = get_error_message($req, $lineSize)) {
echo_style('red', 'E'); echo_style('red', 'E');
$messages['error'][] = $helpText; $messages['error'][] = $helpText;
@ -42,9 +43,9 @@ foreach ($symfonyRequirements->getRecommendations() as $req) {
} }
if ($checkPassed) { if ($checkPassed) {
echo_block('success', 'OK', 'Your system is ready to run Symfony projects'); echo_block('success', 'OK', 'Your system is ready to run Symfony2 projects');
} else { } else {
echo_block('error', 'ERROR', 'Your system is not ready to run Symfony projects'); echo_block('error', 'ERROR', 'Your system is not ready to run Symfony2 projects');
echo_title('Fix the following mandatory requirements', 'red'); echo_title('Fix the following mandatory requirements', 'red');
@ -120,14 +121,10 @@ function echo_block($style, $title, $message)
echo PHP_EOL.PHP_EOL; echo PHP_EOL.PHP_EOL;
echo_style($style, str_repeat(' ', $width)); echo_style($style, str_repeat(' ', $width).PHP_EOL);
echo PHP_EOL; echo_style($style, str_pad(' ['.$title.']', $width, ' ', STR_PAD_RIGHT).PHP_EOL);
echo_style($style, str_pad(' ['.$title.']', $width, ' ', STR_PAD_RIGHT)); echo_style($style, str_pad($message, $width, ' ', STR_PAD_RIGHT).PHP_EOL);
echo PHP_EOL; echo_style($style, str_repeat(' ', $width).PHP_EOL);
echo_style($style, $message);
echo PHP_EOL;
echo_style($style, str_repeat(' ', $width));
echo PHP_EOL;
} }
function has_color_support() function has_color_support()

View File

@ -42,8 +42,8 @@
<target name="db_mysql" description="Run test for MySQL"> <target name="db_mysql" description="Run test for MySQL">
<delete dir="${basedir}/app/config/parameters.yml"/> <delete dir="${basedir}/app/config/parameters.yml"/>
<exec executable="cp"> <exec executable="cp">
<arg value="${basedir}/app/config/tests/parameters_test.mysql.yml"/> <arg value="${basedir}/app/config/tests/parameters.yml.dist.mysql"/>
<arg value="${basedir}/app/config/parameters_test.yml"/> <arg value="${basedir}/app/config/parameters.yml"/>
</exec> </exec>
<exec executable="php"> <exec executable="php">
@ -56,8 +56,8 @@
<target name="db_sqlite" description="Run test for SQLite"> <target name="db_sqlite" description="Run test for SQLite">
<delete dir="${basedir}/app/config/parameters.yml"/> <delete dir="${basedir}/app/config/parameters.yml"/>
<exec executable="cp"> <exec executable="cp">
<arg value="${basedir}/app/config/tests/parameters_test.sqlite.yml"/> <arg value="${basedir}/app/config/tests/parameters.yml.dist.sqlite"/>
<arg value="${basedir}/app/config/parameters_test.yml"/> <arg value="${basedir}/app/config/parameters.yml"/>
</exec> </exec>
<exec executable="php"> <exec executable="php">
@ -70,8 +70,8 @@
<target name="db_pgsql" description="Run test for PostgreSQL"> <target name="db_pgsql" description="Run test for PostgreSQL">
<delete dir="${basedir}/app/config/parameters.yml"/> <delete dir="${basedir}/app/config/parameters.yml"/>
<exec executable="cp"> <exec executable="cp">
<arg value="${basedir}/app/config/tests/parameters_test.pgsql.yml"/> <arg value="${basedir}/app/config/tests/parameters.yml.dist.pgsql"/>
<arg value="${basedir}/app/config/parameters_test.yml"/> <arg value="${basedir}/app/config/parameters.yml"/>
</exec> </exec>
<exec executable="php"> <exec executable="php">

View File

@ -29,25 +29,12 @@
}, },
"require": { "require": {
"php": ">=5.5.9", "php": ">=5.5.9",
"ext-pcre": "*", "symfony/symfony": "3.0.*",
"ext-dom": "*",
"ext-curl": "*",
"ext-gd": "*",
"ext-session": "*",
"ext-ctype": "*",
"ext-hash": "*",
"ext-simplexml": "*",
"ext-json": "*",
"ext-mbstring": "*",
"ext-xml": "*",
"ext-iconv": "*",
"ext-tokenizer": "*",
"ext-pdo": "*",
"symfony/symfony": "3.1.*",
"doctrine/orm": "^2.5", "doctrine/orm": "^2.5",
"doctrine/doctrine-bundle": "^1.6", "doctrine/doctrine-bundle": "^1.6",
"doctrine/doctrine-cache-bundle": "^1.2", "doctrine/doctrine-cache-bundle": "^1.2",
"twig/extensions": "~1.0", "twig/extensions": "~1.0",
"symfony/assetic-bundle": "~2.3",
"symfony/swiftmailer-bundle": "^2.3", "symfony/swiftmailer-bundle": "^2.3",
"symfony/monolog-bundle": "^2.8", "symfony/monolog-bundle": "^2.8",
"sensio/distribution-bundle": "^5.0", "sensio/distribution-bundle": "^5.0",
@ -57,6 +44,7 @@
"friendsofsymfony/rest-bundle": "~1.4", "friendsofsymfony/rest-bundle": "~1.4",
"jms/serializer-bundle": "~1.0", "jms/serializer-bundle": "~1.0",
"nelmio/api-doc-bundle": "~2.7", "nelmio/api-doc-bundle": "~2.7",
"ezyang/htmlpurifier": "~4.6",
"mgargano/simplehtmldom": "~1.5", "mgargano/simplehtmldom": "~1.5",
"tecnickcom/tcpdf": "~6.2", "tecnickcom/tcpdf": "~6.2",
"simplepie/simplepie": "~1.3.1", "simplepie/simplepie": "~1.3.1",
@ -66,40 +54,32 @@
"pagerfanta/pagerfanta": "~1.0.3", "pagerfanta/pagerfanta": "~1.0.3",
"lexik/form-filter-bundle": "~5.0", "lexik/form-filter-bundle": "~5.0",
"j0k3r/graby": "~1.0", "j0k3r/graby": "~1.0",
"friendsofsymfony/user-bundle": "~2.0@dev", "friendsofsymfony/user-bundle": "dev-master",
"friendsofsymfony/oauth-server-bundle": "^1.5", "friendsofsymfony/oauth-server-bundle": "^1.5@dev",
"stof/doctrine-extensions-bundle": "^1.2@dev", "stof/doctrine-extensions-bundle": "^1.2@dev",
"scheb/two-factor-bundle": "~2.0", "scheb/two-factor-bundle": "~2.0",
"grandt/phpepub": "~4.0", "grandt/phpepub": "~4.0",
"wallabag/php-mobi": "~1.0.0", "wallabag/php-mobi": "~1.0.0",
"kphoen/rulerz-bundle": "~0.10", "kphoen/rulerz-bundle": "~0.10",
"guzzlehttp/guzzle": "^5.3.1", "guzzlehttp/guzzle": "^5.2.0",
"doctrine/doctrine-migrations-bundle": "^1.0", "doctrine/doctrine-migrations-bundle": "^1.0",
"paragonie/random_compat": "~1.0", "paragonie/random_compat": "~1.0"
"craue/config-bundle": "~1.4",
"mnapoli/piwik-twig-extension": "^1.0",
"lexik/maintenance-bundle": "~2.1",
"ocramius/proxy-manager": "1.*",
"white-october/pagerfanta-bundle": "^1.0",
"mouf/nodejs-installer": "~1.0",
"php-amqplib/rabbitmq-bundle": "^1.8",
"predis/predis": "^1.0",
"javibravo/simpleue": "^1.0"
}, },
"require-dev": { "require-dev": {
"doctrine/doctrine-fixtures-bundle": "~2.2", "doctrine/doctrine-fixtures-bundle": "~2.2",
"doctrine/data-fixtures": "~1.1.1",
"sensio/generator-bundle": "^3.0", "sensio/generator-bundle": "^3.0",
"phpunit/phpunit": "~5.0", "phpunit/phpunit": "~4.4",
"symfony/phpunit-bridge": "^3.0", "symfony/phpunit-bridge": "^2.7"
"friendsofphp/php-cs-fixer": "~1.9",
"m6web/redis-mock": "^2.0"
}, },
"scripts": { "scripts": {
"build-parameters": [
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters"
],
"post-cmd": [ "post-cmd": [
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters", "@build-parameters",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget" "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
], ],
@ -116,17 +96,21 @@
"symfony-var-dir": "var", "symfony-var-dir": "var",
"symfony-web-dir": "web", "symfony-web-dir": "web",
"symfony-tests-dir": "tests", "symfony-tests-dir": "tests",
"symfony-assets-install": "relative",
"incenteev-parameters": { "incenteev-parameters": {
"file": "app/config/parameters.yml" "file": "app/config/parameters.yml",
"env-map": {
"mailer_host": "WALLABAG_MAILER_HOST",
"mailer_user": "WALLABAG_MAILER_USER",
"mailer_password": "WALLABAG_MAILER_PASSWORD",
"secret": "WALLABAG_SECRET"
}
} }
}, },
"autoload": { "autoload": {
"psr-4": { "Wallabag\\": "src/Wallabag/" }, "psr-4": { "": "src/" },
"classmap": [ "app/AppKernel.php", "app/AppCache.php" ] "classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
}, },
"autoload-dev": {
"psr-4": { "Tests\\": "tests/" }
},
"config": { "config": {
"bin-dir": "bin" "bin-dir": "bin"
}, },

2392
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,61 +1,42 @@
version: '2' nginx:
services: image: nginx
nginx: ports:
image: nginx - "8080:80"
ports: volumes:
- "8080:80" - ./docker/nginx/nginx.conf:/nginx.conf
volumes: - ./docker/logs/nginx:/var/log/nginx
- ./docker/nginx/nginx.conf:/nginx.conf - .:/var/www/html
- ./docker/logs/nginx:/var/log/nginx links:
- .:/var/www/html - php:php
links: command: nginx -c /nginx.conf
- php:php php:
command: nginx -c /nginx.conf build: docker/php
ports:
php: - "9000:9000"
build: volumes:
context: docker/php - .:/var/www/html
args: #links:
# Set here your timezone using one of this: http://php.net/manual/en/timezones.php # - "postgres:rdbms"
timezone: 'Europe/Monaco' # - "mariadb:rdbms"
ports: env_file:
- "9000:9000" - ./docker/php/env
volumes: # Comment non-used DBMS lines
- .:/var/www/html # If all DBMS are commented out, sqlite will be used as default
#links: # - ./docker/postgres/env
# - "postgres:rdbms" # - ./docker/mariadb/env
# - "mariadb:rdbms" #postgres:
env_file: # image: postgres:9
- ./docker/php/env # ports:
# Comment non-used DBMS lines # - "5432:5432"
# If all DBMS are commented out, sqlite will be used as default # volumes:
# - ./docker/postgres/env # - ./docker/data/pgsql:/var/lib/postgresql/data
# - ./docker/mariadb/env # env_file:
# - ./docker/postgres/env
#postgres: #mariadb:
# image: postgres:9 # image: mariadb:10
# ports: # ports:
# - "5432:5432" # - "3306:3306"
# volumes: # volumes:
# - ./docker/data/pgsql:/var/lib/postgresql/data # - ./docker/data/mariadb:/var/lib/mysql
# env_file: # env_file:
# - ./docker/postgres/env # - ./docker/mariadb/env
#mariadb:
# image: mariadb:10
# ports:
# - "3306:3306"
# volumes:
# - ./docker/data/mariadb:/var/lib/mysql
# env_file:
# - ./docker/mariadb/env
rabbitmq:
image: rabbitmq:3-management
ports:
- "15672:15672"
redis:
image: redis
ports:
- "6379:6379"

View File

@ -1,15 +1,9 @@
FROM php:fpm FROM php:fpm
# Default timezone. To change it, use the argument in the docker-compose.yml file
ARG timezone='Europe/Paris'
RUN apt-get update && apt-get install -y \ RUN apt-get update && apt-get install -y \
libmcrypt-dev libicu-dev libpq-dev libxml2-dev libpng12-dev libjpeg-dev \ libmcrypt-dev libicu-dev libpq-dev libxml2-dev \
&& /usr/local/bin/docker-php-ext-configure gd --with-jpeg-dir=/usr/include \
&& docker-php-ext-install \ && docker-php-ext-install \
iconv mcrypt mbstring intl pdo pdo_mysql pdo_pgsql gd iconv mcrypt mbstring intl pdo pdo_mysql pdo_pgsql
RUN echo "date.timezone="$timezone > /usr/local/etc/php/conf.d/date_timezone.ini
RUN usermod -u 1000 www-data RUN usermod -u 1000 www-data

File diff suppressed because one or more lines are too long

View File

@ -1,57 +0,0 @@
Lasse wallabag in docker-compose laufen
=======================================
Um deine eigene Entwicklungsinstanz von wallabag laufen zu lassen,
möchtest du vielleicht die vorkonfigurierten docker compose Dateien
nutzen.
Voraussetzungen
---------------
Stelle sicher `Docker
<https://docs.docker.com/installation/ubuntulinux/>`__ und `Docker
Compose <https://docs.docker.com/compose/install/>`__ auf deinem
System verfügbar und aktuell zu haben.
Wechsel des DBMS
----------------
Standardmäßig startet wallabag mit einer SQLite Datenbank.
Da wallabag Unterstützung für Postgresql und MySQL bietet, gibt es
auch docker Container für diese.
In der ``docker-compose.yml`` kommentierst du für das gewählte DBMS
aus:
- die Container Definition (``postgres`` oder ``mariadb`` root
Level Block)
- den Container Link in dem ``php`` Container
- die Container Umgebungsdatei in dem ``php`` Container
Um mit Symfony Kommandos auf deinem Host auszuführen (wie z.B.
``wallabag:install``), sollst du außerdem:
- die richtige Umgebungsdatei auf deiner Kommandozeile einlesen,
sodass Variablen wie ``SYMFONY__ENV__DATABASE_HOST`` existieren
- eine Zeile ``127.0.0.1 rdbms`` in deiner ``hosts`` Datei auf dem
System erstellen
wallabag laufen lassen
----------------------
#. Forke und klone das Projekt
#. Bearbeite ``app/config/parameters.yml`` um ``database_*``
Eigenschaften mit den kommentierten zu ersetzen (mit Werten
mit ``env.`` Präfix)
#. ``composer install`` die Projektabhängigkeiten
#. ``php bin/console wallabag:install``, um das Schema zu erstellen
#. ``docker-compose up`` um die Container laufen zu lassen
#. Schließlich öffne http://localhost:8080/, um dein frisch
installiertes wallabag zu finden.
In den verschiedenen Schritten wirst du vielleicht in verschiendene
Probleme laufen wie UNIX Berechtigungsprobleme, falschen Pfaden im
generierten Cache, etc.…
Operationen wie das Löschen der Cachedateien oder das Ändern der
Dateibesitzer können öfter gebraucht werden, darum habe keine Angst
sie anzupassen.

View File

@ -1,10 +0,0 @@
Wirke an dieser Dokumentation mit
=================================
Quellen der Dokumentation sind hier zu finden https://github.com/wallabag/wallabag/tree/master/docs
Wir nutzen `ReadTheDocs <https://readthedocs.org>`__, um sie zu generieren.
Seiten werden in `reStructuredText <https://de.wikipedia.org/wiki/ReStructuredText>`__ geschrieben. Du kannst Onlinetools wie http://rst.aaroniles.net/ oder http://rst.ninjs.org/ nutzen, um eine Vorschau deiner Artikel zu betrachten.
Wenn du eine neue Seite erstellst, vergiss nicht die `index.rst <https://raw.githubusercontent.com/wallabag/wallabag/master/docs/en/index.rst>`__ zu bearbeiten, um dort einen Link für die Seitenleiste hinzuzufügen.

View File

@ -1,32 +0,0 @@
Wartungsmodus
=============
Wenn du längere Aufgaben auf deiner wallabag Instanz ausführen willst, kannst du den Wartungsmodus aktivieren.
Keiner wird dann Zugang zu deiner Instanz haben.
Aktivieren des Wartungsmodus
----------------------------
Um den Wartungsmodus zu aktivieren, führe folgendes Kommando aus:
::
bin/console lexik:maintenance:lock --no-interaction
Du kannst deine IP Adresse in ``app/config/config.yml`` setzen, wenn du Zugriff zu wallabag haben willst, auch wenn der Wartungsmodus aktiv ist. Zum Beispiel:
::
lexik_maintenance:
authorized:
ips: ['127.0.0.1']
Deaktivieren des Wartungsmodus
------------------------
Um den Wartungsmodus zu deaktivieren, führe dieses Kommando aus:
::
bin/console lexik:maintenance:unlock

View File

@ -1,77 +0,0 @@
Installiere RabbitMQ für asynchrone Aufgaben
============================================
Um asynchrone Aufgaben zu starten (nützlich z.B. für große Imports), können wir RabbitMQ nutzen.
Voraussetzungen
---------------
Du musst RabbitMQ auf deinem Server installiert haben.
Installation
~~~~~~~~~~~~
.. code:: bash
wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc
apt-key add rabbitmq-signing-key-public.asc
apt-get update
apt-get install rabbitmq-server
Konfiguration und Starten
~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: bash
rabbitmq-plugins enable rabbitmq_management # (useful to have a web interface, available at http://localhost:15672/ (guest/guest)
rabbitmq-server -detached
RabbitMQ stoppen
~~~~~~~~~~~~~~~
.. code:: bash
rabbitmqctl stop
Konfigure RabbitMQ in wallabag
------------------------------
Bearbeite die Datei ``parameters.yml``, um die RabbitMQ Konfiguration einzurichten. Die Standardkonfiguration sollte ok sein:
.. code:: yaml
rabbitmq_host: localhost
rabbitmq_port: 5672
rabbitmq_user: guest
rabbitmq_password: guest
Starte den RabbitMQ Consumer
----------------------------
Abhängig von welchem Service du importieren möchtest, solltest du einen Cron Job aktivieren (oder mehrere, wenn du viele unterstützen willst):
.. code:: bash
# for Pocket import
bin/console rabbitmq:consumer import_pocket -w
# for Readability import
bin/console rabbitmq:consumer import_readability -w
# for Instapaper import
bin/console rabbitmq:consumer import_instapaper -w
# for wallabag v1 import
bin/console rabbitmq:consumer import_wallabag_v1 -w
# for wallabag v2 import
bin/console rabbitmq:consumer import_wallabag_v2 -w
# for Firefox import
bin/console rabbitmq:consumer import_firefox -w
# for Chrome import
bin/console rabbitmq:consumer import_chrome -w

View File

@ -1,71 +0,0 @@
Installiere Redis für asynchrone Aufgaben
=========================================
Um asynchrone Aufgaben zu starten (nützlich z.B. für große Imports), können wir Redis nutzen.
Voraussetzungen
---------------
Du musst Redis auf deinem Server installiert haben.
Installation
~~~~~~~~~~~~
.. code:: bash
apt-get install redis-server
Starten
~~~~~~
Der Redis Service läuft eventuell schon direkt nach der Installation. Falls nicht kannst du ihn wie folgt starten:
.. code:: bash
redis-server
Konfigure Redis in wallabag
---------------------------
Bearbeite die Datei ``parameters.yml``, um die RabbitMQ Konfiguration einzurichten. Die Standardkonfiguration sollte ok sein:
.. code:: yaml
redis_host: localhost
redis_port: 6379
Starte den Redis Consumer
-------------------------
Abhängig von welchem Service du importieren möchtest, solltest du einen Cron Job aktivieren (oder mehrere, wenn du viele unterstützen willst):
.. code:: bash
# for Pocket import
bin/console wallabag:import:redis-worker pocket -vv >> /path/to/wallabag/var/logs/redis-pocket.log
# for Readability import
bin/console wallabag:import:redis-worker readability -vv >> /path/to/wallabag/var/logs/redis-readability.log
# for Instapaper import
bin/console wallabag:import:redis-worker instapaper -vv >> /path/to/wallabag/var/logs/redis-instapaper.log
# for wallabag v1 import
bin/console wallabag:import:redis-worker wallabag_v1 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v1.log
# for wallabag v2 import
bin/console wallabag:import:redis-worker wallabag_v2 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v2.log
# for Firefox import
bin/console wallabag:import:redis-worker firefox -vv >> /path/to/wallabag/var/logs/redis-firefox.log
# for Chrome import
bin/console wallabag:import:redis-worker instapaper -vv >> /path/to/wallabag/var/logs/redis-chrome.log
Wenn du den Import nur für ein paar Nachrichten und nicht für alle starten willst, kannst du die Nummer (im folgenden Beispiel 12) angeben. Der Redis Worker wird dann nach der 12. Nachricht stoppen:
.. code:: bash
bin/console wallabag:import:redis-worker pocket -vv --maxIterations=12

View File

@ -1,57 +0,0 @@
Übersetze wallabag
==================
wallabag Webapplikation
-----------------------
Übersetzungsdateien
~~~~~~~~~~~~~~~~~~~
.. note::
Da wallabag hauptsächlich von einem französischem Team entwickelt wird, betrachte
die französische Übersetzung als die aktuellste und kopiere sie, um deine eigene Übersetzung zu starten.
Du kannst die Übersetzungsdateien hier finden: https://github.com/wallabag/wallabag/tree/master/src/Wallabag/CoreBundle/Resources/translations.
Du musst die ``messages.CODE.yml`` und ``validators.CODE.yml`` erstellen, wobei CODE
der ISO 639-1 Code deiner Sprache ist (`siehe Wikipedia <https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes>`__).
Andere Dateien zum Übersetzen:
- https://github.com/wallabag/wallabag/tree/master/app/Resources/CraueConfigBundle/translations.
- https://github.com/wallabag/wallabag/tree/master/app/Resources/FOSUserBundle/translations.
Du musst die ``THE_TRANSLATION_FILE.CODE.yml`` Dateien erstellen.
Konfigurationsdatei
~~~~~~~~~~~~~~~~~~~
Du musst die `app/config/config.yml <https://github.com/wallabag/wallabag/blob/master/app/config/config.yml>`__ bearbeiten,
um deine Sprache auf der Konfigurationsseite in wallabag anzuzeigen (um Nutzern zu erlauben zu dieser neuen Übersetzung zu wechseln).
Unter dem Abschnitt ``wallabag_core.languages`` musst du eine neue Zeile mit deiner Übersetzung hinzufügen. Zum Beispiel:
::
wallabag_core:
...
languages:
en: 'English'
fr: 'Français'
Für die erste Spalte (``en``, ``fr``, etc.) musst du den ISO 639-1 Code deiner Sprache hinzufügen (siehe oben).
Für die zweite Spalte trägst du den Namen deiner Sprache ein. Nur den.
wallabag Dokumentation
----------------------
.. note::
Im Gegensatz zur Webapplikation ist die Hauptsprache für die Dokumentation Englisch.
Documentationsdateien sind hier gespeichert: https://github.com/wallabag/wallabag/tree/master/docs
Du musst die Ordnerstruktur des Ordners ``en`` beachten, wenn du deine eigene Übersetzung startest.

View File

@ -1,60 +0,0 @@
wallabag Dokumentation
======================
.. image:: ../img/wallabag.png
:alt: wallabag Logo
:align: center
**wallabag** ist eine Read-it-later Applikation: es speichert Websites,
indem es nur den Inhalt behält. Elemente wie Navigation oder Werbung werden gelöscht.
.. tip::
Diese Dokumentation ist über wallabag v2. Wenn du die Dokumentation für wallabag v1 lesen willst, `siehe dir bitte das hier an <https://github.com/wallabag/documentation>`__.
Die Hauptdokumentation für diese Applikation ist in einigen Abschnitten organisiert:
* :ref:`user-docs`
* :ref:`dev-docs`
Die Dokumentation ist in anderen Sprachen verfügbar :
* `Documentation in english <http://doc.wallabag.org/en/master/>`_
* `Documentation en français <http://doc.wallabag.org/fr/master/>`_
.. _user-docs:
.. toctree::
:maxdepth: 2
:caption: Nutzerdokumentation
user/faq
user/installation
user/upgrade-2.0.x-2.1.y
user/upgrade-2.0.x-2.0.y
user/migration
user/import
user/create_account
user/login
user/configuration
user/first_article
user/errors_during_fetching
user/annotations
user/download_articles
user/filters
user/tags
user/android
.. _dev-docs:
.. toctree::
:maxdepth: 2
:caption: Entwicklerdokumentation
developer/api
developer/docker
developer/documentation
developer/translate
developer/maintenance
developer/redis
developer/rabbitmq

View File

@ -1,107 +0,0 @@
Android App
===========
Zweck dieses Dokuments
----------------------
Dieses Dokument beschreibt wie du deine Android App einrichtest, damit sie mit deiner Wallabaginstanz zusammenarbeitet. Es gibt hierbei keinen Unterschied im Vorgang - egal ob du Wallabag v1 oder v2 einsetzt.
Schritte, um dein App zu einzurichten
-------------------------------------
Wenn du das erste Mal die App startest, siehst du den Willkommensbildschirm, wo du angewiesen wirst zunächst deine App mit deiner Wallabaginstanz einzurichten.
.. image:: ../../img/user/android_welcome_screen.de.png
:alt: Willkommensbildschirm
:align: center
Bestätige nur diese Nachricht und du wirst zum Einstellungsbildschirm weitergeleitet.
.. image:: ../../img/user/android_configuration_screen.de.png
:alt: Einstellungsbildschirm
:align: center
Trage deine Wallabagdaten ein. Du musst deine Wallabagadresse eintragen. Es ist wichtig, dass die URL nicht mit einem Schrägstrich endet. Füge auch deine Wallabagzugangsdaten in das Nutzer- und Passwortfeld ein.
.. image:: ../../img/user/android_configuration_filled_in.de.png
:alt: Eingetragene Einstellungen
:align: center
Nachdem du deine Daten eingetragen hast, drücke den Button Verbindung testen und warte auf das Fertigstellen des Tests.
.. image:: ../../img/user/android_configuration_connection_test.de.png
:alt: Verbindungstest mit deinen Wallabagdaten
:align: center
Der Verbindungstest sollte mit Erfolg ausgehen. Falls nicht, musst du zunächst deine Daten korrigieren bevor du zum nächsten Schritt gehst.
.. image:: ../../img/user/android_configuration_connection_test_success.de.png
:alt: Verbindungstest war erfolgreich
:align: center
Nach dem Verbindungstest erfolgreich war, kannst du den Button zum Feedzugangsdaten abholen drücken. Die App versucht nun sich bei deiner Wallabaginstanz einzuloggen und die Nutzer ID und den dazugehörigen Token für die Feeds zu laden.
.. image:: ../../img/user/android_configuration_get_feed_credentials.de.png
:alt: Feedzugangsdaten abholen
:align: center
Wenn der Prozess des Abholens deiner Feedzugangsdaten erfolgreich beendet wurde, siehst du eine Toastnachricht, dass die User ID und der Token automatisch in das Formular eingetragen wurden.
.. image:: ../../img/user/android_configuration_feed_credentials_automatically_filled_in.de.png
:alt: Feedzugangsdaten erfolgreich abgeholt
:align: center
Jetzt scrollst du bis zum unteren Rand des Einstellungsbildschirms. Natürlich kannst du die Einstellungen dort deinen Wünschen anpassen. Schließe die Einrichtung mit dem Drücken des Speicherbuttons ab.
.. image:: ../../img/user/android_configuration_scroll_bottom.de.png
:alt: unterer Rand des Einstellungsbildschirms
:align: center
Nachdem du den Speicherbutton gedrückt hast, kommst du in den folgenden Bildschirm. Die App schlägt vor, eine initiale Synchronisation der Artikelfeeds durchzuführen. Hier ist es empfohlen, dies zu bestätigen und Ja zu drücken.
.. image:: ../../img/user/android_configuration_saved_feed_update.de.png
:alt: Einstellung erstmals gespeichert
:align: center
Schließlich nach der ersten erfolgreichen Synchronisation, wird dir die Liste der ungelesenen Artikel präsentiert.
.. image:: ../../img/user/android_unread_feed_synced.de.png
:alt: Gefüllte Artikellist da Feeds erfolgreich synchronisiert sind
:align: center
Bekannte Limitierungen
---------------------
2FA
~~~
Zur Zeit unterstützt die App keine Zwei-Faktor Authentifizierung. Du solltest sie deaktivieren damit die App funktioniert.
Begrenzte Anzahl Artikel mit Wallabag v2
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In deiner Wallabaginstanz kannst du einstellen, wie viele Artikel Teil deiner RSS Feeds sind. Diese Option existierte in Wallabag v1 nicht, wo immer alle Artikel Teil des Feeds waren. Also wenn du die Anzahl der Artikel, die in der App angezeigt werden sollen, größer einstellst als die Anzahl Artikel in deinem Feed, wirst du nur die Anzahl an Artikel deines Feeds sehen.
SSL/TLS Verschlüsselung
~~~~~~~~~~~~~~~~~~~~~~~
Wenn du deine Wallabaginstanz per HTTPS erreichen kannst, solltest du das so konfigurieren. Besonders dann, wenn deine HTTP URL nach HTTPS umleitet. Im Moment kann die App mit dieser Weiterleitung nicht korrekt umgehen.
Referenzen
----------
`Quellcode der Android Applikation <https://github.com/wallabag/android-app>`_
`Android Applikation auf F-Droid <https://f-droid.org/repository/browse/?fdfilter=wallabag&fdid=fr.gaulupeau.apps.InThePoche>`_
`Android Applikation auf Google Play <https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche>`_
`Support Chat auf English <https://gitter.im/wallabag/wallabag>`_

View File

@ -1,24 +0,0 @@
Anmerkungen
===========
In jedem Artikel, den du liest, kannst du Anmerkungen hinzufügen. Es ist einfacher mit ein paar Bilder erklärt.
Wähle den Teil des Artikels aus, den du kommentieren willst und klicke auf den Bleistift:
.. image:: ../../img/user/annotations_1.png
:alt: Wähle den Text
:align: center
Schreibe deinen Kommentar:
.. image:: ../../img/user/annotations_2.png
:alt: Schreibe deinen Kommentar
:align: center
Der Text ist nun hervorgehoben und du kannst deine Anmerkung lesen, wenn du den Mauspfeil darüber fährst.
.. image:: ../../img/user/annotations_3.png
:alt: lese deine Anmerkung
:align: center
Du kannst so viele Anmerkungen erstellen wie du möchtest.

View File

@ -1,119 +0,0 @@
Konfiguration
=============
Nun, da du eingeloggt bist, ist es Zeit, deinen Account so zu konfigurieren,
wie du möchtest.
Klicke auf ``Konfiguration`` im Menü. Du hast fünf Karteireiter: ``Einstellungen``,
``RSS``, ``Benutzer-Informationen``, ``Kennwort`` und ``Tagging-Regeln``.
Einstellungen
-------------
Theme
~~~~~
wallabag ist anpassbar. Du kannst dein bevorzugtes Theme hier auswählen. Du kannst
auch ein neues erstellen, ein extra Kapitel wird dem gewidmet sein. Das Standardtheme
ist ``Material``, es ist das Theme, dass in den Dokumentationsbildschirmfotos genutzt wird.
Artikel pro Seite
~~~~~~~~~~~~~~~~~
Du kannst die Anzahl der dargestellten Artikel pro Seite ändern.
Lesegeschwindigkeit
~~~~~~~~~~~~~~~~~~~
wallabag berechnet die Lesezeit für jeden Artikel. Du kannst hier definieren, dank dieser Liste, ob du
ein schneller oder langsamer Leser bist. wallabag wird die Lesezeit für jeden Artikel neu berechnen.
Sprache
~~~~~~~
Du kannst die Sprache von der wallabag Benutzeroberfläche ändern. Du musst die ausloggen, damit diese
Änderung Wirkung zeigt.
RSS
---
wallabag stellt RSS Feeds für jeden Artikelstatus bereit: ungelesen, Favoriten und Archiv.
Als erstes musst du einen persönlciehn Token erstellen: Klicke auf ``Token generieren``.
Es ist möglich deinen Token zu ändern, indem du auf ``Token zurücksetzen`` klickst.
Jetzt hast du drei Links, einen für jeden Status: Füge sie in deinem liebsten Feedreader hinzu.
Du kannst auch definieren wie viele Artikel du in deinem RSS Feed (Standardwert: 50) haben willst.
Benutzer-Informationen
----------------------
Du kannst deinen Namen ändern, deine E-Mail-Adresse und die Zwei-Faktor-Authentifizierung aktivieren.
Zwei-Faktor-Authentifizierung
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Die Zwei-Faktor-Authentifizierung (2FA) dient dem Identitätsnachweis eines Nutzers mittels der
Kombination zweier verschiedener und insbesondere unabhängiger Komponenten (Faktoren).
https://de.wikipedia.org/wiki/Zwei-Faktor-Authentifizierung
Wenn du 2FA aktivierst, erhälst du jedes Mal, wenn du dich bei wallabag einloggen willst, einen Code per
Mail. Du musst den Code in das folgende Formular eingeben.
.. image:: ../../img/user/2FA_form.png
:alt: Zwei-Faktor-Authentifizierung
:align: center
Wenn du nicht jedes Mal, wenn du dich einloggen willst, einen Code zugesendet bekommen möchtest, kannst du
die Checkbox ``Ich bin an einem persönlichen Computer`` anhaken: wallabag wird sich an dich für 15 Tage
erinnern.
Passwort
--------
Du kannst dein Passwort hier ändern (8 Zeichen Minimum).
Tagging-Regeln
--------------
Wenn du automatisch einen Tag zu einem neuen Artikel zuweisen lassen möchtest, ist dieser Teil der
Konfiguration, was du suchst.
Was ist mit Tagging-Regeln gemeint?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Dies sind Regeln, die von wallabag genutzt werden, um neue Artikel automatisch zu taggen
Jedes Mal, wenn ein neuer Artikel hinzugefügt wird, werden alle Tagging-Regeln genutzt, um deine
konfigurierten Tags hinzuzufügen, folglich um dir den Aufwand zu sparen, die Artikel manuell einzuteilen.
Wie benutze ich sie?
~~~~~~~~~~~~~~~~~~~~
Nehmen wir an, du möchtest neuen Artikeln einen Tag *schnell gelesen*, wenn du die Lesezeit kleiner als
3 Minuten ist.
In diesem Fall solltest du in das Regelfeld "readingTime <= 3" eintragen und *schnell gelesen* in das Tags-Feld.
Mehrere Tags können gleichzeitig hinzugefügt werden, wenn man sie mit einem Komma trennt:
*schnell gelesen, Pflichtlektüre*.
Komplexe Regeln können mit vordefinierten Operatoren geschrieben werden:
Wenn *readingTime >= 5 AND domainName = "github.com"*, dann tagge als *lange zu lesen, github*.
Welche Variablen und Operatoren kann ich zum Regeln schreiben nutzen?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Die folgenden Variabel und Operatoren können genutzt werden, um Tagging-Regeln zu erstellen:
=========== ============================================== ======== ==========
Variable Bedeutung Operator Bedeutung
----------- ---------------------------------------------- -------- ----------
title Titel des Artikels <= Kleiner gleich als…
url URL des Artikels < Kleiner als…
isArchived Ob der Artikel archiviert ist oder nicht => Größer gleich als…
isStarred Ob der Artikel favorisiert ist oder nicht > Größer als…
content Inhalt des Eintrags = Gleich zu…
language Sprache des Eintrags != Nicht gleich zu…
mimetype MIME-Typ des Eintrags OR Eine Regel oder die andere
readingTime Die geschätzte Lesezeit in Minuten AND Eine Regel und die andere
domainName Der Domain-Name des Eintrags matches Testet, dass ein Feld einer Suche (unabhängig von Groß- und Kleinschreibung) übereinstimmt. Z.B.: title matches "Fußball"
=========== ============================================== ======== ==========

View File

@ -1,25 +0,0 @@
Account erstellen
=================
Klicke auf der Loginseite auf den ``Registrieren`` Button-
.. image:: ../../img/user/registration_form.png
:alt: Registrierungsformular
:align: center
Du musst das Formular ausfüllen. Bitte stelle sicher, dass du eine gültige
E-Mail-Adresse eingibst, wir werden dir eine Aktivierungsmail schicken.
.. image:: ../../img/user/sent_email.png
:alt: E-Mail wurde gesendet, um Account zu aktivieren
:align: center
Überprüfge deinen Posteingang, du hast jetzt eine neue Mail mit einem Link wie diesen
``http://wallabag/register/confirm/Ba19wokGovN-DdBQNfg4YgRkUQWRP4-k2g0Bk-hBTX4``.
Klicke auf den Link, um deinen Account zu aktivieren.
Dein Account ist nun aktiviert.
.. image:: ../../img/user/activated_account.png
:alt: Willkommen!
:align: center

Some files were not shown because too many files have changed in this diff Show More