Compare commits

...

1493 Commits

Author SHA1 Message Date
1db9d411c5 Merge pull request #1420 from modos189/v2_display_picture
improved display pictures
2015-09-14 17:15:40 +02:00
451bad02f0 improved display pictures 2015-09-14 02:12:39 +03:00
b004a236ba Merge pull request #1401 from wallabag/v2-baggy-themes
Cleanup baggy
2015-09-13 21:07:27 +02:00
1a5f7e2d88 A little more width for filter view 2015-09-13 19:53:09 +02:00
5e98404dfb Re-add preview picture on baggy
Which should has been removed on merge
2015-09-13 15:17:58 +02:00
463573bf69 Update deps 2015-09-13 15:07:15 +02:00
5def3f5862 Filters view on side for baggy 2015-09-13 14:56:34 +02:00
71e51207ce Fix tests 2015-09-13 14:56:34 +02:00
1137fae94d Lower domain search length
When searching for "bbc" I got no result .. sigh.
2015-09-13 13:35:12 +02:00
d2fcbf5d84 Handle filter form using some JS
Instead of displaying an ugly form
2015-09-13 13:35:12 +02:00
19c283140e Cleanup base layout 2015-09-13 13:35:12 +02:00
89ee994f77 Remove some global assets
Some global assets where dedicated to baggy
Remove some non-used css
2015-09-13 13:35:12 +02:00
a78d6afeaa Move baggy theme in its folder 2015-09-13 13:35:12 +02:00
4d5fd9be81 Merge pull request #1417 from wallabag/v2-display-picture
fix #972: add preview pictures
2015-09-13 11:41:23 +02:00
40f59b219b Merge pull request #1418 from wallabag/v2-previewpicture-filter
filter for entries with previewPicture
2015-09-13 10:14:42 +02:00
497e0cad7c add test for previewPicture filter 2015-09-13 10:11:22 +02:00
b026d3b115 add previewPicture on baggy theme 2015-09-13 10:03:53 +02:00
616f9fea26 forgot case for previewPicture filter 2015-09-13 08:43:15 +02:00
a3bcd60a37 filter for entries with previewPicture 2015-09-12 17:08:12 +02:00
fb96ea8845 Merge pull request #1362 from wallabag/v2-fosuser
implement FosUser
2015-09-12 16:13:40 +02:00
e610143f51 add preview pictures 2015-09-12 13:39:01 +02:00
af43bd3767 Fix tests
Ensure that created use during install command will always be unique.
We assume that the install command must be run to initialize a wallabag instance. NEVER to add more user.

Also, use a better way to retrieve the real name of the database and not the one defined in parameters.yml (which isn't the same for test envi because the dbname isn't defined in parameters.yml but directly in config_test.yml)
2015-09-12 11:36:16 +02:00
3f7a62908c fix tests for FosUser 2015-09-11 20:32:37 +02:00
a1691859ca implement FosUser 2015-09-11 20:32:37 +02:00
9c08a891f9 Merge pull request #1397 from wallabag/v2-graby
Integrate graby
2015-09-11 20:17:42 +02:00
f1e29e69cb CS 2015-09-10 22:00:53 +02:00
558d9aabab Move fetching content in a separate class 2015-09-10 21:57:25 +02:00
75c3478a0c Update deps 2015-09-10 15:09:44 +02:00
49e564ec15 Merge pull request #1403 from wallabag/v2-material-full-size-domain-filter
Use full size of the panel for domain-filtering
2015-08-26 07:13:11 +02:00
e643992350 typo 2015-08-26 00:24:33 +02:00
b125ed0394 Use full size of the panel for domain-filtering
For longer domains
2015-08-26 00:19:17 +02:00
c6da9bea71 Merge pull request #1400 from wallabag/v2-fix-1357
fix #1357, truncate domain name if it's too loooong
2015-08-25 07:51:55 +02:00
50243f0e34 fix #1357, truncate domain name if it's too loooong 2015-08-24 22:09:57 +02:00
d13de40db6 Update url from graby 2015-08-24 19:52:31 +02:00
a1413a3da9 CS 2015-08-24 12:35:02 +02:00
fad316151c Integrate graby 2015-08-24 12:27:17 +02:00
8c55a9e6c9 Merge pull request #1395 from wallabag/v2-fix-1378
fix #1378: nice display for tags list
2015-08-24 12:16:08 +02:00
230413bdd1 Merge pull request #1396 from wallabag/j0k3r-patch-1
Apply margin only on settings page
2015-08-24 12:04:24 +02:00
dc1c2debfb Apply margin only on settings page 2015-08-24 12:03:00 +02:00
a754db33c9 fix #1378: nice display for tags list 2015-08-24 11:59:53 +02:00
7083d183b9 Merge pull request #1392 from wallabag/v2-fix-redirect
Fix redirect after deletion
2015-08-24 10:44:14 +02:00
8bb1f3d69a Merge pull request #1393 from wallabag/fix-filter-same-day
Fix date filter on same day
2015-08-24 10:39:24 +02:00
f90af145ca Add test for same day filter 2015-08-23 22:06:27 +02:00
bccb5bba75 Merge pull request #1384 from wallabag/v2-fix-config-display
fix #1371 config screen: display bug in RSS tab
2015-08-23 13:17:21 +02:00
7d6c3edcdd Fix date filter on same day
Fix #1379
2015-08-22 15:36:07 +02:00
ec00964de2 Merge pull request #1372 from wallabag/v2-assign-tags
assign tags to an entry
2015-08-22 12:56:42 +02:00
7244d6cb61 assign tags to an entry 2015-08-22 12:40:48 +02:00
83aaf84195 Fix display issue in config rss tab 2015-08-22 12:30:06 +02:00
16a3d04cbd Fix redirect after deletion
Fix #1391
2015-08-22 12:09:27 +02:00
f9d5155abf Merge pull request #1390 from wallabag/coderating
Enable code rating on Scrutinizer
2015-08-21 18:11:52 +02:00
b45c188516 Enable code rating on Scrutinizer 2015-08-21 18:00:02 +02:00
f506da40e2 Merge pull request #1385 from wallabag/v2-status-filter
filters: implement status filter and a new view (to display all entries)
2015-08-21 17:49:20 +02:00
3b84dc08fc restore composer.lock 2015-08-21 11:02:22 +02:00
78f66dcc52 Merge pull request #1389 from wallabag/v2-fix-duplicate
remove dead code
2015-08-21 11:00:49 +02:00
c937de3443 remove dead code 2015-08-21 08:36:57 +02:00
2b7a488917 filters: adapt queryBuilder for 'all' view 2015-08-21 07:38:18 +02:00
e177976099 filters: add test for status filter and adapt other tests results 2015-08-21 07:30:48 +02:00
89659c9eae filters: implement status filter and a new view (to display all entries) 2015-08-21 07:30:48 +02:00
109d67dbb1 Merge pull request #1386 from wallabag/v2-refactor
WIP – Fixing things around 💨
2015-08-20 21:51:02 +02:00
6682139ec5 CS 2015-08-20 20:39:52 +02:00
e6f55346fd Add test on getting starred entries using the API 2015-08-20 20:39:26 +02:00
eccf5eb2e0 Add title in "picto-link"
Picto aren't always obvious for every one. So it's better to have some title when we move the mouse over.
2015-08-20 20:39:26 +02:00
1dbcd63b59 Update baggy about page
According to what have been done on the material theme
2015-08-20 20:39:26 +02:00
4793ee6509 Fixed my name & website 👌 2015-08-20 20:39:26 +02:00
6eebd8c909 Remove unsed things 2015-08-20 20:39:26 +02:00
0ab7404f93 Refactorize the way to retrieve entries
One place to retrieve entries in Entry & Rss controller.
More simple and easy to maintain.
2015-08-20 20:39:22 +02:00
4fcb7eaf13 Merge pull request #1383 from wallabag/cs
CS
2015-08-20 08:22:39 +02:00
8ce32af612 CS
We shouldn't forget to run `php-cs-fixer` time to time
2015-08-20 07:53:55 +02:00
34437f408c Merge pull request #1369 from wallabag/v2-bottombar
fix #1332: bottom bar to display message
2015-08-19 21:27:49 +02:00
ab4aeb8bd8 Merge pull request #1375 from wallabag/v2-fix-1371
fix #1368 config: redirect on correct tab in material theme
2015-08-19 21:26:29 +02:00
fdab81e910 warning bar: add parameter to dis/enable it 2015-08-19 16:00:15 +02:00
c3fdbcc60f Merge pull request #1374 from wallabag/v2-fix-filters-display
filters: enhance view for domain name
2015-08-19 15:32:38 +02:00
e62d27ff9b bottom bar to display message 2015-08-19 15:14:08 +02:00
8b8cdabc89 config: redirect on correct tab in material theme 2015-08-19 15:10:11 +02:00
bdd23b076a filters: enhance view for domain name 2015-08-19 14:55:39 +02:00
7b2d336893 Merge pull request #1342 from wallabag/v2-domain-filter
fix #981: add filter on domain name
2015-08-19 14:33:46 +02:00
443cecd2d8 add filter on domain name 2015-08-19 14:27:00 +02:00
b71ebd9af9 Merge pull request #1366 from wallabag/fix-tags-view
fix tag view in material theme
2015-08-19 12:02:24 +02:00
22ed64522a Merge pull request #1365 from wallabag/v2-typo-pagination
change </div> into </ul>
2015-08-19 11:21:31 +02:00
2e02b50409 Merge pull request #1367 from wallabag/v2-fix-actions-label
action labels depend on status
2015-08-19 11:20:22 +02:00
a3b4e8a2c0 Merge pull request #1363 from wallabag/v2-add-date-filter-view
add creation date filter view
2015-08-19 11:19:43 +02:00
d5e9a99ce6 Merge pull request #1370 from wallabag/v2-composer-cleanup
fix 1356: diet for composer
2015-08-19 11:19:04 +02:00
68568bf0b7 diet for composer 2015-08-18 21:53:11 +02:00
02947111c0 change </div> into </ul> 2015-08-18 18:20:07 +02:00
e68d9179a1 fix tag view in material theme 2015-08-18 18:18:35 +02:00
c713273619 action labels depend on status 2015-08-18 18:13:30 +02:00
3f357ee241 add test 2015-08-18 16:33:32 +02:00
c3cb46809b Merge pull request #1341 from wallabag/v2-capistrano
capistrano config
2015-08-18 16:14:23 +02:00
72ea6dd1a7 add creation date filter view 2015-08-18 15:26:45 +02:00
54f2b4a254 Merge pull request #1353 from wallabag/v2-pluriel
check if one entry or not
2015-08-18 14:29:10 +02:00
3162601c59 Merge pull request #1343 from wallabag/v2-filter-date
[WIP] filter by creation date
2015-08-18 14:28:43 +02:00
6819604185 Merge pull request #1354 from wallabag/v2-clean
some cleanup
2015-08-18 09:11:40 +02:00
f967422fae Update CONTRIBUTING.md 2015-08-18 08:49:42 +02:00
428af5a8c3 usage of transchoice 2015-08-18 08:32:50 +02:00
fd72e99d53 remove capistrano in gitignore 2015-08-18 08:26:41 +02:00
2a2903ceaa some cleanup 2015-08-17 23:31:10 +02:00
fac3f8abfa Merge pull request #1355 from wallabag/v2-clear-button
clean -> clear
2015-08-17 23:22:24 +02:00
e40ff14d7d Merge pull request #1358 from wallabag/nicosomb-patch-1
Disable external_code_coverage on Scrutinizr
2015-08-17 23:21:59 +02:00
a2cdaa8cdd disable external_code_coverage 2015-08-17 23:11:20 +02:00
4a230f9844 change timeout because scrutinizer failed 2015-08-17 21:39:07 +02:00
5f246a5543 clean -> clear 2015-08-17 20:12:11 +02:00
2ba06b1ee2 check if one entry or not 2015-08-17 18:02:54 +02:00
3c5b025ac3 filter by creation date 2015-08-17 15:54:49 +02:00
ceb79aa016 capistrano config 2015-08-17 15:36:27 +02:00
925d8ab316 Merge pull request #1337 from modos189/v2_material
fixes material
2015-08-17 15:32:59 +02:00
d5b28518e9 fix 2015-08-17 16:30:30 +03:00
0a3a5f6cd7 Merge pull request #1352 from wallabag/v2-fix-pagination
fix #1350: fix pagination with filters
2015-08-17 15:19:35 +02:00
ab2c93c7eb add test 2015-08-17 15:15:51 +02:00
727b39a90e Fix calendar in chromium and reducing the size of the calendar 2015-08-17 15:43:44 +03:00
c14a7c4251 fix #1350: fix pagination with filters 2015-08-17 12:13:37 +02:00
c37381b946 Merge pull request #1349 from wallabag/v2-add-original-link
add link to original article in material theme
2015-08-17 09:20:41 +02:00
790d18a319 GUI for filter by creation date #1343 2015-08-17 03:12:14 +03:00
6fd3d82c01 Hide open menu on page reading articles 2015-08-17 02:02:55 +03:00
fcb3faf109 My implementation progress bar at the top of the page #1348 2015-08-17 01:50:46 +03:00
d75a9fa38b Fix:
When I click on "new article" icon, and on the cross after, the filter icon is no more visible.
    When I change the size of my browser window, the filter appears but I didn't click on the icon
    Bug: can't click on pagination > 1
    display bug: when we load homepage, we see quickly the filter form
    new entry form: when we click on the field, the history of the field is at the left of the screen, not below the field (see screenshot)
2015-08-17 01:29:51 +03:00
0e7cf1fc50 Merge remote-tracking branch 'origin/v2' into v2_material 2015-08-17 00:33:03 +03:00
9cc6bd87fe add link to original article in material theme 2015-08-16 21:05:37 +02:00
80127e4fb1 Merge pull request #1338 from wallabag/v2-add-titles
change title for material pages / about page
2015-08-13 11:53:34 +02:00
4ca0c9139c fix diaspora url 2015-08-13 09:18:41 +02:00
a64f1d9f2d change title for material pages / about page 2015-08-13 09:16:22 +02:00
bac5a34552 Fix form rendere 2015-08-12 23:52:40 +03:00
a737d2a0ee Merge remote-tracking branch 'origin/v2' into v2_material 2015-08-12 23:02:19 +03:00
545b852f46 Merge pull request #1331 from wallabag/v2-disable-download
disable download links on entry view
2015-08-12 21:58:46 +02:00
392f4a2681 #1320 Design for filters 2015-08-12 22:55:44 +03:00
120544cccd disable download links on entry view 2015-08-12 21:52:39 +02:00
82b07eb272 Merge pull request #1334 from wallabag/v2-store-domainname
store domainName in database
2015-08-12 21:45:21 +02:00
c2257428b2 store domainName in database 2015-08-12 21:16:00 +02:00
8ba913d87a improved view 2015-08-12 20:27:30 +03:00
06fdfd025e fix #1321 2015-08-12 19:18:31 +03:00
d990dc6f05 Merge pull request #1328 from wallabag/v2-fix-1324
fix #1324: do not display pagination when only 1 page
2015-08-12 14:12:08 +02:00
bdf39ff10d remove pagination if page == 1 with baggy theme 2015-08-12 14:06:56 +02:00
2ac2e0bc2b fix #1324: do not display pagination when only 1 page 2015-08-12 14:05:53 +02:00
1a0ea1f35a Merge pull request #1326 from wallabag/v2-fix-1299
fix #1299: change send buttons on config page
2015-08-12 13:42:32 +02:00
43e6f47d5b fix #1299: change send buttons on config page 2015-08-12 13:35:48 +02:00
9f1d650ae8 Merge pull request #1325 from wallabag/v2-fix-1314
fix #1314: change max-width in material theme
2015-08-12 13:31:34 +02:00
b69fc0628a fix #1314: change max-width in material theme 2015-08-12 13:26:49 +02:00
a8596c35c8 Merge pull request #1323 from wallabag/v2-1302-checkbox
fix #1302: add 'stay connected' checkbox
2015-08-12 13:23:52 +02:00
a15692b1b7 Merge pull request #1312 from wallabag/v2-fix-1311
fix #1311, redirect after login
2015-08-12 13:21:16 +02:00
6622cf9968 add translation 2015-08-12 13:21:07 +02:00
7fc14130c7 add test 2015-08-12 13:18:39 +02:00
579764b264 fix indentation 2015-08-12 13:03:26 +02:00
3e1f25e22f Merge pull request #1322 from wallabag/v2-fix-1303
fix #1303, add link to homepage on forgot password page
2015-08-12 12:43:02 +02:00
5a58461491 add 'stay connected' checkbox 2015-08-12 12:27:12 +02:00
773ed2e7a6 fix #1303, add link to homepage on forgot password page 2015-08-12 12:16:50 +02:00
496f21e6fa Merge pull request #1319 from wallabag/v2-form-header
add new post form in material header
2015-08-12 10:14:44 +02:00
053b9568b2 add new post form in material header 2015-08-12 09:52:36 +02:00
930334cd6d Merge pull request #1297 from wallabag/v2-estimated-time
store estimated reading time in database (#393)
2015-08-12 09:05:21 +02:00
2686457448 store estimated reading time / filters on reading time 2015-08-12 09:01:29 +02:00
fedaf00537 Merge pull request #1317 from wallabag/v2-fix-typo
fix link in howto page
2015-08-11 21:26:31 +02:00
ea8da8c6d5 fix link in howto page 2015-08-11 21:12:08 +02:00
95135988f9 Merge pull request #1316 from wallabag/v2-focus-searchform
fix #1310 add focus to search form
2015-08-11 20:00:30 +02:00
d85454fbf8 add focus to search form 2015-08-11 18:07:02 +02:00
728a432850 fix #1311, redirect after login 2015-08-10 22:37:56 +02:00
f59601fced Merge pull request #1298 from modos189/v2_fix_material
fix material
2015-08-10 19:35:23 +02:00
0e654f6273 Merge remote-tracking branch 'origin/v2' into v2_fix_material
# Conflicts:
#	src/Wallabag/CoreBundle/Resources/views/themes/material/base.html.twig
2015-08-10 15:25:23 +03:00
f48a018929 Merge pull request #1295 from wallabag/v2-howto
add howto page
2015-08-10 14:15:11 +02:00
b958d9e59b remove useless line 2015-08-10 14:13:23 +02:00
4919584b87 Merge remote-tracking branch 'origin/v2' into v2_fix_material
# Conflicts:
#	src/Wallabag/CoreBundle/Resources/views/themes/material/base.html.twig
2015-08-10 12:27:12 +03:00
1473e8c9fb add tests for static pages 2015-08-10 08:19:40 +02:00
47cadf36c8 Merge pull request #1292 from wallabag/v2-tags-route
Add tags list display
2015-08-09 22:47:28 +02:00
20a69dffe7 Merge pull request #1304 from wallabag/v2-rename-starred-menu
rename favorite in starred
2015-08-09 20:47:13 +02:00
009696d0a8 rename favorite in starred 2015-08-09 20:31:53 +02:00
e9d5c2bf02 Merge pull request #1296 from wallabag/v2-fix-564
fix #564: replace Untitled by the domain name
2015-08-08 20:58:03 +02:00
946d6a5124 Preparation for adding links 2015-08-08 01:30:52 +03:00
a6523cfe86 fix #1281 2015-08-08 00:16:14 +03:00
c54ea989a3 fix #1281 (notifications when we star articles are buggy)
All notification corrected
2015-08-08 00:08:29 +03:00
342f0cc55a fix #1281 (When I save 10 articles, I've got 4 lines: 3 articles on 1st line, 3 on 2nd one, only 1 on 3rd line and 3 on last lines (chrome and firefox)) 2015-08-08 00:00:11 +03:00
0e7650683d Title in navigation bar 2015-08-07 23:59:11 +03:00
768303a573 fix #1282 2015-08-07 23:29:21 +03:00
0bc2baa65c fix #564: replace Untitled by the domain name 2015-08-07 21:57:53 +02:00
b7dd5f824c add howto page 2015-08-07 21:22:43 +02:00
54139268f8 Merge pull request #1294 from wallabag/v2-fix-1282
fix #1282: add title on wallabag logo
2015-08-07 20:56:45 +02:00
44a16e82d8 fix #1282: add title on wallabag logo 2015-08-07 20:47:19 +02:00
d0b90fbe18 unit test 2015-08-07 20:29:03 +02:00
55333dfd21 Merge pull request #1293 from wallabag/v2-items-per-page
get itemsPerPage for unread/fav/archive views
2015-08-07 20:10:07 +02:00
47e12c3677 fix display 2015-08-07 20:07:39 +02:00
3f3fbef11f Add tags list display 2015-08-07 18:17:23 +02:00
48ffc5a4b6 get itemsPerPage for unread/fav/archive views 2015-08-07 18:04:46 +02:00
6ecdd48a3f Merge pull request #1286 from wallabag/v2-issue-1283
fix #1283: display the good title for each category
2015-08-06 04:38:04 +03:00
b17874a7d5 Many corrections material theme 2015-08-06 04:22:45 +03:00
308db01684 change order of condition 2015-08-05 21:16:48 +02:00
b1a65df9df fix #1283: display the good title for each category 2015-08-05 21:10:20 +02:00
8d9b8912af Merge pull request #1279 from wallabag/material-default
set material to default theme \o/
2015-08-04 23:13:15 +02:00
4ab58dcf6c set material to default theme \o/ 2015-08-04 22:51:21 +02:00
9e07dc982c Merge pull request #1276 from modos189/v2
Added Material theme
2015-08-04 22:42:33 +02:00
9948d899d3 Fixes and improve css @media 2015-08-04 19:39:26 +03:00
53e121881b Added Material theme 2015-08-04 17:18:15 +03:00
7e63b892f9 Merge pull request #1250 from frankoa/v2_pagination_and_api
Adds pagerfanta paginator everywhere, modifies article routing.
2015-07-29 09:02:30 +02:00
9fb6ac830f Adds pagerfanta paginator everywhere, modifies article routing. Change API for is_starred and is_archived 2015-07-28 23:23:49 +02:00
9b9b05008a Merge branch 'v2-edit-title' into v2 2015-06-08 16:35:41 +02:00
ac9d58211e Merge branch 'v2' into v2-edit-title 2015-06-08 16:35:02 +02:00
3cf22a0541 Merge pull request #1206 from wallabag/sf-2.7
Upgrade to Symfony 2.7
2015-06-03 21:24:11 +02:00
82d6d9cb06 Add basic title edition
Fix #218
I mean basic, because there is no javascript at all. It could be a nice edit-in-place. But for the moment, it is simple.
2015-06-02 18:56:07 +02:00
75e9d1df03 Update to Symfony 2.7
And fix some deps instead of using dev tags
2015-06-02 16:58:19 +02:00
170746f99d Remove phinx
Doctrine handle quite correctly database migration. Thanks to `doctrine:schema:update`
2015-06-02 16:54:52 +02:00
51d9699fa1 Update deps 2015-06-01 17:39:05 +02:00
2878416f8b Merge pull request #1167 from wallabag/v2-api-bundle
Move API stuff in ApiBundle
2015-06-01 15:49:49 +02:00
4346a86068 CS 2015-05-30 13:59:33 +02:00
399bd777d7 Update deps 2015-05-30 13:42:38 +02:00
2f3c816579 Update naming strategy since Doctrine 2.5
See 20fb8270dc
2015-05-30 13:40:39 +02:00
9a014e48d6 Disable coverage
It takes ages to process and most of the time the build fail for "execution time" too long.
Too much time already burned to investigate it.
We'll investigate later, it's not a priority atm.
2015-05-30 13:31:54 +02:00
98510a4189 Merge pull request #1180 from wallabag/v2patch
Add some required
2015-04-15 17:29:28 +02:00
c7d3bf1671 name not required 2015-04-15 17:19:37 +02:00
4d6e818e40 changed email fields with the email type and added required parameter on some stuff 2015-04-15 16:50:20 +02:00
1cbef2d3b5 Enable debug on phpunit 2015-04-04 21:55:06 +02:00
04aaa199b7 Add Travis & Scrutinizer badges 2015-04-02 11:45:53 +02:00
132f614dee Avoid / in feed token
Of course, it breaks the url and the route matcher for each feed route
2015-04-01 21:59:13 +02:00
9744e97131 Fix tests 2015-04-01 21:59:13 +02:00
769e19dc4a Move API stuff in ApiBundle 2015-04-01 21:59:12 +02:00
e3c34bfc06 Merge pull request #1164 from wallabag/v2-remove-username-in-config
Remove ability to change username
2015-04-01 21:58:08 +02:00
d6fa2f70ac Merge pull request #1165 from wallabag/v2-prefix-db
Prefix table
2015-04-01 21:53:48 +02:00
276a1e9d3f And phpunit with html coverage to ant
Launching `ant phpunit` will now generate HTML Coverage
2015-04-01 21:32:02 +02:00
164bd80118 Ability to prefix tables
Will fix #799
2015-04-01 21:32:02 +02:00
c844dc0c50 Remove ability to change username
Since password are linked to username it was hard to change username while checking that the password is the good one.

Instead of doing crazy things to achieve that, I act that user won't be able to update username.

Also, username (and email) must be unique, since people logged in using username and can request a new password using email.

This should fix #1149
2015-04-01 21:23:27 +02:00
1a93ee423b Merge pull request #1166 from wallabag/v2-rss
Add RSS feeds
2015-04-01 21:08:56 +02:00
7d74a2f32b Force raw on content
We don't want Symfony to escape html content
2015-04-01 16:11:19 +02:00
14d7a69b8c Avoid timeout on code coverage from Scrutinizer 2015-03-31 22:48:01 +02:00
34c06cabef Use lemonde instead of mailjet
Mailjet seems to be laggy, hope that LeMonde will be more reliable in the future.

@see https://travis-ci.org/wallabag/wallabag/jobs/56246231
2015-03-31 22:48:01 +02:00
0ee043f745 Update InstallCommand test
They are god damn too long to execute because it launch external command (mostly related to doctrine).

So I've added a PHPUnit @group (`command-doctrine`) so that we can avoid launching them on a regular basis, like that:

`phpunit --exclude-group command-doctrine`
2015-03-31 22:48:01 +02:00
371ac69a6b Add tests
and fix few mistakes
2015-03-31 22:48:00 +02:00
2385f891e5 Sort by id is faster
Since it's the primary key
2015-03-31 22:47:43 +02:00
0c83fd5994 Add rss for entries
will fix #1000
2015-03-31 22:47:43 +02:00
f98a2a0fc3 Merge pull request #1152 from wallabag/v2-forgot-password
Handle forgot password
2015-03-30 17:05:37 +02:00
bdf2add2e8 Merge pull request #1163 from wallabag/v2-speed-up-tests
Speed up tests
2015-03-28 10:46:33 +01:00
3e6b7ea0e9 Rewrite travis & add scrutinizer 2015-03-28 00:25:47 +01:00
6141388969 Enable hhvm & nightly for curiosity 2015-03-27 19:59:45 +01:00
2d733277e6 Switch to Docker-based infrastructure 2015-03-27 19:59:42 +01:00
a05be8abec Use doctrine cache for tests 2015-03-27 19:49:11 +01:00
d0c2243b10 Add some tests 2015-03-08 22:47:32 +01:00
6894d48e03 Handle forgot password 2015-03-08 07:35:24 +01:00
f37d1427a1 Merge pull request #1110 from wallabag/v2-api-hypermedia
[WIP] API : hypermedia & tags
2015-03-06 21:48:33 +01:00
6e22bd737b Use pager in getEntries() and return Hateoas collection 2015-03-06 21:11:02 +01:00
bcf53ab75b Return pager into EntryRepository (for entries only) 2015-03-06 21:11:01 +01:00
a24f2c8808 Add Pagerfanta 2015-03-06 21:11:01 +01:00
48b67328e2 add getUser on Tag entity 2015-03-06 21:09:15 +01:00
efad7e53a1 add more log on AccessDeniedException 2015-03-06 21:09:15 +01:00
2ab8cb6816 fix tests 2015-03-06 21:09:15 +01:00
db2b4bf678 remove JsonResponse 2015-03-06 21:09:15 +01:00
b0cce9e636 fix tests for GET /entries/tags 2015-03-06 21:09:15 +01:00
1df1204d94 remove useless code 2015-03-06 21:09:15 +01:00
6ee416a069 commit bug with getSalt 2015-03-06 21:09:15 +01:00
0ca374e6a1 replace Response with JsonResponse 2015-03-06 21:09:15 +01:00
d8f9f37ab2 remove debug lines 2015-03-06 21:09:15 +01:00
092ca70725 add relation between user and tags, tests are broken 2015-03-06 21:09:15 +01:00
a36737f485 POST entries/tags with test 2015-03-06 20:50:31 +01:00
46bbd8d321 relation between tags and entries 2015-03-06 20:50:31 +01:00
6c87418ff0 fixtures for tag 2015-03-06 20:50:30 +01:00
1bd12b6229 fix GET /api/entries/{entry}/tags 2015-03-06 20:50:30 +01:00
0a018fe039 add relation between entry and tag 2015-03-06 20:50:30 +01:00
6d37a7e6c1 remove dumb code 2015-03-06 20:50:30 +01:00
b3dc0749d3 remove GET /tags/id 2015-03-06 20:50:30 +01:00
2691cf0438 GET /api/tags/id_tag method 2015-03-06 20:50:30 +01:00
1d14779154 remove isDeleted flag 2015-03-06 20:50:30 +01:00
aa4d6562c1 improve hateoas implementation 2015-03-06 20:50:30 +01:00
0ed6302212 returns serialzed object for GET /entries 2015-03-06 20:50:30 +01:00
0f00688096 first draft of hypermedia implementation 2015-03-06 20:50:29 +01:00
73b7744383 Merge pull request #1144 from wallabag/v2-build
Simplify build system
2015-03-04 06:25:17 +01:00
8378485e33 Simplify build system 2015-03-03 19:20:08 +01:00
ba7b9d48d4 Merge pull request #1132 from wallabag/v2-theme
V2 theme
2015-03-02 21:23:19 +01:00
3e30422cda Only one pattern for LiipTheme
Others patterns aren't required (but I think it's still important to have them around)
2015-03-01 20:25:43 +01:00
495aecfe74 Cleanup & simplify theme 2015-03-01 10:49:17 +01:00
71798e4ec4 Remove old themes 2015-03-01 10:49:16 +01:00
32da2a70ef Add LiipThemeBundle
Re-defined the config / user relation to be OneToOne bidirectionnal.
ConfigType is now a service so I can inject the list of available themes that are also used by LiipThemeBundle

Force sqlite for test
In case of people use a different driver in parameter.yml (yes I do :))
2015-03-01 10:49:16 +01:00
fca3c75723 config for CORS 2015-02-28 13:14:43 +01:00
dcae2fc25d enable CORS 2015-02-27 21:26:43 +01:00
0e7971d835 Merge pull request #1095 from wallabag/v2-config
V2 config
2015-02-23 20:56:09 +01:00
c641baad0e More tests on the install command 2015-02-22 23:29:48 +01:00
732c2ad897 sqlite doesn't support getListDatabasesSQL 2015-02-22 17:18:54 +01:00
0bf99bb144 Improve install command & add test
Also add fixtures for Config

InstallCommand now check if database, schema are here and ask the user what to do (keep or trash & re-create)
2015-02-22 14:35:36 +01:00
0bd2cb1ecd Handle default value for new user 2015-02-22 10:50:27 +01:00
e4977b8a86 Adding new user 2015-02-22 09:30:25 +01:00
c0d9eba07f Updating logged in user (email, name, etc ..) 2015-02-17 22:45:20 +01:00
d9085c63e3 Handle password change 2015-02-17 21:03:23 +01:00
7781faa0b0 Use a form type for entry 2015-02-16 21:31:58 +01:00
78cedc2262 Cleanup 2015-02-16 21:31:58 +01:00
4d85d7e9ba Implement simple config 2015-02-16 21:31:58 +01:00
7a577c519f Fix indentation in templates 2015-02-16 21:31:58 +01:00
55f58c9c5e Update UserConfig schema 2015-02-16 21:31:58 +01:00
2f6a596760 Merge pull request #1070 from wallabag/v2-api-tests
1st draft for testing API
2015-02-12 08:50:06 +01:00
8c7e0f95b9 remove debug lines 2015-02-12 08:46:40 +01:00
d9b7175593 test if GET /api/entries returns 1 or more results 2015-02-11 18:22:59 +01:00
59f18f9a85 create single test for bad headers 2015-02-11 16:08:13 +01:00
9ca5fd43f9 test with bad headers 2015-02-11 15:35:40 +01:00
f170f31594 add test for empty salt 2015-02-11 15:15:06 +01:00
874e3e10a4 phpdoc 2015-02-11 11:52:10 +01:00
f8c2736a10 remove docs 2015-02-11 09:39:42 +01:00
70b54da2b1 test line, forgot to remove it 2015-02-11 07:52:58 +01:00
c9fa9677c1 DELETE entry and use of query for fetch entries 2015-02-11 07:43:43 +01:00
fa8d563934 Merge pull request #1072 from wallabag/v2-entry-test
Add more tests to Entry controller + security
2015-02-11 06:45:14 +01:00
19aee7cd54 refactor and test one entry 2015-02-11 06:41:44 +01:00
2725de8efb cs 2015-02-11 06:31:16 +01:00
91f78f26f2 first test for API, need refactor 2015-02-11 06:28:23 +01:00
2734044aca add test for api/salts 2015-02-11 06:28:23 +01:00
0536b809b0 Test for GET on empty database 2015-02-11 06:27:50 +01:00
e1dd7f70c5 first test for API, need refactor 2015-02-11 06:27:05 +01:00
f5deb024a2 add test for api/salts 2015-02-11 06:27:04 +01:00
68c6f1bd7f Test for GET on empty database 2015-02-11 06:27:04 +01:00
da93261a7d Quick fix in build.xml
We don't need to purge the database since it was just re-created
2015-02-10 22:56:48 +01:00
3d2b2d62be Avoid user to see other entries
hehe :)
2015-02-10 22:56:44 +01:00
eb3bd7efb7 Add more tests on Entry controller
Also add more fixtures
2015-02-10 22:32:42 +01:00
f59f45d740 Merge pull request #1069 from wallabag/v2-fix-return-entries
GET /api/entries returns object, no more array
2015-02-10 14:51:32 +01:00
017e20895f findEntries returns array 2015-02-10 13:53:00 +01:00
2c0ffcf397 Merge pull request #1068 from wallabag/v2-api-authentication
V2 api authentication
2015-02-10 13:49:57 +01:00
3d3368cfd5 change test if we have no entry in GET /api/entries 2015-02-10 13:47:57 +01:00
92504e0dd4 move dir check into constructor 2015-02-10 13:35:34 +01:00
11204db45a change phpdoc 2015-02-10 12:14:09 +01:00
d4c029f46e review from @j0k3r 2015-02-10 12:12:44 +01:00
c5e8ba25bb getSalt method 2015-02-10 08:35:43 +01:00
eaf95758dc GET /api/entries returns object, no more array 2015-02-10 06:44:38 +01:00
7ffb1e80bf replace services.xml into services.yml 2015-02-09 22:54:29 +01:00
5078e8360a PSR 3 2015-02-09 22:43:06 +01:00
d29bfaf139 fix return on API call and fix id in clear for user 2015-02-09 22:40:20 +01:00
2a94b1d1b7 log for authentication on API 2015-02-09 22:07:39 +01:00
cbce162b40 Merge pull request #1063 from wallabag/v2-rename-tags-entity
Rename Tags entity
2015-02-09 15:52:10 +01:00
fb8389f463 change settings for TagsEntries model 2015-02-09 15:41:07 +01:00
970c40bb93 restore TagsEntries 2015-02-09 15:07:48 +01:00
0ac38198ab authentication on API 2015-02-09 13:59:48 +01:00
653e8be4c1 rename Tags entity
why did I delete this file?

rename Tags entity

