Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch accordion-about-wiki Excluding Merge-Ins
This is equivalent to a diff from cb2f254096 to 04bbb05df7
2020-04-05
| ||
14:28 | Use SVG icons to indicate the status and available actions for the accordion. ... (check-in: 6126a54132 user: florian tags: accordion-experiments) | |
2020-04-02
| ||
18:57 | Fix the "fossil revert" command so that it works even for a new --empty checkout. ... (check-in: 9aca02b73c user: drh tags: trunk) | |
18:56 | Fix the "fossil revert" command so that it works even for a new --empty checkout. ... (Closed-Leaf check-in: 04bbb05df7 user: drh tags: accordion-about-wiki) | |
00:15 | Attempting to add "accordion" action to the "About" sections of pages that have associated wiki. Basically works, but needs CSS tweaks, and possibly other UX improvements. ... (check-in: b17e4c5a77 user: drh tags: accordion-about-wiki) | |
2020-04-01
| ||
17:04 | merge trunk ... (Closed-Leaf check-in: 7da1aa6f31 user: bch tags: NULLSeparated) | |
16:14 | Fix the file_copy() procedure so that it sets the EXE bit on the copy if it was set on the source. ... (check-in: cb2f254096 user: drh tags: trunk) | |
12:57 | For self-registered accounts, increase the minimum userID length to 6 and check both the EVENT and USER tables for conflicting userIDs. ... (check-in: b13b651da2 user: drh tags: trunk) | |
Added src/accordion.js.
> > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # Attach appropriate javascript to each ".accordion" button so that # it expands and contracts when clicked. # var a = document.getElementsByClassName("accordion"); for(var i=0; i<a.length; i++){ var p = a[i].nextElementSibling; p.style.maxHeight = p.scrollHeight + "px"; a[i].addEventListener("click",function(){ var x = this.nextElementSibling; if( this.classList.contains("accordion_closed") ){ x.style.maxHeight = x.scrollHeight + "px"; }else{ x.style.maxHeight = "0"; } this.classList.toggle("accordion_closed"); }); } |
Changes to src/default_css.txt.
︙ | ︙ | |||
808 809 810 811 812 813 814 | //Note: .16em is suitable for element grouping. margin-left: .16em; margin-right: 0; } .nobr { white-space: nowrap; } | > > > > > > > > > > > > > > | 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 | //Note: .16em is suitable for element grouping. margin-left: .16em; margin-right: 0; } .nobr { white-space: nowrap; } .accordion { cursor: pointer; } .accordion:after { content: '\02796'; margin-left: 1em; } .accordion_closed:after { content: '\02795'; } .accordion_panel { overflow: hidden; transition: max-height 0.25s ease-out; } |
Changes to src/main.mk.
︙ | ︙ | |||
209 210 211 212 213 214 215 216 217 218 219 220 221 222 | $(SRCDIR)/../skins/rounded1/details.txt \ $(SRCDIR)/../skins/rounded1/footer.txt \ $(SRCDIR)/../skins/rounded1/header.txt \ $(SRCDIR)/../skins/xekri/css.txt \ $(SRCDIR)/../skins/xekri/details.txt \ $(SRCDIR)/../skins/xekri/footer.txt \ $(SRCDIR)/../skins/xekri/header.txt \ $(SRCDIR)/ci_edit.js \ $(SRCDIR)/copybtn.js \ $(SRCDIR)/diff.tcl \ $(SRCDIR)/forum.js \ $(SRCDIR)/graph.js \ $(SRCDIR)/href.js \ $(SRCDIR)/login.js \ | > | 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 | $(SRCDIR)/../skins/rounded1/details.txt \ $(SRCDIR)/../skins/rounded1/footer.txt \ $(SRCDIR)/../skins/rounded1/header.txt \ $(SRCDIR)/../skins/xekri/css.txt \ $(SRCDIR)/../skins/xekri/details.txt \ $(SRCDIR)/../skins/xekri/footer.txt \ $(SRCDIR)/../skins/xekri/header.txt \ $(SRCDIR)/accordion.js \ $(SRCDIR)/ci_edit.js \ $(SRCDIR)/copybtn.js \ $(SRCDIR)/diff.tcl \ $(SRCDIR)/forum.js \ $(SRCDIR)/graph.js \ $(SRCDIR)/href.js \ $(SRCDIR)/login.js \ |
︙ | ︙ |
Changes to src/style.c.
︙ | ︙ | |||
89 90 91 92 93 94 95 96 97 98 99 100 101 102 | /* ** Flags for various javascript files needed prior to </body> */ static int needHrefJs = 0; /* href.js */ static int needSortJs = 0; /* sorttable.js */ static int needGraphJs = 0; /* graph.js */ static int needCopyBtnJs = 0; /* copybtn.js */ /* ** Extra JS added to the end of the file. */ static Blob blobOnLoad = BLOB_INITIALIZER; /* | > | 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | /* ** Flags for various javascript files needed prior to </body> */ static int needHrefJs = 0; /* href.js */ static int needSortJs = 0; /* sorttable.js */ static int needGraphJs = 0; /* graph.js */ static int needCopyBtnJs = 0; /* copybtn.js */ static int needAccordionJs = 0; /* accordion.js */ /* ** Extra JS added to the end of the file. */ static Blob blobOnLoad = BLOB_INITIALIZER; /* |
︙ | ︙ | |||
678 679 680 681 682 683 684 685 686 687 688 689 690 691 | /* ** Indicate that the table-sorting javascript is needed. */ void style_table_sorter(void){ needSortJs = 1; } /* ** Indicate that the timeline graph javascript is needed. */ void style_graph_generator(void){ needGraphJs = 1; } | > > > > > > > | 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 | /* ** Indicate that the table-sorting javascript is needed. */ void style_table_sorter(void){ needSortJs = 1; } /* ** Indicate that the accordion javascript is needed. */ void style_accordion(void){ needAccordionJs = 1; } /* ** Indicate that the timeline graph javascript is needed. */ void style_graph_generator(void){ needGraphJs = 1; } |
︙ | ︙ | |||
748 749 750 751 752 753 754 755 756 757 758 759 760 761 | } if( needGraphJs ){ cgi_append_content(builtin_text("graph.js"),-1); } if( needCopyBtnJs ){ cgi_append_content(builtin_text("copybtn.js"),-1); } for(i=0; i<nJsToLoad; i++){ cgi_append_content(builtin_text(azJsToLoad[i]),-1); } if( blob_size(&blobOnLoad)>0 ){ @ window.onload = function(){ cgi_append_content(blob_buffer(&blobOnLoad), blob_size(&blobOnLoad)); cgi_append_content("\n}\n", -1); | > > > | 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 | } if( needGraphJs ){ cgi_append_content(builtin_text("graph.js"),-1); } if( needCopyBtnJs ){ cgi_append_content(builtin_text("copybtn.js"),-1); } if( needAccordionJs ){ cgi_append_content(builtin_text("accordion.js"),-1); } for(i=0; i<nJsToLoad; i++){ cgi_append_content(builtin_text(azJsToLoad[i]),-1); } if( blob_size(&blobOnLoad)>0 ){ @ window.onload = function(){ cgi_append_content(blob_buffer(&blobOnLoad), blob_size(&blobOnLoad)); cgi_append_content("\n}\n", -1); |
︙ | ︙ |
Changes to src/update.c.
︙ | ︙ | |||
686 687 688 689 690 691 692 693 694 695 696 697 698 699 | if( zRevision ){ vid = name_to_typed_rid(zRevision, "ci"); }else if( !g.localOpen ){ vid = name_to_typed_rid(db_get("main-branch", 0), "ci"); }else{ vid = db_lget_int("checkout", 0); if( !is_a_version(vid) ){ zRevision = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", vid); if( zRevision ){ fossil_fatal("checkout artifact is not a check-in: %s", zRevision); }else{ fossil_fatal("invalid checkout artifact ID: %d", vid); } } | > | 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 | if( zRevision ){ vid = name_to_typed_rid(zRevision, "ci"); }else if( !g.localOpen ){ vid = name_to_typed_rid(db_get("main-branch", 0), "ci"); }else{ vid = db_lget_int("checkout", 0); if( !is_a_version(vid) ){ if( vid==0 ) return 0; zRevision = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", vid); if( zRevision ){ fossil_fatal("checkout artifact is not a check-in: %s", zRevision); }else{ fossil_fatal("invalid checkout artifact ID: %d", vid); } } |
︙ | ︙ | |||
856 857 858 859 860 861 862 | int vid = db_lget_int("checkout", 0); zRevision = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", vid); } while( db_step(&q)==SQLITE_ROW ){ char *zFull; zFile = db_column_text(&q, 0); zFull = mprintf("%/%/", g.zLocalRoot, zFile); | | | 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 | int vid = db_lget_int("checkout", 0); zRevision = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", vid); } while( db_step(&q)==SQLITE_ROW ){ char *zFull; zFile = db_column_text(&q, 0); zFull = mprintf("%/%/", g.zLocalRoot, zFile); pRvFile = pRvManifest? manifest_file_find(pRvManifest, zFile) : 0; if( !pRvFile ){ if( db_int(0, "SELECT rid FROM vfile WHERE pathname=%Q OR origname=%Q", zFile, zFile)==0 ){ fossil_print("UNMANAGE %s\n", zFile); }else{ undo_save(zFile); file_delete(zFull); |
︙ | ︙ |
Changes to src/wiki.c.
︙ | ︙ | |||
1711 1712 1713 1714 1715 1716 1717 | */ static void wiki_section_label( const char *zPrefix, /* "branch", "tag", or "checkin" */ const char *zName, /* Name of the object */ unsigned int mFlags /* Zero or more WIKIASSOC_* flags */ ){ if( (mFlags & WIKIASSOC_FULL_TITLE)==0 ){ | | | | | 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 | */ static void wiki_section_label( const char *zPrefix, /* "branch", "tag", or "checkin" */ const char *zName, /* Name of the object */ unsigned int mFlags /* Zero or more WIKIASSOC_* flags */ ){ if( (mFlags & WIKIASSOC_FULL_TITLE)==0 ){ @ <div class="section accordion">About</div> }else if( zPrefix[0]=='c' ){ /* checkin/... */ @ <div class="section accordion">About checkin %.20h(zName)</div> }else{ @ <div class="section accordion">About %s(zPrefix) %h(zName)</div> } } /* ** Add an "Wiki" button in a submenu that links to the read-wiki page. */ static void wiki_submenu_to_read_wiki( |
︙ | ︙ | |||
1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 | markdown_to_html(&markdown, &title, &tail); if( blob_size(&title) ){ @ <div class="section">%h(blob_str(&title))</div> }else{ wiki_section_label(zPrefix, zName, mFlags); } wiki_submenu_to_read_wiki(zPrefix, zName, mFlags); convert_href_and_output(&tail); blob_reset(&tail); blob_reset(&title); blob_reset(&markdown); }else if( fossil_strcmp(pWiki->zMimetype, "text/plain")==0 ){ wiki_section_label(zPrefix, zName, mFlags); wiki_submenu_to_read_wiki(zPrefix, zName, mFlags); | > > | | | | | > | 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 | markdown_to_html(&markdown, &title, &tail); if( blob_size(&title) ){ @ <div class="section">%h(blob_str(&title))</div> }else{ wiki_section_label(zPrefix, zName, mFlags); } wiki_submenu_to_read_wiki(zPrefix, zName, mFlags); @ <div class="accordion_panel"> convert_href_and_output(&tail); @ </div> blob_reset(&tail); blob_reset(&title); blob_reset(&markdown); }else if( fossil_strcmp(pWiki->zMimetype, "text/plain")==0 ){ wiki_section_label(zPrefix, zName, mFlags); wiki_submenu_to_read_wiki(zPrefix, zName, mFlags); @ <div class="accordion_panel"><pre> @ %h(pWiki->zWiki) @ </pre></div> }else{ Blob tail = BLOB_INITIALIZER; Blob title = BLOB_INITIALIZER; Blob wiki; Blob *pBody; blob_init(&wiki, pWiki->zWiki, -1); if( wiki_find_title(&wiki, &title, &tail) ){ @ <div class="section accordion">%h(blob_str(&title))</div> pBody = &tail; }else{ wiki_section_label(zPrefix, zName, mFlags); pBody = &wiki; } wiki_submenu_to_read_wiki(zPrefix, zName, mFlags); @ <div class="accordion_panel"><div class="wiki"> wiki_convert(pBody, 0, WIKI_BUTTONS); @ </div></div> blob_reset(&tail); blob_reset(&title); blob_reset(&wiki); } manifest_destroy(pWiki); style_accordion(); return 1; } |
Changes to win/Makefile.mingw.
︙ | ︙ | |||
631 632 633 634 635 636 637 638 639 640 641 642 643 644 | $(SRCDIR)/../skins/rounded1/details.txt \ $(SRCDIR)/../skins/rounded1/footer.txt \ $(SRCDIR)/../skins/rounded1/header.txt \ $(SRCDIR)/../skins/xekri/css.txt \ $(SRCDIR)/../skins/xekri/details.txt \ $(SRCDIR)/../skins/xekri/footer.txt \ $(SRCDIR)/../skins/xekri/header.txt \ $(SRCDIR)/ci_edit.js \ $(SRCDIR)/copybtn.js \ $(SRCDIR)/diff.tcl \ $(SRCDIR)/forum.js \ $(SRCDIR)/graph.js \ $(SRCDIR)/href.js \ $(SRCDIR)/login.js \ | > | 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 | $(SRCDIR)/../skins/rounded1/details.txt \ $(SRCDIR)/../skins/rounded1/footer.txt \ $(SRCDIR)/../skins/rounded1/header.txt \ $(SRCDIR)/../skins/xekri/css.txt \ $(SRCDIR)/../skins/xekri/details.txt \ $(SRCDIR)/../skins/xekri/footer.txt \ $(SRCDIR)/../skins/xekri/header.txt \ $(SRCDIR)/accordion.js \ $(SRCDIR)/ci_edit.js \ $(SRCDIR)/copybtn.js \ $(SRCDIR)/diff.tcl \ $(SRCDIR)/forum.js \ $(SRCDIR)/graph.js \ $(SRCDIR)/href.js \ $(SRCDIR)/login.js \ |
︙ | ︙ |
Changes to win/Makefile.msc.
︙ | ︙ | |||
538 539 540 541 542 543 544 545 546 547 548 549 550 551 | $(SRCDIR)\..\skins\rounded1\details.txt \ $(SRCDIR)\..\skins\rounded1\footer.txt \ $(SRCDIR)\..\skins\rounded1\header.txt \ $(SRCDIR)\..\skins\xekri\css.txt \ $(SRCDIR)\..\skins\xekri\details.txt \ $(SRCDIR)\..\skins\xekri\footer.txt \ $(SRCDIR)\..\skins\xekri\header.txt \ $(SRCDIR)\ci_edit.js \ $(SRCDIR)\copybtn.js \ $(SRCDIR)\diff.tcl \ $(SRCDIR)\forum.js \ $(SRCDIR)\graph.js \ $(SRCDIR)\href.js \ $(SRCDIR)\login.js \ | > | 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 | $(SRCDIR)\..\skins\rounded1\details.txt \ $(SRCDIR)\..\skins\rounded1\footer.txt \ $(SRCDIR)\..\skins\rounded1\header.txt \ $(SRCDIR)\..\skins\xekri\css.txt \ $(SRCDIR)\..\skins\xekri\details.txt \ $(SRCDIR)\..\skins\xekri\footer.txt \ $(SRCDIR)\..\skins\xekri\header.txt \ $(SRCDIR)\accordion.js \ $(SRCDIR)\ci_edit.js \ $(SRCDIR)\copybtn.js \ $(SRCDIR)\diff.tcl \ $(SRCDIR)\forum.js \ $(SRCDIR)\graph.js \ $(SRCDIR)\href.js \ $(SRCDIR)\login.js \ |
︙ | ︙ |