Commit Graph

216 Commits

Author SHA1 Message Date
Hamid Reza Mohammadi
a1c500daee homepage search improvements
#511
2026-10-02 14:17:19 +03:30
Hamid Reza Mohammadi
2651e603c4 homepage search improvements
#511
2026-10-02 13:08:57 +03:30
Hamid Reza Mohammadi
b2e03dd839 homepage search improvements
#511
2026-10-02 13:00:36 +03:30
Hamid Reza Mohammadi
a0a7558d8b people tags #387 2026-10-02 09:18:40 +03:30
Hamid Reza Mohammadi
872a8aab61 people tags #387 2026-10-02 09:12:19 +03:30
Hamid Reza Mohammadi
433cffa5ae people tags #387 2026-10-02 08:06:26 +03:30
Hamid Reza Mohammadi
6fb3425fde people tags #387 2026-09-30 18:38:55 +03:30
Hamid Reza Mohammadi
f305394ad7 people tags #387 2026-09-30 18:17:44 +03:30
Hamid Reza Mohammadi
0cb288228d people tags #387 2026-09-29 21:10:46 +03:30
Hamid Reza Mohammadi
e0ab9915b6 people tags #387 2026-09-29 19:53:09 +03:30
Hamid Reza Mohammadi
9d12c23400 people tags #387 2026-09-29 17:13:02 +03:30
Hamid Reza Mohammadi
fa8544b62d people tags #387 2026-09-28 15:06:14 +03:30
Hamid Reza Mohammadi
073222ec6d people tags #387 2026-09-28 13:48:43 +03:30
Hamid Reza Mohammadi
14461c362f #421 geo tag suggestion 2026-09-27 21:58:43 +03:30
Hamid Reza Mohammadi
7a722455ec CSRF antiforgery fixes 2026-09-27 14:03:38 +03:30
Hamid Reza Mohammadi
ab254fefd5 commennt sanitization 2026-09-26 21:32:02 +03:30
Ehsan Mohandesi
cb7b1b03a3 Replace Spotify search with a validated music link box
The Spotify Web API integration stopped working, leaving /spotify unable to
suggest songs at all. Replace the artist/album/track search flow with a single
box where the user pastes a link to the track on a music service.

Links are checked against a hardcoded allow-list of legal streaming and store
domains so links to ripped audio cannot be submitted. The check lives in the
service layer, not just the page: any authenticated user can POST to
/api/ganjoor/song directly and bypass the UI. Hosts are matched against the
full host or a dot-prefixed suffix, so look-alikes such as
open.spotify.com.evil.com are rejected; https is required, and userinfo and
non-default ports are refused. Accepted URLs are canonicalised - https,
lowercased host, tracking parameters stripped - so the same track always yields
the same stored URL and duplicate detection actually works.

Links are stored under one new type, PoemMusicTrackType.MusicUrl, with the
platform derived from the host at render time. That needs no migration or
backfill, and supporting another service later needs no new enum value. The
duplicate check no longer keys on TrackType, which closes a gap where the same
URL could be resubmitted as a different type. Several links per poem remain
allowed; only an identical URL for the same poem is refused.

The Spotify search page and its OAuth plumbing are kept and simply redirect to
/musiclink while the existing SpotifyWorking flag is false, so the old flow can
be restored if that API ever works again.

Track URLs are no longer written through Html.Raw into href attributes. They
previously came from the Spotify API; now that they are user supplied, encoding
them prevents stored XSS.

Also fixes two latent bugs in SuggestSong that this flow would have hit: a null
dereference when TrackUrl is empty, and a singer lookup that matched any singer
with an empty Url.
2026-09-13 22:16:18 -05:00
Hamid Reza Mohammadi
fb87847d65 recitation icons fix 2026-09-12 12:23:36 +03:30
Hamid Reza Mohammadi
157565496d lock on recitation 2026-09-12 12:15:01 +03:30
Hamid Reza Mohammadi
566ff6d002 go to current position of recitation 2026-09-12 09:42:42 +03:30
Hamid Reza Mohammadi
5ebf07d485 bottpm audio player 2026-09-12 07:38:52 +03:30
Hamid Reza Mohammadi
4369252060 recitation currrent audio sync fix 2026-09-11 07:47:15 +03:30
Hamid Reza Mohammadi
c0803000f3 double click to open beyt partial control 2026-09-02 13:59:03 +03:30
hesamat
fcffceeac2 Tooltip and page hierarchy styling fixes.
- Refine #page-hierarchy h2 a style: IranNastaliq, 2.1rem, line-height 2.4,
  5px 20px padding, max-width 575px, font-smoothing and legibility hints.