rename Tags entity
2015-02-09 12:58:44 +01:00
89c03230c3 Merge pull request #1062 from wallabag/v2-relation-entry-user
add a real relation between user and entry
2015-02-09 12:52:06 +01:00
3b815d2de5 Add some fixtures
Improve test, so user can login
Fix some leftJoin
Cleanup EntryController
2015-02-08 23:13:40 +01:00
d91691573f Add custom auth encoder & provider
These custom classes allow Wallabag v2 to be compatible with Wallabag v1 salted password
2015-02-08 23:13:40 +01:00
7812f508bc create an Entry with a User in parameter 2015-02-08 23:13:40 +01:00
5f09650eef add a real relation between user and entry 2015-02-08 23:13:40 +01:00
8af35ad932 Merge pull request #1066 from wallabag/v2-api-tests-entry
V2 api tests entry
2015-02-07 20:39:03 +01:00
9c0c882006 Add some tests on EntryController
Also, create database schema on test initialisation
2015-02-07 18:30:46 +01:00
94f2364cd8 Fix #1057
Unexisting function
2015-02-07 18:29:05 +01:00
8125b415d8 Avoid raw javascript in template
It kills the Symfony Crawler :)
2015-02-07 18:28:31 +01:00
d01db0c71d Update deps 2015-02-06 22:52:51 +01:00
ed4d5cf2d7 Merge pull request #1065 from FabienM/v2-bundles-cleanup
Cleanup default assets symlinks
2015-02-06 22:43:19 +01:00
427b61a35b Cleanup default assets symlinks 2015-02-06 22:36:02 +01:00
7f2d9f9613 Do not display download progress in Travis 2015-02-06 15:38:10 +01:00
c64a14787d Merge pull request #1061 from wallabag/v2-cleanup-entities
Remove temporary entities
2015-02-06 14:56:47 +01:00
02b225a82e Remove temporary entities 2015-02-06 14:26:37 +01:00
15d33c24dc Merge pull request #1060 from wallabag/api-rename-user
rename User entity
2015-02-06 14:23:55 +01:00
2f69eb4afa rename User entity 2015-02-06 14:18:01 +01:00
29c4517f7a Merge pull request #1059 from wallabag/rename-entry
Rename entry
2015-02-06 09:55:16 +01:00
be463487cc rename Entries to Entry 2015-02-06 07:45:32 +01:00
905ae369bd normalize entries fields 2015-02-05 22:33:36 +01:00
c8dee95396 Merge pull request #1055 from wallabag/v2-api-patch-methid
PATCH method, boolean for some parameters and change entity methods name
2015-02-05 21:51:05 +01:00
c0284f6182 remove persist() for PATCH and DELETE 2015-02-05 21:36:39 +01:00
93e28e4d2e remove unused files 2015-02-05 21:33:22 +01:00
5644c2d88e Merge pull request #1054 from wallabag/v2-api-set-title-post
we can now set a title to the article when we use POST /api/entries
2015-02-05 19:07:30 +01:00
de00c9208d Merge pull request #1048 from wallabag/v2-sort-entries
sort entries in repository
2015-02-05 19:06:48 +01:00
2c093b03de PATCH method, boolean for some parameters and change entity methods name 2015-02-05 18:21:31 +01:00
9e0fff7cb0 simplify code 2015-02-05 18:19:34 +01:00
77bb7b92a2 we can now set a title to the article when we use POST /api/entries 2015-02-05 18:05:27 +01:00
3bb7c5ffec Update branch name in README 2015-02-05 09:19:17 +01:00
c2e2906c8d fix travis configuration 2015-02-05 09:06:13 +01:00
bc782eaa72 sort entries in repository 2015-02-05 07:54:04 +01:00
34d15eb4d0 change database structure for Entries 2015-02-04 22:25:44 +01:00
1b0e6e9ae6 forgot one parameter 2015-02-04 21:34:03 +01:00
61b9fdd5e4 restore full database settings 2015-02-04 21:26:15 +01:00
eacaf7f864 change type for isRead, isFav and isDeleted fields, as said @j0k3r 2015-02-04 18:21:45 +01:00
6079aaa33d change delete status for GET /api/entries method 2015-02-04 18:12:13 +01:00
6e334aba68 for GET /api/entries, star, delete and archive status are no more necessary 2015-02-04 18:06:42 +01:00
42a9064620 implement delete method 2015-02-04 17:54:23 +01:00
889249804f disable authentication for the moment 2015-02-02 12:54:14 +01:00
c5772d118f Installation should be launch manually
Also upadte readme for v2 and define a test database (for the future)
2015-02-02 07:48:16 +01:00
2e45e7bebc New wallabag installer
Instead of the legacy bin/install here is a symfony command that can initialize wallabag.

There are still work to do on the requirements part (to be sure that wallabag can run like a charm).

