| | @@ -1691,17 +1691,17 @@ |
| 1691 | 1691 | int stdClrFound = 0; |
| 1692 | 1692 | int i; |
| 1693 | 1693 | |
| 1694 | 1694 | @ <table border="0" cellpadding="0" cellspacing="1"> |
| 1695 | 1695 | if( zIdPropagate ){ |
| 1696 | | - @ <tr><td colspan="6" align="left"> |
| 1696 | + @ <tr><td colspan="6" align="left"><label> |
| 1697 | 1697 | if( fPropagate ){ |
| 1698 | 1698 | @ <input type="checkbox" name="%s(zIdPropagate)" checked="checked" /> |
| 1699 | 1699 | }else{ |
| 1700 | 1700 | @ <input type="checkbox" name="%s(zIdPropagate)" /> |
| 1701 | 1701 | } |
| 1702 | | - @ Propagate color to descendants</td></tr> |
| 1702 | + @ Propagate color to descendants</label></td></tr> |
| 1703 | 1703 | } |
| 1704 | 1704 | @ <tr> |
| 1705 | 1705 | for(i=0; i<nColor; i++){ |
| 1706 | 1706 | const char *zClr = aColor[i].zColor; |
| 1707 | 1707 | if( zClr==0 ) zClr = aColor[i].zCName; |
| | @@ -1797,10 +1797,11 @@ |
| 1797 | 1797 | const char *zNewBrFlag; |
| 1798 | 1798 | const char *zNewBranch; |
| 1799 | 1799 | const char *zCloseFlag; |
| 1800 | 1800 | int fPropagateColor; /* True if color propagates before edit */ |
| 1801 | 1801 | int fNewPropagateColor; /* True if color propagates after edit */ |
| 1802 | + const char *zChngTime = 0; /* Value of chngtime= query param, if any */ |
| 1802 | 1803 | char *zUuid; |
| 1803 | 1804 | Blob comment; |
| 1804 | 1805 | Stmt q; |
| 1805 | 1806 | |
| 1806 | 1807 | login_check_credentials(); |
| | @@ -1811,10 +1812,11 @@ |
| 1811 | 1812 | " FROM event WHERE objid=%d", rid); |
| 1812 | 1813 | if( zComment==0 ) fossil_redirect_home(); |
| 1813 | 1814 | if( P("cancel") ){ |
| 1814 | 1815 | cgi_redirectf("ci?name=%s", zUuid); |
| 1815 | 1816 | } |
| 1817 | + if( g.perm.Setup ) zChngTime = P("chngtime"); |
| 1816 | 1818 | zNewComment = PD("c",zComment); |
| 1817 | 1819 | zUser = db_text(0, "SELECT coalesce(euser,user)" |
| 1818 | 1820 | " FROM event WHERE objid=%d", rid); |
| 1819 | 1821 | if( zUser==0 ) fossil_redirect_home(); |
| 1820 | 1822 | zNewUser = PDT("u",zUser); |
| | @@ -1842,11 +1844,11 @@ |
| 1842 | 1844 | char *zNow; |
| 1843 | 1845 | int nChng = 0; |
| 1844 | 1846 | |
| 1845 | 1847 | login_verify_csrf_secret(); |
| 1846 | 1848 | blob_zero(&ctrl); |
| 1847 | | - zNow = date_in_standard_format("now"); |
| 1849 | + zNow = date_in_standard_format(zChngTime ? zChngTime : "now"); |
| 1848 | 1850 | blob_appendf(&ctrl, "D %s\n", zNow); |
| 1849 | 1851 | db_multi_exec("CREATE TEMP TABLE newtags(tag UNIQUE, prefix, value)"); |
| 1850 | 1852 | if( zNewColor[0] |
| 1851 | 1853 | && (fPropagateColor!=fNewPropagateColor |
| 1852 | 1854 | || fossil_strcmp(zColor,zNewColor)!=0) |
| | @@ -1968,10 +1970,14 @@ |
| 1968 | 1970 | } |
| 1969 | 1971 | db_finalize(&q); |
| 1970 | 1972 | blob_appendf(&suffix, ")"); |
| 1971 | 1973 | @ %s(blob_str(&suffix)) |
| 1972 | 1974 | @ </td></tr></table> |
| 1975 | + if( zChngTime ){ |
| 1976 | + @ <p>The timestamp on the tag used to make the changes above |
| 1977 | + @ will be overridden as: %s(date_in_standard_format(zChngTime))</p> |
| 1978 | + } |
| 1973 | 1979 | @ </blockquote> |
| 1974 | 1980 | @ <hr /> |
| 1975 | 1981 | blob_reset(&suffix); |
| 1976 | 1982 | } |
| 1977 | 1983 | @ <p>Make changes to attributes of check-in |
| | @@ -1993,20 +1999,27 @@ |
| 1993 | 1999 | |
| 1994 | 2000 | @ <tr><td align="right" valign="top"><b>Check-in Time:</b></td> |
| 1995 | 2001 | @ <td valign="top"> |
| 1996 | 2002 | @ <input type="text" name="dt" size="20" value="%h(zNewDate)" /> |
| 1997 | 2003 | @ </td></tr> |
| 2004 | + |
| 2005 | + if( zChngTime ){ |
| 2006 | + @ <tr><td align="right" valign="top"><b>Timestamp of this change:</b></td> |
| 2007 | + @ <td valign="top"> |
| 2008 | + @ <input type="text" name="chngtime" size="20" value="%h(zChngTime)" /> |
| 2009 | + @ </td></tr> |
| 2010 | + } |
| 1998 | 2011 | |
| 1999 | 2012 | @ <tr><td align="right" valign="top"><b>Background Color:</b></td> |
| 2000 | 2013 | @ <td valign="top"> |
| 2001 | 2014 | render_color_chooser(fNewPropagateColor, zNewColor, "pclr", "clr", "clrcust"); |
| 2002 | 2015 | @ </td></tr> |
| 2003 | 2016 | |
| 2004 | 2017 | @ <tr><td align="right" valign="top"><b>Tags:</b></td> |
| 2005 | 2018 | @ <td valign="top"> |
| 2006 | | - @ <input type="checkbox" id="newtag" name="newtag"%s(zNewTagFlag) /> |
| 2007 | | - @ Add the following new tag name to this check-in: |
| 2019 | + @ <label><input type="checkbox" id="newtag" name="newtag"%s(zNewTagFlag) /> |
| 2020 | + @ Add the following new tag name to this check-in:</label> |
| 2008 | 2021 | @ <input type="text" style="width:15;" name="tagname" value="%h(zNewTag)" |
| 2009 | 2022 | @ onkeyup="gebi('newtag').checked=!!this.value" /> |
| 2010 | 2023 | db_prepare(&q, |
| 2011 | 2024 | "SELECT tag.tagid, tagname FROM tagxref, tag" |
| 2012 | 2025 | " WHERE tagxref.rid=%d AND tagtype>0 AND tagxref.tagid=tag.tagid" |
| | @@ -2017,28 +2030,29 @@ |
| 2017 | 2030 | while( db_step(&q)==SQLITE_ROW ){ |
| 2018 | 2031 | int tagid = db_column_int(&q, 0); |
| 2019 | 2032 | const char *zTagName = db_column_text(&q, 1); |
| 2020 | 2033 | char zLabel[30]; |
| 2021 | 2034 | sqlite3_snprintf(sizeof(zLabel), zLabel, "c%d", tagid); |
| 2035 | + @ <br /><label> |
| 2022 | 2036 | if( P(zLabel) ){ |
| 2023 | | - @ <br /><input type="checkbox" name="c%d(tagid)" checked="checked" /> |
| 2037 | + @ <input type="checkbox" name="c%d(tagid)" checked="checked" /> |
| 2024 | 2038 | }else{ |
| 2025 | | - @ <br /><input type="checkbox" name="c%d(tagid)" /> |
| 2039 | + @ <input type="checkbox" name="c%d(tagid)" /> |
| 2026 | 2040 | } |
| 2027 | 2041 | if( strncmp(zTagName, "sym-", 4)==0 ){ |
| 2028 | | - @ Cancel tag <b>%h(&zTagName[4])</b> |
| 2042 | + @ Cancel tag <b>%h(&zTagName[4])</b></label> |
| 2029 | 2043 | }else{ |
| 2030 | | - @ Cancel special tag <b>%h(zTagName)</b> |
| 2044 | + @ Cancel special tag <b>%h(zTagName)</b></label> |
| 2031 | 2045 | } |
| 2032 | 2046 | } |
| 2033 | 2047 | db_finalize(&q); |
| 2034 | 2048 | @ </td></tr> |
| 2035 | 2049 | |
| 2036 | 2050 | @ <tr><td align="right" valign="top"><b>Branching:</b></td> |
| 2037 | 2051 | @ <td valign="top"> |
| 2038 | | - @ <input id="newbr" type="checkbox" name="newbr"%s(zNewBrFlag) /> |
| 2039 | | - @ Make this check-in the start of a new branch named: |
| 2052 | + @ <label><input id="newbr" type="checkbox" name="newbr"%s(zNewBrFlag) /> |
| 2053 | + @ Make this check-in the start of a new branch named:</label> |
| 2040 | 2054 | @ <input type="text" style="width:15;" name="brname" value="%h(zNewBranch)" |
| 2041 | 2055 | @ onkeyup="gebi('newbr').checked=!!this.value" /> |
| 2042 | 2056 | @ </td></tr> |
| 2043 | 2057 | |
| 2044 | 2058 | if( is_a_leaf(rid) |
| | @@ -2046,13 +2060,13 @@ |
| 2046 | 2060 | " WHERE tagid=%d AND rid=%d AND tagtype>0", |
| 2047 | 2061 | TAG_CLOSED, rid) |
| 2048 | 2062 | ){ |
| 2049 | 2063 | @ <tr><td align="right" valign="top"><b>Leaf Closure:</b></td> |
| 2050 | 2064 | @ <td valign="top"> |
| 2051 | | - @ <input type="checkbox" name="close"%s(zCloseFlag) /> |
| 2065 | + @ <label><input type="checkbox" name="close"%s(zCloseFlag) /> |
| 2052 | 2066 | @ Mark this leaf as "closed" so that it no longer appears on the |
| 2053 | | - @ "leaves" page and is no longer labeled as a "<b>Leaf</b>". |
| 2067 | + @ "leaves" page and is no longer labeled as a "<b>Leaf</b>".</label> |
| 2054 | 2068 | @ </td></tr> |
| 2055 | 2069 | } |
| 2056 | 2070 | |
| 2057 | 2071 | |
| 2058 | 2072 | @ <tr><td colspan="2"> |
| 2059 | 2073 | |