- Keep tooltip dark in both color schemes.
- Style tooltip links with white text and a subtle white hover highlight.
- Match the tooltip arrow to the dark tooltip background.
- Make the tooltip close button separator gold for better visibility.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-22 00:00:23 -07:00
N3TC4T
83598acf10
Fix tooltip item color dark 2026-08-21 17:47:34 +02:00
Claude
f09b9de84a User panel: Phase 0 shared UI foundations
- Add design-token stylesheet (wwwroot/css/user-panel.css): CSS variables
  derived from the existing p8.css palette (brand maroon, success/danger
  colors, radius, shadow), plus reusable component classes (card, button
  variants, alert, badge, empty state, pagination, list item, toast,
  confirm modal). Includes a prefers-color-scheme dark block compatible
  with the existing toggleColorScheme() mechanism in bk.js.
- Add wwwroot/js/user-panel.js: upConfirm() and upToast() helpers as
  styled, promise-based replacements for window.confirm()/alert(),
  falling back to the native dialogs if the modal/toast markup isn't
  present on a page.
- Add Areas/User/Pages/Shared/ partials: _Pagination (wraps the
  List<NameIdUrlImage> pattern already used by every list page),
  _EmptyState, _Toasts and _ConfirmModal (hosts, included once by the
  layout).
- Wire the new stylesheet/script and the toast/modal hosts into
  _UserPanelLayout.cshtml.
- Refactor Notifications.cshtml as a first demonstration: replaces the
  hand-rolled pagination loop, manual gray/lightsteelblue row
  alternation, and confirm()/alert() calls with the new components.

No backend/API changes. Rest of the User area is untouched pending
Phase 1+ (nav/dashboard, forms, remaining list pages, moderation
queues, editors).
2026-08-05 12:58:00 +03:30
Hamid Reza Mohammadi
7eb727431b two step pagination 2026-08-04 20:59:19 +03:30
Hamid Reza Mohammadi
2fcf7241f2 new sorting option 2026-08-04 20:58:05 +03:30
Hamid Reza Mohammadi
1e4527591c #495 comments pagination 2026-08-04 19:00:08 +03:30
Hamid Reza Mohammadi
ff3e82e897 #495 comment ratings 2026-08-04 18:24:35 +03:30
Hamid Reza Mohammadi
6cda2ab299 refactoring 2026-07-16 16:39:13 +03:30
Hamid Reza Mohammadi
412a77a30c #493 last visit of user for poem 2026-06-27 15:58:22 +03:30
Hamid Reza Mohammadi
c8e675cb1f #489 making Vazirmatn font local 2026-06-08 18:39:54 +03:30
Hamid Reza Mohammadi
9407babe79 display stats of visits for categories and poems
#481
2025-05-25 08:17:29 +03:30
Hamid Reza Mohammadi
9d118cc218 display stats of visits for categories and poems
#481
2025-05-23 08:39:50 +03:30
Hamid Reza Mohammadi
18aaececca display stats of visits for categories and poems
#481
2025-05-22 10:03:20 +03:30
Hamid Reza Mohammadi
6f1328e508 display stats of visits for categories and poems
#481
2025-05-22 09:43:58 +03:30
Hamid Reza Mohammadi
6f552089b9 #480 using google Vazirmatn instead of local Vazir font 2025-05-18 18:19:08 +03:30
Hamid Reza Mohammadi
19035a62fe labels for charts are unreadable in dark mode
#479
2025-04-01 11:15:38 +03:30
Hamid Reza Mohammadi
25394f8b6e #478 contribs page 2025-03-30 21:06:51 +03:30
Hamid Reza Mohammadi
22fb47c3a7 #478 contribs page 2025-03-30 19:55:50 +03:30
Hamid Reza Mohammadi
a9c1dfe8a1 #478 contribs page 2025-03-29 21:04:35 +03:30
Hamid Reza Mohammadi
483834df4e #478 extending charts 2025-03-29 20:05:21 +03:30
Hamid Reza Mohammadi
b2d10c2df9 restore poets page layout to make all its sections accessible while scrolling #475 2025-03-12 20:07:44 +03:30
Hamid Reza Mohammadi
61aeba8558 restore poets page layout to make all its sections accessible while scrolling #475 2025-03-12 19:57:23 +03:30
Hamid Reza Mohammadi
d6943b542d comparison of usage stats of a selected word among all poets #471 2025-03-09 14:33:17 +03:30
Hamid Reza Mohammadi
d9fb060fb9 comparison of usage stats of a selected word among all poets #471 2025-03-09 14:28:47 +03:30
Hamid Reza Mohammadi
25e2722ba2 comparison of usage stats of a selected word among all poets #471 2025-03-08 19:41:04 +03:30
Hamid Reza Mohammadi
8b0a9ca025 comparison of usage stats of a selected word among all poets #471 2025-03-05 16:45:13 +03:30
Hamid Reza Mohammadi
d1930c7a8b removing naskban links: bug fix + an option for not removing ganjoor links 2025-02-03 16:59:31 +03:30