I've also added (but commented) the fixtures load part (which will need an extra doctrine package). We'll see that point later.
2015-02-01 20:16:27 +01:00
8394ab4619 Merge pull request #1036 from j0k3r/refactor-update-composer
Update composer
2015-01-31 21:49:44 +01:00
4cfbd5d893 Merge pull request #1037 from j0k3r/refactor-cs
CS
2015-01-31 21:24:20 +01:00
7df80cb32c CS 2015-01-31 19:12:49 +01:00
daacffefa6 Use tagged version in composer 2015-01-31 19:02:59 +01:00
1990517b22 remove Acme and AppBundle 2015-01-31 15:36:04 +01:00
c3235553dd first implementation of security 2015-01-31 15:14:10 +01:00
71691fe44a Merge pull request #1035 from j0k3r/refactor
Tests are working again
2015-01-31 10:29:30 +01:00
aa6e27cf4f Tests are working again 2015-01-31 09:35:50 +01:00
4ffc77d9f5 Move phpunit into app folder 2015-01-30 15:47:27 +01:00
fdcbdda1ad grrr, remove call to bootstrap 2015-01-30 11:29:50 +01:00
367664ee87 finally fix phpunit and travis? 2015-01-30 11:23:18 +01:00
e11e03cb32 fix phpunit 2015-01-30 10:58:59 +01:00
3ba208b205 fix phpunit configuration 2015-01-30 10:49:47 +01:00
127915f4ea remove bootstrap in phpunit 2015-01-30 09:11:59 +01:00
03493be075 tell to travis that I code in PHP 2015-01-30 09:09:53 +01:00
843dbe5195 create entry via API 2015-01-30 09:05:54 +01:00
a8c90c5c1b add documentation for API 2015-01-30 07:50:52 +01:00
a65f5d5563 fix config for rest bundle 2015-01-29 21:49:44 +01:00
27f15aa4ca improve API 2015-01-29 20:32:11 +01:00
f8bf895254 routing for API, trying to respect #414 2015-01-29 16:56:58 +01:00
589dce52c6 disable dev environment 2015-01-28 21:28:12 +01:00
38ba7ed972 skeleton for DELETE and PATCH methods 2015-01-28 18:18:57 +01:00
3e5a342f65 bundle for API 2015-01-28 18:14:04 +01:00
e4788de51e 1st implementation of wallabag api, yeah 2015-01-28 17:09:27 +01:00
569f8d6851 add dependencies for API 2015-01-28 16:15:06 +01:00
19f2f11ee8 fix themes symlinks 2015-01-28 13:58:12 +01:00
9e11bfa4a6 wrong path for database file 2015-01-28 13:54:24 +01:00
7dfc3c2b58 fix config.yml 2015-01-28 13:46:51 +01:00
80709502c7 fix parameters config 2015-01-28 13:43:23 +01:00
2cdb0b8f40 change gitignore, last time, I promised 2015-01-28 13:28:12 +01:00
b2d9357c78 change gitignore 2015-01-28 13:27:00 +01:00
c4b1e79018 change gitignore 2015-01-28 13:26:36 +01:00
dc61832a9e change gitignore 2015-01-28 13:23:07 +01:00
33767049a5 change gitignore 2015-01-28 13:10:59 +01:00
0c678cf24a rename test file 2015-01-27 13:17:37 +01:00
b9ec99e25b replace legacy calls with new one 2015-01-27 13:08:02 +01:00
d692b3b08d remove legacy code 2015-01-27 13:07:27 +01:00
6b767d1cc0 refactoring for fetching content 2015-01-26 22:15:19 +01:00
ad4d1caa9e move WallabagBundle into Wallabag:CoreBundle 2015-01-23 16:28:37 +01:00
b84a80559a some parameters, new entry form, etc. 2015-01-23 14:58:17 +01:00
163eae0bb1 toggle archive / fav actions 2015-01-23 12:45:24 +01:00
bd9f08157c article view, fav list, archive list 2015-01-22 21:11:22 +01:00
9d50517cea migrating legacy to symfony 2015-01-22 17:18:56 +01:00
2b9fe72b39 remove foo test 2015-01-22 10:14:37 +01:00
93fd4692f6 symfony is there 2015-01-22 08:30:07 +01:00
0440249631 move templates into resources 2015-01-21 16:04:05 +01:00
3eb951572d add some documentation at the end of installation 2015-01-21 15:50:51 +01:00
9de6a0a7cc gitignore for app/cache 2015-01-21 15:02:29 +01:00
19875ef0da add install script after composer install 2015-01-21 14:45:39 +01:00
00fcfd299b whoops, deleted install folder 2015-01-20 14:43:57 +01:00
79e051a1f2 restructure folders 2015-01-20 14:11:26 +01:00
97a2dd74c8 phinx needs a sqlite3 file 2015-01-20 07:51:07 +01:00
8d6ff10e8e test for migration 2015-01-20 07:50:50 +01:00
9a5c1bc62a move install files into bin folder 2015-01-20 07:42:20 +01:00
6ad93dff69 new folders 2015-01-20 07:40:39 +01:00
c78c1a3f08 @fivefilters via composer 2015-01-19 21:27:22 +01:00
9e7f6caf03 htmlawed via composer 2015-01-19 16:53:59 +01:00
820d81aa61 simplepie via composer 2015-01-19 14:48:03 +01:00
3329f1bf3d tcpdf via composer 2015-01-19 14:36:17 +01:00
90c67dbd12 update composer.lock 2015-01-19 13:50:31 +01:00
96b2c59c04 update composer 2015-01-19 13:38:57 +01:00
3d99ce9dad travis configuration 2015-01-19 13:37:32 +01:00
99410a21eb phpepub via composer 2015-01-19 13:00:33 +01:00
1345a10788 phinx for database migration 2015-01-19 12:21:49 +01:00
f3052b4542 foo test 2015-01-19 11:59:22 +01:00
e342acf7ba add phpunit 2015-01-19 11:47:44 +01:00
2b17e0aa77 bin folder 2015-01-19 11:29:43 +01:00
dda7884ace pagination with composer and move FlattrItem 2015-01-19 11:29:25 +01:00
10939766de replace session class 2015-01-18 22:25:29 +01:00
a20f96b76d replace flash messages library 2015-01-18 22:11:41 +01:00
adf17b677e remove 3rd libraries 2015-01-18 20:07:46 +01:00
894cd087f4 remove autoload section in composer.json 2015-01-16 20:56:46 +01:00
44f1fef018 packagist 2015-01-16 20:45:23 +01:00
170a1407fe Merge pull request #690 from doc75/log_auth_error
Add message in web server log in case of authentication failure
2015-01-16 20:06:57 +01:00
b68f0a81e5 Merge pull request #1003 from vpmalley/dev
[RSS] introducing query param 'limit' for max items in RSS feed
2015-01-16 20:04:56 +01:00
7fe8a9adc4 [RSS] introducing query param 'limit' to restrict the number of items to display in RSS feeds. 2015-01-16 11:42:39 -05:00
af5c371e95 Merge pull request #999 from moparisthebest/additions_dev
Miscellaneous additions
2015-01-13 22:45:33 +01:00
13c7f9a462 Add ability to mark all articles from a tag as read 2015-01-12 19:52:41 -05:00
512e5e5bd1 Add ability to delete all articles matching a search 2015-01-12 19:52:41 -05:00
7f782e4496 Add ability to tag an article on creation 2015-01-12 19:52:41 -05:00
c86b40f014 add message in web server log in case of authentication failure to enable the usage of fail2ban on failed login attempts 2015-01-05 10:21:04 +01:00
8ae45e7fe2 fixes #963 and use our own readability.php file for mobiClass 2015-01-03 13:03:26 +01:00
166ff0a093 updated french mo file (see #986) 2015-01-03 11:40:19 +01:00
82978fbd57 Merge branch 'master' into dev
To get the errors
2015-01-03 11:38:32 +01:00
1186b3b67a Merge pull request #986 from goofy-bz/patch-2
Update fr_FR.utf8.po
2015-01-02 21:23:42 +01:00
30b948e68b Update fr_FR.utf8.po
formulation (trivial)
2015-01-02 21:13:54 +01:00
1aa1461a2e Merge pull request #974 from jbfavre/fix_ftrss_call_can_break_import
Make call to FTRSS silent to avoid warnings which can break import
2014-12-26 10:31:15 +01:00
92ae99bd29 Merge branch 'dev' of https://github.com/wallabag/wallabag into dev 2014-12-26 10:27:30 +01:00
d4d33a4130 deleted (again) courgette 2014-12-26 10:25:49 +01:00
7a21c308be Merge pull request #975 from wallabag/fixflattrcalls
don't call flattr if flattr is disabled
2014-12-23 15:34:05 +01:00
37cad52229 don't call flattr if flattr is disabled 2014-12-22 16:26:23 +01:00
81315897f0 Make call to FTRSS silent to avoid warnings which can break import 2014-12-21 22:41:04 +01:00
9254b6cf46 Merge pull request #971 from wallabag/fix-jquery-installation
Fix jquery installation
2014-12-19 21:06:06 +01:00
0e65fa85d3 remove idea files 2014-12-18 10:37:17 +01:00
4eb71ab555 change jquery path into installation script 2014-12-18 10:36:47 +01:00
e9a64ef8a9 Merge pull request #923 from wallabag/add-html-doc
add HTML documentation
2014-12-17 22:59:28 +01:00
a50d7f0f20 link to doc inside wallabag:about 2014-12-17 22:55:33 +01:00
2903ffc54f Merge branch 'add-html-doc' of https://github.com/wallabag/wallabag into documentation-integration 2014-12-17 22:44:36 +01:00
5ea5310ab4 enable showing or not for epub/mobi/pdf export buttons 2014-12-14 15:17:39 +01:00
1256e4c645 Merge branch 'tcitworld-ebook' into dev 2014-12-14 00:16:39 +01:00
dc69d3e8d8 merge epub with all the dev evolutions 2014-12-14 00:16:22 +01:00
9c55ed0923 diaspora on all themes 2014-12-07 22:24:25 +01:00
7c2c49d9b1 added diaspora sharing 2014-12-06 18:42:29 +01:00
41bd2be68a Merge pull request #958 from etiess/patch-2
Update wallabag_compatibility_test.php
2014-11-26 14:08:51 +01:00
66d7a4dcd8 Update wallabag_compatibility_test.php
Explain how to install Tidy
2014-11-26 14:07:27 +01:00
b9c026ce32 Merge branch 'remove-courgette' into dev
Conflicts:
	themes/courgette/_view.twig
2014-11-24 22:56:10 +01:00
c4457fba85 upgrade documentation 2014-11-24 13:46:39 +01:00
d4b42995f7 add link to documentation into installation 2014-11-24 13:46:11 +01:00
485d57972e Merge pull request #939 from jsit/globaljs
_global-izing some more js & css
2014-11-24 13:23:53 +01:00
85c5a1ff8d failover if theme folder doesn't exist 2014-11-24 13:11:57 +01:00
7b8bb75228 Merge pull request #942 from wallabag/carrot
implementing carrot into wallabag
2014-11-21 22:15:17 +01:00
fe16457efc Merge pull request #945 from jsit/carrot
Fixing icon text on unread page
2014-11-21 22:10:02 +01:00
46533cac7d Fixing icon text on unread page 2014-11-21 16:07:15 -05:00
747a15841d Merge pull request #944 from jsit/carrot
Globalizing and creating two variants of Carrot.org icon
2014-11-21 21:47:37 +01:00
fc01f94387 Globalizing and creating two variants of Carrot.org icon; tidying up some CSS 2014-11-21 15:30:59 -05:00
e9d4d17693 fix merge confict 2014-11-19 16:54:28 +01:00
25f9c66834 Merge pull request #943 from wallabag/fixFlattrs
fix Flattrs
2014-11-19 16:40:36 +01:00
d25a3f13c2 default deactivated 2014-11-19 16:40:02 +01:00
b13376e918 fix Flattrs 2014-11-19 16:35:44 +01:00
c8b4ef7fed implementing carrot into wallabag 2014-11-19 16:27:56 +01:00
b0f9f5ac21 Merge pull request #938 from jsit/firefoxiconfix
Fix for favicons in Firefox
2014-11-18 22:36:53 +01:00
6062f74c6b Updating Baggy theme's head.twig to locate _global js/css 2014-11-18 10:07:32 -05:00
eb365a01fb _global-izing some more js & css 2014-11-18 10:01:37 -05:00
eb0c88a9d4 Fix for favicons in Firefox (FF only uses the last declared favicon, not the most appropriate: https://bugzilla.mozilla.org/show_bug.cgi?id=751712) 2014-11-18 09:28:39 -05:00
db3bffa284 Merge pull request #937 from jsit/favicons
Moving favicons to new _global theme dir and adjusting <link> tags
2014-11-17 23:15:47 +01:00
ca6c0de380 Adjusting Template class so that _global is ignored as a theme 2014-11-17 17:11:33 -05:00
d91ff81ca6 Modifying Courgette theme to comply with new app icon image location 2014-11-17 16:59:53 -05:00
9d2140c9a1 Fixing earlier commit wherein I lowercased some JS calls 2014-11-17 16:54:15 -05:00
7a0f454d39 Removing app icons from previous locations 2014-11-17 16:51:38 -05:00
d5b717dc77 Moving app icon images to /themes/_global/img/appicon/, updating Baggy and Default themes to point there 2014-11-17 16:49:34 -05:00
7cb517ce54 Adding/fixing favicon <link>s in Baggy theme header 2014-11-17 14:28:07 -05:00
a460404252 Merge pull request #933 from wallabag/dev
1.8.1b
2014-11-16 21:12:47 +01:00
d0287608b6 update constant version 2014-11-16 02:29:01 +01:00
1532376710 Merge pull request #932 from wallabag/dev
1.8.1
2014-11-15 20:48:49 +01:00
d3122db7b2 add DS_Store in gitignore 2014-11-08 08:25:00 +01:00
b46b8933ab Merge pull request #926 from jsit/aboutlink
Fixing URL typo on about page
2014-11-05 17:24:05 +01:00
62f3e6db75 Fixing URL typo on about page 2014-11-05 11:22:22 -05:00
a0c57b35a3 add HTML documentation 2014-11-04 08:33:05 +01:00
217f3ca0b4 Merge pull request #921 from wallabag/about-page
add about page
2014-11-03 23:01:23 +01:00
3eba7538a4 Merge pull request #920 from jsit/uifixes
Many small UI changes/fixes to Baggy theme and English translation files
2014-11-03 22:48:07 +01:00
fa6f5db97f Merge pull request #922 from jsit/menuhiding
Fixing menu hiding behavior when switching from mobile width to desktop width
2014-11-03 22:42:49 +01:00
ebea829d80 Improving class names for menu hiding 2014-11-03 13:32:20 -05:00
e319c49891 Fixing menu hiding behavior when switching from mobile width to desktop width 2014-11-03 13:28:58 -05:00
efd0a9f5f1 Applying changes to config.twig to default theme as well 2014-11-03 12:06:44 -05:00
94888d5fd4 Removing title text from bookmarklet 2014-11-03 09:13:42 -05:00
ac8b064f47 Restoring change password section in config 2014-11-03 09:11:25 -05:00
3c133bff49 add about page 2014-11-03 07:44:56 +01:00
20bb3f7f2a Merge pull request #919 from jsit/popupjs_
Improving JavaScript for popup forms
2014-11-03 06:46:18 +01:00
cc1f78a83d Many small UI changes/fixes to Baggy theme and English translation files. May need review. 2014-11-02 13:37:44 -05:00
ff02fd8aca Improving JavaScript for popup forms 2014-11-02 11:19:21 -05:00
063a2fadaa Removing spaces before colons on config screen 2014-11-02 10:30:13 -05:00
266b7328ef Merge branch 'dev' into uitextcase 2014-11-01 18:29:41 -04:00
893b8e4cef Merge pull request #917 from jsit/menuopacity
Fixing opacity issue when using mobile menu (#912)
2014-10-31 20:45:40 +01:00
1772de2531 Changing my tabs to spaces :) 2014-10-31 15:38:25 -04:00
75dc3a71b7 Fixing opacity issue when using mobile menu 2014-10-31 15:37:08 -04:00
0be82dedb6 Capitalizing "EPUB" as is defined by IDPF: http://idpf.org/epub 2014-10-31 15:26:33 -04:00
8a76674568 Merge pull request #913 from jsit/hotfix
Fixing regression in popup close button styling
2014-10-31 19:35:35 +01:00
40800c97b2 Fixing regression in popup close button styling 2014-10-31 14:34:10 -04:00
6926f6dcc7 Merge branch 'jsit-duplicateformstyles' into dev 2014-10-31 18:54:20 +01:00
a63cd1b06f fix merge errors 2014-10-31 18:54:08 +01:00
9cf370cfb6 Merge branch 'jsit-duplicateformstyles' into dev 2014-10-31 18:48:02 +01:00
ccaefcf69a merge 2014-10-31 18:47:54 +01:00
15eb5ca4b8 Merging changes with dev 2014-10-31 13:47:45 -04:00
224528f1de Merge pull request #909 from jsit/closebutton
Standardizing class names and styles for close buttons
2014-10-31 18:44:42 +01:00
ad2b61db80 Removing left border on popup forms on mobile widths 2014-10-31 13:32:34 -04:00
344c8f6b5c Fixing popup form width issue on narrow width 2014-10-31 13:28:39 -04:00
4bc70ed401 Making visual styling of search and bag it popup forms more consistent 2014-10-31 12:48:35 -04:00
b95a6f57bf Removing duplicate popup form styles 2014-10-31 12:37:54 -04:00
87e37e82fd Merge pull request #910 from jsit/default-theme-search-form-css
Moving search-form style out of messages css and into style.css
2014-10-31 17:34:03 +01:00
8519cc796f Moving search-form style out of messages css and into style.css 2014-10-31 12:31:13 -04:00
827bd1f899 Standardizing class names and styles for close buttons 2014-10-31 11:10:38 -04:00
ed0436d21e Merge pull request #908 from jsit/closemessage
Changing close message button to use &times; instead of X
2014-10-31 16:10:16 +01:00
242746fd17 Changing close message button to use &times; instead of X 2014-10-31 10:44:20 -04:00
f23fd0ee5e Merge pull request #907 from jsit/login
Some small design tweaks to the login page: Moving 'Stay signed in'...
2014-10-31 15:10:01 +01:00
1087b3cb4e Adding right margin to labels (to compensate for now-missing left margin on input fields) 2014-10-31 09:53:01 -04:00
f60c9b00ab Some small design tweaks to the login page: Moving 'Stay signed in' label and removing left margin on input boxes 2014-10-31 09:30:57 -04:00
6fe9b616aa Merge pull request #894 from wallabag/change-password-field
Fix #891: change type for password field in installation
2014-10-31 11:51:13 +01:00
655550e23a Merge pull request #904 from wallabag/vagrantfile
Vagrantfile
2014-10-31 11:50:53 +01:00
4bada2b954 Merge pull request #906 from jsit/tagstitle
Uppercasing 'tags' page title
2014-10-30 21:55:46 +01:00
a87a1b7d3b Uppercasing 'tags' page title 2014-10-30 16:54:24 -04:00
4fae3b0a85 Merge pull request #898 from jsit/previewtext
Fixing issue #874, displaying preview text when in list mode
2014-10-30 21:43:21 +01:00
052bdfc17e Merge pull request #897 from jsit/displaymode
Fixing display mode switching in Baggy theme (issue #896)
2014-10-30 21:43:15 +01:00
476b8902bb Merge pull request #905 from jsit/closebutton
Making the close button more visually consistent on the menu popup forms
2014-10-30 21:25:26 +01:00
6f0b92138f Merge pull request #903 from jsit/uitextcase
Fixing some more text case issues
2014-10-30 21:08:11 +01:00
cd271fc485 Making the close button more visually consistent on the menu popup forms 2014-10-30 16:00:18 -04:00
0bf65303ca change database name 2014-10-30 20:43:39 +01:00
c4800fc6da ignore vagrant directory 2014-10-30 20:42:17 +01:00
d51c2e05d3 Vagrantfile, from @fguillot for kanboard 2014-10-30 20:40:56 +01:00
ce096afed7 Fixing some more text case issues 2014-10-30 15:37:59 -04:00
06e7e7ff7b Merge pull request #902 from jsit/en_us
Adding 'en_US' locale (issue #901)
2014-10-30 20:34:08 +01:00
bbbda080bf Adding 'en_US' locale (issue #901) 2014-10-30 15:32:00 -04:00
574f3faf06 Adding 'en_US' locale (issue #901) 2014-10-30 15:30:09 -04:00
b56c86457c Merge pull request #900 from jsit/uitextcase
Fixing a bunch of English translation letter casing and syntax (issue #899)
2014-10-30 18:37:58 +01:00
7212386e98 Fixing a bunch of English translation letter casing and syntax (issue #899) 2014-10-30 12:17:26 -04:00
b73a175386 Fixing issue #874, displaying preview text when in list mode 2014-10-30 11:23:18 -04:00
c9e6fec4bf Fixing display mode switching in Baggy theme (issue #896) 2014-10-30 11:20:05 -04:00
fcd37d0c7b change type for password field in installation 2014-10-29 21:02:07 +01:00
b40cd4e73f Merge pull request #889 from wallabag/fix#871
Fix#871
2014-10-27 20:58:13 +01:00
1b6e21d7a6 translation fix finished for #871 and bring add tag from search feature to all themes 2014-10-27 15:12:46 +01:00
7ee1972599 translation fix for #887 and tiny display fix 2014-10-27 14:00:47 +01:00
24479b479d Merge pull request #888 from wallabag/updated-site-config
updated site_config
2014-10-27 09:28:30 +01:00
90a1a78b1e updated site_config 2014-10-27 06:46:13 +01:00
4a50075784 Merge pull request #883 from wallabag/hotfixepub
fix #882
2014-10-22 15:12:49 +02:00
606bea72e1 fix #882 2014-10-22 15:10:38 +02:00
4eb603430d Merge pull request #879 from Marmo/patch-1
update zeit.de.txt for removal of inline ads
2014-10-21 19:42:21 +02:00
76b1e0babe update zeit.de.txt for removal of inline ads 2014-10-21 19:33:40 +02:00
f2248e604d Merge pull request #878 from wallabag/greybuttonread
fix #873
2014-10-20 15:07:24 +02:00
f56791e6c4 fix #873 2014-10-19 11:12:25 +02:00
750d904a16 fix translation issues 2014-10-17 21:08:08 +02:00
691a03f176 Merge pull request #868 from wallabag/popupoverlap
fix for #830
2014-10-15 16:53:06 +02:00
48fb171d7a fix for #830 2014-10-15 16:47:38 +02:00
8fd0512a3c Merge pull request #848 from 11mariom/dev
Add support for custom http port
2014-10-14 19:57:16 +02:00
5b16d508b5 Merge pull request #843 from rros/mysql-utf8mb4
Convert the MySQL charset to utf8mb4 to support the full range of unicode
2014-10-14 19:56:50 +02:00
05e313ad28 Merge pull request #867 from wallabag/zindex-menu-bug
fix z-index-menu mobile view bug #834
2014-10-14 19:50:28 +02:00
b9fa7d2c9c fix z-index-menu mobile view bug #834 2014-10-12 10:24:07 +02:00
8ce508cab0 Create adme.ru.txt
Siteconfig
2014-10-12 10:00:35 +02:00
dffbec1c44 Merge pull request #865 from Marmo/patch-1
update heise.de.txt
2014-10-11 15:30:51 +02:00
ad0eccb4cd update heise.de.txt
Multi-page Telepolis-articles (www.heise.de/tp/...) are not fetched correctly atm. My addition to the single_page_link makes it work (tested with http://www.heise.de/tp/artikel/42/42579/1.html).
2014-10-11 15:22:53 +02:00
44d35257e8 Merge branch 'dev' 2014-10-10 13:33:54 +02:00
cf8a5e1eed Merge branch 'master' into dev
Conflicts:
	index.php
2014-10-10 13:33:36 +02:00
6b0894c66a Merge pull request #860 from wallabag/compatibility_file
Move compatibility file (fixes #858)
2014-10-08 21:36:51 +02:00
a7058a5a13 Right redirect from the new path 2014-10-08 21:35:21 +02:00
1403af5be3 Merge pull request #861 from wallabag/fix-query-sqlite-install
query for populate mysql/postgres was called when we choosed sqlite
2014-10-08 21:32:03 +02:00
20b4d7d621 query for populate mysql/postgres was called when we choosed sqlite 2014-10-08 21:23:34 +02:00
7331ed3e80 change href in install/index.php 2014-10-08 21:11:56 +02:00
79dd109e37 Fixes #858: move compatibility file into install folder 2014-10-08 21:08:21 +02:00
a305326973 Merge pull request #787 from wallabag/data-for-mysql
Add data for mysql installation, see #624
2014-10-08 19:32:39 +02:00
3dca040a0b Fix bug for #787 2014-10-08 19:31:15 +02:00
8327f1c371 Merge branch 'dev' into data-for-mysql 2014-10-08 19:26:26 +02:00
73c833780c Merge pull request #855 from wallabag/fix-828
Fix #828
2014-10-04 21:27:05 +02:00
f2cc1db1a8 Merge pull request #856 from wallabag/fix-826
Fix #826
2014-10-04 20:34:40 +02:00
34c2d1bdd1 get content 2014-10-04 20:17:00 +02:00
29e95769b5 Merge pull request #854 from wallabag/saveclick2search
Saveclick2search (fix for #831)
2014-10-04 20:13:10 +02:00
e3c44f9c0f get full content 2014-10-04 19:45:02 +02:00
40d2042228 small fix for better width for search translations full display 2014-10-04 19:08:56 +02:00
ab494e4ede translate search messages 2014-10-04 19:01:43 +02:00
1cd02d55fb autofocus on all themes 2014-10-04 18:51:43 +02:00
f183f72bf4 Merge branch 'dev' into saveclick2search 2014-10-04 18:47:56 +02:00
8b6c710b09 fixed bug in config screen for default theme 2014-10-04 18:45:43 +02:00
04b589420e search field selected 2014-10-04 18:44:18 +02:00
e38e46ecdb Merge pull request #853 from wallabag/fix-for-#797
Fix for #797
2014-10-04 17:50:01 +02:00
ace428669b fix for #758 2014-09-28 19:12:28 +02:00
b37110cc82 Merge branch 'issue-844' of https://github.com/rros/wallabag into dev 2014-09-28 17:48:06 +02:00
cde2fc3842 Merge branch 'dev' of https://github.com/wallabag/wallabag into dev 2014-09-28 17:32:50 +02:00
ffcd442989 get up to date for merge 2014-09-28 17:31:02 +02:00
76dd27e7f7 Merge pull request #802 from tcitworld/traductionfix
Traductionfix
2014-09-28 17:25:40 +02:00
9f86454b48 deleting send to kindle function 2014-09-28 17:20:35 +02:00
b852df020c add extension for pdf file 2014-09-28 12:18:47 +02:00
fa926fb47c offering download for pdf file and comment in code 2014-09-27 19:59:43 +02:00
6fc2c29daa revert routing bad deleting 2014-09-27 19:47:50 +02:00
a1b31d93b6 get up to date 2014-09-27 19:42:37 +02:00
824f8c45ed changed mpdf with tcpdf 2014-09-27 19:34:17 +02:00
a0822259e7 Merge pull request #841 from wallabag/fixGDdetection
Fix #766 - GD detection
2014-09-27 18:13:35 +02:00
9b8283d0fc Merge branch 'refactor' into dev 2014-09-27 17:54:24 +02:00
04a7674bdd merge refactor and dev 2014-09-27 17:54:13 +02:00
2d4cfc58ec Add support for custom http port
Now you can use wallabag behind reverse proxy (i.e Squid or Varnish)
without problem with urls like wallabag.example.com:8080.
2014-09-23 18:44:14 +02:00
0dc4797a4c Fix the PostgreSQL install errors 2014-09-21 00:39:40 +02:00
b668db242d Convert the MySQL charset to utf8mb4 to support the full range of unicode characters 2014-09-18 22:29:22 +02:00
bbfe6fa50b Fix #766 - GD detection 2014-09-17 16:36:10 +02:00
a15108e65b Merge pull request #839 from wallabag/fixlocalpictures
fix pictures display when DOWNLOAD_PICTURES is enabled
2014-09-16 21:18:41 +02:00
aa1083bdac fix pictures display when DOWNLOAD_PICTURES is enabled 2014-09-16 20:27:03 +02:00
b3c720b1c3 Merge pull request #836 from akoenig/x-forwarded-port
Implemented additional check for using the 'X-Forwarded-Port' header.
2014-09-16 20:09:58 +02:00
657245dcbd Merge pull request #771 from tcitworld/refactor
fixed bug for epub export #755 ; also better metadata title
2014-09-16 15:21:12 +02:00
5af2555f59 Implemented additional check for using the 'X-Forwarded-Port' header. 2014-09-11 13:17:19 +02:00
49882dc151 Merge pull request #819 from wallabag/fixSQLiteDownloadDB
Fix downloading SQLite database from all users
2014-09-10 20:05:07 +02:00
19438d3021 Merge pull request #816 from zinnober/dev
Complete rework of faz.net-template
2014-09-03 13:14:29 +02:00
d5c481c2f4 remove old function 2014-08-28 21:01:43 +02:00
8763e4efde Fix downloading SQLite database from all users 2014-08-26 12:43:56 +02:00
ecb8c1389c Complete rework of faz.net-template adding multipage support and major article cleanup 2014-08-23 16:47:29 +02:00
d4690a8fa1 removed unnecessary fonts 2014-08-21 18:54:25 +02:00
d05f5eeb1d added moreQueries for postgressql 2014-08-21 19:07:19 +03:00
4362417495 Merge branch 'dev' of https://github.com/wallabag/wallabag into dev 2014-08-21 16:42:22 +02:00
a9bbe11169 Merge pull request #814 from wallabag/fix-issue813
vendor dir is not accessible before install, sqlite db dir write check moved into db class
2014-08-21 16:28:16 +02:00
45e60cb52a Merge branch 'dev' of https://github.com/wallabag/wallabag into dev 2014-08-21 16:24:13 +02:00
211068ce50 vendor dir is not accessible before install, sqlite db dir write check moved into db class 2014-08-21 17:17:36 +03:00
051f7fb28c Merge pull request #783 from wallabag/message-after-login
#763 fix to display the login successful message with the translation
2014-08-18 14:41:09 +02:00
79666a3046 Merge pull request #784 from wallabag/fix-successful-add-message
fix display of 'Done' message when we add a link from 'save a link' item
2014-08-18 14:40:54 +02:00
78abff6a52 Merge pull request #785 from wallabag/change-default-pagination
change default pagination, set it to 12, to have a nice baggy display
2014-08-18 14:40:17 +02:00
1daa8e4a0f merge fix 776 2014-08-16 00:54:46 +02:00
dc76489221 minimum of control on server side added 2014-08-15 19:22:55 +03:00
7c503c4438 Fix for #797 2014-08-05 22:19:46 +02:00
b83690ebd8 removing examples for mpdf 2014-08-04 21:34:44 +02:00
a34d920847 Improved instructions 2014-08-03 18:17:43 +02:00
358c689cec little fix in locale files 2014-08-03 18:06:37 +02:00
2e8625c25f little fix 2014-07-29 22:18:15 +02:00
ab86a5124a more translations 2014-07-26 13:04:12 +02:00
280972a66c changes in all themes 2014-07-26 12:44:55 +02:00
200c758ff4 Translations 2014-07-26 12:42:48 +02:00
8492f37323 translation stuff (en & fr done) 2014-07-26 12:22:33 +02:00
f8c3798522 little better 2014-07-26 11:52:43 +02:00
9f3477a279 precision 2014-07-25 08:42:30 +02:00
046b931624 added email field 2014-07-25 08:42:03 +02:00
70549136ba link to guidelines in contributing file 2014-07-25 07:52:00 +02:00
6c0c750000 thank you @mariroz & @tcitworld :) 2014-07-25 07:50:56 +02:00
2f3c05651e guidelines for wallabag 2014-07-25 07:50:15 +02:00
fa9a7bbb3c Merge branch 'fix/securityAllowedActions' into dev 2014-07-25 07:27:21 +02:00
830612f555 typo 2014-07-25 07:26:56 +02:00
d49446ff98 bug with extension in the filename 2014-07-25 01:38:28 +02:00
dc59f164a9 send2kindle 2014-07-25 01:33:31 +02:00
deab6280d3 mobi (not tested on actual device) and pdf working 2014-07-25 00:33:19 +02:00
d07abb5c42 updated mpdf to 5.7.2 2014-07-24 22:01:35 +02:00
fb9df0c269 use directly MOBIClass 2014-07-24 21:56:04 +02:00
af8292c1de Merge branch 'fix/securityMaster' 2014-07-24 21:41:16 +02:00
38cf3413df 1.7.2 2014-07-24 21:41:01 +02:00
800868e27e security fix 2014-07-24 17:47:23 +03:00
c70bfefc68 add mobi and pdf to routing 2014-07-24 15:59:08 +02:00
15317991f3 from epub to all kind of ebooks 2014-07-24 15:53:23 +02:00
4188f38ad5 add pdf and mobi libraries 2014-07-24 15:49:36 +02:00
7dd8b5026d security issue 2014-07-24 16:48:41 +03:00
6da20812ce Merge branch 'dev' of github.com:wallabag/wallabag into dev 2014-07-23 13:45:07 +02:00
887b015def Merge branch 'refactor' into dev 2014-07-23 13:44:48 +02:00
505a74ad1d Merge branch 'dev' into refactor
Conflicts:
	check_setup.php
	index.php
2014-07-23 13:42:30 +02:00
83cac9ac05 Merge pull request #789 from wallabag/feature/someMoreSitesConfig
config for habrahabr.ru to grab articles with comments
2014-07-23 13:38:21 +02:00
a818ff2000 removed permissions test on htmlpurifier 2014-07-23 13:35:19 +02:00
0ce85e0a7f config for habrahabr.ru to grep articles with comments 2014-07-23 14:27:57 +03:00
86edff4447 Add data for mysql installation, see #624 2014-07-22 21:48:21 +02:00
ebd6bf6007 Merge branch 'anno1337-dev' into dev 2014-07-22 21:45:21 +02:00
1f78bd8471 Merge branch 'dev' of github.com:anno1337/wallabag into anno1337-dev 2014-07-22 21:26:02 +02:00
f83ffc3ac3 Merge branch 'feature/programmingCodeSyntaxHighlighting' into dev 2014-07-22 19:33:34 +02:00
392f9a1b9c Merge branch 'dev' into feature/programmingCodeSyntaxHighlighting 2014-07-22 19:32:24 +02:00
9f8541ef2a highlight.js library added to highlight programming code examples in article view 2014-07-22 20:17:15 +03:00
cca9284b6a change default pagination, set it to 12, to have a nice baggy display 2014-07-22 18:14:41 +02:00
3e87066506 fix display of 'Done' message when we add a link from 'save a link' item 2014-07-22 18:12:03 +02:00
9cf6bac1a5 fix to display the login successful message with the translation 2014-07-22 18:01:27 +02:00
b738bea9ca Fix #776 2014-07-22 16:37:13 +02:00
9c67b1b829 Split up check_setup.php into two files. The new file check_essentials.php takes care of stuff like the PHP version and is executed before the config files are included which are needed by check_setup. This patch addresses issue #773 2014-07-22 11:52:18 +02:00
955fc67438 Merge pull request #775 from wallabag/feature/someMoreSitesConfig
issue #750 - config for dn.pt site added
2014-07-21 21:31:45 +02:00
91b6be3186 Merge branch 'skibbipl-dev' into dev 2014-07-21 21:22:34 +02:00
17065e613f Merge branch 'dev' of github.com:skibbipl/wallabag into skibbipl-dev
Conflicts:
	locale/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.mo
	locale/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.po
2014-07-21 21:21:55 +02:00
cec19bd866 Updated polish translation 2014-07-21 20:58:58 +02:00
5594d7d054 issue #750 - config for dn.pt site added 2014-07-21 19:34:59 +03:00
2b58426b2d fixed bug for epub export #755 ; also better metadata title 2014-07-20 00:45:45 +02:00
6a4bbf0fe5 Merge branch 'refactor' of github.com:wallabag/wallabag into refactor 2014-07-18 11:29:05 +02:00
8e68391a57 remove .idea in gitignore 2014-07-18 11:28:49 +02:00
93edcab52e Merge pull request #764 from tcitworld/refactor
Refactor Flattr class.
2014-07-17 16:06:53 +02:00
ccd0b381b6 camelCase for FlattrItem class (following) 2014-07-17 15:42:59 +02:00
d259f73665 camelCase for FlattrItem class 2014-07-17 15:34:55 +02:00
0f6273cdb8 Merge pull request #761 from wallabag/dev
1.7.1
2014-07-15 11:49:24 +02:00
4e067ceabd updated specific configuration for parsing 2014-07-13 10:15:40 +02:00
58dbe10388 #584 check permissions for HTMLPurifier/DefinitionCache/Serializer folder 2014-07-12 22:08:48 +02:00
d423113b00 #683 Rename « home » into « unread » 2014-07-12 21:50:29 +02:00
26452f891f Merge pull request #752 from mariroz/dev
fix of issue #650, #619 and other similar, error in JSLikeHTMLElement: node no longer exists.
2014-07-12 19:28:16 +02:00
2f26729c84 Refactor 2014-07-12 19:01:11 +02:00
b6a3c8866a forgot run() call 2014-07-12 16:41:55 +02:00
d610968932 ignore my PHPStorm config 2014-07-12 16:40:00 +02:00
26b77483ee remove PicoFarad
I’ll implement it an other day.
2014-07-12 16:39:31 +02:00
d14e3f1e22 Merge pull request #754 from sinisterstuf/about.com
Add support for *.about.com
2014-07-12 15:10:05 +02:00
b3cda72e93 PicoFarad framework for routing 2014-07-11 17:06:51 +02:00
3602405ec0 WHAT. A. BIG. REFACTOR. + new license (we moved to MIT one) 2014-07-11 16:03:59 +02:00
d59536deea Add support for *.about.com
Includes next_page_link for multi-page articles and strips pesky in-line
'next' links from the article body. Also includes an Xpath for author
but I can't see where this is used in the wallabag UI.

The 'tidy' option is turned off because it messed up bulleted lists.

Tested with psychology.about.com and food.about.com.
2014-07-11 00:04:24 +02:00
6400371ff9 I removed my previous commit. We have to create a new branch for that. 2014-07-10 13:17:04 +02:00
c1aad6d574 fix of issue #619 and other similar, error in JSLikeHTMLElement: node no longer exists. 2014-07-09 16:56:52 +03:00
cc1ec61b85 fix of issue #619 and other similar, error in JSLikeHTMLElement: node no longer exists. 2014-07-09 16:50:52 +03:00
c710f977b2 new call for having domain name in entry view 2014-07-08 21:57:53 +02:00
5425b0dd82 new fields in database, reading time / date and domain name are stored 2014-07-08 21:46:32 +02:00
4247b37551 Merge pull request #751 from mariroz/dev
quick fix of issue #750: mulipage content for politico.com/magazine articles
2014-07-07 21:11:07 +02:00
82980a148b quick fix of issue #750: mulipage content for politico.com/magazine articles 2014-07-07 19:17:55 +03:00
c13aac1bc3 1.7.1 2014-07-05 15:49:40 +02:00
da87848cee new config file, fix for #740 2014-07-01 10:18:44 +02:00
25052a76ca fix for #738 2014-06-30 23:24:46 +02:00
a13ff95777 security check 2014-06-30 22:15:55 +02:00
cdda041a90 Merge pull request #737 from mariroz/dev
fix of issue #677: When downloading images, wallabag doesnt respect html "base" tag, tnx to @fivefilters
2014-06-25 19:33:28 +02:00
6924253423 fix of issue #677: When downloading images, wallabag doesnt respect html "base" tag, tnx to @fivefilters 2014-06-25 20:00:00 +03:00
69213014d1 Merge pull request #736 from mariroz/dev
fix of issue #718: Error parsing file imported from Pocket #718
2014-06-25 18:54:39 +02:00
aa126ba458 fix of issue #718: Error parsing file imported from Pocket #718 2014-06-25 19:34:14 +03:00
c9563378ea Merge pull request #728 from Draky50110/dev
typo FR après vérif.
2014-06-12 23:30:53 +02:00
ba22fb1cef typo mineure 2014-06-12 23:10:26 +02:00
29cd317aff fin de correction typo FR 2014-06-12 22:21:44 +02:00
0bf95d865a Revert "Typo FR (suite)"
This reverts commit 7f186e21e0.

Conflicts:
	locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo
	locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po
2014-06-12 22:16:04 +02:00
ae43ec99d9 typo FR 3 2014-06-12 20:32:02 +02:00
7f186e21e0 Typo FR (suite) 2014-06-12 18:55:38 +02:00
bca2853ade Merge pull request #724 from Draky50110/dev
typo FR
2014-06-12 09:34:05 +02:00
97d54f2ac8 typo FR 2014-06-12 01:00:49 +02:00
8142d4b1e6 Merge pull request #722 from tcitworld/dev
do not output debug while generating epub
2014-06-07 16:38:39 +02:00
35d4e27588 up to date 2014-06-07 16:36:57 +02:00
ec15d0a784 do not debug inside an epub 2014-06-07 15:53:39 +02:00
c93a5c137f Merge pull request #716 from mariroz/dev
error reporting level set in E_ALL & ~E_NOTICE by default, can be overriden in config
2014-06-05 16:59:39 +02:00
752cd4a8ef error reporting level set in E_ALL & ~E_NOTICE by default, can be overriden in config 2014-06-02 18:00:09 +03:00
5d198e2b98 Merge pull request #715 from mariroz/dev
fix of undefined ATOM constant warning in full-text-rss, will fix ios-app issue #14
2014-06-01 19:06:45 +02:00
1d14e65315 fix of undefined ATOM constant warning in full-text-rss, will fix ios-app issue #14 2014-06-01 19:49:22 +03:00
67a8848aed Merge pull request #713 from mariroz/dev
small xss vulnerability and translation ability fix
2014-05-30 16:51:13 +02:00
30bd273580 small xss vulnerability and translation ability fix 2014-05-30 17:17:34 +03:00
cbc75befb5 small xss vulnerability and translation ability fix 2014-05-30 17:14:53 +03:00
a9f5e572dd Merge pull request #712 from wallabag/dev
1.7, call me "Premium version"
2014-05-29 18:54:06 +02:00
8038b38802 1.7, premium version :) 2014-05-29 18:52:34 +02:00
79024eb004 fix #344 FQDN with non-standard ports broken 2014-05-29 18:32:55 +02:00
0c3db64585 Merge pull request #711 from mariroz/dev
fix of uninitialized object warning, issue #710
2014-05-29 16:04:26 +02:00
3dc8d84229 fix of uninitialized object warning, issue #710 2014-05-29 16:35:00 +03:00
87f01ea2e9 Merge pull request #707 from mariroz/dev
update to 3.2 version of full-text-rss, issue #694
2014-05-29 12:50:28 +02:00
0b9bb8cb78 add dailymotion videos, issue #708 2014-05-26 14:29:18 +03:00
009669360d fix of onmouseover displaying of wallbabag a link in wallabag form in default theme 2014-05-24 11:21:43 +03:00
a342945b61 fix of rearch form popup in default theme 2014-05-24 11:08:39 +03:00
1fce49fac7 full-text rss config file for ted.com, issue #676 2014-05-23 19:29:01 +03:00
a50583fb97 last 3 important changes to 3.2 version of full-text-rss, issue #694 2014-05-23 19:27:17 +03:00
d18ff7d956 two small unimportant forgotten changes to 3.2 version of full-text-rss, issue #694 2014-05-23 19:25:48 +03:00
3ec62cf95a update to 3.2 version of full-text-rss, issue #694 2014-05-22 17:16:38 +03:00
ab157bbb75 Merge pull request #706 from gboudreau/dev
Fixed Baggy theme CSS for Chrome Extension (and < 500px width layout)
2014-05-21 22:13:31 +02:00
f61ffec352 Fixed Baggy theme CSS for Chrome Extension (and < 500px width layout) 2014-05-21 15:54:54 -04:00
88f0e31622 Merge pull request #703 from tcitworld/images_security
Security fixes for downloaded images (thanks @leblanc-simon)
2014-05-20 11:55:20 +02:00
38eecef26b Added info for DOWNLOAD_PICTURES
We regenerate pictures, it might take some time
2014-05-20 11:46:05 +02:00
99408dfcf3 Merge pull request #1 from leblanc-simon/images_security
Optimisation et gestion des erreurs
2014-05-20 11:42:22 +02:00
0bf0dfe10d Optimisation et gestion des erreurs 2014-05-20 00:42:51 +02:00
e3b00bcaf5 Fixed bug for png images 2014-05-19 15:59:18 +02:00
6caba976ec Bug with bracket 2014-05-19 15:34:49 +02:00
1d6a9ac25a Option for setting quality 2014-05-19 15:24:11 +02:00
03e501dedd Merge branch 'dev' into images_security 2014-05-19 15:04:09 +02:00
18209292a4 Fix bad character encoding when downloading images 2014-05-19 15:01:36 +02:00
007f26e582 Security fix for Download Images 2014-05-18 22:11:56 +02:00
04b43dc097 Merge pull request #697 from tcitworld/dev
Up-to-date with me
2014-05-18 19:00:51 +02:00
becc5bfbf2 Fix for #678 2014-05-18 18:56:20 +02:00
230fa05eb7 Better Grammar 2014-05-17 20:32:38 +02:00
96834a47b0 Added PHPePub 2014-05-16 17:38:19 +02:00
e212e6b12a Cleaned epub fonction 2014-05-16 16:49:09 +02:00
404adf970d Merge branch 'epub' into dev
Conflicts:
	themes/baggy/home.twig
2014-05-16 16:31:18 +02:00
7d5d9ea449 Merge pull request #693 from tcitworld/dev
better wallabag in wallabag button (see #685)
2014-05-16 15:54:54 +02:00
74e09e562b better wallabag in wallabag button (see #685) 2014-05-16 15:34:13 +02:00
60c3a4d3e1 Merge pull request #689 from tcitworld/dev
Tag-related features
2014-05-16 13:31:53 +02:00
f3f0b11393 Better names for epub files and epub in all themes now 2014-05-15 15:42:36 +02:00
f2b6b4e230 Fix bugs and improved epub rendering 2014-05-14 22:03:16 +02:00
6a3c510157 Merge branch 'dev' of https://github.com/wallabag/wallabag into epub 2014-05-14 19:17:51 +02:00
4555c38d3b Changed theme for better translation method 2014-05-14 19:08:33 +02:00
24696800e5 Simplifed function which does tag cleanup 2014-05-14 18:51:02 +02:00
818b186f8a Merge pull request #680 from m-r-r/fr-1.6.1
French translation update
2014-05-13 16:44:16 +02:00
4910af33ff Removed unnecessary function for cleaning tags 2014-05-11 16:14:47 +02:00
0626e52f3c Merge branch 'dev' of https://github.com/wallabag/wallabag into dev 2014-05-11 15:44:43 +02:00
f034640ca3 Added advices to submit a bug
Discussion at #662.
2014-05-11 15:33:44 +02:00
1829b362fc Updated the french translation 2014-05-10 20:11:00 +02:00
34acb02cbb Added translation capabilities for epub system 2014-05-07 12:48:46 +02:00
4877836b12 Many improvements to epub produced : better cover, better tags 2014-05-07 12:40:09 +02:00
07ed2b0231 #568 missing rss.png files 2014-05-02 17:04:08 +02:00
9c743ab965 Clean old unused tags when deleting a tag 2014-04-30 12:14:20 +02:00
78bddb22be Remove unnecessary line 2014-04-30 11:31:21 +02:00
decc23aaf2 Added save search as tag functionality 2014-04-30 11:25:03 +02:00
2395a3802a Changed template organisation 2014-04-29 19:57:59 +02:00
7ec445b06e Big changes for epub export. Now possible to do it from a tag, a category and a search. Also, improved ebook rendering. 2014-04-25 16:20:25 +02:00
21f29fe492 Merge pull request #667 from mariroz/dev
fix of putenv warning under safe mode, issue #646
2014-04-25 13:03:09 +02:00
5b5e47c3ae fix of already defined constant notice, issue #653 2014-04-25 13:41:42 +03:00
b6413975c3 fix of putenv warning under safe mode, issue #646 2014-04-25 13:25:03 +03:00
d151b51c67 Merge pull request #665 from mariroz/dev
fix of rss headers problem
2014-04-24 18:05:16 +02:00
827f5b42a6 fix of rss headers problem 2014-04-24 11:48:00 +03:00
ef17914960 Fix for #664 - Missing source url attribute in RSS feeds 2014-04-24 09:39:50 +02:00
72a857158c Fixed a bug into PHPePub with special caracters 2014-04-24 03:08:31 +02:00
87090d8ae7 Added epub export function 2014-04-24 03:04:02 +02:00
8af31ae0f7 Added default statement for db system 2014-04-23 22:48:33 +02:00
feecea2806 Fix #657 and postgresql problems 2014-04-23 22:39:43 +02:00
07da861126 Added multi-user functionnality in all themes 2014-04-23 10:53:57 +02:00
c97d23c533 Merge branch 'dev' of https://github.com/wallabag/wallabag into dev 2014-04-23 10:34:22 +02:00
4d99bae893 Fixed Multi-user system 2014-04-23 10:29:53 +02:00
2a6440c134 Merge pull request #659 from mariroz/dev
last error: config.inc.default.php missed
2014-04-22 21:44:12 +02:00
4dbba60439 last error: config.inc.default.php missed 2014-04-22 22:38:10 +03:00
29cf52b677 Merge pull request #658 from mariroz/dev
inc/poche/config.inc.php.new removed
2014-04-22 20:48:42 +02:00
fd86559a5b inc/poche/config.inc.php.new removed 2014-04-22 21:39:03 +03:00
d70dd7ac69 Merge pull request #653 from mariroz/dev
print view fixed in baggy; print link added; read percent added in default theme; archive and favorite re-factored to be ajax action in article view
2014-04-22 20:18:46 +02:00
43c7b978c3 config.inc.php.new renamed in config.inc.default.php 2014-04-22 20:58:40 +03:00
dfff18f81b Merge pull request #655 from julien-m/patch-2
parse mobile.lemondeinformatique.fr
2014-04-22 18:24:17 +02:00
a4a870e1ec default config is included after user config to prevent undefined constant warning 2014-04-22 19:11:26 +03:00
03303cd71b parse mobile.lemondeinformatique.fr
site_config file created because the title isn't parsed by default for mobile version of lemondeinformatique.fr
2014-04-22 14:44:31 +02:00
c2cf7075c2 print view fixed in baggy; print link added; read percent added in default theme; archive and favorite re-factored to be ajax action in article view 2014-04-22 10:45:09 +03:00
bfe1ad6dbc Merge pull request #643 from wallabag/fix-636
[fix] rss feed content type set to text/xml #636
2014-04-15 21:49:37 +02:00
6212acfc81 [fix] rss feed content type set to text/xml #636 2014-04-15 21:49:00 +02:00
847f57686e Merge pull request #642 from jplock/patch-2
Added IF NOT EXISTS
2014-04-14 15:42:09 +02:00
44fd0faa23 Added IF NOT EXISTS 2014-04-14 09:40:35 -04:00
df6c8b3be9 Merge pull request #637 from Bubbendorf/dev
Improvements on french translation
2014-04-13 12:50:48 +02:00
a192c21c6a Improved french translation 2014-04-13 00:02:03 +02:00
f3312ce58d Merge pull request #635 from DmitrySandalov/dev
added missing image to dmagenta theme
2014-04-11 22:56:59 +02:00
603ecb0052 added missing image to dmagenta theme 2014-04-12 00:08:11 +04:00
4a74d9857c Merge pull request #634 from wallabag/dev
1.6.1
2014-04-11 17:22:04 +02:00
7256e9e139 1.6.1 version 2014-04-11 17:08:11 +02:00
f09d76b0ea Merge pull request #633 from mariroz/dev
error with empty content by import fixed. Also youtube and vimeo videos are allowd in content now.
2014-04-11 16:56:59 +02:00
0f859c6f32 error with empty content by import fixed. Also youtube and vimeo videos are allowd in content now. 2014-04-11 17:21:54 +03:00
389d751e92 Merge pull request #632 from mariroz/dev
logging by import added; error by creation table if exists in postgresql...
2014-04-11 14:00:04 +02:00
5ce3978472 logging by import added; error by creation table if exists in postgresql fixed. 2014-04-11 14:43:17 +03:00
d5f36a8d9e Merge pull request #623 from wallabag/fix-610
Fix display problem with smartphone and Baggy #610
2014-04-08 22:43:39 +02:00
08f539f738 responsive for search form #610 2014-04-08 22:42:34 +02:00
6e8030a0db [fix] display problem with smartphone and Baggy #610 2014-04-08 22:33:28 +02:00
b96b075b55 Merge pull request #622 from wallabag/fix-612
[fix] Escap key displays save a link form #612
2014-04-08 22:11:17 +02:00
f8e9d8bdbc [fix] Escap key displays save a link form #612 2014-04-08 22:10:40 +02:00
bf20b541ae Merge pull request #621 from wallabag/fix-613
can't close search popup with the cross picture #613
2014-04-08 21:59:40 +02:00
3945335f39 can't close search popup with the cross picture #613 2014-04-08 21:58:44 +02:00
2c534c184d Merge pull request #618 from mariroz/dev
remove duplicates by import; code formatting changes: tabs replaced with spaces
2014-04-08 10:54:17 +02:00
a8ef1f3f43 code formatting changes: tabs replaced with spaces, some other small formatting enhancements 2014-04-08 11:49:41 +03:00
86da39886d remove duplicates by import, code changes: tabs replaced with spaces 2014-04-08 11:41:06 +03:00
a7f39918bf Merge pull request #614 from wallabag/fix-host-getpocheurl
[fix] with some config, http host is different
2014-04-07 15:45:26 +02:00
69c57493e7 [fix] with some config, http host is different 2014-04-07 15:44:05 +02:00
5fe1948097 Merge pull request #611 from wallabag/fix-french-locale
update french locale, thx to @goofy-bz and @Draky50110 #596
2014-04-07 15:15:42 +02:00
d9b51a21fa update french locale, thx to @goofy-bz and @Draky50110 #596 2014-04-07 15:14:50 +02:00
9cb9ab552b Merge pull request #609 from wallabag/fix-desciption-typo
remove unnecessary variable declaration
2014-04-06 20:54:20 +02:00
7a873ef1d7 remove unnecessary variable declaration 2014-04-06 20:53:31 +02:00
292cd0dbd5 Merge pull request #606 from wallabag/fix-556
in RSS feed, add link to wallabag URL #556
2014-04-06 16:40:17 +02:00
f86784c22d in RSS feed, add link to wallabag URL #556 2014-04-06 16:39:11 +02:00
2dd5c1e4a3 Merge pull request #605 from wallabag/fix-604
[fix] Use of undefined constant ATOM #604
2014-04-06 16:22:57 +02:00
29d9c0ffe1 [fix] Use of undefined constant ATOM #604 2014-04-06 16:21:48 +02:00
d7ee9f986b Merge pull request #603 from mariroz/dev
postgres sequence error fix, issue #602
2014-04-05 12:36:20 +02:00
1bcbe8bebf postgres sequence error fix, issue #602 2014-04-05 11:22:33 +03:00
db117db3c5 Fix to #600 2014-04-04 22:36:33 +02:00
4a16f33dcc Changed copyright to 2014
Happy new year !
2014-04-04 22:13:06 +02:00
0d67b00d5d Merge pull request #595 from wallabag/dev
wallabag 1.6.0
2014-04-03 14:42:03 +02:00
7d2f1aa279 [add] link on config page to fetch content 2014-04-03 14:39:13 +02:00
bfa32856bc yeah, 1.6, one year after the 1st commit 2014-04-03 13:54:06 +02:00
06e1a9a98a import w/o cron: fix of "click to finish import" in baggy theme 2014-04-03 14:35:50 +03:00
d9bb0cdeb8 import w/o cron: explanation added 2014-04-03 13:53:47 +03:00
4d2bd6e507 import w/o cron: error in url fix 2014-04-03 13:19:54 +03:00
a297fb1e38 import w/o cron 2014-04-03 12:18:49 +03:00
a4585f7eaa import without cron 2014-04-02 22:33:06 +03:00
182faf2696 import without cron 2014-04-02 20:55:19 +03:00
d967a1fa14 Important fixes for search engine (thx @mariroz)
So sorry for the mess... :(
* search only in users' own articles
* sanitized what is searched
* display what is searched
* pagination, sorting available when searching
* use existing function to query db
* bad encoding caracters fixed
* link to JQuery into default theme, no longer in each theme
* some spaces instead of tabs
2014-04-02 17:44:47 +02:00
22db488d21 Merge branch 'dev' of https://github.com/wallabag/wallabag into dev 2014-03-30 21:17:28 +02:00
1be13ba1fc oops, restore @tcitworld commit. I'm so tired 2014-03-30 21:16:45 +02:00
d6d8a045e6 Merge pull request #588 from mariroz/dev
fix of bug with default theme constant
2014-03-30 20:04:55 +02:00
1d0995bb8e [fix] undefined vars in install script 2014-03-30 19:57:39 +02:00
3345c9dc39 fix of bug with default theme constant 2014-03-28 21:19:08 +02:00
fecb62a396 Improvements to install script
* automatically remove install/ folder
* go easier though the compatibility test <-> install script pages
* Small fixes which raised php warnings
2014-03-28 20:00:02 +01:00
ad697686c0 Final Fix of #570
Adds a date information to the exported data file.
2014-03-28 16:53:06 +01:00
cdada41505 Merge pull request #587 from mariroz/dev
problem with resources and localhost url fix
2014-03-28 10:30:51 +01:00
08718c01e4 problem with resources and localhost url fix 2014-03-28 11:26:48 +02:00
b152f2b6ba Fix to bug #570
Forces the download of the data exported file as a poche-export file.
2014-03-28 00:57:07 +01:00
04fbe8f5ef Merge pull request #586 from mariroz/wb-link-in-wb
wallabag a link in wallabag now in default theme, issue #505
2014-03-27 19:44:28 +01:00
e68348f627 wallabag a link in wallabag now in default theme, issue #505 2014-03-27 18:21:30 +02:00
9591ee2603 Merge pull request #585 from kevmeyer/dev
updated german localisation
2014-03-27 13:56:40 +01:00
5814ef0d25 updated german localisation 2014-03-27 13:44:19 +01:00
d607330557 Improvements for compatibility_test file
- gettext detection (not default on WAMP) ; part fix of #579
- added colors to make viewing what's wrong better and quicker
(green/orange/red)
- added a link to index.php if it's good
2014-03-26 18:46:46 +01:00
ad03eb6286 Fix of #580 : Add some random for Windows hosts 2014-03-26 17:19:57 +01:00
cc60cbbbab Finished search engine function
Now searches also in title and in original url
2014-03-26 16:36:42 +01:00
d619120fc4 Merge pull request #582 from mariroz/fix-session-livetime
fix of localhost cookie related to nginx binding to 0.0.0.0
2014-03-24 11:12:56 +01:00
2c4e7a1cea Fixes to search engine
Changed the search parameter from POST to GET.
Also, adapted the Baggy theme.
2014-03-23 23:52:05 +01:00
a33a3d2afb Implemented rudimental search engine 2014-03-22 11:09:18 +01:00
03832b45e1 fix of localhost cookie related to nginx binding to 0.0.0.0 2014-03-21 21:56:40 +02:00
028e34b6c4 Merge pull request #581 from mariroz/fix-session-livetime
fix of issue under nginx and php-fpm
2014-03-21 14:05:51 +01:00
ad53faf25c fix of issue under nginx and php-fpm 2014-03-21 14:59:30 +02:00
0c51bfea6f Merge pull request #576 from mariroz/fix-session-livetime
fix of  _SESSION - indefined variable
2014-03-19 19:26:05 +01:00
6fa3f70bc2 fix of _SESSION - indefined variable 2014-03-19 19:22:04 +02:00
db41c907aa Merge pull request #572 from mariroz/fix-session-livetime
fix of #115, server relater config value added
2014-03-18 21:29:58 +01:00
2a97194253 fix of #115, server relater config value added 2014-03-18 17:39:19 +02:00
a7048bc45d Merge pull request #567 from mariroz/fix-session-livetime
fix of #115 - stay connected and session livetime
2014-03-17 21:49:42 +01:00
eb5b677250 fix of #115 - stay connected and session livetime 2014-03-17 22:22:05 +02:00
897b2b5302 Merge pull request #566 from camporez/dev
Update brazilian traslation title to "Português (Brasil)"
2014-03-17 08:09:18 +01:00
5805ac4574 Update brazilian traslation title to "Português (Brasil)" 2014-03-16 16:43:46 -03:00
07e028fe5c Merge pull request #563 from camporez/dev
Update brazilian translation
2014-03-16 18:55:59 +01:00
08dde123b1 Correct README.md 2014-03-16 11:58:16 -03:00
82cff5af70 Update brazilian translation 2014-03-15 17:23:34 -03:00
8754bd88a5 Merge remote-tracking branches 'upstream/dev' and 'origin/master' into dev 2014-03-15 15:03:26 -03:00
6a915551ab acc 2014-03-14 14:15:26 -03:00
ed02e38e1d [fix] in RSS, link to original article 2014-03-14 09:35:48 +01:00
8d7cd2ccd5 [add] remove import file in CACHE when import is over 2014-03-14 08:54:44 +01:00
c0586a906c [fix] new import section in old themes #559 2014-03-14 08:37:40 +01:00
181d16fe22 Merge pull request #557 from mariroz/feature-add-link-inside-article-issue-505
saving link form now sends ajax request, article view is now justified (issue #554)
2014-03-13 20:57:22 +01:00
3ee27ee6ba saving link form now sends ajax request, article view is now justified 2014-03-13 18:37:08 +02:00
6775da70a8 feature #505 - it is now possible to add link from bagged article (TODO: redev it to ajax action). Some enhancements to "save a link" popup div 2014-03-12 17:36:04 +02:00
f7382cd8c3 Merge pull request #549 from mariroz/fix-tagform-and-shortcat-toggle-savelinkform-conflict
fix of conflict of s shortcat and entering s in input fields
2014-03-12 12:55:48 +01:00
7339b0b08d fix of conflict of s shortcat and entering s in input fields 2014-03-12 13:00:37 +02:00
1acd18510a Merge pull request #544 from mariroz/feature-tags-autocomplete
a lot of enhancements related to tags: tags list is now sorted, shows number of articles, autocomplete added according to #477, #542
2014-03-10 18:14:43 +01:00
fb26cc9375 a lot of enhancements related to tags: tags list is now sorted, shows number of articles, autocomplete added according to #477, #542 2014-03-10 16:28:47 +02:00
d47a05a9a5 Merge pull request #535 from bobmaerten/clarify-import-process
Changed config section to clarify import process.
2014-03-10 13:14:26 +01:00
17b2afefad [fix] test if user_id doesn't exist in feeds generation 2014-03-10 08:10:03 +01:00
4744cb0e1d bagit link + overlay save link + listmode 2014-03-08 13:47:15 +01:00
7c6aa8d826 Changed text to clarify import process. 2014-03-07 16:46:46 +01:00
b3f7b7d200 Merge branch 'dev' of https://github.com/wallabag/wallabag into dev 2014-03-07 14:49:46 +01:00
1ab567f6e3 [add] clean content articles in cron 2014-03-07 14:49:36 +01:00
f0d584503f Merge pull request #533 from mariroz/dev
fix of #530 - import fail from Poche
2014-03-07 13:59:38 +01:00
042486c511 fix of #530 - import fail from Poche 2014-03-07 14:52:52 +02:00
ded2c63312 Merge pull request #532 from wallabag/upload-file
New import system
2014-03-07 13:26:56 +01:00
bf79463070 Merge pull request #531 from mariroz/upload-file
getPageContent moved to Tools, fix of #426
2014-03-07 11:57:11 +01:00
f98373cc34 getPageContent moved to Tools, fix of #426 2014-03-07 12:54:08 +02:00
25114854b3 [fix] remember scroll position for baggy theme #519 2014-03-06 18:57:04 +01:00
4ca17924a1 [fix] links for firefox / android / ios apps 2014-03-06 18:45:15 +01:00
9a010227d7 Merge pull request #524 from kevmeyer/dev
updated german localization
2014-03-04 12:40:43 +01:00
e1a625ad35 added missing german localization strings 2014-03-04 11:53:40 +01:00
eace9f914d updated german localization 2014-03-04 11:32:45 +01:00
d3b52886f5 [change] ignore tmp files in HTML purifier 2014-03-02 08:52:03 +01:00
71b0d53c5e [fix] #115 cookie lifetime was empty 2014-03-02 08:38:26 +01:00
11c680f97a [add] display last check of wallabag release 2014-03-01 19:10:17 +01:00
223268c2fa [fix] RSS Feeds don't validate / W3C #384 2014-03-01 13:09:37 +01:00
53e3158dfe [add] cron to fetch content on imported entries 2014-02-28 21:49:38 +01:00
31a10069a5 [add] upload form for import 2014-02-28 20:36:32 +01:00
4c14936353 road to 1.5.3 2014-02-28 14:57:04 +01:00
2bb207d005 [fix] #483 pdo_sqlite not required if we want mysql / pgsql 2014-02-28 14:54:50 +01:00
d429305836 [fix] #490 flattr icon in baggy theme 2014-02-28 14:27:10 +01:00
49c803425c Merge branch 'dev' of https://github.com/wallabag/wallabag into dev 2014-02-28 14:06:59 +01:00
cf75bb31e9 Merge pull request #517 from mariroz/dev
effect of block rebuilding on next page removed, issue #479
2014-02-28 12:17:18 +01:00
fc52df0677 effect of block rebuilding on next page removed, issue #479 2014-02-28 13:13:30 +02:00
6065553c13 effect of block rebuilding on next page removed, issue #479 2014-02-28 13:08:11 +02:00
346380e131 [add] label for brazilian language on config screen 2014-02-27 21:37:25 +01:00
affbd83b48 Merge pull request #515 from mariroz/dev
fix of #509, related to php 5.3
2014-02-27 21:23:10 +01:00
381d182726 Syntax fix.
I think this will be the smallest commit I'll ever make.
2014-02-27 21:16:16 +01:00
2048661b0c Merge pull request #513 from camporez/dev
Brazilian portuguese translation
2014-02-27 20:59:59 +01:00
6a0329f756 Add brazilian portuguese (pt-BR) translation
modified:   locale/pt_BR.utf8/LC_MESSAGES/pt_BR.utf8.mo
	renamed:    locale/pt_BR.utf8/LC_MESSAGES/pt_BR.utf8.mo -> locale/pt_BR.utf8/LC_MESSAGES/pt_BR.utf8.po
2014-02-27 16:36:32 -03:00
35c7e0a69c Create pt_BR.utf8.mo 2014-02-27 16:18:53 -03:00
decb9a5814 fix of #509, related to php 5.3 2014-02-27 18:12:43 +02:00
61e79d9344 Merge pull request #510 from mariroz/dev
some baggy theme fixes and enhancement: issue #479
2014-02-27 15:20:01 +01:00
36a733af8d some baggy theme fixes and enhancement: issue #479 2014-02-27 16:11:37 +02:00
a8464c9719 [fix] hover problem with logout link #489 2014-02-27 13:36:06 +01:00
e145f767f3 [add] empty cache after changing language #492 2014-02-27 13:26:07 +01:00
56532c4e72 [add] Empty cache after changing theme #503 2014-02-27 13:24:29 +01:00
fa37042b32 [fix] Baggy theme navigation bug #485 2014-02-27 13:21:54 +01:00
0e7f04b04e Merge pull request #504 from mariroz/dev
translation related: how-to md file added, script to generate php from all twig templates, polish mo file compiled
2014-02-26 14:56:15 +01:00
cbcae4037c translation related: how-to md file added, script to generate php from all twig templates, polish mo file compiled 2014-02-26 15:43:49 +02:00
72f7ff0589 Merge pull request #502 from skibbipl/patch-1
Update pl_PL.utf8.po
2014-02-26 09:23:26 +01:00
2c83741171 Update pl_PL.utf8.po
First cleanup, more to come.
2014-02-25 18:20:13 +01:00
78dd437928 Merge pull request #501 from mariroz/dev
fix of #498, #493, #494 - because disappeared in last commit
2014-02-25 18:10:32 +01:00
f5b5622a89 fix of #498, #493, #494 - because disappeared in last commit 2014-02-25 19:08:18 +02:00
bb75d2b01a Merge pull request #499 from mariroz/dev
French translation added by @Draky50110, issue #488
2014-02-25 17:57:38 +01:00
2cf87a4da1 French translation added by @Draky50110, issue #488 2014-02-25 18:40:25 +02:00
9fad46bd0e Merge pull request #495 from mariroz/dev
fix of global $http visibility, issues #493, #494
2014-02-25 17:27:51 +01:00
dcc73856a9 "poche" word removed completely, all locales .po files updated, en, pl, ru and uk .mo files recompiled. 2014-02-25 15:45:39 +02:00
4b842b20ce fix of #486 - import issue 2014-02-24 19:13:54 +02:00
49b56f19d8 Polish, Russian and Ukrainian locales updated, Franch locale po file uopdated. issue #488 2014-02-24 15:38:49 +02:00
25e1213d1b fix of global $http visibility, issues #493, #494 2014-02-24 12:19:46 +02:00
92fc97eeb3 [fix] redirect on config page after token generation #491 2014-02-23 09:56:21 +01:00
48e063904d [change] remove old logo #484 2014-02-23 09:50:11 +01:00
99679d0688 Merge pull request #481 from wallabag/dev
1.5.2
2014-02-21 15:57:10 +01:00
d3b47e9470 [release] 1.5.2 2014-02-21 15:44:57 +01:00
1570a65381 [fix] content is now cleaned by HTML purifier from prevent XSS attack 2014-02-21 15:44:13 +01:00
d4949327ef [add] HTML Purifier added to clean code 2014-02-21 15:43:14 +01:00
c9bd17a100 [add] languages well displayed on config page #480 2014-02-21 15:24:33 +01:00
0a022f9a39 [add] slovene language 2014-02-21 15:11:45 +01:00
565bb72d99 [fix] link in footer was unclickable #453 2014-02-21 15:00:21 +01:00
e5382002b4 [change] login button into sign in 2014-02-21 14:58:07 +01:00
3628b24d12 [change] remove some poche terms in old default theme #471 2014-02-21 14:53:43 +01:00
cd425599ce typo in fonts call and in label on config screen 2014-02-21 14:08:20 +01:00
e7345a2c4f Merge branch 'dev' of git://github.com/mariroz/wallabag into dev 2014-02-21 13:44:30 +01:00
032e0ca13a a lot of refactoring: tag action is now handled by home view and uses sorting and pagination. Some small view enhacenments. Fix of #476, #461 for baggy and other themes 2014-02-20 19:28:39 +02:00
3ade95a3d7 [fix] themes sorted A->Z #470 2014-02-20 13:29:53 +01:00
fddf4fbacc Merge branch 'dev' of git://github.com/arnaudmm/wallabag into arnaudmm-dev 2014-02-20 13:15:27 +01:00
926acd7bba Feature #457 : import from pocket now import tags too 2014-02-20 13:09:27 +01:00
8975653d4c Merge branch 'mariroz-dev' into dev 2014-02-20 13:03:59 +01:00
689de3dbcc rename font folder into fonts in baggy theme 2014-02-20 13:02:13 +01:00
ab5bb94b12 Merge branch 'dev' of git://github.com/mariroz/wallabag into mariroz-dev 2014-02-20 12:49:49 +01:00
6203ef8e51 Merge remote-tracking branch 'upstream/dev' into dev 2014-02-20 11:42:18 +02:00
e83cf5a787 multiple tag entry displayed fix, issue #474 2014-02-20 10:41:16 +02:00
d09a5674e9 [add] message in install screen to prevent user when wallabag is already installed 2014-02-20 08:58:59 +01:00
d0a599bbae Merge pull request #473 from nsteinmetz/dev
Baggy Theme - PtSans font is now local
2014-02-20 08:27:54 +01:00
30c12d3927 add font file 2014-02-19 23:30:55 +01:00
860473f33c Update font.css
Add reference for ptsans font in local instead of google fonts
2014-02-19 23:09:12 +01:00
e1cfef7bf1 Update _head.twig
Remove googlefonts now called in font.css - need still to put the woff file in font directory
2014-02-19 23:08:01 +01:00
b4fd2154fe Full-Text RSS included as a script instead of file_get_contents call. Tnx to @Faless. Fix issues #366 and #463 2014-02-19 19:08:19 +02:00
f37891fdb6 [fix] css display with baggy theme 2014-02-19 15:20:13 +01:00
aad8fbab09 Merge branch 'dev' of https://github.com/wallabag/wallabag into dev 2014-02-19 15:19:02 +01:00
7785f0c75f Merge pull request #467 from mariroz/dev
"save a link" added to top menu (default theme) to toggle "save link" form,  issue #461
2014-02-19 15:17:13 +01:00
a71dc5d7d0 Merge branch 'dev' of git://github.com/mariroz/wallabag into dev 2014-02-19 15:12:49 +01:00
655214ab30 Merge pull request #469 from wallabag/dev
version number 1.5.1
2014-02-19 13:56:06 +01:00
fb5a9666ed version number 1.5.1 2014-02-19 13:55:40 +01:00
60ca369cd3 Merge pull request #468 from wallabag/dev
1.5.1
2014-02-19 13:47:11 +01:00
b89d5a2bf4 [fix] security problems with tags 2014-02-19 13:25:28 +01:00
53ae58e1a1 Merge branch 'dev' of https://github.com/wallabag/wallabag into dev 2014-02-18 21:22:41 +01:00
792097fb6a [add] script to make the install more user friendly #466 2014-02-18 21:22:34 +01:00
970cfb1166 Merge pull request #460 from mariroz/dev
duplicate check added. fix of issue #400
2014-02-18 15:29:40 +01:00
01cd443441 "save a link" added to top menu (default theme) to toggle "save link" form message, issue #461. "Mark all the entries as read" link added in default theme. 2014-02-16 21:00:30 +02:00
488fc63b67 duplicate check added. fix of issue #400 2014-02-14 17:27:22 +02:00
6285e57c49 [add] link to empty cache in config screen, #454 2014-02-14 15:11:57 +01:00
243e13ab59 [fix] #452 remove crappy code 2014-02-13 23:00:26 +01:00
5e98c2183a Merge pull request #450 from wallabag/dev
1.5.0
2014-02-13 19:49:25 +01:00
9f3148fec7 [change] change default content #445 2014-02-13 19:31:46 +01:00
c9357429fd [fix] remove htacces in inc/, bug to fetch content 2014-02-13 19:22:54 +01:00
41265e07d4 add help about vendor.zip 2014-02-13 18:57:57 +01:00
2e4440c3f8 [change] wallabag in feeds title 2014-02-13 08:57:44 +01:00
3141347214 new default theme, baggy \o/ 2014-02-12 21:59:02 +01:00
943ac3c77e new theme, baggy one cf #448 2014-02-12 21:58:40 +01:00
83b47311ba go go go, 1.5 powa 2014-02-12 21:58:14 +01:00
16fd1cce61 [change] time for session 2014-02-12 21:52:51 +01:00
f14807de06 [add] mark all as read #385 2014-02-12 21:52:01 +01:00
ed2853564e [fix] somes fixes on old default theme 2014-02-12 21:51:11 +01:00
26170f4613 change static files 2014-02-12 21:46:49 +01:00
68268c0199 Merge branch 'dev' of https://github.com/wallabag/wallabag into dev 2014-02-12 20:05:51 +01:00
5966d2c2d3 change README 2014-02-12 20:05:47 +01:00
26929c08d3 bug fix #430 - welcome to your wallabag 2014-02-12 20:04:47 +01:00
044bf638a8 bug fix #364 - RSS Feed URL problem with + sign 2014-02-12 19:58:49 +01:00
58f6269f36 Merge pull request #439 from flolauck/master
Adding .htaccess files to prohibit access to critical directories, e.g., db/
2014-02-10 12:10:08 +01:00
3a68883ae9 Adding .htaccess files to prohibit access to critical directories, e.g., db/ 2014-02-10 08:58:21 +01:00
211ed48361 Merge pull request #435 from mariroz/dev
Polish and Ukrainian translations added. Russian - updated. Plust 2 smal...
2014-02-07 18:41:30 +01:00
c515ffec9c Polish and Ukrainian translations added. Russian - updated. Plust 2 small translation related fixes in code. 2014-02-07 17:49:27 +02:00
4e09039d2c Merge pull request #434 from thomaslebeau/theme-courgette
Theme courgette
2014-02-07 09:41:42 +01:00
1e1e4e4eca [remove] fontello theme courgette 2014-02-07 00:08:58 +01:00
c8265d95b0 [add] maj theme courgette : ajout tag 2014-02-07 00:07:54 +01:00
2e384abab6 Merge pull request #428 from mariroz/dev
all locale files re-compiled: fix of #416 Some language problems in the ...
2014-02-04 02:13:32 -08:00
736a4fb77e all locale files re-compiled: fix of #416 Some language problems in the french Config Page 2014-02-04 11:52:03 +02:00
38dafee05d Merge pull request #427 from wallabag/dev
changelog 1.4
2014-02-03 10:03:41 -08:00
fa0bfb775a [fix] #389 Empty article title (blank title tag) 2014-02-03 17:11:14 +01:00
445a1a1c8d [fix] Add support for X-Forwarded-Proto header field #413 2014-02-03 12:46:09 +01:00
1e1fd6f24d [add] link to test file when we install wallabag #392 2014-02-03 12:43:34 +01:00
a678f9df38 [fix] #421 Tables content in solarized themes unreadable 2014-02-03 12:34:28 +01:00
f85bfdf186 Merge branch 'dev' of git://github.com/mariroz/wallabag into mariroz-dev 2014-02-03 11:56:01 +01:00
cae70cdbdb [fix] courgette theme: Old constant call, replaced by the new one. 2014-02-02 19:13:05 +01:00
ebae8c8315 [del] courgette theme: Useless templates because they are identical to those of default theme and so inherited from it. 2014-02-02 19:10:35 +01:00
6af66b1106 fix of bug #368 Endless redirects or user doesn't exist with basic authentication 2014-01-30 16:35:31 +02:00
f355d2c87f poche -> wallabag 2014-01-28 13:47:15 +01:00
f4fbfaa7cb some fix to courgette theme 2014-01-28 11:19:06 +01:00
21f50d5a08 changed some poche with wallabag 2014-01-28 11:08:21 +01:00
1b539ba1ec Merge branch 'extraction-with-basic-auth' of git://github.com/aaa2000/poche into aaa2000-extraction-with-basic-auth 2014-01-28 10:56:57 +01:00
3e0e7e1208 [fix] inthepoche.com => wallabag.org 2014-01-28 10:49:57 +01:00
b8fdd2d85f [fix] change twitter account for sharing entry 2014-01-28 10:37:37 +01:00
c95b78a8ce poche is dead, welcome wallabag 2014-01-28 10:36:04 +01:00
3ae345b3d7 Merge pull request #410 from Lonnytunes/dev
Fix: stops multiplication, in database, of a same user config item
2014-01-21 04:46:14 -08:00
d1d3498b62 [fix] Stops multiplication, in database, of a same user config item (error of variable name). 2014-01-20 00:44:51 +01:00
f878daeb8b add basic auth in file_get_contents for content extraction when user use basic auth 2014-01-12 17:08:52 +01:00
9ba98a0abe [add] display token and user id 2014-01-12 17:06:52 +01:00
1cecaa7926 [add] display token and user id 2014-01-10 16:33:10 +01:00
2744d07d71 Merge branch 'dev' of https://github.com/inthepoche/poche into dev 2014-01-08 11:28:53 +01:00
5ed8050791 [add] courgette theme 2014-01-08 11:28:46 +01:00
c3b261e321 Merge pull request #391 from Newinx/master
Correction de bugs dans le schema mysql
2014-01-07 23:22:32 -08:00
9ffce01e0c Correction de bugs dans le schema mysql
- users/name type de int a varchar
	- valeurs par defaut ajoutees pour entries/is_read et is_fav
2014-01-07 22:55:48 +01:00
8905191413 [add] import from poche, thank you @tsadiq #388 2014-01-07 20:21:43 +01:00
b4b22940df Merge pull request #387 from inthepoche/dev
poche 1.3.1
2014-01-07 04:20:23 -08:00
e1cf0fda27 [add] user_agent in file_get_contents 2014-01-07 13:15:43 +01:00
f41d00ed8a Merge branch 'dev' of https://github.com/inthepoche/poche into dev 2014-01-07 13:13:30 +01:00
d866e8be91 [change] poche logo is now at SVG format, see #373 2014-01-07 13:13:24 +01:00
be4c8197eb Merge pull request #381 from tcitworld/dev
Flattr Class : Bug 359
2014-01-06 10:07:29 -08:00
fcb5fd27e2 [change] update poche version in compatibility test file 2014-01-06 08:32:28 +01:00
9c9b226589 Merge pull request #382 from aaa2000/table_tags_entries_already_exists
Create sqlite table tags_entries only if not already exists
2014-01-05 10:39:44 -08:00
a562e3905a Create sqlite table tags_entries only if not already exists 2014-01-05 15:03:05 +01:00
607e12b4f2 Fixes bug 359 2014-01-04 21:50:08 +01:00
7f66783976 Merge pull request #1 from inthepoche/dev
Dev
2014-01-04 12:30:31 -08:00
2abcccb371 Merge branch 'dev' of https://github.com/inthepoche/poche into dev 2014-01-03 15:18:32 +01:00
9bc32632af [fix] #375 Readability.com changed its export format 2014-01-03 15:18:13 +01:00
52e3f58c72 Merge pull request #380 from F1reF0x/dev
Change Permissions in pochePictures.php
2014-01-03 02:20:40 -08:00
b5c1ed1227 Change Permissions in pochePictures.php
Stored Pictures are not accessible (on my server), when permission is set to 0705, but instead, when using 0755 (or for example to 0715) all is working as expected. So maybe it would be good, considering in changing the permission of created directories in the assets directory
2014-01-03 11:17:15 +01:00
4d058d4824 [fix] code display when printing a page was buggy 2014-01-03 10:33:01 +01:00
cb4fba5a33 [del] remove inthepoche.com config file, website has changed 2014-01-03 10:22:12 +01:00
4a84d94e91 [add] config file for interviewmagazine.com 2014-01-03 10:21:18 +01:00
0b57c6825a [fix] bugs #374 and #376 - encoding in rss 2014-01-03 10:15:05 +01:00
529db4861d Merge branch 'dev' of https://github.com/inthepoche/poche into dev 2014-01-03 10:06:33 +01:00
9de34d4e84 [fix] error in query to get entries and tags 2014-01-03 10:06:26 +01:00
d7ad5d6560 Merge pull request #379 from williamtheaker/dev
Minor changes to tag edit and config pages
2014-01-02 21:54:50 -08:00
aeea7c6af0 Updated config page 2014-01-02 21:15:41 -05:00
b1bfd4cb0c Updated tag edit page 2014-01-02 21:04:56 -05:00
2eb111a300 Merge pull request #370 from DmitrySandalov/dev
docs link, typos
2013-12-28 05:04:45 -08:00
76e487cd7e docs link, typos 2013-12-28 11:47:10 +04:00
60fc4f4b1a Merge pull request #363 from inthepoche/dev
poche 1.3.0
2013-12-23 02:28:56 -08:00
da5fc42f61 [fix] bug with queries when postgresql is used 2013-12-23 11:23:12 +01:00
1151e9cc8f [add] availability to regenerate feed token 2013-12-23 11:01:41 +01:00
dfde415198 [change] install doc 2013-12-23 10:45:16 +01:00
e2b83a8298 [change] 1.3, let's rock baby 2013-12-23 10:44:22 +01:00
5cfafc6110 [add] check tags tables 2013-12-23 10:35:09 +01:00
1810c13b55 PHP_AUTH_USER isn't available when using php as cgi 2013-12-23 09:09:10 +01:00
a0aa150418 fix for long lasting session 2013-12-21 23:39:45 +04:00
5c8d438c08 Merge pull request #360 from DmitrySandalov/dev
tags: mysql create tables if not exists
2013-12-19 05:28:22 -08:00
17bd2cc94c tags: mysql create tables if not exists 2013-12-19 16:24:49 +03:00
cbfd5a1019 Update INSTALL.md 2013-12-19 09:56:29 +01:00
04fcbad8c5 Merge pull request #358 from williamtheaker/dev
Edited English text
2013-12-16 00:24:27 -08:00
5df72bb4a4 Typo fixed 2013-12-15 00:44:13 -05:00
41acd466ce typo 2013-12-15 00:41:49 -05:00
43c1115eeb Edited text 2013-12-15 00:18:26 -05:00
db75a4425c Edited text 2013-12-15 00:17:30 -05:00
0f9d3ef173 [fix] typo in config screen 2013-12-12 11:11:53 +01:00
05d6dd487c Merge pull request #356 from inthepoche/tags
Tags feature
2013-12-12 01:48:24 -08:00
d460914f65 [add] download database if sqlite is on 2013-12-12 09:42:19 +01:00
6bf4702608 [add] tags and tags_entries for mysql & postgresql 2013-12-06 15:16:02 +01:00
f014856424 [add] tags and tags_entries tables in poche.sqlite 2013-12-06 15:11:08 +01:00
c432fa1674 [add] assign and remove a tag to an entry 2013-12-06 15:07:51 +01:00
f778e47283 [add] rss for tag 2013-12-06 14:37:42 +01:00
4886ed6d36 [add] page which lists entries for a tag 2013-12-06 14:22:29 +01:00
74ec445a66 [change] simplify Tools::getTplFile 2013-12-06 14:07:00 +01:00
6cab59c340 [add] edit tags page 2013-12-06 14:03:14 +01:00
2e2ebe5ec7 [add] create tags page 2013-12-06 13:15:06 +01:00
68e2061666 [add] tags displaying 2013-12-06 13:02:58 +01:00
7b171c7340 [add] send tags to article view 2013-12-06 13:02:38 +01:00
5bea1a4d31 [add] function to get tags by entry 2013-12-06 13:02:15 +01:00
9e7c840b18 [fix] RSS feeds were buggy when I update full-text RSS 2013-12-06 10:14:59 +01:00
ac4d114214 [add] new specific configuration files 2013-12-06 10:13:03 +01:00
d5501950e2 Merge pull request #353 from inthepoche/ftr
[change] we now use Full-Text RSS 3.1, thank you so much @fivefilters
2013-12-06 00:49:43 -08:00
42c80841c8 [change] we now use Full-Text RSS 3.1, thank you so much @fivefilters 2013-12-06 09:45:27 +01:00
0b5c6ff319 Merge pull request #352 from versvs/dev
updating the "es_ES" locale
2013-12-05 10:56:23 -08:00
05b6401817 updating the "es_ES" locale
Fixed some strings to fit the common use that people understand and find and other es_ES web apps. Completed some non-translated strings.

Also, opted for an editorial line in which "Poche" is treated as a noun (therefore, I capitalized the first letter).
2013-12-05 19:36:20 +01:00
59cc585271 [add] add RSS feed for archive 2013-12-05 15:13:32 +01:00
f0133fe5f4 [fix] undefined notice for feed 2013-12-03 12:07:02 +01:00
b8bb2b4ab6 Merge pull request #350 from inthepoche/rss
add atom feeds for unread / favs
2013-12-03 01:42:21 -08:00
72c20a5297 [add] atom feeds for unread / fav items 2013-12-03 10:40:27 +01:00
5846b0f1b3 [change] getConfigUser is now a public function 2013-12-03 10:39:45 +01:00
39cc09dfc3 [change] update FeedWriter class 2013-12-03 10:39:00 +01:00
678f2cb6ee Merge pull request #347 from evgeni/fix-links
Fix links of third applications
2013-12-02 23:15:39 -08:00
13991e5288 Merge pull request #349 from JasonGhent/master
Stackoverflow parsing and subdomain failover fix.
2013-12-02 23:14:49 -08:00
5c0ad7376a do not link to the french mozilla site, let the server decide the language 2013-12-02 19:52:56 +01:00
af1daea191 proper spacing around 'or' 2013-12-02 19:52:50 +01:00
9772578ee2 fix link to Google Play 2013-12-02 19:52:45 +01:00
16ac4e3dbe Subdomain to domain failover left incorrect leading '.'. This has been remedied. 2013-11-30 13:02:18 -05:00
2ab37d6205 Addition of stackexchange parser. 2013-11-30 13:00:24 -05:00
e070b9b511 Added stackoverflow parsing. 2013-11-30 12:08:17 -05:00
e232d5532a add compiled file for persian language 2013-11-25 15:53:40 +01:00
74dc587452 Merge pull request #329 from mabkenar/dev
Create fa_IR.utf8.po
2013-11-25 06:52:36 -08:00
87a44f4704 Create fa_IR.utf8.po
A Persian (fa_IR) translation.
2013-11-25 15:46:36 +01:00
c2b7a11c77 Merge pull request #326 from inthepoche/dev
1.2.0
2013-11-25 02:00:07 -08:00
7a4482b8a4 1.2.0: here we go 2013-11-25 09:57:10 +01:00
defa7754a4 Merge branch 'dev' of https://github.com/inthepoche/poche into dev 2013-11-25 09:49:08 +01:00
1bf152a551 add italian language 2013-11-25 09:48:51 +01:00
99c8761b75 fix russian directory 2013-11-25 09:43:45 +01:00
0c2f453750 Fix Undefined offset Notice (thx @vjousse) 2013-11-20 10:22:21 +01:00
d7aec74403 [change] reuse existing class for article_toolbar 2013-11-14 11:14:15 +01:00
760d44d194 Merge branch 'DmitrySandalov-master' into dev 2013-11-13 15:23:52 +01:00
f2d3ee98a6 [fix] bug fix #287: test if open_basedir & safe_mode are active to use CURLOPT_FOLLOWLOCATION 2013-11-13 15:17:34 +01:00
705f04937f Merge branch 'master' of git://github.com/DmitrySandalov/poche into DmitrySandalov-master 2013-11-13 14:52:28 +01:00
5862c872c6 Merge branch 'dev' of https://github.com/inthepoche/poche into dev 2013-11-13 14:51:14 +01:00
b7066c0333 [fix] bug fix #311: remove toolbar when printing article 2013-11-13 14:50:56 +01:00
e4178da65c Merge pull request #310 from jn0/dev
dark theme images replaced to visible set, no executable bits for pictures
2013-11-12 08:38:24 -08:00
jno
c7abf20bbe dark theme images replaced to visible set, no executable bits for pictures 2013-11-12 20:34:55 +04:00
b3a2586ecf [add] russian language 2013-11-12 13:05:27 +01:00
45e9e0f565 fix #270 access from remote machine
Replacing SERVER_NAME with HTTP_HOST allows me to use Poche on remote machines
2013-11-05 12:13:55 +03:00
352523640d compatibility with 5.3.3 2013-11-04 08:44:56 +01:00
05824223a9 Merge pull request #291 from banux/dev
Autoclose
2013-10-28 00:38:05 -07:00
f616ab60ef use 2 seprate variable for autoclosing windows to avoid to quick closing when sharing, the popup can be close before the link is save 2013-10-27 07:47:14 +01:00
363bc4eb86 Add a autoclose parameters. When we use sharing method in plugins like the tiny tiny rss one or the firefox plugins we can passe the autoclose=true parameters that close the popup. 2013-10-27 07:37:05 +01:00
2b191d8c37 fix download links 2013-10-26 13:23:31 +02:00
7d7ed6a0ee change link to themes 2013-10-26 12:59:55 +02:00
83020b993c parse dilbert.com 2013-10-25 15:50:16 +02:00
985ce3ec53 bug fix #259: Deleting article doesn't redirect 2013-10-25 14:25:37 +02:00
33fe6a46a4 bug fix #278: mysql collation not UTF8 2013-10-25 14:20:18 +02:00
cd8a344156 Merge pull request #289 from inthepoche/dev
1.1.0
2013-10-24 23:51:59 -07:00
6ae804853f on the road to 1.1.0 2013-10-25 08:45:28 +02:00
b6d859fa92 Merge branch 'dev' of https://github.com/inthepoche/poche into dev 2013-10-22 08:51:30 +02:00
1a0d776394 fix #286: german translation updated 2013-10-22 08:51:22 +02:00
1ba1628ed6 Merge pull request #285 from dsacchet/dev
Adding support for http_auth
2013-10-21 08:31:24 -07:00
027b4e1568 Adding support for http_auth 2013-10-20 23:28:45 +02:00
df6afaf090 Added support for http_auth 2013-10-20 16:53:54 +02:00
c1e24b0461 Merge branch 'dev' of https://github.com/inthepoche/poche into dev 2013-10-17 17:04:12 +02:00
36b9219842 bug fix #251: login failure 2013-10-17 17:03:55 +02:00
8e76eaad19 Update CONTRIBUTING.md 2013-10-17 11:39:19 +02:00
fad925644f Merge pull request #278 from tcitworld/dev
Updated Screenshots URLs
2013-10-13 23:13:31 -07:00
a84f77d6ba Updated Screenshots URLs
From the poche-themes repository to the poche repository, folder themes.
2013-10-13 20:39:12 +02:00
0c994bd934 Merge branch 'dev' of https://github.com/inthepoche/poche into dev 2013-10-10 14:07:13 +02:00
18889e230a remove empty file 2013-10-10 14:06:53 +02:00
e557b7bb44 Merge pull request #274 from NumEricR/select-theme
Update select theme filter and sort names (dev branch PR)
2013-10-08 23:33:48 -07:00
3ae9190e78 Merge branch 'dev' of https://github.com/inthepoche/poche into dev 2013-10-08 13:38:03 +02:00
e231f3f023 add czech locale, thanks to @dstancl 2013-10-08 13:37:46 +02:00
2502e1359c Merge pull request #273 from jcsaaddupuy/emded-dependencies
Emdeded Roboto webfont
2013-10-08 04:10:37 -07:00
20f00edd15 Merge branch 'dev' into emded-dependencies 2013-10-08 13:04:05 +02:00
2f3425dff6 Added font-face linked to local font 2013-10-08 13:00:43 +02:00
272600ff80 Removed google font link 2013-10-08 12:57:33 +02:00
1745ebc832 Added Roboto font from https://themes.googleusercontent.com/static/fonts/roboto/v9/2UX7WLTfW3W8TclTUvlFyQ.woff 2013-10-08 12:57:02 +02:00
5188585864 Merge pull request #272 from jcsaaddupuy/custom_ssl_port
Custom ssl port
2013-10-08 03:48:49 -07:00
1e98ee1de0 bug fix: changing password was buggy 2013-10-07 14:56:21 +02:00
5011388f39 bug fix #215: change language from config screen 2013-10-07 14:26:25 +02:00
5e07dc8b51 Merge remote branch 'upstream/dev' into dev
Conflicts:
	themes/default/_head.twig
2013-10-07 14:25:24 +02:00
894c36ea32 what this f* F? 2013-10-07 14:00:45 +02:00
031df528b6 bug fix #268: move POCHE_VERSION in index.php and change the name to avoid conflicts when updating 2013-10-07 13:19:34 +02:00
9d3b88b379 bug fix #266: make installation steps easier 2013-10-07 13:12:28 +02:00
5eebe4e50d delete href 2013-10-07 13:06:10 +02:00
2916d24b20 Added support for custom SSL port 2013-10-07 12:47:13 +02:00
3352332f3f Merge branch 'dev' into custom_port 2013-10-07 12:39:29 +02:00
2621569200 missing } 2013-10-07 12:39:11 +02:00
93eed12505 Fixed typo 2013-10-07 12:31:46 +02:00
125f9ee838 Added support for custom ssl port 2013-10-07 12:30:40 +02:00
8df8eb6c95 Merge pull request #264 from jcsaaddupuy/dev
Embeding jquery
2013-10-07 00:31:42 -07:00
bf7516112f Embeded jquery 2.0.3 dependancie 2013-10-06 20:31:11 +02:00
5a26af476e Merge pull request #261 from NumEricR/toolbar-height
Fix #255 : increase article toolbar height if necessary
2013-10-06 11:07:24 -07:00
2287bf06f5 Sort themes alphabetically in config list 2013-10-05 11:08:38 +02:00
89812ec81c Remove useless filter on .git folder 2013-10-05 10:52:08 +02:00
06fef43180 Fix #255 : increase article toolbar height if necessary 2013-10-05 10:51:25 +02:00
01e671f4d1 Merge pull request #256 from inthepoche/dev
merge 1.0.0
2013-10-03 10:14:54 -07:00
d47d2533ac change doc link 2013-10-03 19:03:52 +02:00
27a74816da change export link 2013-10-03 18:33:20 +02:00
47baa1077e reopen #219 when archive last poched links from a page, redirect to an other page 2013-10-03 15:43:24 +02:00
f0f7b94362 remove print_r 2013-10-03 14:53:08 +02:00
747c6698b6 Merge branch 'dev' of git://github.com/tcitworld/poche into tcitworld-dev 2013-10-03 14:51:20 +02:00
8f91e10faa preparing to 1.0.0 2013-10-03 14:51:04 +02:00
6cd8af85da bug fix #227: Deleting element in archive redirect to home 2013-10-03 14:48:53 +02:00
34d67c835e bug fix #219: when archive last poched links from a page, redirect to an other page 2013-10-03 14:46:46 +02:00
7f17a38d35 change instructions messages 2013-10-03 14:23:03 +02:00
07ae20eeed change reading time displaying 2013-10-03 14:17:45 +02:00
4cc3c2ac17 embed themes 2013-10-03 14:10:44 +02:00
66e074b43d remove themes 2013-10-03 14:09:58 +02:00
eb44ca4213 embed themes with poche 2013-10-03 14:06:20 +02:00
dfbbc14b33 remove themes 2013-10-03 14:05:50 +02:00
34bf601a56 change submodule & gitignore 2013-10-03 13:59:52 +02:00
969a91a1e3 site_config is now embedded with poche 2013-10-03 13:48:58 +02:00
fbe8e27568 Merge pull request #250 from NumEricR/dl-export
Force download on poche export
2013-10-03 01:52:07 -07:00
4ee705a79c Add .htaccess file to force download of poche export 2013-09-28 11:15:35 +02:00
8623a53200 Merge pull request #245 from NumEricR/themes-list
Avoid ".git" option in themes list of config page
2013-09-27 02:19:26 -07:00
4e5b04113d Changed Flattr Caching System
From md5(url) to the ID of an article. Easier and faster.
2013-09-27 11:11:45 +02:00
3cc22aab82 Avoid ".git" option in themes list of config page 2013-09-26 23:37:07 +02:00
be2b9055b9 Changed url's encryption from base64 to md5
Fixes Issue #243.
md5 hashes are only coded on 32 hexadecimal characters, so it won't make
too long file names.
2013-09-26 22:00:44 +02:00
92cd6e9af8 change import files constants 2013-09-21 21:44:49 +02:00
58ace4941e bug fix #229: theme not stored on updated poches 2013-09-21 14:37:53 +02:00
37527034ab unactivate debug 2013-09-21 14:18:28 +02:00
88e1108f11 upgrading themes 2013-09-20 14:30:07 +02:00
3408ed48ba fix bug #225: blank page on article page 2013-09-20 14:09:26 +02:00
b8c67f8068 remove define.inc.php 2013-09-20 13:48:29 +02:00
79026b73a8 Merge pull request #226 from inthepoche/dev
beta5
2013-09-20 04:36:35 -07:00
6a6c1c1172 update themes submodule 2013-09-20 11:58:08 +02:00
18bd1cc3b1 update themes 2013-09-20 11:54:39 +02:00
74c0733c1e update themes 2013-09-20 11:50:19 +02:00
f55f734fda remove themes 2013-09-20 11:35:46 +02:00
d477db2cfb add themes 2013-09-20 11:32:19 +02:00
6fe07ab815 remove themes 2013-09-20 11:31:28 +02:00
1a1142893f remove themes 2013-09-20 11:30:53 +02:00
7bda34c66b help when sqlite file not found 2013-09-20 11:25:44 +02:00
2af5015668 remove config.inc.php 2013-09-20 11:05:12 +02:00
5801355cbc chmod & mail address 2013-09-20 11:04:36 +02:00
d6b28d43c8 update themes 2013-09-20 11:00:33 +02:00
6d7e6f5e36 themes submodule 2013-09-20 10:58:53 +02:00
469590fde5 remove themes folder 2013-09-20 10:55:46 +02:00
00dbaf90bc merge #224 2013-09-20 10:21:39 +02:00
705250b93d fixes with new session class 2013-09-20 09:32:49 +02:00
0d64be15de remove csrf check 2013-09-18 09:25:28 +02:00
f6597c7cb9 fix bug #127: update session class 2013-09-17 14:48:16 +02:00
a8778dc23e fix bug #105: Scroll position save / sync 2013-09-17 13:27:16 +02:00
d62dfd88d2 Merge pull request #221 from NumEricR/language
Fix #183: language declaration
2013-09-15 10:12:56 -07:00
d081f272b0 Use dynamic lang value in IE conditional comments 2013-09-14 10:06:59 +02:00
1b2abab6dd Add lang attribute in html tag 2013-09-14 10:06:59 +02:00
10ab20d8e2 Fix missing lang in html tag of update pages 2013-09-14 10:06:59 +02:00
48207b6814 remove poche.js 2013-09-13 10:29:03 +02:00
1a08e7b6f6 titles with colon bad parsed 2013-09-13 09:01:33 +02:00
b9523a0ba0 fix bug #209: titles with colon bad parsed 2013-09-12 19:28:59 +02:00
084ec2a63d change strings for gettext 2013-09-12 14:26:30 +02:00
b9e0514783 update locale files 2013-09-12 13:24:09 +02:00
3e05742568 Merge branch 'dev' of https://github.com/inthepoche/poche into dev 2013-09-12 12:36:07 +02:00
660b998eb7 add english language 2013-09-12 12:28:22 +02:00
b084cde854 Merge pull request #216 from NumEricR/css-icons
Move icon's no-repeat to common code and clean CSS
2013-09-10 21:43:46 -07:00
8ca368e7e3 fix flattr span 2013-09-11 06:40:29 +02:00
a0fd7c5b44 Format CSS code 2013-09-10 23:54:40 +02:00
7eb64927cc Move icons no-repeat into common style 2013-09-10 23:54:18 +02:00
9074534c93 fix flattr span 2013-09-10 22:19:34 +02:00
12d9cfbcaa Merge branch 'Flattr' of git://github.com/tcitworld/poche into tcitworld-Flattr
Conflicts:
	inc/3rdparty/site_config
2013-09-10 19:22:47 +02:00
f3a6080fce add site_config submodule 2013-09-10 18:50:42 +02:00
f16b0747a4 remove site_config to manage them by a submodule 2013-09-10 18:28:17 +02:00
964481d023 Fixed bugs, added a flattr button and an option
There's a button and an option in define.inc.php to show the button or
not.
2013-09-10 18:23:56 +02:00
d143cae25a remove comments in poche_compatibility_test 2013-09-10 15:47:09 +02:00
d11e2bcf48 change doc url 2013-09-10 15:46:05 +02:00
3c33e40b61 change email address in header 2013-09-10 15:43:01 +02:00
eaf2c769be Merge branch 'dev' of https://github.com/inthepoche/poche into dev 2013-09-10 14:44:59 +02:00
ce4a1dcc19 changes to add url directly from poche 2013-09-10 14:41:58 +02:00
2230a38cd6 Merge pull request #205 from NumEricR/less-is-more
Less is more :-)
2013-09-09 05:01:58 -07:00
ef6051b95e Merge pull request #199 from NumEricR/nb-results
Add the number of results next to pager
2013-09-09 04:55:56 -07:00
af1d279226 Fixed errors and changed source of flattrs
Fixed errors, and the number displayed is no longer the number of peope
who has flattred an article, but the number of flattrs he has got.
2013-09-08 21:52:01 +02:00
d5ce28df67 Fixed bugs due to migration 2013-09-08 21:26:30 +02:00
693b3f8677 Implemented Add Button
Added a button to add an URL when directly into Poche. If JS isn't
enabled, nothing happens.
2013-09-08 21:07:59 +02:00
a322312740 Implemented Flattr changes
Added a button to say if the article is flattrable or not and how many
people have flattred this object.
2013-09-08 20:54:11 +02:00
2edde7fe33 Display sort links only if there is at least 2 articles in current list 2013-09-05 22:16:36 +02:00
08a12b6dbb Hide disabled pagination links 2013-09-05 22:01:15 +02:00
876bb3af42 Remove on login and home views useless link "back to home" 2013-09-03 23:56:37 +02:00
7f9f5281e5 Add number of results next to pager 2013-08-28 21:23:26 +02:00
3eb049036e Add warning message when there is no entry in current view 2013-08-27 16:03:50 +02:00
093f1efb21 Update comment 2013-08-27 16:03:50 +02:00
7d1778bbd2 config file for tldp.org 2013-08-27 12:52:35 +02:00
5ebf6eeca1 add configuration to parse bfmtv.com 2013-08-27 11:05:57 +02:00
6fb4600334 fix bug #186: content was empty when enabling downloading pictures 2013-08-26 17:38:01 +02:00
b6b36e1b5a fix bug #182: Wrong title on favorites and archives pages 2013-08-26 17:18:08 +02:00
c51be6b697 Merge pull request #181 from inthepoche/dev
beta4
2013-08-25 12:12:53 -07:00
063fc1a7ba changelog in update 2013-08-25 21:10:01 +02:00
07a5909d73 Merge branch 'dev' of github.com:inthepoche/poche into dev 2013-08-25 20:10:34 +02:00
ec3972361d poche now uses Full Text RSS to fetch content 2013-08-25 20:10:23 +02:00
fccd59e2e3 fix display message for import 2013-08-25 20:08:07 +02:00
eb16ab407b Merge pull request #180 from NumEricR/externalize-css
Externalize some CSS code
2013-08-25 08:04:51 -07:00
e6ba035911 Add bookmarklet id in config page 2013-08-25 16:57:37 +02:00
8e1ed353bb Externalize top link style 2013-08-25 16:42:04 +02:00
a4990dd294 Externalize bookmarklet style 2013-08-25 16:42:04 +02:00
b4f5c46ab0 doc updated 2013-08-25 13:04:03 +02:00
6fa7d08860 poche compatibility test file 2013-08-25 12:40:16 +02:00
3044b21eb6 title page in article view was wrong 2013-08-25 08:49:21 +02:00
d7e8dd590c links to original article were wrong 2013-08-25 08:43:22 +02:00
b66802446d contributing.md updated 2013-08-25 08:32:58 +02:00
d7c2f0cc47 fix bug #175 IP addresses do not appear in view original 2013-08-25 08:01:18 +02:00
27574abf46 README updated with languages 2013-08-25 08:00:51 +02:00
e6a8dd60af Merge pull request #169 from NumEricR/entries-height
Entries height with short description
2013-08-24 22:44:09 -07:00
1cbd70639c Merge pull request #170 from NumEricR/login-button
Login button
2013-08-24 22:43:16 -07:00
217bacc663 Merge pull request #173 from EliasZ/dev
Graceful error-handling with imports and defining where import files are stored
2013-08-24 22:42:37 -07:00
83954e711d Merge pull request #174 from nicofrand/dev
Add support for URLS with digits
2013-08-24 22:36:26 -07:00
149df445d6 Add IPv4 url support (and others beginning by a digit) 2013-08-24 16:50:28 +02:00
38b95e7be9 Add IPv4 url support (and others beginning by a digit) 2013-08-24 16:31:22 +02:00
db4767e22b config template its import section reflects defines 2013-08-24 16:03:49 +02:00
66b6a3b5e2 graceful error-handling with imports, define where import files are stored 2013-08-24 15:59:51 +02:00
7374ff30ef Add IPv4 url support (and others beginning by a digit) 2013-08-24 11:10:07 +02:00
06cf8fb963 Fix login button wording 2013-08-24 10:27:33 +02:00
6a7d779024 Fix issue on entries' height 2013-08-24 09:56:59 +02:00
5ae45084dc CSS clean up again 2013-08-24 09:53:02 +02:00
38b418b7d6 resolve conflicts 2013-08-23 23:18:36 +02:00
fa5f9764ae Add SHAARLI support to view template 2013-08-23 23:11:34 +02:00
fd99a8c02d Revert "Add SHAARLI support to view template"
This reverts commit 0269cd8213.
2013-08-23 23:09:43 +02:00
0269cd8213 Add SHAARLI support to view template 2013-08-23 23:05:45 +02:00
d29b3e5f9e changes in md files 2013-08-23 23:04:56 +02:00
cb844c4238 Restore config modifications related to #162 2013-08-23 22:52:37 +02:00
679b6b85ad preparing to beta4 2013-08-23 22:43:16 +02:00
258d7032bb Clean up the templates markup 2013-08-23 22:38:14 +02:00
6d7defc87c new messages when update / install 2013-08-23 22:24:41 +02:00
b548b2192c Clean markup 2013-08-23 22:24:11 +02:00
f3e4f109a3 Revert "Clean markup in templates"
This reverts commit 8413a63f7d.
2013-08-23 22:23:55 +02:00
8413a63f7d Clean markup in templates 2013-08-23 22:20:04 +02:00
76beb27135 new default content in poche.sqlite 2013-08-23 22:12:37 +02:00
12c9c72984 text in shaarli link 2013-08-23 22:05:14 +02:00
cf9e886076 encode url to share with twitter / email / shaarli 2013-08-23 22:04:09 +02:00
3008e36a3e fix bug #162 links to firefox / chrome / android apps 2013-08-23 22:01:17 +02:00
b64a882696 notice with poche_version undefined' 2013-08-23 21:30:55 +02:00
8be8c44596 gitignore 2013-08-23 21:17:41 +02:00
b48fd706b7 assets directory 2013-08-23 21:16:37 +02:00
d9afe1abd7 Merge branch 'dev' of github.com:inthepoche/poche into dev 2013-08-23 21:15:39 +02:00
70c39d1618 tabs2spaces 2013-08-23 21:07:32 +02:00
ffc966d72f fix bug #151: HTML entities in titles are encoded twice 2013-08-23 21:06:45 +02:00
1e0f9166cc set shaarli to false 2013-08-23 19:49:17 +02:00
c2618ca791 Merge pull request #163 from NumEricR/tools-list
Improve tools list code
2013-08-23 10:42:31 -07:00
4b4afc7322 Add textual content on tools links 2013-08-23 18:45:34 +02:00
8340fedd64 fix bug #150 Add support of text files by setting a default title 2013-08-23 18:29:36 +02:00
b194cf21dc fix bug #147 add db directory in versionning 2013-08-23 18:19:47 +02:00
29773c9729 Fix HTML code of tools lists 2013-08-23 18:10:42 +02:00
fd21828080 updated german translation, thanks to HLFH 2013-08-23 17:43:49 +02:00
a458cff25e Merge pull request #159 from NumEricR/css-cleanup
CSS clean up on style.css file
2013-08-23 08:34:58 -07:00
e93c7c9c46 Merge pull request #160 from nicofrand/dev
Add a print stylesheet
2013-08-23 08:32:03 -07:00
00e4700abb Fix #157 2013-08-23 13:45:46 +02:00
096fb74bf1 CSS clean up on style.css file
Syntax homogenization (spaces, lowercase for hexa, ...)
Code refactoring
Simplification of some selectors
Simplification of "0px" and hexa values
More detailed font stack
Add cursor pointer on ".bouton" elements
2013-08-23 12:12:05 +02:00
64fa45e262 Merge pull request #154 from nicofrand/dev
poche won't import the content of some articles
2013-08-22 23:09:46 -07:00
57c91e427d Merge branch 'dev' of https://github.com/nicofrand/poche into dev 2013-08-22 00:57:11 +02:00
2bf93dc034 Fix #149 2013-08-22 00:49:23 +02:00
746f93c290 fix bug #148 Use of undefined constant POCHE_VERSION 2013-08-20 11:23:32 +02:00
38330bfd65 fix bug #112 link to shaarli 2013-08-20 11:23:00 +02:00
2fdcbd1ac3 typo in gitignore 2013-08-17 21:27:14 +02:00
8d52e6b4e3 Merge branch 'dev' of github.com:inthepoche/poche into dev 2013-08-17 21:26:11 +02:00
e8d1f1e5f0 gitignore 2013-08-17 21:25:53 +02:00
7ba37bd91a Merge pull request #141 from inthepoche/dev
beta3
2013-08-17 11:27:13 -07:00
9067b484ce Merge pull request #140 from inthepoche/master
beta3
2013-08-17 11:23:21 -07:00
c3df0ebdc2 typo 2013-08-16 21:21:25 +02:00
abed0f2122 some precisons in updating poche 2013-08-16 20:40:31 +02:00
12c4098773 rename german folder & files 2013-08-16 20:21:12 +02:00
bb5a7d9ede updating script 2013-08-16 20:19:31 +02:00
1c9cd3463b spanish language, thanks to Nitche 2013-08-16 20:18:11 +02:00
6bc2da5191 ignore myconfig.inc.php in git 2013-08-16 20:17:16 +02:00
042b590606 german language 2013-08-15 20:00:02 +02:00
0b05568c9f fix #138: change pattern to parse url with # 2013-08-15 11:46:40 +02:00
2021fc614e close #137 : Mixed content alert in HTTPS 2013-08-15 11:31:28 +02:00
c0d321c1bf #136 error during readability import 2013-08-15 11:29:28 +02:00
20ced8a806 contributing file 2013-08-15 11:03:36 +02:00
b448a9214c fix #130 : disallow robots 2013-08-15 10:58:25 +02:00
4a2912880f more verif while installing 2013-08-15 10:54:14 +02:00
ca1b0a1a6f install 2013-08-12 19:02:36 +02:00
86848edc84 upgrading README 2013-08-12 18:17:13 +02:00
f93aaa65c4 how installing poche 2013-08-12 18:11:56 +02:00
cd03b575df error msg when install folder exists 2013-08-12 14:27:51 +02:00
667009727a Merge pull request #132 from inthepoche/dev
merge with beta2
2013-08-12 05:14:04 -07:00
6a9e4bfc90 version number 2013-08-11 21:04:04 +02:00
15493df62d fixed #114 : minimum & maximum scale removed 2013-08-11 19:42:52 +02:00
82051a6a6a fixed #128: back to home after mark a link as read is fixed 2013-08-11 19:10:48 +02:00
5bf30b0060 layout 2013-08-10 22:17:00 +02:00
baea9b6de5 new logo 2013-08-10 21:39:11 +02:00
fa0483b361 closed #120: top link 2013-08-10 12:21:36 +02:00
b58e261db9 bug in downloading pictures : article content wasn't updated anymore 2013-08-09 23:30:20 +02:00
d8d1542e52 typo 2013-08-09 22:15:40 +02:00
56ab22d02c only display latest dev version if DEBUG is on 2013-08-09 13:05:35 +02:00
6c15854448 Closed #111 : test of install folder moved before 2013-08-09 11:47:37 +02:00
d91787589b fix #113 - reading time 2013-08-09 08:25:16 +02:00
3d8bded89e debug false 2013-08-08 21:28:37 +02:00
5f9bff0f71 some urls weren't well parsed 2013-08-08 21:13:37 +02:00
301e4c5acb installation 2013-08-08 18:41:40 +02:00
82757801b9 installation 2013-08-08 18:40:55 +02:00
9a8b4ff4ed Merge pull request #109 from inthepoche/dev
merge dev into master
2013-08-08 09:36:10 -07:00
572e758bf2 empty phpunit file 2013-08-08 14:07:43 +02:00
64f8970215 travis img 2013-08-08 13:50:53 +02:00
a3436d4cba travis 2013-08-08 13:49:57 +02:00
07ee09f49a comments 2013-08-08 12:33:02 +02:00
25b5caeed1 ignore doc output 2013-08-08 09:57:18 +02:00
313f4ca785 ignore doc output 2013-08-08 09:55:04 +02:00
ed06f04077 test if /install exists 2013-08-08 09:11:12 +02:00
7aa8ccc47d preparing travis 2013-08-08 07:16:07 +02:00
04b55e97de populate user_config 2013-08-07 21:16:12 +02:00
76e9ca2acf good version of poche.sqlite 2013-08-07 21:00:06 +02:00
77dea8a234 1.0 beta1 2013-08-07 20:05:14 +02:00
01c0e050ad Merge pull request #104 from inthepoche/twig
Twig version on dev branch
2013-08-07 10:41:26 -07:00
339d510fda installation instructions 2013-08-07 19:33:56 +02:00
6e5f8db8bb installation instructions 2013-08-07 19:33:13 +02:00
145f50402e installation instructions 2013-08-07 19:31:11 +02:00
1d517de67b installation instructions 2013-08-07 19:23:00 +02:00
c7ec97ce98 cache to FALSE 2013-08-07 19:14:48 +02:00
b916bcfccc fixes for 1.0-beta 2013-08-07 19:14:28 +02:00
580d60b941 file to update from 0.x to 1.x \o/ 2013-08-07 15:46:17 +02:00
68857cea8c setup of storage 2013-08-07 14:38:58 +02:00
bc1ee8524e postgres 2013-08-07 14:24:07 +02:00
8d3275bee4 multi user 2013-08-06 15:51:48 +02:00
7ce7ec4c94 prepare to multi users 2013-08-06 14:18:03 +02:00
17a9cb9608 minify bookmarklet js 2013-08-06 11:00:42 +02:00
f6df40db46 default sorting 2013-08-05 23:11:10 +02:00
6fb3a2a185 move xsrf test 2013-08-05 22:50:00 +02:00
d28a7ca30f remove js 2013-08-05 21:59:21 +02:00
6a361945ea new design, pagination & more 2013-08-05 21:56:32 +02:00
55821e04c1 share email +twitter / class messages 2013-08-05 15:54:37 +02:00
b161295d0b remove xsrf check 2013-08-05 12:53:56 +02:00
4d0e254491 link to download poche when update available 2013-08-05 12:39:24 +02:00
3252078501 close #69: in the config page, you are notified of the release of a new version 2013-08-05 12:34:16 +02:00
21e0af98eb information about db/poche.sqlite 2013-08-05 10:34:57 +02:00
7f959169b7 copy of poche.sqlite 2013-08-05 10:32:15 +02:00
e4ed594d82 rm poche.sqlite 2013-08-05 10:29:49 +02:00
a12832488d update poche.sqlite 2013-08-05 10:03:59 +02:00
a62788c61e #100: welcome to you, instapaper users 2013-08-05 09:43:33 +02:00
3208d538a7 mysql support 2013-08-05 08:54:42 +02:00
2a1791a4b1 view of an article 2013-08-04 22:51:12 +02:00
63c35580c7 twig implementation 2013-08-04 22:35:08 +02:00
c765c3679f import in poche and not in an external file 2013-08-04 21:42:46 +02:00
eb1af59219 refactoring 2013-08-04 20:58:31 +02:00
3ba5f81b7b twig implementation 2013-08-04 18:07:41 +02:00
07b9821e24 composer 2013-08-04 18:03:30 +02:00
15771f4452 gitignore 2013-08-04 18:02:29 +02:00
3dcab1a782 rm composer.phar 2013-08-04 17:51:33 +02:00
46b77928f7 rm vendor 2013-08-04 17:50:34 +02:00
68abd9c71b gitignore vendor 2013-08-04 17:44:17 +02:00
d51ecb6ea8 ignore vendor 2013-08-04 17:35:02 +02:00
7d2eb7a7b9 composer 2013-08-03 20:47:17 +02:00
4f5b44bd3b twig implementation 2013-08-03 19:26:54 +02:00
2b840e0cfb twig implementation 2013-08-03 08:57:35 +02:00
8cbb2a8802 twig implementation 2013-08-03 08:25:11 +02:00
c67e13e04b new tpl files 2013-08-03 08:24:42 +02:00
afe60d614b remove file 2013-08-03 08:05:02 +02:00
161395d709 mv pochetool pochetools 2013-08-02 23:04:24 +02:00
5ffe5cf541 rename pocheTool -> pocheTools 2013-08-02 23:00:57 +02:00
8069e235fd move Twig in 3rdparty 2013-08-02 22:43:56 +02:00
45161a6402 delete some files 2013-08-02 22:41:21 +02:00
a4565e88ed add Twig & refactor poche 2013-08-02 22:40:51 +02:00
f6c9baab3e rename myTool -> pocheTool and delete some stuff 2013-08-02 21:40:29 +02:00
da2c5d6fc3 display URL at home poche 2013-08-02 13:51:22 +02:00
408f3df28e URL is now encoded 2013-08-02 11:48:57 +02:00
2ee436eaa1 poche / pocket / bolsillo / Tasche & more 2013-08-02 10:39:03 +02:00
02ea9f0769 first test for readability import 2013-08-01 18:34:50 +02:00
99dd7d3877 testing icon in bookmarklet, thanks to @GeekShadow in #94 2013-08-01 11:00:27 +02:00
4d8bcc0c6b set demo mode to false 2013-07-31 19:58:14 +02:00
538cdfa883 fix #70: if demo mode, fields are filled 2013-07-31 19:37:14 +02:00
70b5d24f72 fix #80: add a link in the footer to report a wrong display 2013-07-31 19:21:49 +02:00
3db95a85de update external libs 2013-07-31 19:09:06 +02:00
95a7596cb4 fix #92: add a link to the top 2013-07-31 19:03:02 +02:00
85ebc80c7e Merge branch 'dev' 2013-07-31 17:19:50 +02:00
6588517b2d typo in readme 2013-07-31 11:51:24 +02:00
6d37de5f82 typo in readme 2013-07-31 11:50:38 +02:00
9c902708da google groups link 2013-07-31 11:49:25 +02:00
66ce09ba03 google groups link 2013-07-31 11:45:10 +02:00
6499b26ae8 demo mode (you can't update password in demo mode 2013-06-01 08:29:37 +02:00
da368cc84f update password in config screen 2013-06-01 08:23:37 +02:00
aa8c9f2a32 Installation mode 2013-05-31 22:55:52 +02:00
baa8617364 update JSLikeHTMLElement 2013-04-24 08:27:55 +02:00
494e21b4da add tidy call to clean html output 2013-04-23 16:03:52 +02:00
0ace6cab0b Fix #47 - update Readability class (thx to http://code.fivefilters.org/php-readability/) 2013-04-23 15:57:23 +02:00
c1c9f252f7 display flash message in article view 2013-04-23 15:37:03 +02:00
2987031bc3 Fixed #73 - Can't Poch url with special caracter 2013-04-23 15:25:12 +02:00
3e7188185d Merge branch 'memiks-gestion_erreur_readability' into dev 2013-04-23 15:19:33 +02:00
8d5aab49c1 lien corrigé dans le README 2013-04-23 15:18:22 +02:00
cdcc8d2533 Remove debug on Readability output 2013-04-23 08:09:54 -05:00
ae9571694f Correction erreur sur le Self 2013-04-23 07:29:16 -05:00
4ddbd26787 Ajout du global msg et gestion du retour dans Readability 2013-04-23 07:22:19 -05:00
8444bb0600 Merge branch 'master' of github.com:inthepoche/poche 2013-04-23 09:40:35 +02:00
29c6fd4607 messages d'erreur si pas possible d'ajouter ou de supprimer un lien 2013-04-23 09:38:57 +02:00
37f2773aa5 Merge pull request #74 from inthepoche/dev
v0.2.1
2013-04-22 23:34:55 -07:00
e682978e5b Revert "Update style.css"
This reverts commit 176d733a44.
2013-04-23 08:30:48 +02:00
176d733a44 Update style.css
coquille pour l'affichage des liens sur la page view
2013-04-22 19:57:40 +03:00
37c6ed4e7a Merge pull request #67 from inthepoche/dev
tag 0.2
2013-04-21 10:53:22 -07:00
306 changed files with 34269 additions and 6384 deletions

10
.editorconfig Normal file
View File

@ -0,0 +1,10 @@
; top-most EditorConfig file
root = true
; Unix-style newlines
[*]
end_of_line = LF
indent_style = space
indent_size = 4
trim_trailing_whitespace = true
insert_final_newline = true

38
.gitignore vendored Normal file
View File

@ -0,0 +1,38 @@
# Cache and logs (Symfony2)
/app/cache/*
/app/logs/*
!app/cache/.gitkeep
!app/logs/.gitkeep
# Cache and logs (Symfony3)
/var/cache/*
/var/logs/*
!var/cache/.gitkeep
!var/logs/.gitkeep
# Parameters
/app/config/parameters.yml
/app/config/parameters.ini
# Managed by Composer
/app/bootstrap.php.cache
/var/bootstrap.php.cache
/bin/*
!bin/console
!bin/symfony_requirements
/vendor/
# Assets and user uploads
/web/bundles/
/web/uploads/
# Build
/app/build
/build
# Composer PHAR
/composer.phar
# Data for wallabag
data/assets/*
data/db/wallabag*.sqlite

27
.scrutinizer.yml Normal file
View File

@ -0,0 +1,27 @@
filter:
paths:
- src/*
excluded_paths:
- 'vendor/*'
- 'app/*'
- 'web/*'
- 'src/Wallabag/*Bundle/Tests/*'
- '*Test.php'
tools:
php_cs_fixer: true
php_analyzer: true
php_mess_detector: true
php_changetracking: true
php_code_sniffer: true
php_pdepend: true
sensiolabs_security_checker: true
#external_code_coverage:
# timeout: 3600
php_code_coverage: true
php_sim: false
php_cpd: false
checks:
php:
code_rating: true

45
.travis.yml Normal file
View File

@ -0,0 +1,45 @@
language: php
# faster builds on docker-container setup
sudo: false
# cache vendor dirs
cache:
directories:
- vendor
- $HOME/.composer/cache
php:
- 5.4
- 5.5
- 5.6
- hhvm
- nightly
matrix:
fast_finish: true
allow_failures:
- php: hhvm
- php: nightly
branches:
only:
- v2
install:
- composer self-update
# build coverage only on one build, to speed up results feedbacks
# before_script:
# - if [[ "$TRAVIS_PHP_VERSION" = "5.6" ]]; then PHPUNIT_FLAGS="--coverage-clover=coverage.clover"; else PHPUNIT_FLAGS=""; fi;
script:
- ant prepare
- bin/phpunit --exclude-group command-doctrine --debug $PHPUNIT_FLAGS
# after_script:
# - |
# if [ $TRAVIS_PHP_VERSION = '5.6' ]; then
# wget https://scrutinizer-ci.com/ocular.phar
# php ocular.phar code-coverage:upload --format=php-clover coverage.clover
# fi

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).

14
COPYING
View File

@ -1,14 +0,0 @@
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.

19
COPYING.md Normal file
View File

@ -0,0 +1,19 @@
Copyright (c) 2013-2015 Nicolas Lœuillet
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

16
CREDITS
View File

@ -1,16 +0,0 @@
poche is based on :
* ReadItYourself http://www.memiks.fr/readityourself/
* PHP Readability http://www.keyvan.net/2010/08/php-readability/
* Encoding https://github.com/neitanod/forceutf8
* logo by Brightmix http://www.iconfinder.com/icondetails/43256/128/jeans_monotone_pocket_icon
* icons http://icomoon.io
* PHP Simple HTML DOM Parser (for Pocket import) http://simplehtmldom.sourceforge.net/
* Session https://github.com/tontof/kriss_feed/blob/master/src/class/Session.php
poche is developed by Nicolas Lœuillet under the Do What the Fuck You Want to Public License
Contributors :
Nicolas Lœuillet aka nico_somb
Tom.C. aka tmos
PeaceCopathe
Gregoire_M

6
CREDITS.md Normal file
View File

@ -0,0 +1,6 @@
wallabag is mainly developed by [Nicolas Lœuillet](https://github.com/nicosomb) under the MIT License.
Thank you so much to [@tcitworld](https://github.com/tcitworld) and [@j0k3r](https://github.com/j0k3r).
Thank you [to others contributors](https://github.com/wallabag/wallabag/graphs/contributors
).

29
Capfile Normal file
View File

@ -0,0 +1,29 @@
# Load DSL and set up stages
require 'capistrano/setup'
# Include default deployment tasks
require 'capistrano/deploy'
require 'capistrano/symfony'
# Include tasks from other gems included in your Gemfile
#
# For documentation on these, see for example:
#
# https://github.com/capistrano/rvm
# https://github.com/capistrano/rbenv
# https://github.com/capistrano/chruby
# https://github.com/capistrano/bundler
# https://github.com/capistrano/rails
# https://github.com/capistrano/passenger
#
# require 'capistrano/rvm'
# require 'capistrano/rbenv'
# require 'capistrano/chruby'
# require 'capistrano/bundler'
# require 'capistrano/rails/assets'
# require 'capistrano/rails/migrations'
# require 'capistrano/passenger'
# Load custom tasks from `lib/capistrano/tasks` if you have any defined
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }

53
GUIDELINES.md Normal file
View File

@ -0,0 +1,53 @@
# Guidelines for wallabag
If you want to contribute to wallabag, you have some rules to respect. These rules were defined by [PHP Framework Interop Group](http://www.php-fig.org).
## Basic Coding Standard (PSR-1)
This section of the standard comprises what should be considered the standard coding elements that are required to ensure a high level of technical interoperability between shared PHP code.
* Files MUST use only `<?php` and `<?=` tags.
* Files MUST use only UTF-8 without BOM for PHP code.
* Files SHOULD either declare symbols (classes, functions, constants, etc.) or cause side-effects (e.g. generate output, change .ini settings, etc.) but SHOULD NOT do both.
* Namespaces and classes MUST follow [PSR-0](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md).
* Class names MUST be declared in `StudlyCaps`.
* Class constants MUST be declared in all upper case with underscore separators.
* Method names MUST be declared in `camelCase`.
You can read details on [PHP FIG website](http://www.php-fig.org/psr/psr-1/).
## Coding Style Guide (PSR-2)
This guide extends and expands on PSR-1, the basic coding standard.
The intent of this guide is to reduce cognitive friction when scanning code from different authors. It does so by enumerating a shared set of rules and expectations about how to format PHP code.
The style rules herein are derived from commonalities among the various member projects. When various authors collaborate across multiple projects, it helps to have one set of guidelines to be used among all those projects. Thus, the benefit of this guide is not in the rules themselves, but in the sharing of those rules.
* Code MUST follow PSR-1.
* Code MUST use 4 spaces for indenting, not tabs.
* There MUST NOT be a hard limit on line length; the soft limit MUST be 120 characters; lines SHOULD be 80 characters or less.
* There MUST be one blank line after the `namespace` declaration, and there MUST be one blank line after the block of `use` declarations.
* Opening braces for classes MUST go on the next line, and closing braces MUST go on the next line after the body.
* Opening braces for methods MUST go on the next line, and closing braces MUST go on the next line after the body.
* Visibility MUST be declared on all properties and methods; `abstract` and `final` MUST be declared before the visibility; `static` MUST be declared after the visibility.
* Control structure keywords MUST have one space after them; method and function calls MUST NOT.
* Opening braces for control structures MUST go on the same line, and closing braces MUST go on the next line after the body.
* Opening parentheses for control structures MUST NOT have a space after them, and closing parentheses for control structures MUST NOT have a space before.
You can read details on [PHP FIG website](http://www.php-fig.org/psr/psr-2/).

5
Gemfile Normal file
View File

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

41
Gemfile.lock Normal file
View File

@ -0,0 +1,41 @@
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
remote: https://rubygems.org/
specs:
capistrano (3.4.0)
i18n
rake (>= 10.0.0)
sshkit (~> 1.3)
capistrano-composer (0.0.6)
capistrano (>= 3.0.0.pre)
capistrano-file-permissions (0.1.1)
capistrano (~> 3.1)
colorize (0.7.7)
i18n (0.7.0)
net-scp (1.2.1)
net-ssh (>= 2.6.5)
net-ssh (2.9.2)
rake (10.4.2)
sshkit (1.7.1)
colorize (>= 0.7.0)
net-scp (>= 1.1.2)
net-ssh (>= 2.8.0)
PLATFORMS
ruby
DEPENDENCIES
capistrano (~> 3.1)
capistrano-composer (~> 0.0.3)
capistrano-symfony (~> 0.1)!
BUNDLED WITH
1.10.6

View File

@ -1,57 +1,26 @@
# poche
Abandon Pocket, Instapaper and other Readability service : adopt poche. It is the same, but it is open source.
[![Build Status](https://travis-ci.org/wallabag/wallabag.svg?branch=v2)](https://travis-ci.org/wallabag/wallabag)
[![Code Coverage](https://scrutinizer-ci.com/g/wallabag/wallabag/badges/coverage.png?b=v2)](https://scrutinizer-ci.com/g/wallabag/wallabag/?branch=v2)
[![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)
![poche](http://inthepoche.com/img/logo.png)
# What is wallabag ?
wallabag is a self hostable application allowing you to not miss any content anymore.
Click, save, read it when you can. It extracts content so that you can read it when you have time.
The website of poche is [inthepoche.com](http://inthepoche.com).
More informations on our website: [wallabag.org](http://wallabag.org)
To test poche, a demo website is online : [demo.inthepoche.com](http://demo.inthepoche.com) (login poche, password poche).
# Want to test the v2 ?
To get news from poche, [follow us on twitter](http://twitter.com/getpoche) or [read the poche blog](http://inthepoche.com/blog).
Keep in mind it's an **instable** branch, everything can be broken :)
[![flattr](http://api.flattr.com/button/flattr-badge-large.png)](http://flattr.com/thing/1265480/poche-a-read-it-later-open-source-system)
## Usage
You can easily add a "poched" page with the bookmarklet.
poche save the entire content of a poched links : text and pictures are stored on your server.
You can :
* read a page in a comfortable reading view
* archive a link
* put a link in favorite
* delete a link
## Requirements & installation
You have to install [sqlite for php](http://www.php.net/manual/en/book.sqlite.php) on your server.
Get the [latest version](https://github.com/nicosomb/poche) of poche on github. Unzip it and upload it on your server. poche must have write access on assets, cache and db directories.
That's all, **poche works** !
## Security
You **have** to protect your db/poche.sqlite file. Modify the virtual host of your website to add this condition :
```apache
<Files ~ "\.sqlite$">
Order allow,deny
Deny from all
</Files>
```
Nginx version:
```nginx
location ~ /(db) {
deny all;
return 404;
}
git clone https://github.com/wallabag/wallabag.git -b v2
cd wallabag
composer install
php app/console wallabag:install
php app/console server:run
```
## Import from Pocket
If you want to import your Pocket datas, [export them here](https://getpocket.com/export). Put the HTML file in your poche directory, execute import.php file locally by following instructions. Be careful, the script can take a very long time.
## License
Copyright © 2010-2013 Nicolas Lœuillet <nicolas@loeuillet.org>
Copyright © 2013-2015 Nicolas Lœuillet <nicolas@loeuillet.org>
This work is free. You can redistribute it and/or modify it under the
terms of the Do What The Fuck You Want To Public License, Version 2,
as published by Sam Hocevar. See the COPYING file for more details.
terms of the MIT License. See the COPYING file for more details.

67
TRANSLATION.md Normal file
View File

@ -0,0 +1,67 @@
# How to manage translations for wallabag
This guide will describe the procedure of translation management of the wallabag web application.
All translations are made using [gettext](http://en.wikipedia.org/wiki/Gettext) system and tools.
You will need the [Poedit](http://www.poedit.net/download.php) editor to update, edit and create your translation files easily. However, you can also handle translations also without it: all can be done using gettext tools and your favorite plain text editor only. This guide, however, describes editing with Poedit. If you want to use gettext only, please refer to the xgettext manual page to update po files from sources (see also how it is used by Poedit below) and use msgunfmt tool to compile .mo files manually.
You need to know, that translation phrases are stored in **".po"** files (for example: `locale/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.po`), which are then complied in **".mo"** files using **msgfmt** gettext tool or by Poedit, which will run msgfmt for you in background.
**It's assumed, that you have wallabag installed locally on your computer or on the server you have access to.**
## To change existing translation you will need to do:
### 1. Clear cache
You can do this using **http://your-wallabag-host.com/?empty-cache** link (replace http://your-wallabag-host.com/ with real url of your wallabag application)
OR
from command line:
go to root of your installation of wallabag project and run next command:
`rm -rf ./cache/*`
(this may require root privileges if you run, for example Apache web server with mod_php)
### 2. Generate php files from all twig templates
Do this using next command:
`php ./locale/tools/fillCache.php`
OR
from your browser: **http://your-wallabag-host.com/locale/tools/fillCache.php** (this may require removal of .htaccess file in locale/ directory).
### 3. Configure your Poedit
Open Poedit editor, open Edit->Preferences. Go to "Parsers" tab, click on PHP and press "Edit" button. Make sure your "Parser command:" looks like
`xgettext --no-location --force-po -o %o %C %K %F`
Usually it is required to add "--no-location" to default value.
### 4. Open .po file you want to edit in Poedit and change its settings
Open, for example `locale/pl_PL.utf8/LC_MESSAGES/pl_PL.utf8.po` file in your Poedit.
Go to "Catalog"->"Settings..." menu. Then go to "Path" tab and add path to wallabag installation in your local file system. This step can't be omitted as you will not be able to update phrases otherwise.
You can also check "project into" tab to be sure, that "Language" is set correctly (this will allow you to spell check your translation).
### 5. Update opened .po file from sources
Once you have set your path correctly, you are able to update phrases from sources. Press "Update catalog - synchronize it with sources" button or go to "Catalog"->"Update from sources" menu.
As a result you will see confirmation popup with two tabs: "New strings" and "Obsolete strings". Please review and accept changes (or press "Undo" if you see too many obsolete strings, as Poedit will remove them all - in this case please make sure all previous steps are performed w/o errors).
### 6. Translate and save your .po file
If you have any difficulties on this step, please consult with Poedit manual.
Every time you save your .po file, Poedit will also compile appropriate .mo file by default (of course, if not disabled in preferences).
You are now almost done.
### 7. Clear cache again
This step may be required if your web server runs php scripts in name of, say, www user (i.e. Apache with mod_php, not cgi).
##To create new translation
You just have to copy the folder corresponding to the language you want to translate from, change language in the project settings and for the folder and files names. Then start replacing all existing translations with your own.

71
Vagrantfile vendored Normal file
View File

@ -0,0 +1,71 @@
$script_sqlite = <<SCRIPT
apt-get update
apt-get install -y apache2 php5 php5-sqlite php5-xdebug
apt-get clean -y
echo "ServerName localhost" >> /etc/apache2/apache2.conf
service apache2 restart
rm -f /var/www/html/index.html
date > /etc/vagrant_provisioned_at
SCRIPT
$script_mysql = <<SCRIPT
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y apache2 php5 php5-mysql php5-xdebug mysql-server mysql-client
apt-get clean -y
echo "ServerName localhost" >> /etc/apache2/apache2.conf
service apache2 restart
service mysql restart
echo "create database wallabag;" | mysql -u root
rm -f /var/www/html/index.html
date > /etc/vagrant_provisioned_at
SCRIPT
$script_postgres = <<SCRIPT
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y apache2 php5 php5-pgsql php5-xdebug postgresql postgresql-contrib
apt-get clean -y
echo "ServerName localhost" >> /etc/apache2/apache2.conf
service apache2 restart
service postgresql restart
rm -f /var/www/html/index.html
date > /etc/vagrant_provisioned_at
SCRIPT
Vagrant.configure("2") do |config|
config.vm.define "sqlite" do |m|
m.vm.box = "ubuntu/trusty64"
m.vm.provision "shell", inline: $script_sqlite
m.vm.synced_folder ".", "/var/www/html", owner: "www-data", group: "www-data"
end
config.vm.define "mysql" do |m|
m.vm.box = "ubuntu/trusty64"
m.vm.provision "shell", inline: $script_mysql
m.vm.synced_folder ".", "/var/www/html", owner: "www-data", group: "www-data"
end
config.vm.define "postgres" do |m|
m.vm.box = "ubuntu/trusty64"
m.vm.provision "shell", inline: $script_postgres
m.vm.synced_folder ".", "/var/www/html", owner: "www-data", group: "www-data"
end
config.vm.define "debian7" do |m|
m.vm.box = "chef/debian-7.6"
m.vm.provision "shell", inline: $script_sqlite
m.vm.synced_folder ".", "/var/www", owner: "www-data", group: "www-data"
end
config.vm.define "debian6" do |m|
m.vm.box = "chef/debian-6.0.10"
m.vm.provision "shell", inline: $script_sqlite
m.vm.synced_folder ".", "/var/www", owner: "www-data", group: "www-data"
end
config.vm.network :forwarded_port, guest: 80, host: 8003
#config.vm.network "public_network", :bridge => "en0: Wi-Fi (AirPort)"
end

7
app/.htaccess Normal file
View File

@ -0,0 +1,7 @@
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order deny,allow
Deny from all
</IfModule>

9
app/AppCache.php Normal file
View File

@ -0,0 +1,9 @@
<?php
require_once __DIR__.'/AppKernel.php';
use Symfony\Bundle\FrameworkBundle\HttpCache\HttpCache;
class AppCache extends HttpCache
{
}

46
app/AppKernel.php Normal file
View File

@ -0,0 +1,46 @@
<?php
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
new Symfony\Bundle\TwigBundle\TwigBundle(),
new Symfony\Bundle\MonologBundle\MonologBundle(),
new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
new Symfony\Bundle\AsseticBundle\AsseticBundle(),
new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
new FOS\RestBundle\FOSRestBundle(),
new FOS\UserBundle\FOSUserBundle(),
new JMS\SerializerBundle\JMSSerializerBundle(),
new Nelmio\ApiDocBundle\NelmioApiDocBundle(),
new Nelmio\CorsBundle\NelmioCorsBundle(),
new Liip\ThemeBundle\LiipThemeBundle(),
new Wallabag\CoreBundle\WallabagCoreBundle(),
new Wallabag\ApiBundle\WallabagApiBundle(),
new Bazinga\Bundle\HateoasBundle\BazingaHateoasBundle(),
new Lexik\Bundle\FormFilterBundle\LexikFormFilterBundle(),
);
if (in_array($this->getEnvironment(), array('dev', 'test'))) {
$bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
$bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
$bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
$bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
$bundles[] = new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle();
}
return $bundles;
}
public function registerContainerConfiguration(LoaderInterface $loader)
{
$loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');
}
}

View File

758
app/SymfonyRequirements.php Normal file
View File

@ -0,0 +1,758 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
/*
* Users of PHP 5.2 should be able to run the requirements checks.
* This is why the file and all classes must be compatible with PHP 5.2+
* (e.g. not using namespaces and closures).
*
* ************** CAUTION **************
*
* DO NOT EDIT THIS FILE as it will be overridden by Composer as part of
* the installation/update process. The original file resides in the
* SensioDistributionBundle.
*
* ************** CAUTION **************
*/
/**
* Represents a single PHP requirement, e.g. an installed extension.
* It can be a mandatory requirement or an optional recommendation.
* There is a special subclass, named PhpIniRequirement, to check a php.ini configuration.
*
* @author Tobias Schultze <http://tobion.de>
*/
class Requirement
{
private $fulfilled;
private $testMessage;
private $helpText;
private $helpHtml;
private $optional;
/**
* Constructor that initializes the requirement.
*
* @param bool $fulfilled Whether the requirement is fulfilled
* @param string $testMessage The message for testing the requirement
* @param string $helpHtml The help text formatted in HTML for resolving the problem
* @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
* @param bool $optional Whether this is only an optional recommendation not a mandatory requirement
*/
public function __construct($fulfilled, $testMessage, $helpHtml, $helpText = null, $optional = false)
{
$this->fulfilled = (bool) $fulfilled;
$this->testMessage = (string) $testMessage;
$this->helpHtml = (string) $helpHtml;
$this->helpText = null === $helpText ? strip_tags($this->helpHtml) : (string) $helpText;
$this->optional = (bool) $optional;
}
/**
* Returns whether the requirement is fulfilled.
*
* @return bool true if fulfilled, otherwise false
*/
public function isFulfilled()
{
return $this->fulfilled;
}
/**
* Returns the message for testing the requirement.
*
* @return string The test message
*/
public function getTestMessage()
{
return $this->testMessage;
}
/**
* Returns the help text for resolving the problem.
*
* @return string The help text
*/
public function getHelpText()
{
return $this->helpText;
}
/**
* Returns the help text formatted in HTML.
*
* @return string The HTML help
*/
public function getHelpHtml()
{
return $this->helpHtml;
}
/**
* Returns whether this is only an optional recommendation and not a mandatory requirement.
*
* @return bool true if optional, false if mandatory
*/
public function isOptional()
{
return $this->optional;
}
}
/**
* Represents a PHP requirement in form of a php.ini configuration.
*
* @author Tobias Schultze <http://tobion.de>
*/
class PhpIniRequirement extends Requirement
{
/**
* Constructor that initializes the requirement.
*
* @param string $cfgName The configuration name used for ini_get()
* @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false,
* or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement
* @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.
* This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.
* Example: You require a config to be true but PHP later removes this config and defaults it to true internally.
* @param string|null $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived)
* @param string|null $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived)
* @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
* @param bool $optional Whether this is only an optional recommendation not a mandatory requirement
*/
public function __construct($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null, $optional = false)
{
$cfgValue = ini_get($cfgName);
if (is_callable($evaluation)) {
if (null === $testMessage || null === $helpHtml) {
throw new InvalidArgumentException('You must provide the parameters testMessage and helpHtml for a callback evaluation.');
}
$fulfilled = call_user_func($evaluation, $cfgValue);
} else {
if (null === $testMessage) {
$testMessage = sprintf('%s %s be %s in php.ini',
$cfgName,
$optional ? 'should' : 'must',
$evaluation ? 'enabled' : 'disabled'
);
}
if (null === $helpHtml) {
$helpHtml = sprintf('Set <strong>%s</strong> to <strong>%s</strong> in php.ini<a href="#phpini">*</a>.',
$cfgName,
$evaluation ? 'on' : 'off'
);
}
$fulfilled = $evaluation == $cfgValue;
}
parent::__construct($fulfilled || ($approveCfgAbsence && false === $cfgValue), $testMessage, $helpHtml, $helpText, $optional);
}
}
/**
* A RequirementCollection represents a set of Requirement instances.
*
* @author Tobias Schultze <http://tobion.de>
*/
class RequirementCollection implements IteratorAggregate
{
private $requirements = array();
/**
* Gets the current RequirementCollection as an Iterator.
*
* @return Traversable A Traversable interface
*/
public function getIterator()
{
return new ArrayIterator($this->requirements);
}
/**
* Adds a Requirement.
*
* @param Requirement $requirement A Requirement instance
*/
public function add(Requirement $requirement)
{
$this->requirements[] = $requirement;
}
/**
* Adds a mandatory requirement.
*
* @param bool $fulfilled Whether the requirement is fulfilled
* @param string $testMessage The message for testing the requirement
* @param string $helpHtml The help text formatted in HTML for resolving the problem
* @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
*/
public function addRequirement($fulfilled, $testMessage, $helpHtml, $helpText = null)
{
$this->add(new Requirement($fulfilled, $testMessage, $helpHtml, $helpText, false));
}
/**
* Adds an optional recommendation.
*
* @param bool $fulfilled Whether the recommendation is fulfilled
* @param string $testMessage The message for testing the recommendation
* @param string $helpHtml The help text formatted in HTML for resolving the problem
* @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
*/
public function addRecommendation($fulfilled, $testMessage, $helpHtml, $helpText = null)
{
$this->add(new Requirement($fulfilled, $testMessage, $helpHtml, $helpText, true));
}
/**
* Adds a mandatory requirement in form of a php.ini configuration.
*
* @param string $cfgName The configuration name used for ini_get()
* @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false,
* or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement
* @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.
* This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.
* Example: You require a config to be true but PHP later removes this config and defaults it to true internally.
* @param string $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived)
* @param string $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived)
* @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
*/
public function addPhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null)
{
$this->add(new PhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence, $testMessage, $helpHtml, $helpText, false));
}
/**
* Adds an optional recommendation in form of a php.ini configuration.
*
* @param string $cfgName The configuration name used for ini_get()
* @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false,
* or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement
* @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.
* This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.
* Example: You require a config to be true but PHP later removes this config and defaults it to true internally.
* @param string $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived)
* @param string $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived)
* @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
*/
public function addPhpIniRecommendation($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null)
{
$this->add(new PhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence, $testMessage, $helpHtml, $helpText, true));
}
/**
* Adds a requirement collection to the current set of requirements.
*
* @param RequirementCollection $collection A RequirementCollection instance
*/
public function addCollection(RequirementCollection $collection)
{
$this->requirements = array_merge($this->requirements, $collection->all());
}
/**
* Returns both requirements and recommendations.
*
* @return array Array of Requirement instances
*/
public function all()
{
return $this->requirements;
}
/**
* Returns all mandatory requirements.
*
* @return array Array of Requirement instances
*/
public function getRequirements()
{
$array = array();
foreach ($this->requirements as $req) {
if (!$req->isOptional()) {
$array[] = $req;
}
}
return $array;
}
/**
* Returns the mandatory requirements that were not met.
*
* @return array Array of Requirement instances
*/
public function getFailedRequirements()
{
$array = array();
foreach ($this->requirements as $req) {
if (!$req->isFulfilled() && !$req->isOptional()) {
$array[] = $req;
}
}
return $array;
}
/**
* Returns all optional recommendations.
*
* @return array Array of Requirement instances
*/
public function getRecommendations()
{
$array = array();
foreach ($this->requirements as $req) {
if ($req->isOptional()) {
$array[] = $req;
}
}
return $array;
}
/**
* Returns the recommendations that were not met.
*
* @return array Array of Requirement instances
*/
public function getFailedRecommendations()
{
$array = array();
foreach ($this->requirements as $req) {
if (!$req->isFulfilled() && $req->isOptional()) {
$array[] = $req;
}
}
return $array;
}
/**
* Returns whether a php.ini configuration is not correct.
*
* @return bool php.ini configuration problem?
*/
public function hasPhpIniConfigIssue()
{
foreach ($this->requirements as $req) {
if (!$req->isFulfilled() && $req instanceof PhpIniRequirement) {
return true;
}
}
return false;
}
/**
* Returns the PHP configuration file (php.ini) path.
*
* @return string|false php.ini file path
*/
public function getPhpIniConfigPath()
{
return get_cfg_var('cfg_file_path');
}
}
/**
* This class specifies all requirements and optional recommendations that
* are necessary to run the Symfony Standard Edition.
*
* @author Tobias Schultze <http://tobion.de>
* @author Fabien Potencier <fabien@symfony.com>
*/
class SymfonyRequirements extends RequirementCollection
{
const REQUIRED_PHP_VERSION = '5.3.3';
/**
* Constructor that initializes the requirements.
*/
public function __construct()
{
/* mandatory requirements follow */
$installedPhpVersion = phpversion();
$this->addRequirement(
version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>='),
sprintf('PHP version must be at least %s (%s installed)', self::REQUIRED_PHP_VERSION, $installedPhpVersion),
sprintf('You are running PHP version "<strong>%s</strong>", but Symfony needs at least PHP "<strong>%s</strong>" to run.
Before using Symfony, upgrade your PHP installation, preferably to the latest version.',
$installedPhpVersion, self::REQUIRED_PHP_VERSION),
sprintf('Install PHP %s or newer (installed version is %s)', self::REQUIRED_PHP_VERSION, $installedPhpVersion)
);
$this->addRequirement(
version_compare($installedPhpVersion, '5.3.16', '!='),
'PHP version must not be 5.3.16 as Symfony won\'t work properly with it',
'Install PHP 5.3.17 or newer (or downgrade to an earlier PHP version)'
);
$this->addRequirement(
is_dir(__DIR__.'/../vendor/composer'),
'Vendor libraries must be installed',
'Vendor libraries are missing. Install composer following instructions from <a href="http://getcomposer.org/">http://getcomposer.org/</a>. '.
'Then run "<strong>php composer.phar install</strong>" to install them.'
);
$cacheDir = is_dir(__DIR__.'/../var/cache') ? __DIR__.'/../var/cache' : __DIR__.'/cache';
$this->addRequirement(
is_writable($cacheDir),
'app/cache/ or var/cache/ directory must be writable',
'Change the permissions of either "<strong>app/cache/</strong>" or "<strong>var/cache/</strong>" directory so that the web server can write into it.'
);
$logsDir = is_dir(__DIR__.'/../var/logs') ? __DIR__.'/../var/logs' : __DIR__.'/logs';
$this->addRequirement(
is_writable($logsDir),
'app/logs/ or var/logs/ directory must be writable',
'Change the permissions of either "<strong>app/logs/</strong>" or "<strong>var/logs/</strong>" directory so that the web server can write into it.'
);
$this->addPhpIniRequirement(
'date.timezone', true, false,
'date.timezone setting must be set',
'Set the "<strong>date.timezone</strong>" setting in php.ini<a href="#phpini">*</a> (like Europe/Paris).'
);
if (version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>=')) {
$timezones = array();
foreach (DateTimeZone::listAbbreviations() as $abbreviations) {
foreach ($abbreviations as $abbreviation) {
$timezones[$abbreviation['timezone_id']] = true;
}
}
$this->addRequirement(
isset($timezones[@date_default_timezone_get()]),
sprintf('Configured default timezone "%s" must be supported by your installation of PHP', @date_default_timezone_get()),
'Your default timezone is not supported by PHP. Check for typos in your <strong>php.ini</strong> file and have a look at the list of deprecated timezones at <a href="http://php.net/manual/en/timezones.others.php">http://php.net/manual/en/timezones.others.php</a>.'
);
}
$this->addRequirement(
function_exists('json_encode'),
'json_encode() must be available',
'Install and enable the <strong>JSON</strong> extension.'
);
$this->addRequirement(
function_exists('session_start'),
'session_start() must be available',
'Install and enable the <strong>session</strong> extension.'
);
$this->addRequirement(
function_exists('ctype_alpha'),
'ctype_alpha() must be available',
'Install and enable the <strong>ctype</strong> extension.'
);
$this->addRequirement(
function_exists('token_get_all'),
'token_get_all() must be available',
'Install and enable the <strong>Tokenizer</strong> extension.'
);
$this->addRequirement(
function_exists('simplexml_import_dom'),
'simplexml_import_dom() must be available',
'Install and enable the <strong>SimpleXML</strong> extension.'
);
if (function_exists('apc_store') && ini_get('apc.enabled')) {
if (version_compare($installedPhpVersion, '5.4.0', '>=')) {
$this->addRequirement(
version_compare(phpversion('apc'), '3.1.13', '>='),
'APC version must be at least 3.1.13 when using PHP 5.4',
'Upgrade your <strong>APC</strong> extension (3.1.13+).'
);
} else {
$this->addRequirement(
version_compare(phpversion('apc'), '3.0.17', '>='),
'APC version must be at least 3.0.17',
'Upgrade your <strong>APC</strong> extension (3.0.17+).'
);
}
}
$this->addPhpIniRequirement('detect_unicode', false);
if (extension_loaded('suhosin')) {
$this->addPhpIniRequirement(
'suhosin.executor.include.whitelist',
create_function('$cfgValue', 'return false !== stripos($cfgValue, "phar");'),
false,
'suhosin.executor.include.whitelist must be configured correctly in php.ini',
'Add "<strong>phar</strong>" to <strong>suhosin.executor.include.whitelist</strong> in php.ini<a href="#phpini">*</a>.'
);
}
if (extension_loaded('xdebug')) {
$this->addPhpIniRequirement(
'xdebug.show_exception_trace', false, true
);
$this->addPhpIniRequirement(
'xdebug.scream', false, true
);
$this->addPhpIniRecommendation(
'xdebug.max_nesting_level',
create_function('$cfgValue', 'return $cfgValue > 100;'),
true,
'xdebug.max_nesting_level should be above 100 in php.ini',
'Set "<strong>xdebug.max_nesting_level</strong>" to e.g. "<strong>250</strong>" in php.ini<a href="#phpini">*</a> to stop Xdebug\'s infinite recursion protection erroneously throwing a fatal error in your project.'
);
}
$pcreVersion = defined('PCRE_VERSION') ? (float) PCRE_VERSION : null;
$this->addRequirement(
null !== $pcreVersion,
'PCRE extension must be available',
'Install the <strong>PCRE</strong> extension (version 8.0+).'
);
if (extension_loaded('mbstring')) {
$this->addPhpIniRequirement(
'mbstring.func_overload',
create_function('$cfgValue', 'return (int) $cfgValue === 0;'),
true,
'string functions should not be overloaded',
'Set "<strong>mbstring.func_overload</strong>" to <strong>0</strong> in php.ini<a href="#phpini">*</a> to disable function overloading by the mbstring extension.'
);
}
/* optional recommendations follow */
if (file_exists(__DIR__.'/../vendor/composer')) {
require_once __DIR__.'/../vendor/autoload.php';
try {
$r = new \ReflectionClass('Sensio\Bundle\DistributionBundle\SensioDistributionBundle');
$contents = file_get_contents(dirname($r->getFileName()).'/Resources/skeleton/app/SymfonyRequirements.php');
} catch (\ReflectionException $e) {
$contents = '';
}
$this->addRecommendation(
file_get_contents(__FILE__) === $contents,
'Requirements file should be up-to-date',
'Your requirements file is outdated. Run composer install and re-check your configuration.'
);
}
$this->addRecommendation(
version_compare($installedPhpVersion, '5.3.4', '>='),
'You should use at least PHP 5.3.4 due to PHP bug #52083 in earlier versions',
'Your project might malfunction randomly due to PHP bug #52083 ("Notice: Trying to get property of non-object"). Install PHP 5.3.4 or newer.'
);
$this->addRecommendation(
version_compare($installedPhpVersion, '5.3.8', '>='),
'When using annotations you should have at least PHP 5.3.8 due to PHP bug #55156',
'Install PHP 5.3.8 or newer if your project uses annotations.'
);
$this->addRecommendation(
version_compare($installedPhpVersion, '5.4.0', '!='),
'You should not use PHP 5.4.0 due to the PHP bug #61453',
'Your project might not work properly due to the PHP bug #61453 ("Cannot dump definitions which have method calls"). Install PHP 5.4.1 or newer.'
);
$this->addRecommendation(
version_compare($installedPhpVersion, '5.4.11', '>='),
'When using the logout handler from the Symfony Security Component, you should have at least PHP 5.4.11 due to PHP bug #63379 (as a workaround, you can also set invalidate_session to false in the security logout handler configuration)',
'Install PHP 5.4.11 or newer if your project uses the logout handler from the Symfony Security Component.'
);
$this->addRecommendation(
(version_compare($installedPhpVersion, '5.3.18', '>=') && version_compare($installedPhpVersion, '5.4.0', '<'))
||
version_compare($installedPhpVersion, '5.4.8', '>='),
'You should use PHP 5.3.18+ or PHP 5.4.8+ to always get nice error messages for fatal errors in the development environment due to PHP bug #61767/#60909',
'Install PHP 5.3.18+ or PHP 5.4.8+ if you want nice error messages for all fatal errors in the development environment.'
);
if (null !== $pcreVersion) {
$this->addRecommendation(
$pcreVersion >= 8.0,
sprintf('PCRE extension should be at least version 8.0 (%s installed)', $pcreVersion),
'<strong>PCRE 8.0+</strong> is preconfigured in PHP since 5.3.2 but you are using an outdated version of it. Symfony probably works anyway but it is recommended to upgrade your PCRE extension.'
);
}
$this->addRecommendation(
class_exists('DomDocument'),
'PHP-DOM and PHP-XML modules should be installed',
'Install and enable the <strong>PHP-DOM</strong> and the <strong>PHP-XML</strong> modules.'
);
$this->addRecommendation(
function_exists('mb_strlen'),
'mb_strlen() should be available',
'Install and enable the <strong>mbstring</strong> extension.'
);
$this->addRecommendation(
function_exists('iconv'),
'iconv() should be available',
'Install and enable the <strong>iconv</strong> extension.'
);
$this->addRecommendation(
function_exists('utf8_decode'),
'utf8_decode() should be available',
'Install and enable the <strong>XML</strong> extension.'
);
$this->addRecommendation(
function_exists('filter_var'),
'filter_var() should be available',
'Install and enable the <strong>filter</strong> extension.'
);
if (!defined('PHP_WINDOWS_VERSION_BUILD')) {
$this->addRecommendation(
function_exists('posix_isatty'),
'posix_isatty() should be available',
'Install and enable the <strong>php_posix</strong> extension (used to colorize the CLI output).'
);
}
$this->addRecommendation(
extension_loaded('intl'),
'intl extension should be available',
'Install and enable the <strong>intl</strong> extension (used for validators).'
);
if (extension_loaded('intl')) {
// in some WAMP server installations, new Collator() returns null
$this->addRecommendation(
null !== new Collator('fr_FR'),
'intl extension should be correctly configured',
'The intl extension does not behave properly. This problem is typical on PHP 5.3.X x64 WIN builds.'
);
// check for compatible ICU versions (only done when you have the intl extension)
if (defined('INTL_ICU_VERSION')) {
$version = INTL_ICU_VERSION;
} else {
$reflector = new ReflectionExtension('intl');
ob_start();
$reflector->info();
$output = strip_tags(ob_get_clean());
preg_match('/^ICU version +(?:=> )?(.*)$/m', $output, $matches);
$version = $matches[1];
}
$this->addRecommendation(
version_compare($version, '4.0', '>='),
'intl ICU version should be at least 4+',
'Upgrade your <strong>intl</strong> extension with a newer ICU version (4+).'
);
$this->addPhpIniRecommendation(
'intl.error_level',
create_function('$cfgValue', 'return (int) $cfgValue === 0;'),
true,
'intl.error_level should be 0 in php.ini',
'Set "<strong>intl.error_level</strong>" to "<strong>0</strong>" in php.ini<a href="#phpini">*</a> to inhibit the messages when an error occurs in ICU functions.'
);
}
$accelerator =
(extension_loaded('eaccelerator') && ini_get('eaccelerator.enable'))
||
(extension_loaded('apc') && ini_get('apc.enabled'))
||
(extension_loaded('Zend Optimizer+') && ini_get('zend_optimizerplus.enable'))
||
(extension_loaded('Zend OPcache') && ini_get('opcache.enable'))
||
(extension_loaded('xcache') && ini_get('xcache.cacher'))
||
(extension_loaded('wincache') && ini_get('wincache.ocenabled'))
;
$this->addRecommendation(
$accelerator,
'a PHP accelerator should be installed',
'Install and/or enable a <strong>PHP accelerator</strong> (highly recommended).'
);
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
$this->addRecommendation(
$this->getRealpathCacheSize() > 1000,
'realpath_cache_size should be above 1024 in php.ini',
'Set "<strong>realpath_cache_size</strong>" to e.g. "<strong>1024</strong>" in php.ini<a href="#phpini">*</a> to improve performance on windows.'
);
}
$this->addPhpIniRecommendation('short_open_tag', false);
$this->addPhpIniRecommendation('magic_quotes_gpc', false, true);
$this->addPhpIniRecommendation('register_globals', false, true);
$this->addPhpIniRecommendation('session.auto_start', false);
$this->addRecommendation(
class_exists('PDO'),
'PDO should be installed',
'Install <strong>PDO</strong> (mandatory for Doctrine).'
);
if (class_exists('PDO')) {
$drivers = PDO::getAvailableDrivers();
$this->addRecommendation(
count($drivers) > 0,
sprintf('PDO should have some drivers installed (currently available: %s)', count($drivers) ? implode(', ', $drivers) : 'none'),
'Install <strong>PDO drivers</strong> (mandatory for Doctrine).'
);
}
}
/**
* Loads realpath_cache_size from php.ini and converts it to int.
*
* (e.g. 16k is converted to 16384 int)
*
* @return int
*/
protected function getRealpathCacheSize()
{
$size = ini_get('realpath_cache_size');
$size = trim($size);
$unit = strtolower(substr($size, -1, 1));
switch ($unit) {
case 'g':
return $size * 1024 * 1024 * 1024;
case 'm':
return $size * 1024 * 1024;
case 'k':
return $size * 1024;
default:
return (int) $size;
}
}
}

13
app/autoload.php Normal file
View File

@ -0,0 +1,13 @@
<?php
use Doctrine\Common\Annotations\AnnotationRegistry;
use Composer\Autoload\ClassLoader;
/**
* @var ClassLoader $loader
*/
$loader = require __DIR__.'/../vendor/autoload.php';
AnnotationRegistry::registerLoader(array($loader, 'loadClass'));
return $loader;

142
app/check.php Normal file
View File

@ -0,0 +1,142 @@
<?php
require_once dirname(__FILE__).'/SymfonyRequirements.php';
$lineSize = 70;
$symfonyRequirements = new SymfonyRequirements();
$iniPath = $symfonyRequirements->getPhpIniConfigPath();
echo_title('Symfony2 Requirements Checker');
echo '> PHP is using the following php.ini file:'.PHP_EOL;
if ($iniPath) {
echo_style('green', ' '.$iniPath);
} else {
echo_style('warning', ' WARNING: No configuration file (php.ini) used by PHP!');
}
echo PHP_EOL.PHP_EOL;
echo '> Checking Symfony requirements:'.PHP_EOL.' ';
$messages = array();
foreach ($symfonyRequirements->getRequirements() as $req) {
/** @var $req Requirement */
if ($helpText = get_error_message($req, $lineSize)) {
echo_style('red', 'E');
$messages['error'][] = $helpText;
} else {
echo_style('green', '.');
}
}
$checkPassed = empty($messages['error']);
foreach ($symfonyRequirements->getRecommendations() as $req) {
if ($helpText = get_error_message($req, $lineSize)) {
echo_style('yellow', 'W');
$messages['warning'][] = $helpText;
} else {
echo_style('green', '.');
}
}
if ($checkPassed) {
echo_block('success', 'OK', 'Your system is ready to run Symfony2 projects');
} else {
echo_block('error', 'ERROR', 'Your system is not ready to run Symfony2 projects');
echo_title('Fix the following mandatory requirements', 'red');
foreach ($messages['error'] as $helpText) {
echo ' * '.$helpText.PHP_EOL;
}
}
if (!empty($messages['warning'])) {
echo_title('Optional recommendations to improve your setup', 'yellow');
foreach ($messages['warning'] as $helpText) {
echo ' * '.$helpText.PHP_EOL;
}
}
echo PHP_EOL;
echo_style('title', 'Note');
echo ' The command console could use a different php.ini file'.PHP_EOL;
echo_style('title', '~~~~');
echo ' than the one used with your web server. To be on the'.PHP_EOL;
echo ' safe side, please check the requirements from your web'.PHP_EOL;
echo ' server using the ';
echo_style('yellow', 'web/config.php');
echo ' script.'.PHP_EOL;
echo PHP_EOL;
exit($checkPassed ? 0 : 1);
function get_error_message(Requirement $requirement, $lineSize)
{
if ($requirement->isFulfilled()) {
return;
}
$errorMessage = wordwrap($requirement->getTestMessage(), $lineSize - 3, PHP_EOL.' ').PHP_EOL;
$errorMessage .= ' > '.wordwrap($requirement->getHelpText(), $lineSize - 5, PHP_EOL.' > ').PHP_EOL;
return $errorMessage;
}
function echo_title($title, $style = null)
{
$style = $style ?: 'title';
echo PHP_EOL;
echo_style($style, $title.PHP_EOL);
echo_style($style, str_repeat('~', strlen($title)).PHP_EOL);
echo PHP_EOL;
}
function echo_style($style, $message)
{
// ANSI color codes
$styles = array(
'reset' => "\033[0m",
'red' => "\033[31m",
'green' => "\033[32m",
'yellow' => "\033[33m",
'error' => "\033[37;41m",
'success' => "\033[37;42m",
'title' => "\033[34m",
);
$supports = has_color_support();
echo($supports ? $styles[$style] : '').$message.($supports ? $styles['reset'] : '');
}
function echo_block($style, $title, $message)
{
$message = ' '.trim($message).' ';
$width = strlen($message);
echo PHP_EOL.PHP_EOL;
echo_style($style, str_repeat(' ', $width).PHP_EOL);
echo_style($style, str_pad(' ['.$title.']', $width, ' ', STR_PAD_RIGHT).PHP_EOL);
echo_style($style, str_pad($message, $width, ' ', STR_PAD_RIGHT).PHP_EOL);
echo_style($style, str_repeat(' ', $width).PHP_EOL);
}
function has_color_support()
{
static $support;
if (null === $support) {
if (DIRECTORY_SEPARATOR == '\\') {
$support = false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI');
} else {
$support = function_exists('posix_isatty') && @posix_isatty(STDOUT);
}
}
return $support;
}

159
app/config/config.yml Normal file
View File

@ -0,0 +1,159 @@
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: services.yml }
framework:
#esi: ~
translator: { fallback: "%locale%" }
secret: "%secret%"
router:
resource: "%kernel.root_dir%/config/routing.yml"
strict_requirements: ~
form: ~
csrf_protection: ~
validation: { enable_annotations: true }
templating:
engines: ['twig']
#assets_version: SomeVersionScheme
default_locale: "%locale%"
trusted_hosts: ~
trusted_proxies: ~
session:
# handler_id set to null will use default session handler from php.ini
handler_id: ~
fragments: ~
http_method_override: true
# Twig Configuration
twig:
debug: "%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%
warning_message: %warning_message%
paypal_url: "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9UBA65LG3FX9Y&lc=gb"
flattr_url: "https://flattr.com/thing/1265480"
form:
resources:
- LexikFormFilterBundle:Form:form_div_layout.html.twig
# Assetic Configuration
assetic:
debug: "%kernel.debug%"
use_controller: false
bundles: [ ]
#java: /usr/bin/java
filters:
cssrewrite: ~
#closure:
# jar: "%kernel.root_dir%/Resources/java/compiler.jar"
#yui_css:
# jar: "%kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar"
# Doctrine Configuration
doctrine:
dbal:
driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
path: "%database_path%"
orm:
auto_generate_proxy_classes: "%kernel.debug%"
entity_managers:
default:
naming_strategy: wallabag_core.doctrine.prefixed_naming_strategy
auto_mapping: true
# Swiftmailer Configuration
swiftmailer:
transport: "%mailer_transport%"
host: "%mailer_host%"
username: "%mailer_user%"
password: "%mailer_password%"
spool: { type: memory }
fos_rest:
param_fetcher_listener: true
body_listener: true
format_listener: true
view:
view_response_listener: 'force'
formats:
xml: true
json : true
templating_formats:
html: true
force_redirects:
html: true
failed_validation: HTTP_BAD_REQUEST
default_engine: twig
routing_loader:
default_format: json
nelmio_api_doc: ~
nelmio_cors:
defaults:
allow_credentials: false
allow_origin: []
allow_headers: []
allow_methods: []
expose_headers: []
max_age: 0
hosts: []
#origin_regex: false
paths:
'^/api/':
allow_origin: ['*']
allow_headers: ['X-Custom-Auth']
allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
max_age: 3600
'^/':
#origin_regex: true
allow_origin: ['^http://localhost:[0-9]+']
allow_headers: ['X-Custom-Auth']
allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
max_age: 3600
hosts: ['^api\.']
liip_theme:
load_controllers: false
themes:
- baggy
- material
autodetect_theme: wallabag_core.helper.detect_active_theme
path_patterns:
# app_resource:
# - %%app_path%%/views/themes/%%current_theme%%/%%template%%
# - %%app_path%%/views/%%template%%
bundle_resource:
- %%bundle_path%%/Resources/views/themes/%%current_theme%%/%%template%%
# bundle_resource_dir:
# - %%dir%%/views/themes/%%current_theme%%/%%bundle_name%%/%%template%%
# - %%dir%%/views/%%bundle_name%%/%%override_path%%
fos_user:
db_driver: orm
firewall_name: main
user_class: Wallabag\CoreBundle\Entity\User

54
app/config/config_dev.yml Normal file
View File

@ -0,0 +1,54 @@
imports:
- { resource: config.yml }
framework:
router:
resource: "%kernel.root_dir%/config/routing_dev.yml"
strict_requirements: true
profiler: { only_exceptions: false }
web_profiler:
toolbar: true
intercept_redirects: false
monolog:
handlers:
main:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%.log"
level: debug
console:
type: console
bubble: false
verbosity_levels:
VERBOSITY_VERBOSE: INFO
VERBOSITY_VERY_VERBOSE: DEBUG
channels: ["!doctrine"]
console_very_verbose:
type: console
bubble: false
verbosity_levels:
VERBOSITY_VERBOSE: NOTICE
VERBOSITY_VERY_VERBOSE: NOTICE
VERBOSITY_DEBUG: DEBUG
channels: ["doctrine"]
# uncomment to get logging in your browser
# you may have to allow bigger header sizes in your Web server configuration
#firephp:
# type: firephp
# level: info
#chromephp:
# type: chromephp
# level: info
assetic:
use_controller: true
swiftmailer:
# see http://mailcatcher.me/
transport: smtp
host: 'localhost'
port: 1025
username: null
password: null

View File

@ -0,0 +1,30 @@
imports:
- { resource: config.yml }
#framework:
# validation:
# cache: apc
#doctrine:
# orm:
# metadata_cache_driver: apc
# result_cache_driver: apc
# query_cache_driver: apc
monolog:
handlers:
main:
type: fingers_crossed
action_level: error
handler: nested
wsse:
type: stream
path: %kernel.logs_dir%/%kernel.environment%.wsse.log
level: error
channels: [wsse]
nested:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%.log"
level: debug
console:
type: console

View File

@ -0,0 +1,31 @@
imports:
- { resource: config_dev.yml }
framework:
test: ~
session:
storage_id: session.storage.mock_file
profiler:
collect: false
web_profiler:
toolbar: false
intercept_redirects: false
swiftmailer:
# to be able to read emails sent
spool:
type: file
doctrine:
dbal:
driver: pdo_sqlite
path: %kernel.root_dir%/../data/db/wallabag_test.sqlite
host: localhost
orm:
metadata_cache_driver:
type: service
id: filesystem_cache
query_cache_driver:
type: service
id: filesystem_cache

View File

@ -0,0 +1,50 @@
# 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_
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
# 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
# default user config
items_on_page: 12
theme: material
language: en_US
from_email: no-reply@wallabag.org
rss_limit: 50

32
app/config/routing.yml Normal file
View File

@ -0,0 +1,32 @@
wallabag_api:
resource: "@WallabagApiBundle/Resources/config/routing.yml"
prefix: /
app:
resource: @WallabagCoreBundle/Controller/
type: annotation
doc-api:
resource: "@NelmioApiDocBundle/Resources/config/routing.yml"
prefix: /api/doc
login:
pattern: /login
defaults: { _controller: WallabagCoreBundle:Security:login }
login_check:
pattern: /login_check
logout:
path: /logout
rest :
type : rest
resource : "routing_rest.yml"
prefix : /api
homepage:
pattern: "/{page}"
defaults: { _controller: WallabagCoreBundle:Entry:showUnread, page : 1 }
requirements:
page: \d+

View File

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

View File

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

53
app/config/security.yml Normal file
View File

@ -0,0 +1,53 @@
security:
encoders:
Wallabag\CoreBundle\Entity\User:
algorithm: sha1
encode_as_base64: false
iterations: 1
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH ]
providers:
administrators:
entity: { class: WallabagCoreBundle:User, property: username }
fos_userbundle:
id: fos_user.user_provider.username
# the main part of the security, where you can set up firewalls
# for specific sections of your app
firewalls:
wsse_secured:
pattern: /api/.*
wsse: true
stateless: true
anonymous: true
login_firewall:
pattern: ^/login$
anonymous: ~
secured_area:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: security.csrf.token_manager
anonymous: true
remember_me:
key: "%secret%"
lifetime: 31536000
path: /
domain: ~
logout:
path: /logout
target: /
access_control:
- { path: ^/api/salt, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api/doc, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/forgot-password, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: /(unread|starred|archive).xml$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: ROLE_USER }

19
app/config/services.yml Normal file
View File

@ -0,0 +1,19 @@
# Learn more about services, parameters and containers at
# http://symfony.com/doc/current/book/service_container.html
parameters:
security.authentication.provider.dao.class: Wallabag\CoreBundle\Security\Authentication\Provider\WallabagAuthenticationProvider
security.encoder.digest.class: Wallabag\CoreBundle\Security\Authentication\Encoder\WallabagPasswordEncoder
security.validator.user_password.class: Wallabag\CoreBundle\Security\Validator\WallabagUserPasswordValidator
lexik_form_filter.get_filter.doctrine_orm.class: Wallabag\CoreBundle\Event\Subscriber\CustomDoctrineORMSubscriber
services:
# used for tests
filesystem_cache:
class: Doctrine\Common\Cache\FilesystemCache
arguments:
- %kernel.cache_dir%/doctrine/metadata
twig.extension.text:
class: Twig_Extensions_Extension_Text
tags:
- { name: twig.extension }

27
app/console Executable file
View File

@ -0,0 +1,27 @@
#!/usr/bin/env php
<?php
// if you don't want to setup permissions the proper way, just uncomment the following PHP line
// read http://symfony.com/doc/current/book/installation.html#configuration-and-setup for more information
//umask(0000);
set_time_limit(0);
require_once __DIR__.'/bootstrap.php.cache';
require_once __DIR__.'/AppKernel.php';
use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Component\Console\Input\ArgvInput;
use Symfony\Component\Debug\Debug;
$input = new ArgvInput();
$env = $input->getParameterOption(array('--env', '-e'), getenv('SYMFONY_ENV') ?: 'dev');
$debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption(array('--no-debug', '')) && $env !== 'prod';
if ($debug) {
Debug::enable();
}
$kernel = new AppKernel($env, $debug);
$application = new Application($kernel);
$application->run($input);

0
app/logs/.gitkeep Normal file
View File

1
bin/phpunit Symbolic link
View File

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

BIN
bin/poche.sqlite Normal file

Binary file not shown.

50
build.xml Normal file
View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="wallabag" default="build">
<target name="build" depends="prepare"/>
<target name="clean" description="Cleanup build artifacts">
<delete dir="${basedir}/app/cache"/>
</target>
<target name="prepare" depends="clean" description="Prepare for build">
<exec executable="composer">
<arg value="install"/>
<arg value="--no-interaction"/>
<arg value="--no-progress"/>
</exec>
<exec executable="php">
<arg value="${basedir}/app/console"/>
<arg value="doctrine:database:drop"/>
<arg value="--force"/>
<arg value="--env=test"/>
</exec>
<exec executable="php">
<arg value="${basedir}/app/console"/>
<arg value="doctrine:database:create"/>
<arg value="--env=test"/>
</exec>
<exec executable="php">
<arg value="${basedir}/app/console"/>
<arg value="doctrine:schema:create"/>
<arg value="--env=test"/>
</exec>
<exec executable="php">
<arg value="${basedir}/app/console"/>
<arg value="cache:clear"/>
<arg value="--env=test"/>
</exec>
<exec executable="php">
<arg value="${basedir}/app/console"/>
<arg value="doctrine:fixtures:load"/>
<arg value="--no-interaction"/>
<arg value="--env=test"/>
</exec>
</target>
<target name="phpunit" description="Run unit tests with PHPUnit + HTML Coverage">
<exec executable="phpunit" failonerror="true">
<arg value="--coverage-html"/>
<arg value="build/coverage"/>
</exec>
</target>
</project>

1
cache/.gitignore vendored
View File

@ -1 +0,0 @@
*

95
composer.json Normal file
View File

@ -0,0 +1,95 @@
{
"name": "wallabag/wallabag",
"type": "project",
"description": "open source self hostable read-it-later web application",
"keywords": ["read-it-later","read it later"],
"homepage": "https://github.com/wallabag/wallabag",
"license": "MIT",
"authors": [
{
"name": "Nicolas Lœuillet",
"email": "nicolas@loeuillet.org",
"homepage": "http://www.cdetc.fr",
"role": "Developer"
},
{
"name": "Thomas Citharel",
"homepage": "http://tcit.fr",
"role": "Developer"
},
{
"name": "Jérémy Benoist",
"homepage": "http://www.j0k3r.net",
"role": "Developer"
}
],
"support": {
"email": "hello@wallabag.org",
"issues": "https://github.com/wallabag/wallabag/issues"
},
"require": {
"php": ">=5.3.3",
"symfony/symfony": "~2.7.0",
"doctrine/orm": "~2.3",
"doctrine/doctrine-bundle": "~1.2",
"twig/extensions": "~1.0",
"symfony/assetic-bundle": "~2.3",
"symfony/swiftmailer-bundle": "~2.3",
"symfony/monolog-bundle": "~2.4",
"sensio/distribution-bundle": "~3.0.12",
"sensio/framework-extra-bundle": "~3.0",
"incenteev/composer-parameter-handler": "~2.0",
"nelmio/cors-bundle": "~1.4.0",
"friendsofsymfony/rest-bundle": "~1.4",
"jms/serializer-bundle": "~0.13",
"nelmio/api-doc-bundle": "~2.7",
"ezyang/htmlpurifier": "~4.6",
"mgargano/simplehtmldom": "~1.5",
"tecnick.com/tcpdf": "~6.2",
"simplepie/simplepie": "~1.3.1",
"willdurand/hateoas-bundle": "~0.5.0",
"htmlawed/htmlawed": "~1.1.19",
"liip/theme-bundle": "~1.1.3",
"pagerfanta/pagerfanta": "~1.0.3",
"lexik/form-filter-bundle": "~4.0",
"j0k3r/graby": "~1.0",
"friendsofsymfony/user-bundle": "dev-master"
},
"require-dev": {
"doctrine/doctrine-fixtures-bundle": "~2.2.0",
"sensio/generator-bundle": "~2.5",
"phpunit/phpunit": "~4.4"
},
"scripts": {
"post-install-cmd": [
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
],
"post-update-cmd": [
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
]
},
"extra": {
"symfony-app-dir": "app",
"symfony-web-dir": "web",
"symfony-assets-install": "relative",
"incenteev-parameters": {
"file": "app/config/parameters.yml"
}
},
"autoload": {
"psr-0": { "": "src/" }
},
"config": {
"bin-dir": "bin"
},
"minimum-stability": "dev",
"prefer-stable": true
}

4455
composer.lock generated Normal file

File diff suppressed because it is too large Load Diff

66
config/deploy.rb Normal file
View File

@ -0,0 +1,66 @@
# config valid only for current version of Capistrano
lock '3.4.0'
set :application, 'wallabag'
set :repo_url, 'git@github.com:wallabag/wallabag.git'
set :ssh_user, 'ssh_user'
server 'server_ip', user: fetch(:ssh_user), roles: %w{web app db}
set :scm, :git
set :format, :pretty
set :log_level, :info
# set :log_level, :debug
set :composer_install_flags, '--no-dev --prefer-dist --no-interaction --optimize-autoloader'
set :linked_files, %w{app/config/parameters.yml}
set :linked_dirs, %w{app/logs web/uploads}
set :keep_releases, 3
after 'deploy:finishing', 'deploy:cleanup'
# Default branch is :master
# ask :branch, `git rev-parse --abbrev-ref HEAD`.chomp
# Default deploy_to directory is /var/www/my_app_name
# set :deploy_to, '/var/www/my_app_name'
# Default value for :scm is :git
# set :scm, :git
# Default value for :format is :pretty
# set :format, :pretty
# Default value for :log_level is :debug
# set :log_level, :debug
# Default value for :pty is false
# set :pty, true
# Default value for :linked_files is []
# set :linked_files, fetch(:linked_files, []).push('config/database.yml', 'config/secrets.yml')
# Default value for linked_dirs is []
# set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'public/system')
# Default value for default_env is {}
# set :default_env, { path: "/opt/ruby/bin:$PATH" }
# Default value for keep_releases is 5
# set :keep_releases, 5
namespace :deploy do
after :restart, :clear_cache do
on roles(:web), in: :groups, limit: 3, wait: 10 do
# Here we can do anything such as:
# within release_path do
# execute :rake, 'cache:clear'
# end
end
end
end

View File

@ -0,0 +1,61 @@
# server-based syntax
# ======================
# Defines a single server with a list of roles and multiple properties.
# You can define all roles on a single server, or split them:
# server 'example.com', user: 'deploy', roles: %w{app db web}, my_property: :my_value
# server 'example.com', user: 'deploy', roles: %w{app web}, other_property: :other_value
# server 'db.example.com', user: 'deploy', roles: %w{db}
# role-based syntax
# ==================
# Defines a role with one or multiple servers. The primary server in each
# group is considered to be the first unless any hosts have the primary
# property set. Specify the username and a domain or IP for the server.
# Don't use `:all`, it's a meta role.
# role :app, %w{deploy@example.com}, my_property: :my_value
# role :web, %w{user1@primary.com user2@additional.com}, other_property: :other_value
# role :db, %w{deploy@example.com}
# Configuration
# =============
# You can set any configuration variable like in config/deploy.rb
# These variables are then only loaded and set in this stage.
# For available Capistrano configuration variables see the documentation page.
# http://capistranorb.com/documentation/getting-started/configuration/
# Feel free to add new variables to customise your setup.
# Custom SSH Options
# ==================
# You may pass any option but keep in mind that net/ssh understands a
# limited set of options, consult the Net::SSH documentation.
# http://net-ssh.github.io/net-ssh/classes/Net/SSH.html#method-c-start
#
# Global options
# --------------
# set :ssh_options, {
# keys: %w(/home/rlisowski/.ssh/id_rsa),
# forward_agent: false,
# auth_methods: %w(password)
# }
#
# The server-based syntax can be used to override options:
# ------------------------------------
# server 'example.com',
# user: 'user_name',
# roles: %w{web app},
# ssh_options: {
# user: 'user_name', # overrides user setting above
# keys: %w(/home/user_name/.ssh/id_rsa),
# forward_agent: false,
# auth_methods: %w(publickey password)
# # password: 'please use keys'
# }

64
config/deploy/staging.rb Normal file
View File

@ -0,0 +1,64 @@
# server-based syntax
# ======================
# Defines a single server with a list of roles and multiple properties.
# You can define all roles on a single server, or split them:
set :branch, 'v2'
set :deploy_to, '/var/www/'
# server 'example.com', user: 'deploy', roles: %w{app db web}, my_property: :my_value
# server 'example.com', user: 'deploy', roles: %w{app web}, other_property: :other_value
# server 'db.example.com', user: 'deploy', roles: %w{db}
# role-based syntax
# ==================
# Defines a role with one or multiple servers. The primary server in each
# group is considered to be the first unless any hosts have the primary
# property set. Specify the username and a domain or IP for the server.
# Don't use `:all`, it's a meta role.
# role :app, %w{deploy@example.com}, my_property: :my_value
# role :web, %w{user1@primary.com user2@additional.com}, other_property: :other_value
# role :db, %w{deploy@example.com}
# Configuration
# =============
# You can set any configuration variable like in config/deploy.rb
# These variables are then only loaded and set in this stage.
# For available Capistrano configuration variables see the documentation page.
# http://capistranorb.com/documentation/getting-started/configuration/
# Feel free to add new variables to customise your setup.
# Custom SSH Options
# ==================
# You may pass any option but keep in mind that net/ssh understands a
# limited set of options, consult the Net::SSH documentation.
# http://net-ssh.github.io/net-ssh/classes/Net/SSH.html#method-c-start
#
# Global options
# --------------
# set :ssh_options, {
# keys: %w(/home/rlisowski/.ssh/id_rsa),
# forward_agent: false,
# auth_methods: %w(password)
# }
#
# The server-based syntax can be used to override options:
# ------------------------------------
# server 'example.com',
# user: 'user_name',
# roles: %w{web app},
# ssh_options: {
# user: 'user_name', # overrides user setting above
# keys: %w(/home/user_name/.ssh/id_rsa),
# forward_agent: false,
# auth_methods: %w(publickey password)
# # password: 'please use keys'
# }

File diff suppressed because one or more lines are too long

View File

@ -1,90 +0,0 @@
/*** GENERAL ***/
body {
color: #fff;
background-color: #0d0d0d;
}
a, a:hover, a:visited {
color: #fff;
}
#main ul#links li a.current {
background-color: #000;
color: #fff;
}
#links a:hover, .backhome a:hover{
background-color: #fff;
color: #000;
}
input[type=submit].delete {
background : url('../img/dark/remove.png') no-repeat center center;
color : transparent;
}
#main .entrie {
color: #fff;
background-color: #000;
border: 1px solid #fff;
}
#main .entrie h2 a:hover {
color: #29B1E3;
}
a.fav span {
background: url('../img/dark/star-on.png') no-repeat;
}
a.fav span:hover {
background: url('../img/dark/star-off.png') no-repeat;
}
a.fav-off span {
background: url('../img/dark/star-off.png') no-repeat;
}
a.fav-off span:hover {
background: url('../img/dark/star-on.png') no-repeat;
}
a.archive span {
background: url('../img/dark/checkmark-on.png') no-repeat;
}
a.archive span:hover {
background: url('../img/dark/checkmark-off.png') no-repeat;
}
a.archive-off span {
background: url('../img/dark/checkmark-off.png') no-repeat;
}
a.archive-off span:hover {
background: url('../img/dark/checkmark-on.png') no-repeat;
}
/*** ***/
/*** ARTICLE PAGE ***/
body.article {
color: #fff;
background-color: #0d0d0d;
}
#article header {
border-bottom: 1px solid #222222;
}
#article article {
border-bottom: 1px solid #222222;
}
.vieworiginal a {
color: #888888;
}
.entrie {
background-color: #fff;
}

View File

@ -1,100 +0,0 @@
/*** GENERAL ***/
body {
color: #222222;
background-color: #F1F1F1;
}
a, a:hover, a:visited {
color: #000;
}
.bouton {
background-color: #000;
color: #fff;
border: none;
}
.bouton:hover {
background-color: #222222;
color: #F1F1F1;
}
#main ul#links li a.current {
background-color: #000;
color: #fff;
}
#links a:hover, .backhome a:hover{
background-color: #040707;
color: #F1F1F1;
}
input[type=submit].delete {
background : url('../img/light/remove.png') no-repeat center center;
color : transparent;
}
#main .entrie {
color: #2e2e2e;
background-color: #ffffff;
border: 1px solid #000;
}
#main .entrie h2 a:hover {
color: #F5BE00;
}
a.fav span {
background: url('../img/light/star-on.png') no-repeat;
}
a.fav span:hover {
background: url('../img/light/star-off.png') no-repeat;
}
a.fav-off span {
background: url('../img/light/star-off.png') no-repeat;
}
a.fav-off span:hover {
background: url('../img/light/star-on.png') no-repeat;
}
a.archive span {
background: url('../img/light/checkmark-on.png') no-repeat;
}
a.archive span:hover {
background: url('../img/light/checkmark-off.png') no-repeat;
}
a.archive-off span {
background: url('../img/light/checkmark-off.png') no-repeat;
}
a.archive-off span:hover {
background: url('../img/light/checkmark-on.png') no-repeat;
}
/*** ***/
/*** ARTICLE PAGE ***/
body.article {
color: #222222;
background-color: #F1F1F1;
}
#article header {
border-bottom: 1px solid #222222;
}
#article article {
border-bottom: 1px solid #222222;
}
.vieworiginal a {
color: #888888;
}
.entrie {
background-color: #fff;
}

