Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | In the forum, omit unnecessary query parameters on generated URLs, so that it is easier to copy/paste URLs into commit messages or chat windows. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
168eb71643a47549b901243a5061df5e |
User & Date: | drh 2022-01-02 20:46:47 |
References
2022-11-19
| ||
16:19 | Fix malformed hyperlink for historical revisions of a forum post. Perhaps introduced by check-in [168eb71643a4]. Reported by forum post 44505ae8ec51. ... (check-in: 114b17c4 user: george tags: trunk) | |
Context
2022-01-04
| ||
01:13 | Cross-link the ssl-server.md and ssl.wiki documents. Both of them still need improvements. Some Pikchr diagrams would be a great addition. ... (check-in: 939753d0 user: drh tags: trunk) | |
2022-01-02
| ||
20:46 | In the forum, omit unnecessary query parameters on generated URLs, so that it is easier to copy/paste URLs into commit messages or chat windows. ... (check-in: 168eb716 user: drh tags: trunk) | |
20:20 | Warn against adding the private-key used by Fossil's built-in self-signed cert to the OS's trust store. ... (check-in: 890b49f8 user: drh tags: trunk) | |
Changes
Changes to src/forum.c.
︙ | ︙ | |||
498 499 500 501 502 503 504 | zPosterName = forum_post_display_name(p, pManifest); zEditorName = zPosterName; } zDate = db_text(0, "SELECT datetime(%.17g,toLocal())", p->rDate); if( p->pEditPrev ){ zPosterName = forum_post_display_name(p->pEditHead, 0); zEditorName = forum_post_display_name(p, pManifest); | | | | | | | 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 | zPosterName = forum_post_display_name(p, pManifest); zEditorName = zPosterName; } zDate = db_text(0, "SELECT datetime(%.17g,toLocal())", p->rDate); if( p->pEditPrev ){ zPosterName = forum_post_display_name(p->pEditHead, 0); zEditorName = forum_post_display_name(p, pManifest); zHist = bHist ? "" : zQuery[0]==0 ? "?hist" : "&hist"; @ <h3 class='forumPostHdr'>(%d(p->sid)\ @ .%0*d(fossil_num_digits(p->nEdit))(p->rev)) \ if( fossil_strcmp(zPosterName, zEditorName)==0 ){ @ By %s(zPosterName) on %h(zDate) edited from \ @ %z(href("%R/forumpost/%S?%s%s",p->pEditPrev->zUuid,zQuery,zHist))\ @ %d(p->sid).%0*d(fossil_num_digits(p->nEdit))(p->pEditPrev->rev)</a> }else{ @ Originally by %s(zPosterName) \ @ with edits by %s(zEditorName) on %h(zDate) from \ @ %z(href("%R/forumpost/%S%s%s",p->pEditPrev->zUuid,zQuery,zHist))\ @ %d(p->sid).%0*d(fossil_num_digits(p->nEdit))(p->pEditPrev->rev)</a> } }else{ zPosterName = forum_post_display_name(p, pManifest); @ <h3 class='forumPostHdr'>(%d(p->sid)) \ @ By %s(zPosterName) on %h(zDate) } fossil_free(zDate); /* If debugging is enabled, link to the artifact page. */ if( g.perm.Debug ){ @ <span class="debug">\ @ <a href="%R/artifact/%h(p->zUuid)">(artifact-%d(p->fpid))</a></span> } /* If this is a reply, refer back to the parent post. */ if( p->pIrt ){ @ in reply to %z(href("%R/forumpost/%S%s",p->pIrt->zUuid,zQuery))\ @ %d(p->pIrt->sid)\ if( p->pIrt->nEdit ){ @ .%0*d(fossil_num_digits(p->pIrt->nEdit))(p->pIrt->rev)\ } @ </a> } /* If this post was later edited, refer forward to the next edit. */ if( p->pEditNext ){ @ updated by %z(href("%R/forumpost/%S%s",p->pEditNext->zUuid,zQuery))\ @ %d(p->pEditNext->sid)\ @ .%0*d(fossil_num_digits(p->nEdit))(p->pEditNext->rev)</a> } /* Provide a link to select the individual post. */ if( !bSelect ){ @ %z(href("%R/forumpost/%!S%s",p->zUuid,zQuery))[link]</a> } /* Provide a link to the raw source code. */ if( !bUnf ){ @ %z(href("%R/forumpost/%!S?raw",p->zUuid))[source]</a> } @ </h3> |
︙ | ︙ | |||
630 631 632 633 634 635 636 637 638 639 640 641 642 | ** Display a forum thread. If mode is FD_RAW or FD_SINGLE, display only a ** single post from the thread and (optionally) its edit history. */ static void forum_display_thread( int froot, /* Forum thread root post ID */ int fpid, /* Selected forum post ID, or 0 if none selected */ int mode, /* Forum display mode, one of the FD_* enumerations */ int bUnf, /* True if rendering unformatted */ int bHist /* True if showing edit history, ignored for FD_RAW */ ){ ForumThread *pThread; /* Thread structure */ ForumPost *pSelect; /* Currently selected post, or NULL if none */ ForumPost *p; /* Post iterator pointer */ | > | > | 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 | ** Display a forum thread. If mode is FD_RAW or FD_SINGLE, display only a ** single post from the thread and (optionally) its edit history. */ static void forum_display_thread( int froot, /* Forum thread root post ID */ int fpid, /* Selected forum post ID, or 0 if none selected */ int mode, /* Forum display mode, one of the FD_* enumerations */ int autoMode, /* mode was selected automatically */ int bUnf, /* True if rendering unformatted */ int bHist /* True if showing edit history, ignored for FD_RAW */ ){ ForumThread *pThread; /* Thread structure */ ForumPost *pSelect; /* Currently selected post, or NULL if none */ ForumPost *p; /* Post iterator pointer */ char zQuery[30]; /* Common query string */ int iIndentScale = 4; /* Indent scale factor, measured in "ex" units */ int sid; /* Comparison serial ID */ int i; /* In raw mode, force unformatted display and disable history. */ if( mode == FD_RAW ){ bUnf = 1; bHist = 0; } |
︙ | ︙ | |||
673 674 675 676 677 678 679 | ** selected forum post does not exist in the thread. Otherwise proceed to ** display the entire thread without marking any posts as selected. */ if( !pSelect && (mode==FD_RAW || mode==FD_SINGLE) ){ return; } /* Create the common query string to append to nearly all post links. */ | > > > | > | > > > > > > > > > > > > > > | > > > > > > > > | 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 | ** selected forum post does not exist in the thread. Otherwise proceed to ** display the entire thread without marking any posts as selected. */ if( !pSelect && (mode==FD_RAW || mode==FD_SINGLE) ){ return; } /* Create the common query string to append to nearly all post links. */ i = 0; if( !autoMode ){ char m = 'a'; switch( mode ){ case FD_RAW: m = 'r'; break; case FD_CHRONO: m = 'c'; break; case FD_HIER: m = 'h'; break; case FD_SINGLE: m = 's'; break; } zQuery[i++] = '?'; zQuery[i++] = 't'; zQuery[i++] = '='; zQuery[i++] = m; } if( bUnf ){ zQuery[i] = i==0 ? '?' : '&'; i++; zQuery[i++] = 'u'; zQuery[i++] = 'n'; zQuery[i++] = 'f'; } if( bHist ){ zQuery[i] = i==0 ? '?' : '&'; i++; zQuery[i++] = 'h'; zQuery[i++] = 'i'; zQuery[i++] = 's'; zQuery[i++] = 't'; } assert( i<sizeof(zQuery) ); zQuery[i] = 0; /* Identify which post to display first. If history is shown, start with the ** original, unedited post. Otherwise advance to the post's latest edit. */ if( mode==FD_RAW || mode==FD_SINGLE ){ p = pSelect; if( bHist && p->pEditHead ) p = p->pEditHead; }else{ |
︙ | ︙ | |||
742 743 744 745 746 747 748 | @ <td>%S(p->zUuid)</tr> } @ </table> } /* Clean up. */ forumthread_delete(pThread); | < | 770 771 772 773 774 775 776 777 778 779 780 781 782 783 | @ <td>%S(p->zUuid)</tr> } @ </table> } /* Clean up. */ forumthread_delete(pThread); } /* ** Emit Forum Javascript which applies (or optionally can apply) ** to all forum-related pages. It does not include page-specific ** code (e.g. "forum.js"). */ |
︙ | ︙ | |||
811 812 813 814 815 816 817 818 819 820 821 822 823 824 | char *zThreadTitle; const char *zName = P("name"); const char *zMode = PD("t","a"); int bRaw = PB("raw"); int bUnf = PB("unf"); int bHist = PB("hist"); int mode = 0; login_check_credentials(); if( !g.perm.RdForum ){ login_needed(g.anon.RdForum); return; } if( zName==0 ){ webpage_error("Missing \"name=\" query parameter"); | > | 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 | char *zThreadTitle; const char *zName = P("name"); const char *zMode = PD("t","a"); int bRaw = PB("raw"); int bUnf = PB("unf"); int bHist = PB("hist"); int mode = 0; int autoMode = 0; login_check_credentials(); if( !g.perm.RdForum ){ login_needed(g.anon.RdForum); return; } if( zName==0 ){ webpage_error("Missing \"name=\" query parameter"); |
︙ | ︙ | |||
844 845 846 847 848 849 850 | bUnf = 1; bHist = 0; cgi_replace_query_parameter("unf", "on"); cgi_delete_query_parameter("hist"); cgi_delete_query_parameter("raw"); }else{ switch( *zMode ){ | | > | 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 | bUnf = 1; bHist = 0; cgi_replace_query_parameter("unf", "on"); cgi_delete_query_parameter("hist"); cgi_delete_query_parameter("raw"); }else{ switch( *zMode ){ case 'a': mode = cgi_from_mobile() ? FD_CHRONO : FD_HIER; autoMode=1; break; case 'c': mode = FD_CHRONO; break; case 'h': mode = FD_HIER; break; case 's': mode = FD_SINGLE; break; case 'r': mode = FD_CHRONO; break; case 'y': mode = FD_SINGLE; break; default: webpage_error("Invalid thread mode: \"%s\"", zMode); } |
︙ | ︙ | |||
885 886 887 888 889 890 891 | style_submenu_element("Hierarchical", "%R/%s/%s?t=h%s%s", g.zPath, zName, bUnf ? "&unf" : "", bHist ? "&hist" : ""); } style_submenu_checkbox("unf", "Unformatted", 0, 0); style_submenu_checkbox("hist", "History", 0, 0); /* Display the thread. */ | | | 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 | style_submenu_element("Hierarchical", "%R/%s/%s?t=h%s%s", g.zPath, zName, bUnf ? "&unf" : "", bHist ? "&hist" : ""); } style_submenu_checkbox("unf", "Unformatted", 0, 0); style_submenu_checkbox("hist", "History", 0, 0); /* Display the thread. */ forum_display_thread(froot, fpid, mode, autoMode, bUnf, bHist); /* Emit Forum Javascript. */ builtin_request_js("forum.js"); forum_emit_js(); /* Emit the page style. */ style_finish_page(); |
︙ | ︙ |