Sascha Ißbrücker
dd5e65ecd7
Display selected tags in tag cloud ( #307 )
...
* Add links to remove tags from current query
* Display selected tags in tag cloud
* Add tag cloud tests
* Fix tag cloud in archive
* Add tests for bookmark views
* Expose parse query string
* Improve tag cloud tests
* Cleanup
* Fix rebase issues
* Ignore casing when removing tags from query
Co-authored-by: Jon Hauris <jonp@hauris.org>
2022-08-04 20:31:24 +02:00
Sascha Ißbrücker
fec966f687
Add bookmark sharing ( #311 )
...
* Allow marking bookmarks as shared
* Add basic share view
* Ensure tag names in tag cloud are unique
* Filter shared bookmarks by user
* Add link for filtering by user
* Prevent n+1 queries when rendering bookmark list
* Prevent empty query params in return URL
* Fix user select template tag name
* Create shared bookmarks through API
* List shared bookmarks through API
* Show bookmark suggestions for shared view
* Show unique tags in search suggestions
* Sort user options
* Add bookmark sharing feature flag
* Add test for share setting default
* Simplify settings view
2022-08-04 19:37:16 +02:00
Sascha Ißbrücker
e6718be53b
Update unread flag when saving duplicate URL ( #306 )
...
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@gmail.com>
2022-07-26 00:13:41 +02:00
Sascha Ißbrücker
54ce6d5fe6
Add RSS feeds ( #305 )
...
* Add basic unread bookmarks feed
* Generate user-specific feed
* Add feed tests
* Add all bookmarks feed
* Add feed token admin
* Add note about renewing URLs
* Add support for query parameter
* Fix rebase issues
* Improve docs on feeds integration
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@gmail.com>
2022-07-23 23:20:27 +02:00
Sascha Ißbrücker
13ff9ac4f8
Add read it later functionality ( #304 )
...
* Allow marking bookmarks as unread
* Restructure navigation to include preset filters
* Add mark as read action
* Improve description
* Highlight unread bookmarks visually
* Mark bookmarks as read by default
* Add tests
* Implement toread flag in importer
* Implement admin actions
* Add query tests
* Remove untagged link
* Update api docs
* Reduce height of description textarea
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@gmail.com>
2022-07-23 22:17:20 +02:00
Sascha Ißbrücker
b618a8b10b
Do not associate tags if bookmark was not imported
2022-07-03 14:44:16 +02:00
Dustin Blackman
b53bd9f112
Bump waybackpy to 3.0.6 ( #281 )
...
* fix wayback
* fix tests
* Reuse user agent from website loader
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@gmail.com>
2022-07-03 06:26:16 +02:00
Dave Onkels
75c0429973
Add apple-touch-icon reference in header ( #282 )
...
* Add apple-touch-icon reference in header
Recommend adding this reference to support an icon when adding a web app to an iOS homescreen.
* Add dedicated apple touch icon
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@gmail.com>
2022-07-03 06:05:20 +02:00
wahlm
0829d00e5f
no duplication of imported tags ( #289 )
...
* no duplication of imported tags (#287 )
* Add importer test
* Revert settings test
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@gmail.com>
2022-07-03 05:34:40 +02:00
Sascha Ißbrücker
68c3c27b38
Add PATCH support to bookmarks endpoint ( #269 )
...
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@gmail.com>
2022-05-26 04:15:13 +02:00
kenc
792a19d15e
Allow creating archived bookmark through REST API ( #268 )
...
* Add POST archived API endpoint
* Update API docs
* Expose is_archived in existing POST endpoint
* Add test to verify bookmark not archived by default
* Fix JSON payload in API docs
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@googlemail.com>
2022-05-26 04:10:36 +02:00
Sascha Ißbrücker
2de6d8151b
Improve about section ( #265 )
...
* Improve about section
* Add changelog link
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@gmail.com>
2022-05-21 21:33:08 +02:00
Sascha Ißbrücker
9e9d7ae7d2
Add background tasks to admin ( #264 )
...
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@gmail.com>
2022-05-21 18:21:10 +02:00
Sascha Ißbrücker
e08bf9fd03
Fake request headers to reduce bot detection ( #263 )
...
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@gmail.com>
2022-05-21 13:25:32 +02:00
Sascha Ißbrücker
d7f257b3c6
Allow searching for untagged bookmarks ( #226 )
...
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@gmail.com>
2022-05-21 09:50:51 +02:00
Sascha Ißbrücker
f4e3d724f0
Improve import performance ( #261 )
...
* Run import in batches, cache tags
* Use bulk operations for bookmarks and assigning tags
* Improve naming
* Restore bookmark validation
* Add logging
* Bulk create tags
* Use HTMLParser for parsing bookmarks
* add parser tests
* Add more importer tests
* Add more importer tests
* Remove pyparsing dependency
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@gmail.com>
2022-05-21 09:27:30 +02:00
Sascha Ißbrücker
117160ea87
Enforce CSRF check for acknowledging toasts
2022-05-20 16:51:50 +02:00
Sascha Ißbrücker
f92c3dd403
Make Internet Archive integration opt-in ( #250 )
...
* Make web archive integration opt-in
* Add toast message about web archive integration opt-in
* Improve wording for web archive setting
* Add toast admin
* Fix toast clear button visited styles
* Add test for redirect
* Improve wording
* Ensure redirects to same domain
* Improve wording
* Fix snapshot test
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@gmail.com>
2022-05-14 09:46:51 +02:00
Rithas K
c97d5c3dc5
Feature: Shortcut key for new bookmark ( #241 )
...
* Add shortcut key for new bookmark
* Use location.assign to keep history
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@gmail.com>
2022-05-14 08:44:03 +02:00
Sascha Ißbrücker
6cf35ecca6
Add whitespace after auto-completed tag ( #249 )
...
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@gmail.com>
2022-05-14 01:18:41 +02:00
Sascha Ißbrücker
dc0a4e33bd
Scroll menu items into view when using keyboard ( #248 )
...
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@gmail.com>
2022-05-14 01:02:48 +02:00
Sascha Ißbrücker
3906d9e5b8
Prevent external redirects
2022-03-27 11:47:45 +02:00
Sascha Ißbrücker
eca98a13f5
Prevent bookmark actions through get requests
2022-03-27 10:56:09 +02:00
Sascha Ißbrücker
edb71286e7
Prevent external redirects
2022-03-25 18:29:54 +01:00
Sascha Ißbrücker
1ffc3e0266
Fix bookmark access restrictions
2022-03-22 02:24:21 +01:00
Sascha Ißbrücker
82b4268a26
Ensure tag names don't contain spaces ( #184 )
2021-12-12 22:54:22 +01:00
Fivefold
5287eb3f8b
Make bookmarks count column in admin sortable ( #183 )
...
The Tag view in django admin has a calculated bookmark count column that is unsortable. This fixes it
2021-12-12 22:52:22 +01:00
Sascha Ißbrücker
5e003ede92
Change api token field to readonly
2021-10-16 05:43:35 +02:00
Sascha Ißbrücker
984eef92e2
Add password change view ( #168 )
2021-10-16 05:42:04 +02:00
Sascha Ißbrücker
eae6ca6e07
Merge API view with integrations view ( #165 )
2021-10-03 15:13:45 +02:00
Sascha Ißbrücker
4f9fcb41bd
Add bookmark link target setting ( #164 )
2021-10-03 09:35:59 +02:00
Sascha Ißbrücker
123fa54d5a
Fix jumping search box ( #163 )
2021-10-02 23:49:59 +02:00
Sascha Ißbrücker
3ff7a5ba91
Add global search shortcut ( #161 )
2021-10-01 18:02:34 +02:00
Sascha Ißbrücker
d87dde6bae
Create snapshots on web.archive.org for bookmarks ( #150 )
...
* Implement initial background tasks concept
* fix property reference
* update requirements.txt
* simplify bookmark null check
* improve web archive url display
* add background tasks test
* add basic supervisor setup
* schedule missing snapshot creation on login
* remove task locks and clear task history before starting background task processor
* batch create snapshots after import
* fix script reference in supervisord.conf
* add option to disable background tasks
* restructure feature overview
2021-09-04 22:31:04 +02:00
Sascha Ißbrücker
e47c00bd07
Add support for micro-, nanosecond timestamps in importer ( #151 )
2021-08-26 12:33:54 +02:00
Taku Izumi
937858cf58
Fix website scraper decoding content incorrectly ( #126 )
...
* Avoid stall on web scraping
This patch fixes stall on web scraping.
I encountered a stall (scraping never ends) when adding
a bookmark of some site.
To avoid this case, adding a timeout parameter at requests.get()
function is a solution.
Signed-off-by: Taku Izumi <admin@orz-style.com>
* Avoid character corruption of scraping some Japanese sites
This patch fixes character corruption of scraping some Japanese
sites. To avoid character corruption, I use r.content instead
of r.text in load_page function.
The reason of character corruption is encoding problem, I think.
r.text handles data as unicode encoded text, so if scraping
web site's charset is not unicode encoded, character corruption
occurs. r.content handles data as str[], we can avoid encoding
problem.
Signed-off-by: Taku Izumi <admin@orz-style.com>
* use charset_normalizer to determine response encoding
Co-authored-by: Taku Izumi <admin@orz-style.com>
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@googlemail.com>
2021-08-25 10:16:23 +02:00
Sascha Ißbrücker
8047ba6c63
Fix importer not validating bookmark models ( #149 )
2021-08-25 09:20:01 +02:00
Damanpreet Singh
de903bc341
Add about section in settings ( #134 )
...
* About section in settings
* Added about section in settings tab
* fix code style
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@googlemail.com>
2021-08-24 19:47:58 +02:00
Sascha Ißbrücker
cc04a17e2f
Upgrade Django major ( #144 )
...
* Bump dependency versions
* Configure default auto field implementation
* fix admin to use token proxy model
* update django docs link
2021-08-17 05:48:45 +02:00
ulixxe
048a8b1162
improve tag query performance ( #142 )
...
* changed query on tag search for speedup related to issues #112 and #141
* fix tests and only conditionally append tag filter
* add bookmark tags query tests
* reuse bookmark queries for tag queries
* fix tag query test setup
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@googlemail.com>
2021-08-15 09:28:40 +02:00
Sascha Ißbrücker
3e48b22095
Add settings view tests
2021-05-14 23:34:53 +02:00
Sascha Ißbrücker
d643fca98f
Add query tests
2021-05-14 10:26:33 +02:00
Sascha Ißbrücker
f58434077b
Add bookmark view tests
2021-05-14 02:32:19 +02:00
Sascha Ißbrücker
90f62d3482
Fix relative date formatting ( #107 )
2021-04-06 23:38:15 +02:00
Sascha Ißbrücker
2d19e97212
Allow editing of scraped values ( #80 )
...
* Allow editing scraped title + description (#80 )
* Fix edit button hijacking form submit
2021-04-04 10:16:40 +02:00
Sascha Ißbrücker
7a68a4abed
Display date_added in bookmark list ( #85 )
...
* Display date_added in bookmark list (#85 )
* Allow switching between different types of date formats
* Improve date formatting
* Use pluralize
* Fix comment
* Fix styles
Co-authored-by: Sascha Ißbrücker <sissbruecker@lyska.io>
2021-03-31 09:08:19 +02:00
Sascha Ißbrücker
0c1c21c8d1
Implement bulk edit ( #101 )
2021-03-29 00:43:50 +02:00
Sascha Ißbrücker
119d8f7efb
Implement dark theme ( #49 )
2021-03-28 12:11:56 +02:00
Sascha Ißbrücker
84508e07cd
Doc improvements ( #97 )
...
* Improve docs
* Improve docs
2021-03-20 11:58:20 +01:00
Sascha Ißbrücker
a02338cdec
Improve and promote admin panel ( #76 )
...
* Improve and promote admin panel (#76 )
* Customize admin panel texts (#76 )
* Improve settings structure (#76 )
* Improve admin list consistency (#76 )
* Fix redirect URLs (#76 )
* Add admin tooltip (#76 )
2021-02-24 03:36:27 +01:00
Sascha Ißbrücker
8c161ba119
Implement bookmark API tests
2021-02-20 09:01:38 +01:00
Sascha Ißbrücker
b7a8f9e53d
Mark optional fields in bookmark serializer ( #78 )
2021-02-18 22:02:45 +01:00
Sascha Ißbrücker
f7e6fbc588
Fix archive endpoints ( #77 )
2021-02-18 07:14:44 +01:00
Sascha Ißbrücker
778f1b2ff3
Remove legacy API ( #55 )
2021-02-16 04:45:21 +01:00
Sascha Ißbrücker
79dd4179d2
Add archive endpoints
2021-02-16 04:24:22 +01:00
Sascha Ißbrücker
3bab7db023
Enhance delete links with inline confirmation ( #74 )
2021-02-15 21:09:03 +01:00
Sascha Ißbrücker
c61e8ee2cd
Implement archive feature ( #73 )
...
* Implement archive function (#46 )
* Implement archive view (#46 )
* Filter tags for archived/unarchived (#46 )
* Implement archived bookmarks endpoint (#46 )
* Implement archive mode for search component (#46 )
* Move bookmarklet to settings (#46 )
* Update modified timestamp on archive/unarchive (#46 )
* Fix bookmarklet (#46 )
2021-02-14 18:00:22 +01:00
Sascha Ißbrücker
f555bba9e9
Fix mobile issues with searchbox and nav menu ( #72 )
...
* Fix mobile Safari searchbox style (#62 )
* Fix mobile menu not closing on outside click (#62 )
2021-02-07 00:10:02 +01:00
Sascha Ißbrücker
91d876a7f1
Add option to disable bookmark URL validation ( #57 )
...
* Add option for disabled bookmark URL validation (#36 )
* Add options documentation (#36 )
2021-02-06 16:27:19 +01:00
Sascha Ißbrücker
085027b00a
Show URL as fallback if no title is available ( #64 )
2021-01-16 00:57:57 +01:00
Sascha Ißbrücker
bea0fe3b70
Fix duplicate tags test
2021-01-13 09:43:17 +01:00
Sascha Ißbrücker
70953a52b9
Fix duplicate tag error ( #65 )
2021-01-12 22:42:56 +01:00
Sascha Ißbrücker
f8fc360d84
Add pagination ( #63 )
...
* Add pagination tag (#11 )
* Add pagination tag tests (#11 )
* Improve styling (#11 )
2021-01-11 17:49:53 +01:00
Sascha Ißbrücker
b844293342
Add favicon ( #60 )
...
Co-authored-by: Sascha Ißbrücker <sissbruecker@lyska.io>
2021-01-09 00:24:06 +01:00
Sascha Ißbrücker
9df270557f
Make tag search and assignment case insensitive ( #56 )
...
* Make tag assignment and search case-insensitive (#45 )
* Add tests for tag case-sensitivity and deduplication (#45 )
Co-authored-by: Sascha Ißbrücker <sissbruecker@lyska.io>
2021-01-02 11:30:20 +01:00
Sascha Ißbrücker
c13b27e170
Add search autocomplete ( #53 )
...
* Implement search autocomplete for recent searches
* Implement search autocomplete for bookmarks
* Fix URL encoding of query param
* Add tag suggestions to search autocomplete
Co-authored-by: Sascha Ißbrücker <sissbruecker@lyska.io>
2020-12-31 09:47:51 +01:00
Sascha Ißbrücker
779de41b65
Implement custom netscape file parser ( #51 )
...
* Implement custom Netscape file parser (#50 )
* Add environment variable to configure request timeouts (#50 )
Co-authored-by: Sascha Ißbrücker <sissbruecker@lyska.io>
2020-12-31 07:02:28 +01:00
Sascha Ißbrücker
477fed284d
#47 Fix description import ( #48 )
...
Co-authored-by: Sascha Ißbrücker <sissbruecker@lyska.io>
2020-12-29 13:14:10 +01:00
Kirill Goncharov
1cb2f552a4
Add rel=noopener attribute to external links ( #44 )
2020-12-28 15:11:55 +01:00
Sascha Ißbrücker
719a11a658
Add URL to search query
2020-12-28 06:46:43 +01:00
Sascha Ißbrücker
e497bcb5c0
#24 Implement REST API ( #32 )
...
* #24 Implement readonly bookmark API
* #24 Implement create/update bookmark API
* #24 Fix title, description not allowing blank values
* #24 Code cleanup
* #24 Add modification dates to response
* #24 Add API docs
* #24 Implement delete bookmark API
* #24 Fix API docs link
* #24 Fix API docs link
* #24 Implement tag API
Co-authored-by: Sascha Ißbrücker <sissbruecker@lyska.io>
2020-09-27 09:34:56 +02:00
Sascha Ißbrücker
c80f26dd34
#26 Return to same page after editing or deleting bookmark
2020-09-13 10:56:03 +02:00
Sascha Ißbrücker
8a208cad07
#25 Increase bookmark URL length limit
2020-09-13 09:05:50 +02:00
Sascha Ißbrücker
348a536aa3
#23 Prevent bookmark duplicates
...
* Show hint if URL is already bookmarked
* Remove hint if URL belongs to edited bookmark
* Fix query param encoding
* Update bookmark instead of duplicating it
Co-authored-by: Sascha Ißbrücker <sissbruecker@lyska.io>
2020-09-13 08:46:07 +02:00
Sascha Ißbrücker
10fd3d89be
Add error handling and logging for importer
2020-06-07 14:15:44 +02:00
Arpit
9275baabd2
Use system timezone for bookmark's "Added date"
2020-06-06 23:05:57 +05:30
Arpit
81d1fd1e6a
Use a default value if attribute missing from tag
2020-06-06 23:05:42 +05:30
Sascha Ißbrücker
18d4831a5d
#3 Alternative add bookmark button on smaller screens
2020-01-12 15:49:46 +01:00
Liron Shimrony
97f47713ab
- Added Tags in the admin page
...
- Added searching and filter capabilities in the Bookmarks section in the admin page
2019-12-28 16:44:14 -05:00
Sascha Ißbrücker
e341d666af
Implement tag auto-completion
2019-12-27 12:46:54 +01:00
Sascha Ißbrücker
70b66122c8
Implement tag auto-completion
2019-12-27 12:32:44 +01:00
Sascha Ißbrücker
9ff8356a4d
Improve form styles
2019-12-26 23:56:54 +01:00
Sascha Ißbrücker
b58633c377
Fix empty search showing tags without bookmarks
2019-12-26 23:51:52 +01:00
Sascha Ißbrücker
4c038f8157
Implement bookmark export
2019-12-26 22:41:30 +01:00
Sascha Ißbrücker
991025d13e
Implement bookmark export
2019-12-26 13:45:12 +01:00
Sascha Ißbrücker
1896a8136e
Implement optional registration
2019-12-24 13:31:55 +01:00
Sascha Ißbrücker
2693ba57c8
Improve mobile layout
2019-07-07 09:22:55 +02:00
Sascha Ißbrücker
7b27862795
Add empty bookmarks message
2019-07-06 17:31:43 +02:00
Sascha Ißbrücker
1b7f57999d
Improve URL handling
...
Extract bookmark list tag
2019-07-06 17:17:14 +02:00
Sascha Ißbrücker
25e74088b8
Simplify view naming
2019-07-06 08:14:13 +02:00
Sascha Ißbrücker
89855bb01f
Encode URL parameter in bookmarklet
2019-07-06 07:47:12 +02:00
Sascha Ißbrücker
312ab3db17
Implement bookmarklet
2019-07-05 22:29:21 +02:00
Sascha Ißbrücker
4f8a66b3bd
Fix module references
2019-07-05 19:26:46 +02:00
Sascha Ißbrücker
7e9db1588f
Implement bookmark import form
2019-07-05 10:04:52 +02:00
Sascha Ißbrücker
d57ea27ba3
Create docker image
2019-07-03 17:18:29 +02:00
Sascha Ißbrücker
fdcd9cb42c
Implement login and logout views
2019-07-02 09:34:12 +02:00
Sascha Ißbrücker
d2f896966a
Cleanup
2019-07-02 02:05:09 +02:00
Sascha Ißbrücker
e07da529f1
Preview website title + description in bookmark form
...
Fix unnecessary selects when rendering bookmarks
2019-07-02 01:28:02 +02:00
Sascha Ißbrücker
0e872c754b
Edit bookmark tags
2019-07-01 22:05:38 +02:00
Sascha Ißbrücker
3b753a601f
Style bookmark form
2019-07-01 21:03:27 +02:00
Sascha Ißbrücker
e157bcd34f
Filter tag cloud based on search query
2019-06-30 21:15:02 +02:00
Sascha Ißbrücker
ff68d2591f
Implement tag search
2019-06-30 19:54:33 +02:00
Sascha Ißbrücker
4658ec9d7b
Cleanup styles
2019-06-30 19:33:36 +02:00
Sascha Ißbrücker
9323b9da77
Implement tag cloud on bookmark page
2019-06-30 19:31:32 +02:00
Sascha Ißbrücker
accc360ae5
Display tags in bookmark list
2019-06-30 08:24:21 +02:00
Sascha Ißbrücker
4a16e4d64c
Implement tag model
2019-06-30 07:15:46 +02:00
Sascha Ißbrücker
74bcc30821
Style bookmarks page
2019-06-29 19:45:08 +02:00
Sascha Ißbrücker
5fad8b798d
Add SASS preprocessing
2019-06-29 14:03:29 +02:00
Sascha Ißbrücker
10b1570a64
Implement basic search
2019-06-29 12:53:37 +02:00
Sascha Ißbrücker
0177660cf6
Implement basic paging
2019-06-29 09:15:07 +02:00
Sascha Ißbrücker
9eefd479c6
Implement basic importer
2019-06-29 08:42:54 +02:00
Sascha Ißbrücker
451a049d46
Implement fetching website metadata
2019-06-29 02:01:26 +02:00
Sascha Ißbrücker
ba3d4eb663
Refactor packages
2019-06-29 01:08:22 +02:00
Sascha Ißbrücker
251fda609c
Extract bookmark form tag
2019-06-29 01:00:52 +02:00
Sascha Ißbrücker
37ee00077a
Implement edit bookmark route
2019-06-29 00:27:20 +02:00
Sascha Ißbrücker
c653206dd3
Implement add bookmark route
2019-06-28 19:37:41 +02:00
Sascha Ißbrücker
e2a834a56c
Add and improve routes
2019-06-28 07:33:08 +02:00
Sascha Ißbrücker
fc2794aa61
Implement basic bookmark page
2019-06-27 08:09:51 +02:00