View File

@ -1,215 +0,0 @@
/*** GENERAL ***/
body {
font: 20px/1.3em Palatino,Georgia,serif;
margin: 10px;
}
header {
text-align: center;
}
.bouton {
border-radius: 2px;
}
#main ul#links {
padding: 0;
list-style-type: none;
text-align: center;
}
#main ul#links li {
display: inline;
}
#main ul#links li a.current {
-webkit-border-radius: 2px;
border-radius: 2px;
}
#main ul#sort {
padding: 0;
list-style-type: none;
text-align: center;
}
#main ul#sort li {
display: inline;
font-size: 0.9em;
}
#main ul#sort img:hover {
cursor: pointer;
}
#main, #article {
margin: 0 auto;
}
#links a, .backhome a{
text-decoration: none;
padding: 5px 10px;
}
#links a:hover, .backhome a:hover{
-webkit-border-radius: 2px;
border-radius: 2px;
}
footer {
text-align: right;
}
/*** ***/
/*** LINKS DISPLAY ***/
#main a.tool {
text-decoration: none;
cursor: pointer;
}
input[type=submit].delete {
width : 16px;
height :16px;
border : none;
cursor: pointer;
font-size : 0;
}
#main #content {
margin-top: 20px;
}
#main .entrie {
padding: 15px;
min-height: 8em;
border: 1px solid;
}
#main .entrie h2 a {
text-decoration: none;
}
.tools {
text-align: right;
}
.tools ul {
padding: 0; margin: 0;
list-style-type: none;
}
.tools ul li {
line-height: 20px;
}
.tools a.tool {
cursor: pointer;
}
#article .tools {
position: relative;
display: inline;
top: 0px;
right: 0px;
width: 100%;
text-align: left;
}
#article .tools ul li{
display: inline;
}
#main .entrie .tools a.tool span, #article .tools a.tool span {
display: inline-block;
width: 16px;
height: 16px;
}
/*** ***/
/*** ARTICLE PAGE ***/
body.article {
font: 20px/1.3em Palatino,Georgia,serif;
}
#article header {
text-align: left;
}
#article header a {
text-decoration: none;
}
.vieworiginal a {
text-decoration: none;
}
.backhome {
display: inline;
}
/*** ***/
#main
{
max-width: 60em; /* 960 px */
margin: 0 auto;
}
#content
{
width: 103.125%; /* 990px */
overflow: hidden;
margin-left: -1.562%; /* 15px */
margin-bottom: -1.875em; /* 30px */
}
.entrie
{
width: 30.303%; /* 300px */
background-color: #fff;
float: left;
margin: 0 1.515% 1.875em; /* 15px 30px */
}
@media only screen and ( max-width: 40em ) /* 640px */
{
.entrie
{
width: 46.876%; /* 305px */
margin-bottom: 0.938em; /* 15px */
}
}
@media only screen and ( max-width: 20em ) /* 320px */
{
#content
{
width: 100%;
margin-left: 0;
}
.entrie
{
width: 100%;
margin-left: 0;
margin-right: 0;
}
}
/*** ***/
/*** MESSAGES ***/
.messages { width: 100%; -moz-border-radius: 4px; border-radius: 4px; display: block; padding: 10px 0; margin: 10px auto 10px; clear: both; }
.messages a.closeMessage { margin: -14px -8px 0 0; display:none; width: 16px; height: 16px; float: right; background: url(../img/messages/close.png) no-repeat; }
/*.messages:hover a.closeMessage { visibility:visible; }*/
.messages p { margin: 3px 0 3px 10px !important; padding: 0 10px 0 23px !important; font-size: 14px; line-height: 16px; }
.messages.error { border: 1px solid #C42608; color: #c00 !important; background: #FFF0EF; }
.messages.error p { background: url(../img/messages/cross.png ) no-repeat 0px 50%; color:#c00 !important; }
.messages.success {background: #E0FBCC; border: 1px solid #6DC70C; }
.messages.success p { background: url(../img/messages/tick.png) no-repeat 0px 50%; color: #2B6301 !important; }
.messages.warning { background: #FFFCD3; border: 1px solid #EBCD41; color: #000; }
.messages.warning p { background: url(../img/messages/warning.png ) no-repeat 0px 50%; color: #5F4E01; }
.messages.information, .messages.info { background: #DFEBFB; border: 1px solid #82AEE7; }
.messages.information p, .messages.info p { background: url(../img/messages/help.png ) no-repeat 0px 50%; color: #064393; }
.messages.information a { text-decoration: underline; }

0
data/assets/.gitignore vendored Normal file
View File

0
data/db/.gitignore vendored Normal file
View File

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 221 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 786 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 265 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 330 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 277 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 225 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 346 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 277 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 235 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 252 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 911 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 662 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 655 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 786 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 537 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 666 B

View File

@ -1,50 +0,0 @@
<?php
/**
* poche, a read it later open source system
*
* @category poche
* @author Nicolas Lœuillet <support@inthepoche.com>
* @copyright 2013
* @license http://www.wtfpl.net/ see COPYING file
*/
set_time_limit(0);
include dirname(__FILE__).'/inc/config.php';
include dirname(__FILE__).'/inc/simple_html_dom.php';
if (!isset($_GET['start'])) {
echo 'Please execute the import script locally, it can take a very long time. <br /><a href="import.php?start">Bye bye Pocket, let\'s go !</a>';
}
else {
$html = new simple_html_dom();
$html->load_file('ril_export.html');
$read = 0;
$errors = array();
foreach($html->find('ul') as $ul)
{
foreach($ul->find('li') as $li)
{
$a = $li->find('a');
$url = $a[0]->href;
action_to_do('add', $url);
if ($read == '1') {
$last_id = $db->getHandle()->lastInsertId();
$sql_update = "UPDATE entries SET is_read=~is_read WHERE id=?";
$params_update = array($last_id);
$query_update = $db->getHandle()->prepare($sql_update);
$query_update->execute($params_update);
}
}
# Pocket génère un fichier HTML avec deux <ul>
# Le premier concerne les éléments non lus
# Le second concerne les éléments archivés
$read = 1;
}
echo 'Import from Pocket completed. <a href="index.php">Welcome to #poche !</a>';
logm('import from pocket completed');
}

View File

@ -1,262 +0,0 @@
<?php
/**
* @author "Sebastián Grignoli" <grignoli@framework2.com.ar>
* @package Encoding
* @version 1.1
* @link http://www.framework2.com.ar/dzone/forceUTF8-es/
* @example http://www.framework2.com.ar/dzone/forceUTF8-es/
*/
class Encoding {
protected static $win1252ToUtf8 = array(
128 => "\xe2\x82\xac",
130 => "\xe2\x80\x9a",
131 => "\xc6\x92",
132 => "\xe2\x80\x9e",
133 => "\xe2\x80\xa6",
134 => "\xe2\x80\xa0",
135 => "\xe2\x80\xa1",
136 => "\xcb\x86",
137 => "\xe2\x80\xb0",
138 => "\xc5\xa0",
139 => "\xe2\x80\xb9",
140 => "\xc5\x92",
142 => "\xc5\xbd",
145 => "\xe2\x80\x98",
146 => "\xe2\x80\x99",
147 => "\xe2\x80\x9c",
148 => "\xe2\x80\x9d",
149 => "\xe2\x80\xa2",
150 => "\xe2\x80\x93",
151 => "\xe2\x80\x94",
152 => "\xcb\x9c",
153 => "\xe2\x84\xa2",
154 => "\xc5\xa1",
155 => "\xe2\x80\xba",
156 => "\xc5\x93",
158 => "\xc5\xbe",
159 => "\xc5\xb8"
);
protected static $brokenUtf8ToUtf8 = array(
"\xc2\x80" => "\xe2\x82\xac",
"\xc2\x82" => "\xe2\x80\x9a",
"\xc2\x83" => "\xc6\x92",
"\xc2\x84" => "\xe2\x80\x9e",
"\xc2\x85" => "\xe2\x80\xa6",
"\xc2\x86" => "\xe2\x80\xa0",
"\xc2\x87" => "\xe2\x80\xa1",
"\xc2\x88" => "\xcb\x86",
"\xc2\x89" => "\xe2\x80\xb0",
"\xc2\x8a" => "\xc5\xa0",
"\xc2\x8b" => "\xe2\x80\xb9",
"\xc2\x8c" => "\xc5\x92",
"\xc2\x8e" => "\xc5\xbd",
"\xc2\x91" => "\xe2\x80\x98",
"\xc2\x92" => "\xe2\x80\x99",
"\xc2\x93" => "\xe2\x80\x9c",
"\xc2\x94" => "\xe2\x80\x9d",
"\xc2\x95" => "\xe2\x80\xa2",
"\xc2\x96" => "\xe2\x80\x93",
"\xc2\x97" => "\xe2\x80\x94",
"\xc2\x98" => "\xcb\x9c",
"\xc2\x99" => "\xe2\x84\xa2",
"\xc2\x9a" => "\xc5\xa1",
"\xc2\x9b" => "\xe2\x80\xba",
"\xc2\x9c" => "\xc5\x93",
"\xc2\x9e" => "\xc5\xbe",
"\xc2\x9f" => "\xc5\xb8"
);
protected static $utf8ToWin1252 = array(
"\xe2\x82\xac" => "\x80",
"\xe2\x80\x9a" => "\x82",
"\xc6\x92" => "\x83",
"\xe2\x80\x9e" => "\x84",
"\xe2\x80\xa6" => "\x85",
"\xe2\x80\xa0" => "\x86",
"\xe2\x80\xa1" => "\x87",
"\xcb\x86" => "\x88",
"\xe2\x80\xb0" => "\x89",
"\xc5\xa0" => "\x8a",
"\xe2\x80\xb9" => "\x8b",
"\xc5\x92" => "\x8c",
"\xc5\xbd" => "\x8e",
"\xe2\x80\x98" => "\x91",
"\xe2\x80\x99" => "\x92",
"\xe2\x80\x9c" => "\x93",
"\xe2\x80\x9d" => "\x94",
"\xe2\x80\xa2" => "\x95",
"\xe2\x80\x93" => "\x96",
"\xe2\x80\x94" => "\x97",
"\xcb\x9c" => "\x98",
"\xe2\x84\xa2" => "\x99",
"\xc5\xa1" => "\x9a",
"\xe2\x80\xba" => "\x9b",
"\xc5\x93" => "\x9c",
"\xc5\xbe" => "\x9e",
"\xc5\xb8" => "\x9f"
);
static function toUTF8($text){
/**
* Function Encoding::toUTF8
*
* This function leaves UTF8 characters alone, while converting almost all non-UTF8 to UTF8.
*
* It assumes that the encoding of the original string is either Windows-1252 or ISO 8859-1.
*
* It may fail to convert characters to UTF-8 if they fall into one of these scenarios:
*
* 1) when any of these characters: ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞß
* are followed by any of these: ("group B")
* ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶•¸¹º»¼½¾¿
* For example: %ABREPRESENT%C9%BB. «REPRESENTÉ»
* The "«" (%AB) character will be converted, but the "É" followed by "»" (%C9%BB)
* is also a valid unicode character, and will be left unchanged.
*
* 2) when any of these: àáâãäåæçèéêëìíîï are followed by TWO chars from group B,
* 3) when any of these: ðñòó are followed by THREE chars from group B.
*
* @name toUTF8
* @param string $text Any string.
* @return string The same string, UTF8 encoded
*
*/
if(is_array($text))
{
foreach($text as $k => $v)
{
$text[$k] = self::toUTF8($v);
}
return $text;
} elseif(is_string($text)) {
$max = strlen($text);
$buf = "";
for($i = 0; $i < $max; $i++){
$c1 = $text{$i};
if($c1>="\xc0"){ //Should be converted to UTF8, if it's not UTF8 already
$c2 = $i+1 >= $max? "\x00" : $text{$i+1};
$c3 = $i+2 >= $max? "\x00" : $text{$i+2};
$c4 = $i+3 >= $max? "\x00" : $text{$i+3};
if($c1 >= "\xc0" & $c1 <= "\xdf"){ //looks like 2 bytes UTF8
if($c2 >= "\x80" && $c2 <= "\xbf"){ //yeah, almost sure it's UTF8 already
$buf .= $c1 . $c2;
$i++;
} else { //not valid UTF8. Convert it.
$cc1 = (chr(ord($c1) / 64) | "\xc0");
$cc2 = ($c1 & "\x3f") | "\x80";
$buf .= $cc1 . $cc2;
}
} elseif($c1 >= "\xe0" & $c1 <= "\xef"){ //looks like 3 bytes UTF8
if($c2 >= "\x80" && $c2 <= "\xbf" && $c3 >= "\x80" && $c3 <= "\xbf"){ //yeah, almost sure it's UTF8 already
$buf .= $c1 . $c2 . $c3;
$i = $i + 2;
} else { //not valid UTF8. Convert it.
$cc1 = (chr(ord($c1) / 64) | "\xc0");
$cc2 = ($c1 & "\x3f") | "\x80";
$buf .= $cc1 . $cc2;
}
} elseif($c1 >= "\xf0" & $c1 <= "\xf7"){ //looks like 4 bytes UTF8
if($c2 >= "\x80" && $c2 <= "\xbf" && $c3 >= "\x80" && $c3 <= "\xbf" && $c4 >= "\x80" && $c4 <= "\xbf"){ //yeah, almost sure it's UTF8 already
$buf .= $c1 . $c2 . $c3;
$i = $i + 2;
} else { //not valid UTF8. Convert it.
$cc1 = (chr(ord($c1) / 64) | "\xc0");
$cc2 = ($c1 & "\x3f") | "\x80";
$buf .= $cc1 . $cc2;
}
} else { //doesn't look like UTF8, but should be converted
$cc1 = (chr(ord($c1) / 64) | "\xc0");
$cc2 = (($c1 & "\x3f") | "\x80");
$buf .= $cc1 . $cc2;
}
} elseif(($c1 & "\xc0") == "\x80"){ // needs conversion
if(isset(self::$win1252ToUtf8[ord($c1)])) { //found in Windows-1252 special cases
$buf .= self::$win1252ToUtf8[ord($c1)];
} else {
$cc1 = (chr(ord($c1) / 64) | "\xc0");
$cc2 = (($c1 & "\x3f") | "\x80");
$buf .= $cc1 . $cc2;
}
} else { // it doesn't need convesion
$buf .= $c1;
}
}
return $buf;
} else {
return $text;
}
}
static function toWin1252($text) {
if(is_array($text)) {
foreach($text as $k => $v) {
$text[$k] = self::toWin1252($v);
}
return $text;
} elseif(is_string($text)) {
return utf8_decode(str_replace(array_keys(self::$utf8ToWin1252), array_values(self::$utf8ToWin1252), self::toUTF8($text)));
} else {
return $text;
}
}
static function toISO8859($text) {
return self::toWin1252($text);
}
static function toLatin1($text) {
return self::toWin1252($text);
}
static function fixUTF8($text){
if(is_array($text)) {
foreach($text as $k => $v) {
$text[$k] = self::fixUTF8($v);
}
return $text;
}
$last = "";
while($last <> $text){
$last = $text;
$text = self::toUTF8(utf8_decode(str_replace(array_keys(self::$utf8ToWin1252), array_values(self::$utf8ToWin1252), $text)));
}
$text = self::toUTF8(utf8_decode(str_replace(array_keys(self::$utf8ToWin1252), array_values(self::$utf8ToWin1252), $text)));
return $text;
}
static function UTF8FixWin1252Chars($text){
// If you received an UTF-8 string that was converted from Windows-1252 as it was ISO8859-1
// (ignoring Windows-1252 chars from 80 to 9F) use this function to fix it.
// See: http://en.wikipedia.org/wiki/Windows-1252
return str_replace(array_keys(self::$brokenUtf8ToUtf8), array_values(self::$brokenUtf8ToUtf8), $text);
}
static function removeBOM($str=""){
if(substr($str, 0,3) == pack("CCC",0xef,0xbb,0xbf)) {
$str=substr($str, 3);
}
return $str;
}
}

View File

@ -1,110 +0,0 @@
<?php
/**
* JavaScript-like HTML DOM Element
*
* This class extends PHP's DOMElement to allow
* users to get and set the innerHTML property of
* HTML elements in the same way it's done in
* JavaScript.
*
* Example usage:
* @code
* require_once 'JSLikeHTMLElement.php';
* header('Content-Type: text/plain');
* $doc = new DOMDocument();
* $doc->registerNodeClass('DOMElement', 'JSLikeHTMLElement');
* $doc->loadHTML('<div><p>Para 1</p><p>Para 2</p></div>');
* $elem = $doc->getElementsByTagName('div')->item(0);
*
* // print innerHTML
* echo $elem->innerHTML; // prints '<p>Para 1</p><p>Para 2</p>'
* echo "\n\n";
*
* // set innerHTML
* $elem->innerHTML = '<a href="http://fivefilters.org">FiveFilters.org</a>';
* echo $elem->innerHTML; // prints '<a href="http://fivefilters.org">FiveFilters.org</a>'
* echo "\n\n";
*
* // print document (with our changes)
* echo $doc->saveXML();
* @endcode
*
* @author Keyvan Minoukadeh - http://www.keyvan.net - keyvan@keyvan.net
* @see http://fivefilters.org (the project this was written for)
*/
class JSLikeHTMLElement extends DOMElement
{
/**
* Used for setting innerHTML like it's done in JavaScript:
* @code
* $div->innerHTML = '<h2>Chapter 2</h2><p>The story begins...</p>';
* @endcode
*/
public function __set($name, $value) {
if ($name == 'innerHTML') {
// first, empty the element
for ($x=$this->childNodes->length-1; $x>=0; $x--) {
$this->removeChild($this->childNodes->item($x));
}
// $value holds our new inner HTML
if ($value != '') {
$f = $this->ownerDocument->createDocumentFragment();
// appendXML() expects well-formed markup (XHTML)
$result = @$f->appendXML($value); // @ to suppress PHP warnings
if ($result) {
if ($f->hasChildNodes()) $this->appendChild($f);
} else {
// $value is probably ill-formed
$f = new DOMDocument();
$value = mb_convert_encoding($value, 'HTML-ENTITIES', 'UTF-8');
// Using <htmlfragment> will generate a warning, but so will bad HTML
// (and by this point, bad HTML is what we've got).
// We use it (and suppress the warning) because an HTML fragment will
// be wrapped around <html><body> tags which we don't really want to keep.
// Note: despite the warning, if loadHTML succeeds it will return true.
$result = @$f->loadHTML('<htmlfragment>'.$value.'</htmlfragment>');
if ($result) {
$import = $f->getElementsByTagName('htmlfragment')->item(0);
foreach ($import->childNodes as $child) {
$importedNode = $this->ownerDocument->importNode($child, true);
$this->appendChild($importedNode);
}
} else {
// oh well, we tried, we really did. :(
// this element is now empty
}
}
}
} else {
$trace = debug_backtrace();
trigger_error('Undefined property via __set(): '.$name.' in '.$trace[0]['file'].' on line '.$trace[0]['line'], E_USER_NOTICE);
}
}
/**
* Used for getting innerHTML like it's done in JavaScript:
* @code
* $string = $div->innerHTML;
* @endcode
*/
public function __get($name)
{
if ($name == 'innerHTML') {
$inner = '';
foreach ($this->childNodes as $child) {
$inner .= $this->ownerDocument->saveXML($child);
}
return $inner;
}
$trace = debug_backtrace();
trigger_error('Undefined property via __get(): '.$name.' in '.$trace[0]['file'].' on line '.$trace[0]['line'], E_USER_NOTICE);
return null;
}
public function __toString()
{
return '['.$this->tagName.']';
}
}
?>

View File

@ -1,265 +0,0 @@
<?php
/**
* poche, a read it later open source system
*
* @category poche
* @author Nicolas Lœuillet <support@inthepoche.com>
* @copyright 2013
* @license http://www.wtfpl.net/ see COPYING file
*/
class MyTool
{
public static function initPhp()
{
define('START_TIME', microtime(true));
if (phpversion() < 5) {
die("Argh you don't have PHP 5 !");
}
error_reporting(E_ALL);
function stripslashesDeep($value) {
return is_array($value)
? array_map('stripslashesDeep', $value)
: stripslashes($value);
}
if (get_magic_quotes_gpc()) {
$_POST = array_map('stripslashesDeep', $_POST);
$_GET = array_map('stripslashesDeep', $_GET);
$_COOKIE = array_map('stripslashesDeep', $_COOKIE);
}
ob_start();
register_shutdown_function('ob_end_flush');
}
public static function isUrl($url)
{
// http://neo22s.com/check-if-url-exists-and-is-online-php/
$pattern='|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i';
return preg_match($pattern, $url);
}
public static function isEmail($email)
{
$pattern = "/^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2, 4}$/i";
return (preg_match($pattern, $email));
}
public static function formatBBCode($text)
{
$replace = array(
'/\[m\](.+?)\[\/m\]/is'
=> '/* moderate */',
'/\[b\](.+?)\[\/b\]/is'
=> '<strong>$1</strong>',
'/\[i\](.+?)\[\/i\]/is'
=> '<em>$1</em>',
'/\[s\](.+?)\[\/s\]/is'
=> '<del>$1</del>',
'/\[u\](.+?)\[\/u\]/is'
=> '<span style="text-decoration: underline;">$1</span>',
'/\[url\](.+?)\[\/url]/is'
=> '<a href="$1">$1</a>',
'/\[url=(\w+:\/\/[^\]]+)\](.+?)\[\/url]/is'
=> '<a href="$1">$2</a>',
'/\[quote\](.+?)\[\/quote\]/is'
=> '<blockquote>$1</blockquote>',
'/\[code\](.+?)\[\/code\]/is'
=> '<code>$1</code>',
'/\[([^[]+)\|([^[]+)\]/is'
=> '<a href="$2">$1</a>'
);
$text = preg_replace(
array_keys($replace),
array_values($replace),
$text
);
return $text;
}
public static function formatText($text)
{
$text = preg_replace_callback(
'/<code_html>(.*?)<\/code_html>/is',
create_function(
'$matches',
'return htmlspecialchars($matches[1]);'
),
$text
);
$text = preg_replace_callback(
'/<code_php>(.*?)<\/code_php>/is',
create_function(
'$matches',
'return highlight_string("<?php $matches[1] ?>", true);'
),
$text
);
$text = preg_replace('/<br \/>/is', '', $text);
$text = preg_replace(
'#(^|\s)([a-z]+://([^\s\w/]?[\w/])*)(\s|$)#im',
'\\1<a href="\\2">\\2</a>\\4',
$text
);
$text = preg_replace(
'#(^|\s)wp:?([a-z]{2}|):([\w]+)#im',
'\\1<a href="http://\\2.wikipedia.org/wiki/\\3">\\3</a>',
$text
);
$text = str_replace(
'http://.wikipedia.org/wiki/',
'http://www.wikipedia.org/wiki/',
$text
);
$text = str_replace('\wp:', 'wp:', $text);
$text = str_replace('\http:', 'http:', $text);
$text = MyTool::formatBBCode($text);
$text = nl2br($text);
return $text;
}
public static function getUrl()
{
$https = (!empty($_SERVER['HTTPS'])
&& (strtolower($_SERVER['HTTPS']) == 'on'))
|| (isset($_SERVER["SERVER_PORT"])
&& $_SERVER["SERVER_PORT"] == '443'); // HTTPS detection.
$serverport = (!isset($_SERVER["SERVER_PORT"])
|| $_SERVER["SERVER_PORT"] == '80'
|| ($https && $_SERVER["SERVER_PORT"] == '443')
? ''
: ':' . $_SERVER["SERVER_PORT"]);
$scriptname = str_replace('/index.php', '/', $_SERVER["SCRIPT_NAME"]);
if (!isset($_SERVER["SERVER_NAME"])) {
return $scriptname;
}
return 'http' . ($https ? 's' : '') . '://'
. $_SERVER["SERVER_NAME"] . $serverport . $scriptname;
}
public static function rrmdir($dir)
{
if (is_dir($dir) && ($d = @opendir($dir))) {
while (($file = @readdir($d)) !== false) {
if ( $file == '.' || $file == '..' ) {
continue;
} else {
unlink($dir . '/' . $file);
}
}
}
}
public static function humanBytes($bytes)
{
$siPrefix = array( 'bytes', 'KB', 'MB', 'GB', 'TB', 'EB', 'ZB', 'YB' );
$base = 1024;
$class = min((int) log($bytes, $base), count($siPrefix) - 1);
$val = sprintf('%1.2f', $bytes / pow($base, $class));
return $val . ' ' . $siPrefix[$class];
}
public static function returnBytes($val)
{
$val = trim($val);
$last = strtolower($val[strlen($val)-1]);
switch($last)
{
case 'g': $val *= 1024;
case 'm': $val *= 1024;
case 'k': $val *= 1024;
}
return $val;
}
public static function getMaxFileSize()
{
$sizePostMax = MyTool::returnBytes(ini_get('post_max_size'));
$sizeUploadMax = MyTool::returnBytes(ini_get('upload_max_filesize'));
// Return the smaller of two:
return min($sizePostMax, $sizeUploadMax);
}
public static function smallHash($text)
{
$t = rtrim(base64_encode(hash('crc32', $text, true)), '=');
// Get rid of characters which need encoding in URLs.
$t = str_replace('+', '-', $t);
$t = str_replace('/', '_', $t);
$t = str_replace('=', '@', $t);
return $t;
}
public static function renderJson($data)
{
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json; charset=UTF-8');
echo json_encode($data);
exit();
}
public static function grabToLocal($url, $file, $force = false)
{
if ((!file_exists($file) || $force) && in_array('curl', get_loaded_extensions())){
$ch = curl_init ($url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
$raw = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == 200) {
$fp = fopen($file, 'x');
fwrite($fp, $raw);
fclose($fp);
}
curl_close ($ch);
}
}
public static function redirect($rurl = '')
{
if ($rurl === '') {
// if (!empty($_SERVER['HTTP_REFERER']) && strcmp(parse_url($_SERVER['HTTP_REFERER'],PHP_URL_HOST),$_SERVER['SERVER_NAME'])==0)
$rurl = (empty($_SERVER['HTTP_REFERER'])?'?':$_SERVER['HTTP_REFERER']);
if (isset($_POST['returnurl'])) {
$rurl = $_POST['returnurl'];
}
}
// prevent loop
if (empty($rurl) || parse_url($rurl, PHP_URL_QUERY) === $_SERVER['QUERY_STRING']) {
$rurl = MyTool::getUrl();
}
if (substr($rurl, 0, 1) !== '?') {
$ref = MyTool::getUrl();
if (substr($rurl, 0, strlen($ref)) !== $ref) {
$rurl = $ref;
}
}
header('Location: '.$rurl);
exit();
}
public static function silence_errors($num, $str)
{
// No-op
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,136 +0,0 @@
<?php
/**
* Session management class
* http://www.developpez.net/forums/d51943/php/langage/sessions/
* http://sebsauvage.net/wiki/doku.php?id=php:session
* http://sebsauvage.net/wiki/doku.php?id=php:shaarli
*
* Features:
* - Everything is stored on server-side (we do not trust client-side data,
* such as cookie expiration)
* - IP addresses + user agent are checked on each access to prevent session
* cookie hijacking (such as Firesheep)
* - Session expires on user inactivity (Session expiration date is
* automatically updated everytime the user accesses a page.)
* - A unique secret key is generated on server-side for this session
* (and never sent over the wire) which can be used
* to sign forms (HMAC) (See $_SESSION['uid'] )
* - Token management to prevent XSRF attacks.
*
* TODO:
* - log login fail
* - prevent brute force (ban IP)
*
* HOWTOUSE:
* - Just call Session::init(); to initialize session and
* check if connected with Session::isLogged()
*/
class Session
{
// If the user does not access any page within this time,
// his/her session is considered expired (in seconds).
public static $inactivity_timeout = 3600;
private static $_instance;
// constructor
private function __construct()
{
// Use cookies to store session.
ini_set('session.use_cookies', 1);
// Force cookies for session (phpsessionID forbidden in URL)
ini_set('session.use_only_cookies', 1);
if (!session_id()){
// Prevent php to use sessionID in URL if cookies are disabled.
ini_set('session.use_trans_sid', false);
session_start('poche');
}
}
// initialize session
public static function init()
{
if (!isset(self::$_instance)) {
self::$_instance = new Session();
}
}
// Returns the IP address, user agent and language of the client
// (Used to prevent session cookie hijacking.)
private static function _allInfos()
{
$infos = $_SERVER["REMOTE_ADDR"];
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$infos.=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
if (isset($_SERVER['HTTP_CLIENT_IP'])) {
$infos.='_'.$_SERVER['HTTP_CLIENT_IP'];
}
$infos.='_'.$_SERVER['HTTP_USER_AGENT'];
$infos.='_'.$_SERVER['HTTP_ACCEPT_LANGUAGE'];
return sha1($infos);
}
// Check that user/password is correct and init some SESSION variables.
public static function login($login,$password,$login_test,$password_test,
$pValues = array())
{
foreach ($pValues as $key => $value) {
$_SESSION[$key] = $value;
}
if ($login==$login_test && $password==$password_test){
// generate unique random number to sign forms (HMAC)
$_SESSION['uid'] = sha1(uniqid('',true).'_'.mt_rand());
$_SESSION['info']=Session::_allInfos();
$_SESSION['username']=$login;
// Set session expiration.
$_SESSION['expires_on']=time()+Session::$inactivity_timeout;
return true;
}
return false;
}
// Force logout
public static function logout()
{
unset($_SESSION['uid'],$_SESSION['info'],$_SESSION['expires_on'],$_SESSION['tokens']);
}
// Make sure user is logged in.
public static function isLogged()
{
if (!isset ($_SESSION['uid'])
|| $_SESSION['info']!=Session::_allInfos()
|| time()>=$_SESSION['expires_on']){
Session::logout();
return false;
}
// User accessed a page : Update his/her session expiration date.
$_SESSION['expires_on']=time()+Session::$inactivity_timeout;
return true;
}
// Returns a token.
public static function getToken()
{
if (!isset($_SESSION['tokens'])){
$_SESSION['tokens']=array();
}
// We generate a random string and store it on the server side.
$rnd = sha1(uniqid('',true).'_'.mt_rand());
$_SESSION['tokens'][$rnd]=1;
return $rnd;
}
// Tells if a token is ok. Using this function will destroy the token.
// return true if token is ok.
public static function isToken($token)
{
if (isset($_SESSION['tokens'][$token]))
{
unset($_SESSION['tokens'][$token]); // Token is used: destroy it.
return true; // Token is ok.
}
return false; // Wrong token, or already used.
}
}

View File

@ -1,231 +0,0 @@
<?php
//--------------------------------------------------------------------------------------------------
// Session-Based Flash Messages v1.0
// Copyright 2012 Mike Everhart (http://mikeeverhart.net)
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
//------------------------------------------------------------------------------
// Description:
//------------------------------------------------------------------------------
//
// Stores messages in Session data to be easily retrieved later on.
// This class includes four different types of messages:
// - Success
// - Error
// - Warning
// - Information
//
// See README for basic usage instructions, or see samples/index.php for more advanced samples
//
//--------------------------------------------------------------------------------------------------
// Changelog
//--------------------------------------------------------------------------------------------------
//
// 2011-05-15 - v1.0 - Initial Version
//
//--------------------------------------------------------------------------------------------------
class Messages {
//-----------------------------------------------------------------------------------------------
// Class Variables
//-----------------------------------------------------------------------------------------------
var $msgId;
var $msgTypes = array( 'help', 'info', 'warning', 'success', 'error' );
var $msgClass = 'messages';
var $msgWrapper = "<div class='%s %s'><a href='#' class='closeMessage'></a>\n%s</div>\n";
var $msgBefore = '<p>';
var $msgAfter = "</p>\n";
/**
* Constructor
* @author Mike Everhart
*/
public function __construct() {
// Generate a unique ID for this user and session
$this->msgId = md5(uniqid());
// Create the session array if it doesnt already exist
if( !array_key_exists('flash_messages', $_SESSION) ) $_SESSION['flash_messages'] = array();
}
/**
* Add a message to the queue
*
* @author Mike Everhart
*
* @param string $type The type of message to add
* @param string $message The message
* @param string $redirect_to (optional) If set, the user will be redirected to this URL
* @return bool
*
*/
public function add($type, $message, $redirect_to=null) {
if( !isset($_SESSION['flash_messages']) ) return false;
if( !isset($type) || !isset($message[0]) ) return false;
// Replace any shorthand codes with their full version
if( strlen(trim($type)) == 1 ) {
$type = str_replace( array('h', 'i', 'w', 'e', 's'), array('help', 'info', 'warning', 'error', 'success'), $type );
// Backwards compatibility...
} elseif( $type == 'information' ) {
$type = 'info';
}
// Make sure it's a valid message type
if( !in_array($type, $this->msgTypes) ) die('"' . strip_tags($type) . '" is not a valid message type!' );
// If the session array doesn't exist, create it
if( !array_key_exists( $type, $_SESSION['flash_messages'] ) ) $_SESSION['flash_messages'][$type] = array();
$_SESSION['flash_messages'][$type][] = $message;
if( !is_null($redirect_to) ) {
header("Location: $redirect_to");
exit();
}
return true;
}
//-----------------------------------------------------------------------------------------------
// display()
// print queued messages to the screen
//-----------------------------------------------------------------------------------------------
/**
* Display the queued messages
*
* @author Mike Everhart
*
* @param string $type Which messages to display
* @param bool $print True = print the messages on the screen
* @return mixed
*
*/
public function display($type='all', $print=true) {
$messages = '';
$data = '';
if( !isset($_SESSION['flash_messages']) ) return false;
if( $type == 'g' || $type == 'growl' ) {
$this->displayGrowlMessages();
return true;
}
// Print a certain type of message?
if( in_array($type, $this->msgTypes) ) {
foreach( $_SESSION['flash_messages'][$type] as $msg ) {
$messages .= $this->msgBefore . $msg . $this->msgAfter;
}
$data .= sprintf($this->msgWrapper, $this->msgClass, $type, $messages);
// Clear the viewed messages
$this->clear($type);
// Print ALL queued messages
} elseif( $type == 'all' ) {
foreach( $_SESSION['flash_messages'] as $type => $msgArray ) {
$messages = '';
foreach( $msgArray as $msg ) {
$messages .= $this->msgBefore . $msg . $this->msgAfter;
}
$data .= sprintf($this->msgWrapper, $this->msgClass, $type, $messages);
}
// Clear ALL of the messages
$this->clear();
// Invalid Message Type?
} else {
return false;
}
// Print everything to the screen or return the data
if( $print ) {
echo $data;
} else {
return $data;
}
}
/**
* Check to see if there are any queued error messages
*
* @author Mike Everhart
*
* @return bool true = There ARE error messages
* false = There are NOT any error messages
*
*/
public function hasErrors() {
return empty($_SESSION['flash_messages']['error']) ? false : true;
}
/**
* Check to see if there are any ($type) messages queued
*
* @author Mike Everhart
*
* @param string $type The type of messages to check for
* @return bool
*
*/
public function hasMessages($type=null) {
if( !is_null($type) ) {
if( !empty($_SESSION['flash_messages'][$type]) ) return $_SESSION['flash_messages'][$type];
} else {
foreach( $this->msgTypes as $type ) {
if( !empty($_SESSION['flash_messages']) ) return true;
}
}
return false;
}
/**
* Clear messages from the session data
*
* @author Mike Everhart
*
* @param string $type The type of messages to clear
* @return bool
*
*/
public function clear($type='all') {
if( $type == 'all' ) {
unset($_SESSION['flash_messages']);
} else {
unset($_SESSION['flash_messages'][$type]);
}
return true;
}
public function __toString() { return $this->hasMessages(); }
public function __destruct() {
//$this->clear();
}
} // end class
?>

View File

@ -1,45 +0,0 @@
<?php
/**
* poche, a read it later open source system
*
* @category poche
* @author Nicolas Lœuillet <nicolas@loeuillet.org>
* @copyright 2013
* @license http://www.wtfpl.net/ see COPYING file
*/
define ('POCHE_VERSION', '0.2.1');
if (!is_dir('db/')) {
@mkdir('db/',0705);
}
define ('ABS_PATH', 'assets/');
define ('CONVERT_LINKS_FOOTNOTES', TRUE);
define ('DOWNLOAD_PICTURES', TRUE);
$storage_type = 'sqlite'; # sqlite or file
include 'functions.php';
require_once 'Readability.php';
require_once 'Encoding.php';
require_once 'rain.tpl.class.php';
require_once 'MyTool.class.php';
require_once 'Session.class.php';
require_once 'store/store.class.php';
require_once 'store/sqlite.class.php';
require_once 'store/file.class.php';
require_once 'class.messages.php';
Session::init();
$store = new $storage_type();
$msg = new Messages();
# initialisation de RainTPL
raintpl::$tpl_dir = './tpl/';
raintpl::$cache_dir = './cache/';
raintpl::$base_url = get_poche_url();
raintpl::configure('path_replace', false);
raintpl::configure('debug', false);
$tpl = new raintpl();
$tpl->assign('msg', $msg);

View File

@ -1,354 +0,0 @@
<?php
/**
* poche, a read it later open source system
*
* @category poche
* @author Nicolas Lœuillet <support@inthepoche.com>
* @copyright 2013
* @license http://www.wtfpl.net/ see COPYING file
*/
/**
* Permet de générer l'URL de poche pour le bookmarklet
*/
function get_poche_url()
{
$protocol = "http";
if(isset($_SERVER['HTTPS'])) {
if($_SERVER['HTTPS'] != "off" && $_SERVER['HTTPS'] != "") {
$protocol = "https";
}
}
return $protocol . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
}
// function define to retrieve url content
function get_external_file($url)
{
$timeout = 15;
// spoofing FireFox 18.0
$useragent="Mozilla/5.0 (Windows NT 5.1; rv:18.0) Gecko/20100101 Firefox/18.0";
if (in_array ('curl', get_loaded_extensions())) {
// Fetch feed from URL
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
// FeedBurner requires a proper USER-AGENT...
curl_setopt($curl, CURL_HTTP_VERSION_1_1, true);
curl_setopt($curl, CURLOPT_ENCODING, "gzip, deflate");
curl_setopt($curl, CURLOPT_USERAGENT, $useragent);
$data = curl_exec($curl);
$httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
$httpcodeOK = isset($httpcode) and ($httpcode == 200 or $httpcode == 301);
curl_close($curl);
} else {
// create http context and add timeout and user-agent
$context = stream_context_create(array('http'=>array('timeout' => $timeout,'header'=> "User-Agent: ".$useragent,/*spoot Mozilla Firefox*/'follow_location' => true)));
// only download page lesser than 4MB
$data = @file_get_contents($url, false, $context, -1, 4000000); // We download at most 4 MB from source.
if(isset($http_response_header) and isset($http_response_header[0])) {
$httpcodeOK = isset($http_response_header) and isset($http_response_header[0]) and ((strpos($http_response_header[0], '200 OK') !== FALSE) or (strpos($http_response_header[0], '301 Moved Permanently') !== FALSE));
}
}
// if response is not empty and response is OK
if (isset($data) and isset($httpcodeOK) and $httpcodeOK ) {
// take charset of page and get it
preg_match('#<meta .*charset=.*>#Usi', $data, $meta);
// if meta tag is found
if (!empty($meta[0])) {
// retrieve encoding in $enc
preg_match('#charset="?(.*)"#si', $meta[0], $enc);
// if charset is found set it otherwise, set it to utf-8
$html_charset = (!empty($enc[1])) ? strtolower($enc[1]) : 'utf-8';
} else {
$html_charset = 'utf-8';
$enc[1] = '';
}
// replace charset of url to charset of page
$data = str_replace('charset='.$enc[1], 'charset='.$html_charset, $data);
return $data;
}
else {
return FALSE;
}
}
/**
* Préparation de l'URL avec récupération du contenu avant insertion en base
*/
function prepare_url($url)
{
$parametres = array();
$url = html_entity_decode(trim($url));
// We remove the annoying parameters added by FeedBurner and GoogleFeedProxy (?utm_source=...)
// from shaarli, by sebsauvage
$i=strpos($url,'&utm_source='); if ($i!==false) $url=substr($url,0,$i);
$i=strpos($url,'?utm_source='); if ($i!==false) $url=substr($url,0,$i);
$i=strpos($url,'#xtor=RSS-'); if ($i!==false) $url=substr($url,0,$i);
$title = $url;
if (!preg_match('!^https?://!i', $url))
$url = 'http://' . $url;
$html = Encoding::toUTF8(get_external_file($url,15));
if (isset($html) and strlen($html) > 0)
{
$r = new Readability($html, $url);
$r->convertLinksToFootnotes = CONVERT_LINKS_FOOTNOTES;
if($r->init())
{
$content = $r->articleContent->innerHTML;
$parametres['title'] = $r->articleTitle->innerHTML;
$parametres['content'] = $content;
return $parametres;
}
}
$msg->add('e', 'error during url preparation');
logm('error during url preparation');
return FALSE;
}
/**
* On modifie les URLS des images dans le corps de l'article
*/
function filtre_picture($content, $url, $id)
{
$matches = array();
preg_match_all('#<\s*(img)[^>]+src="([^"]*)"[^>]*>#Si', $content, $matches, PREG_SET_ORDER);
foreach($matches as $i => $link)
{
$link[1] = trim($link[1]);
if (!preg_match('#^(([a-z]+://)|(\#))#', $link[1]) )
{
$absolute_path = get_absolute_link($link[2],$url);
$filename = basename(parse_url($absolute_path, PHP_URL_PATH));
$directory = create_assets_directory($id);
$fullpath = $directory . '/' . $filename;
download_pictures($absolute_path, $fullpath);
$content = str_replace($matches[$i][2], $fullpath, $content);
}
}
return $content;
}
/**
* Retourne le lien absolu
*/
function get_absolute_link($relative_link, $url)
{
/* return if already absolute URL */
if (parse_url($relative_link, PHP_URL_SCHEME) != '') return $relative_link;
/* queries and anchors */
if ($relative_link[0]=='#' || $relative_link[0]=='?') return $url . $relative_link;
/* parse base URL and convert to local variables:
$scheme, $host, $path */
extract(parse_url($url));
/* remove non-directory element from path */
$path = preg_replace('#/[^/]*$#', '', $path);
/* destroy path if relative url points to root */
if ($relative_link[0] == '/') $path = '';
/* dirty absolute URL */
$abs = $host . $path . '/' . $relative_link;
/* replace '//' or '/./' or '/foo/../' with '/' */
$re = array('#(/\.?/)#', '#/(?!\.\.)[^/]+/\.\./#');
for($n=1; $n>0; $abs=preg_replace($re, '/', $abs, -1, $n)) {}
/* absolute URL is ready! */
return $scheme.'://'.$abs;
}
/**
* Téléchargement des images
*/
function download_pictures($absolute_path, $fullpath)
{
$rawdata = get_external_file($absolute_path);
if(file_exists($fullpath)) {
unlink($fullpath);
}
$fp = fopen($fullpath, 'x');
fwrite($fp, $rawdata);
fclose($fp);
}
/**
* Crée un répertoire de médias pour l'article
*/
function create_assets_directory($id)
{
$assets_path = ABS_PATH;
if(!is_dir($assets_path)) {
mkdir($assets_path, 0705);
}
$article_directory = $assets_path . $id;
if(!is_dir($article_directory)) {
mkdir($article_directory, 0705);
}
return $article_directory;
}
/**
* Suppression du répertoire d'images
*/
function remove_directory($directory)
{
if(is_dir($directory)) {
$files = array_diff(scandir($directory), array('.','..'));
foreach ($files as $file) {
(is_dir("$directory/$file")) ? remove_directory("$directory/$file") : unlink("$directory/$file");
}
return rmdir($directory);
}
}
function display_view($view, $id = 0, $full_head = 'yes')
{
global $tpl, $store, $msg;
switch ($view)
{
case 'export':
$entries = $store->retrieveAll();
$tpl->assign('export', myTool::renderJson($entries));
$tpl->draw('export');
logm('export view');
break;
case 'config':
$tpl->assign('load_all_js', 0);
$tpl->draw('head');
$tpl->draw('home');
$tpl->draw('config');
$tpl->draw('js');
$tpl->draw('footer');
logm('config view');
break;
case 'view':
$entry = $store->retrieveOneById($id);
if ($entry != NULL) {
$tpl->assign('id', $entry['id']);
$tpl->assign('url', $entry['url']);
$tpl->assign('title', $entry['title']);
$tpl->assign('content', $entry['content']);
$tpl->assign('is_fav', $entry['is_fav']);
$tpl->assign('is_read', $entry['is_read']);
$tpl->assign('load_all_js', 0);
$tpl->draw('view');
}
else {
logm('error in view call : entry is NULL');
}
logm('view link #' . $id);
break;
default: # home view
$entries = $store->getEntriesByView($view);
$tpl->assign('entries', $entries);
if ($full_head == 'yes') {
$tpl->assign('load_all_js', 1);
$tpl->draw('head');
$tpl->draw('home');
}
$tpl->draw('entries');
if ($full_head == 'yes') {
$tpl->draw('js');
$tpl->draw('footer');
}
break;
}
}
/**
* Appel d'une action (mark as fav, archive, delete)
*/
function action_to_do($action, $url, $id = 0)
{
global $store, $msg;
switch ($action)
{
case 'add':
if ($url == '')
continue;
if (MyTool::isUrl($url)) {
if($parametres_url = prepare_url($url)) {
$store->add($url, $parametres_url['title'], $parametres_url['content']);
$last_id = $store->getLastId();
if (DOWNLOAD_PICTURES) {
$content = filtre_picture($parametres_url['content'], $url, $last_id);
}
$msg->add('s', 'the link has been added successfully');
}
}
else {
$msg->add('e', 'the link has been added successfully');
logm($url . ' is not a valid url');
}
logm('add link ' . $url);
break;
case 'delete':
remove_directory(ABS_PATH . $id);
$store->deleteById($id);
$msg->add('s', 'the link has been deleted successfully');
logm('delete link #' . $id);
break;
case 'toggle_fav' :
$store->favoriteById($id);
$msg->add('s', 'the favorite toggle has been done successfully');
logm('mark as favorite link #' . $id);
break;
case 'toggle_archive' :
$store->archiveById($id);
$msg->add('s', 'the archive toggle has been done successfully');
logm('archive link #' . $id);
break;
default:
break;
}
}
function logm($message)
{
$t = strval(date('Y/m/d_H:i:s')).' - '.$_SERVER["REMOTE_ADDR"].' - '.strval($message)."\n";
file_put_contents('./log.txt',$t,FILE_APPEND);
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,51 +0,0 @@
<?php
/**
* poche, a read it later open source system
*
* @category poche
* @author Nicolas Lœuillet <support@inthepoche.com>
* @copyright 2013
* @license http://www.wtfpl.net/ see COPYING file
*/
class File extends Store {
function __construct() {
}
public function add() {
}
public function retrieveOneById($id) {
}
public function retrieveOneByURL($url) {
}
public function deleteById($id) {
}
public function favoriteById($id) {
}
public function archiveById($id) {
}
public function getEntriesByView($view) {
}
public function getLastId() {
}
public function updateContentById($id) {
}
}

View File

@ -1,144 +0,0 @@
<?php
/**
* poche, a read it later open source system
*
* @category poche
* @author Nicolas Lœuillet <support@inthepoche.com>
* @copyright 2013
* @license http://www.wtfpl.net/ see COPYING file
*/
class Sqlite extends Store {
public static $db_path = 'sqlite:./db/poche.sqlite';
var $handle;
function __construct() {
parent::__construct();
$this->handle = new PDO(self::$db_path);
$this->handle->exec('CREATE TABLE IF NOT EXISTS "entries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE , "title" VARCHAR, "url" VARCHAR UNIQUE , "is_read" INTEGER DEFAULT 0, "is_fav" INTEGER DEFAULT 0, "content" BLOB)');
$this->handle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
private function getHandle() {
return $this->handle;
}
private function executeQuery($sql, $params) {
try
{
$query = $this->getHandle()->prepare($sql);
$query->execute($params);
return $query;
}
catch (Exception $e)
{
logm('execute query error : '.$e->getMessage());
}
}
public function retrieveAll() {
$sql = "SELECT * FROM entries ORDER BY id";
$query = $this->executeQuery($sql, array());
$entries = $query->fetchAll();
return $entries;
}
public function retrieveOneById($id) {
parent::__construct();
$entry = NULL;
$sql = "SELECT * FROM entries WHERE id=?";
$params = array(intval($id));
$query = $this->executeQuery($sql, $params);
$entry = $query->fetchAll();
return $entry[0];
}
public function getEntriesByView($view) {
parent::__construct();
switch ($_SESSION['sort'])
{
case 'ia':
$order = 'ORDER BY id';
break;
case 'id':
$order = 'ORDER BY id DESC';
break;
case 'ta':
$order = 'ORDER BY lower(title)';
break;
case 'td':
$order = 'ORDER BY lower(title) DESC';
break;
default:
$order = 'ORDER BY id';
break;
}
switch ($view)
{
case 'archive':
$sql = "SELECT * FROM entries WHERE is_read=? " . $order;
$params = array(-1);
break;
case 'fav' :
$sql = "SELECT * FROM entries WHERE is_fav=? " . $order;
$params = array(-1);
break;
default:
$sql = "SELECT * FROM entries WHERE is_read=? " . $order;
$params = array(0);
break;
}
$query = $this->executeQuery($sql, $params);
$entries = $query->fetchAll();
return $entries;
}
public function add($url, $title, $content) {
parent::__construct();
$sql_action = 'INSERT INTO entries ( url, title, content ) VALUES (?, ?, ?)';
$params_action = array($url, $title, $content);
$query = $this->executeQuery($sql_action, $params_action);
}
public function deleteById($id) {
parent::__construct();
$sql_action = "DELETE FROM entries WHERE id=?";
$params_action = array($id);
$query = $this->executeQuery($sql_action, $params_action);
}
public function favoriteById($id) {
parent::__construct();
$sql_action = "UPDATE entries SET is_fav=~is_fav WHERE id=?";
$params_action = array($id);
$query = $this->executeQuery($sql_action, $params_action);
}
public function archiveById($id) {
parent::__construct();
$sql_action = "UPDATE entries SET is_read=~is_read WHERE id=?";
$params_action = array($id);
$query = $this->executeQuery($sql_action, $params_action);
}
public function getLastId() {
parent::__construct();
return $this->getHandle()->lastInsertId();
}
public function updateContentById($id) {
parent::__construct();
$sql_update = "UPDATE entries SET content=? WHERE id=?";
$params_update = array($content, $id);
$query = $this->executeQuery($sql_update, $params_update);
}
}

View File

@ -1,55 +0,0 @@
<?php
/**
* poche, a read it later open source system
*
* @category poche
* @author Nicolas Lœuillet <support@inthepoche.com>
* @copyright 2013
* @license http://www.wtfpl.net/ see COPYING file
*/
class Store {
function __construct() {
}
public function add() {
}
public function retrieveAll() {
}
public function retrieveOneById($id) {
}
public function retrieveOneByURL($url) {
}
public function deleteById($id) {
}
public function favoriteById($id) {
}
public function archiveById($id) {
}
public function getEntriesByView($view) {
}
public function getLastId() {
}
public function updateContentById($id) {
}
}

View File

@ -1,74 +0,0 @@
<?php
/**
* poche, a read it later open source system
*
* @category poche
* @author Nicolas Lœuillet <support@inthepoche.com>
* @copyright 2013
* @license http://www.wtfpl.net/ see COPYING file
*/
include dirname(__FILE__).'/inc/config.php';
myTool::initPhp();
# XSRF protection with token
if (!empty($_POST)) {
if (!Session::isToken($_POST['token'])) {
die('Wrong token.');
}
unset($_SESSION['tokens']);
}
$ref = empty($_SERVER['HTTP_REFERER']) ? '' : $_SERVER['HTTP_REFERER'];
if (isset($_GET['login'])) {
// Login
if (!empty($_POST['login']) && !empty($_POST['password'])) {
if (Session::login('poche', 'poche', $_POST['login'], $_POST['password'])) {
logm('login successful');
$msg->add('s', 'welcome in your pocket!');
if (!empty($_POST['longlastingsession'])) {
$_SESSION['longlastingsession'] = 31536000;
$_SESSION['expires_on'] = time() + $_SESSION['longlastingsession'];
session_set_cookie_params($_SESSION['longlastingsession']);
} else {
session_set_cookie_params(0); // when browser closes
}
session_regenerate_id(true);
MyTool::redirect($ref);
}
logm('login failed');
die("Login failed !");
} else {
logm('login failed');
}
}
elseif (isset($_GET['logout'])) {
logm('logout');
Session::logout();
MyTool::redirect();
}
# Traitement des paramètres et déclenchement des actions
$view = (isset ($_REQUEST['view'])) ? htmlentities($_REQUEST['view']) : 'index';
$full_head = (isset ($_REQUEST['full_head'])) ? htmlentities($_REQUEST['full_head']) : 'yes';
$action = (isset ($_REQUEST['action'])) ? htmlentities($_REQUEST['action']) : '';
$_SESSION['sort'] = (isset ($_REQUEST['sort'])) ? htmlentities($_REQUEST['sort']) : 'id';
$id = (isset ($_REQUEST['id'])) ? htmlspecialchars($_REQUEST['id']) : '';
$url = (isset ($_GET['url'])) ? $_GET['url'] : '';
$tpl->assign('isLogged', Session::isLogged());
$tpl->assign('referer', $ref);
$tpl->assign('view', $view);
$tpl->assign('poche_url', myTool::getUrl());
$tpl->assign('title', 'poche, a read it later open source system');
if (Session::isLogged()) {
action_to_do($action, $url, $id);
display_view($view, $id, $full_head);
}
else {
$tpl->draw('login');
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,57 +0,0 @@
function toggle_favorite(element, id) {
$(element).toggleClass('fav-off');
$.ajax ({
url: "index.php?action=toggle_fav",
data:{id:id}
});
}
function toggle_archive(element, id, view_article) {
$(element).toggleClass('archive-off');
$.ajax ({
url: "index.php?action=toggle_archive",
data:{id:id}
});
var obj = $('#entry-'+id);
// on vient de la vue de l'article, donc pas de gestion de grille
if (view_article != 1) {
$('#content').masonry('remove',obj);
$('#content').masonry('reloadItems');
$('#content').masonry('reload');
}
}
function sort_links(view, sort) {
$.get('index.php', { view: view, sort: sort, full_head: 'no' }, function(data) {
$('#content').html(data);
});
}
// ---------- Swith light or dark view
function setActiveStyleSheet(title) {
var i, a, main;
for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
a.disabled = true;
if(a.getAttribute("title") == title) a.disabled = false;
}
}
}
$('#themeswitch').click(function() {
// we want the dark
if ($('body').hasClass('light-style')) {
setActiveStyleSheet('dark-style');
$('body').addClass('dark-style');
$('body').removeClass('light-style');
$('#themeswitch').text('light');
// we want the light
} else if ($('body').hasClass('dark-style')) {
setActiveStyleSheet('light-style');
$('body').addClass('light-style');
$('body').removeClass('dark-style');
$('#themeswitch').text('dark');
}
return false;
});

36
phpunit.xml.dist Normal file
View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false"
syntaxCheck="false"
bootstrap="app/bootstrap.php.cache"
>
<testsuites>
<testsuite name="wallabag Test Suite">
<directory>./src/Wallabag/*Bundle/Tests</directory>
</testsuite>
</testsuites>
<php>
<server name="KERNEL_DIR" value="./app/" />
</php>
<filter>
<whitelist>
<directory>./src</directory>
<exclude>
<directory>./vendor</directory>
<directory>./src/Wallabag/*Bundle/Resources</directory>
<directory>./src/Wallabag/*Bundle/Tests</directory>
<directory>./src/Wallabag/*Bundle/DataFixtures</directory>
</exclude>
</whitelist>
</filter>
</phpunit>

7
src/.htaccess Normal file
View File

@ -0,0 +1,7 @@
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order deny,allow
Deny from all
</IfModule>

View File

@ -0,0 +1,374 @@
<?php
namespace Wallabag\ApiBundle\Controller;
use Nelmio\ApiDocBundle\Annotation\ApiDoc;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Wallabag\CoreBundle\Entity\Entry;
use Wallabag\CoreBundle\Entity\Tag;
use Hateoas\Configuration\Route;
use Hateoas\Representation\Factory\PagerfantaFactory;
class WallabagRestController extends Controller
{
/**
* @param Entry $entry
* @param string $tags
*/
private function assignTagsToEntry(Entry $entry, $tags)
{
foreach (explode(',', $tags) as $label) {
$label = trim($label);
$tagEntity = $this
->getDoctrine()
->getRepository('WallabagCoreBundle:Tag')
->findOneByLabel($label);
if (is_null($tagEntity)) {
$tagEntity = new Tag($this->getUser());
$tagEntity->setLabel($label);
}
// only add the tag on the entry if the relation doesn't exist
if (!$entry->getTags()->contains($tagEntity)) {
$entry->addTag($tagEntity);
}
}
}
/**
* Retrieve salt for a giver user.
*
* @ApiDoc(
* parameters={
* {"name"="username", "dataType"="string", "required"=true, "description"="username"}
* }
* )
*
* @return array
*/
public function getSaltAction($username)
{
$user = $this
->getDoctrine()
->getRepository('WallabagCoreBundle:User')
->findOneByUsername($username);
if (is_null($user)) {
throw $this->createNotFoundException();
}
return array($user->getSalt() ?: null);
}
/**
* Retrieve all entries. It could be filtered by many options.
*
* @ApiDoc(
* parameters={
* {"name"="archive", "dataType"="boolean", "required"=false, "format"="true or false, all entries by default", "description"="filter by archived status."},
* {"name"="star", "dataType"="boolean", "required"=false, "format"="true or false, all entries by default", "description"="filter by starred status."},
* {"name"="sort", "dataType"="string", "required"=false, "format"="'created' or 'updated', default 'created'", "description"="sort entries by date."},
* {"name"="order", "dataType"="string", "required"=false, "format"="'asc' or 'desc', default 'desc'", "description"="order of sort."},
* {"name"="page", "dataType"="integer", "required"=false, "format"="default '1'", "description"="what page you want."},
* {"name"="perPage", "dataType"="integer", "required"=false, "format"="default'30'", "description"="results per page."},
* {"name"="tags", "dataType"="string", "required"=false, "format"="api%2Crest", "description"="a list of tags url encoded. Will returns entries that matches ALL tags."},
* }
* )
*
* @return Entry
*/
public function getEntriesAction(Request $request)
{
$isArchived = $request->query->get('archive');
$isStarred = $request->query->get('star');
$sort = $request->query->get('sort', 'created');
$order = $request->query->get('order', 'desc');
$page = (int) $request->query->get('page', 1);
$perPage = (int) $request->query->get('perPage', 30);
$tags = $request->query->get('tags', []);
$pager = $this
->getDoctrine()
->getRepository('WallabagCoreBundle:Entry')
->findEntries($this->getUser()->getId(), $isArchived, $isStarred, $sort, $order);
$pager->setCurrentPage($page);
$pager->setMaxPerPage($perPage);
$pagerfantaFactory = new PagerfantaFactory('page', 'perPage');
$paginatedCollection = $pagerfantaFactory->createRepresentation(
$pager,
new Route('api_get_entries', [], $absolute = true)
);
$json = $this->get('serializer')->serialize($paginatedCollection, 'json');
return $this->renderJsonResponse($json);
}
/**
* Retrieve a single entry.
*
* @ApiDoc(
* requirements={
* {"name"="entry", "dataType"="integer", "requirement"="\w+", "description"="The entry ID"}
* }
* )
*
* @return Entry
*/
public function getEntryAction(Entry $entry)
{
$this->validateUserAccess($entry->getUser()->getId(), $this->getUser()->getId());
$json = $this->get('serializer')->serialize($entry, 'json');
return $this->renderJsonResponse($json);
}
/**
* Create an entry.
*
* @ApiDoc(
* parameters={
* {"name"="url", "dataType"="string", "required"=true, "format"="http://www.test.com/article.html", "description"="Url for the entry."},
* {"name"="title", "dataType"="string", "required"=false, "description"="Optional, we'll get the title from the page."},
* {"name"="tags", "dataType"="string", "required"=false, "format"="tag1,tag2,tag3", "description"="a comma-separated list of tags."},
* }
* )
*
* @return Entry
*/
public function postEntriesAction(Request $request)
{
$url = $request->request->get('url');
$entry = $this->get('wallabag_core.content_proxy')->updateEntry(
new Entry($this->getUser()),
$url
);
$tags = $request->request->get('tags', '');
if (!empty($tags)) {
$this->assignTagsToEntry($entry, $tags);
}
$em = $this->getDoctrine()->getManager();
$em->persist($entry);
$em->flush();
$json = $this->get('serializer')->serialize($entry, 'json');
return $this->renderJsonResponse($json);
}
/**
* Change several properties of an entry.
*
* @ApiDoc(
* requirements={
* {"name"="entry", "dataType"="integer", "requirement"="\w+", "description"="The entry ID"}
* },
* parameters={
* {"name"="title", "dataType"="string", "required"=false},
* {"name"="tags", "dataType"="string", "required"=false, "format"="tag1,tag2,tag3", "description"="a comma-separated list of tags."},
* {"name"="archive", "dataType"="boolean", "required"=false, "format"="true or false", "description"="archived the entry."},
* {"name"="star", "dataType"="boolean", "required"=false, "format"="true or false", "description"="starred the entry."},
* }
* )
*
* @return Entry
*/
public function patchEntriesAction(Entry $entry, Request $request)
{
$this->validateUserAccess($entry->getUser()->getId(), $this->getUser()->getId());
$title = $request->request->get('title');
$isArchived = $request->request->get('is_archived');
$isStarred = $request->request->get('is_starred');
if (!is_null($title)) {
$entry->setTitle($title);
}
if (!is_null($isArchived)) {
$entry->setArchived($isArchived);
}
if (!is_null($isStarred)) {
$entry->setStarred($isStarred);
}
$tags = $request->request->get('tags', '');
if (!empty($tags)) {
$this->assignTagsToEntry($entry, $tags);
}
$em = $this->getDoctrine()->getManager();
$em->flush();
$json = $this->get('serializer')->serialize($entry, 'json');
return $this->renderJsonResponse($json);
}
/**
* Delete **permanently** an entry.
*
* @ApiDoc(
* requirements={
* {"name"="entry", "dataType"="integer", "requirement"="\w+", "description"="The entry ID"}
* }
* )
*
* @return Entry
*/
public function deleteEntriesAction(Entry $entry)
{
$this->validateUserAccess($entry->getUser()->getId(), $this->getUser()->getId());
$em = $this->getDoctrine()->getManager();
$em->remove($entry);
$em->flush();
$json = $this->get('serializer')->serialize($entry, 'json');
return $this->renderJsonResponse($json);
}
/**
* Retrieve all tags for an entry.
*
* @ApiDoc(
* requirements={
* {"name"="entry", "dataType"="integer", "requirement"="\w+", "description"="The entry ID"}
* }
* )
*/
public function getEntriesTagsAction(Entry $entry)
{
$this->validateUserAccess($entry->getUser()->getId(), $this->getUser()->getId());
$json = $this->get('serializer')->serialize($entry->getTags(), 'json');
return $this->renderJsonResponse($json);
}
/**
* Add one or more tags to an entry.
*
* @ApiDoc(
* requirements={
* {"name"="entry", "dataType"="integer", "requirement"="\w+", "description"="The entry ID"}
* },
* parameters={
* {"name"="tags", "dataType"="string", "required"=false, "format"="tag1,tag2,tag3", "description"="a comma-separated list of tags."},
* }
* )
*/
public function postEntriesTagsAction(Request $request, Entry $entry)
{
$this->validateUserAccess($entry->getUser()->getId(), $this->getUser()->getId());
$tags = $request->request->get('tags', '');
if (!empty($tags)) {
$this->assignTagsToEntry($entry, $tags);
}
$em = $this->getDoctrine()->getManager();
$em->persist($entry);
$em->flush();
$json = $this->get('serializer')->serialize($entry, 'json');
return $this->renderJsonResponse($json);
}
/**
* Permanently remove one tag for an entry.
*
* @ApiDoc(
* requirements={
* {"name"="tag", "dataType"="integer", "requirement"="\w+", "description"="The tag ID"},
* {"name"="entry", "dataType"="integer", "requirement"="\w+", "description"="The entry ID"}
* }
* )
*/
public function deleteEntriesTagsAction(Entry $entry, Tag $tag)
{
$this->validateUserAccess($entry->getUser()->getId(), $this->getUser()->getId());
$entry->removeTag($tag);
$em = $this->getDoctrine()->getManager();
$em->persist($entry);
$em->flush();
$json = $this->get('serializer')->serialize($entry, 'json');
return $this->renderJsonResponse($json);
}
/**
* Retrieve all tags.
*
* @ApiDoc()
*/
public function getTagsAction()
{
$json = $this->get('serializer')->serialize($this->getUser()->getTags(), 'json');
return $this->renderJsonResponse($json);
}
/**
* Permanently remove one tag from **every** entry.
*
* @ApiDoc(
* requirements={
* {"name"="tag", "dataType"="integer", "requirement"="\w+", "description"="The tag"}
* }
* )
*/
public function deleteTagAction(Tag $tag)
{
$this->validateUserAccess($tag->getUser()->getId(), $this->getUser()->getId());
$em = $this->getDoctrine()->getManager();
$em->remove($tag);
$em->flush();
$json = $this->get('serializer')->serialize($tag, 'json');
return $this->renderJsonResponse($json);
}
/**
* Validate that the first id is equal to the second one.
* If not, throw exception. It means a user try to access information from an other user.
*
* @param int $requestUserId User id from the requested source
* @param int $currentUserId User id from the retrieved source
*/
private function validateUserAccess($requestUserId, $currentUserId)
{
if ($requestUserId != $currentUserId) {
throw $this->createAccessDeniedException('Access forbidden. Entry user id: '.$requestUserId.', logged user id: '.$currentUserId);
}
}
/**
* Send a JSON Response.
* We don't use the Symfony JsonRespone, because it takes an array as parameter instead of a JSON string.
*
* @param string $json
*
* @return Response
*/
private function renderJsonResponse($json)
{
return new Response($json, 200, array('application/json'));
}
}

View File

@ -0,0 +1,29 @@
<?php
namespace Wallabag\ApiBundle\DependencyInjection;
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
use Symfony\Component\Config\Definition\ConfigurationInterface;
/**
* This is the class that validates and merges configuration from your app/config files.
*
* To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html#cookbook-bundles-extension-config-class}
*/
class Configuration implements ConfigurationInterface
{
/**
* {@inheritdoc}
*/
public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('wallabag_api');
// Here you should define the parameters that are allowed to
// configure your bundle. See the documentation linked above for
// more information on that topic.
return $treeBuilder;
}
}

View File

@ -0,0 +1,40 @@
<?php
namespace Wallabag\ApiBundle\DependencyInjection\Security\Factory;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference;
use Symfony\Component\DependencyInjection\DefinitionDecorator;
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\SecurityFactoryInterface;
class WsseFactory implements SecurityFactoryInterface
{
public function create(ContainerBuilder $container, $id, $config, $userProvider, $defaultEntryPoint)
{
$providerId = 'security.authentication.provider.wsse.'.$id;
$container
->setDefinition($providerId, new DefinitionDecorator('wsse.security.authentication.provider'))
->replaceArgument(0, new Reference($userProvider))
;
$listenerId = 'security.authentication.listener.wsse.'.$id;
$listener = $container->setDefinition($listenerId, new DefinitionDecorator('wsse.security.authentication.listener'));
return array($providerId, $listenerId, $defaultEntryPoint);
}
public function getPosition()
{
return 'pre_auth';
}
public function getKey()
{
return 'wsse';
}
public function addConfiguration(NodeDefinition $node)
{
}
}

View File

@ -0,0 +1,25 @@
<?php
namespace Wallabag\ApiBundle\DependencyInjection;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader;
class WallabagApiExtension extends Extension
{
public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml');
}
public function getAlias()
{
return 'wallabag_api';
}
}

View File

@ -0,0 +1,4 @@
entries:
type: rest
resource: "WallabagApiBundle:WallabagRest"
name_prefix: api_

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