Fossil

Check-in [c2ef3715]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:added more cross reference
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | wolfgangHelpCmd
Files: files | file ages | folders
SHA1:c2ef37159078ec3781a1d477d05a5f7a7d0e1b02
User & Date: Ratte 2010-10-10 08:59:44
Context
2010-10-10
13:38
added cross references for help check-in: c3bf3c0c user: wolfgang tags: wolfgangHelpCmd
08:59
added more cross reference check-in: c2ef3715 user: Ratte tags: wolfgangHelpCmd
2010-10-09
20:13
show references to commandline on webpages; add httptrace to windows http server check-in: d1d1cd12 user: wolfgang tags: wolfgangHelpCmd
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to src/browse.c.

245
246
247
248
249
250
251
252
253
    }else{
      @ <li><a href="%s(g.zBaseURL)/finfo?name=%T(zPrefix)%T(zFN)">%h(zFN)
      @     </a></li>
    }
  }
  db_finalize(&q);
  @ </ul></td></tr></table>
  style_footer_cmdref("ls");
}







|

245
246
247
248
249
250
251
252
253
    }else{
      @ <li><a href="%s(g.zBaseURL)/finfo?name=%T(zPrefix)%T(zFN)">%h(zFN)
      @     </a></li>
    }
  }
  db_finalize(&q);
  @ </ul></td></tr></table>
  style_footer_cmdref("ls",0);
}

Changes to src/clone.c.

35
36
37
38
39
40
41

42
43
44
45
46
47
48
** admin user. This can be overridden using the -A|--admin-user
** parameter.
**
** Options:
**
**    --admin-user|-A USERNAME
**

*/
void clone_cmd(void){
  char *zPassword;
  const char *zDefaultUser;   /* Optional name of the default user */

  url_proxy_options();
  if( g.argc < 4 ){







>







35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
** admin user. This can be overridden using the -A|--admin-user
** parameter.
**
** Options:
**
**    --admin-user|-A USERNAME
**
** See also:  <a>push</a>, <a>pull</a>, <a>remote-url</a>, <a>sync</a>
*/
void clone_cmd(void){
  char *zPassword;
  const char *zDefaultUser;   /* Optional name of the default user */

  url_proxy_options();
  if( g.argc < 4 ){

Changes to src/diff.c.

813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
  annotate_file(&ann, fnid, mid, g.okHistory);
  @ <pre>
  for(i=0; i<ann.nOrig; i++){
    ((char*)ann.aOrig[i].z)[ann.aOrig[i].n] = 0;
    @ %s(ann.aOrig[i].zSrc): %h(ann.aOrig[i].z)
  }
  @ </pre>
  style_footer_cmdref("annotate");
}

/*
** COMMAND: annotate
**
** %fossil annotate FILENAME
**







|







813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
  annotate_file(&ann, fnid, mid, g.okHistory);
  @ <pre>
  for(i=0; i<ann.nOrig; i++){
    ((char*)ann.aOrig[i].z)[ann.aOrig[i].n] = 0;
    @ %s(ann.aOrig[i].zSrc): %h(ann.aOrig[i].z)
  }
  @ </pre>
  style_footer_cmdref("annotate",0);
}

/*
** COMMAND: annotate
**
** %fossil annotate FILENAME
**

Changes to src/finfo.c.

210
211
212
213
214
215
216
217
218
    }else{
      @ <tr><td></td><td><div style="width:%d(pGraph->mxRail*20+30)px;"></div>
      @     </td></tr>
    }
  }
  @ </table>
  timeline_output_graph_javascript(pGraph);
  style_footer_cmdref("finfo");
}







|

210
211
212
213
214
215
216
217
218
    }else{
      @ <tr><td></td><td><div style="width:%d(pGraph->mxRail*20+30)px;"></div>
      @     </td></tr>
    }
  }
  @ </table>
  timeline_output_graph_javascript(pGraph);
  style_footer_cmdref("finfo",0);
}

Changes to src/info.c.

465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
...
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
...
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
...
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
....
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
....
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
  while( db_step(&q)==SQLITE_ROW ){
    const char *zName = db_column_text(&q,0);
    const char *zOld = db_column_text(&q,1);
    const char *zNew = db_column_text(&q,2);
    append_file_change_line(zName, zOld, zNew, showDiff);
  }
  db_finalize(&q);
  style_footer_cmdref("info");
}

/*
** WEBPAGE: winfo
** URL:  /winfo?name=RID
**
** Return information about a wiki page.
................................................................................
      blob_init(&wiki, m.zWiki, -1);
      @ <div class="section">Content</div>
      wiki_convert(&wiki, 0, 0);
      blob_reset(&wiki);
    }
    manifest_clear(&m);
  }
  style_footer_cmdref("info");
}

/*
** Show a webpage error message
*/
void webpage_error(const char *zFormat, ...){
  va_list ap;
................................................................................
    @ <tr><td>to:</td><td><input type="text" size="40"
    @  name="to" value="%s(zTo?zTo:"")" /></td><td></td></tr>
    @ <tr><td>details:</td><td><input type="checkbox" name="detail"
    @  checked="checked" value="1" /></td></tr>
    @ <tr><td></td><td></td><td>
    @  <input type="submit" name="diff" value="diff" /></td></tr></table>
    @ </div></form>
    style_footer_cmdref("diff");
    return;
  }else if(    vdiff_parse_manifest("from", &ridFrom, &mFrom) 
            || vdiff_parse_manifest("to", &ridTo, &mTo)
  ){
    return;
  }
  style_header("Check-in Differences");
................................................................................
      iFrom++;
      iTo++;
    }
  }
  manifest_clear(&mFrom);
  manifest_clear(&mTo);

  style_footer_cmdref("diff");
}

/*
** Write a description of an object to the www reply.
**
** If the object is a file then mention:
**
................................................................................
    }else{
      @ <pre>
      hexdump(&content);
      @ </pre>
    }
    @ </blockquote>
  }
  style_footer_cmdref( "artifact" );
}  

/*
** WEBPAGE: tinfo
** URL: /tinfo?name=ARTIFACTID
**
** Show the details of a ticket change control artifact.
................................................................................
    @ </p>
  }
  @
  @ <ol>
  free(zDate);
  ticket_output_change_artifact(&m);
  manifest_clear(&m);
  style_footer_cmdref("info");
}


/*
** WEBPAGE: info
** URL: info/ARTIFACTID
**







|







 







|







 







|







 







|







 







|







 







|







465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
...
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
...
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
...
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
....
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
....
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
  while( db_step(&q)==SQLITE_ROW ){
    const char *zName = db_column_text(&q,0);
    const char *zOld = db_column_text(&q,1);
    const char *zNew = db_column_text(&q,2);
    append_file_change_line(zName, zOld, zNew, showDiff);
  }
  db_finalize(&q);
  style_footer_cmdref("info",0);
}

/*
** WEBPAGE: winfo
** URL:  /winfo?name=RID
**
** Return information about a wiki page.
................................................................................
      blob_init(&wiki, m.zWiki, -1);
      @ <div class="section">Content</div>
      wiki_convert(&wiki, 0, 0);
      blob_reset(&wiki);
    }
    manifest_clear(&m);
  }
  style_footer_cmdref("info",0);
}

/*
** Show a webpage error message
*/
void webpage_error(const char *zFormat, ...){
  va_list ap;
................................................................................
    @ <tr><td>to:</td><td><input type="text" size="40"
    @  name="to" value="%s(zTo?zTo:"")" /></td><td></td></tr>
    @ <tr><td>details:</td><td><input type="checkbox" name="detail"
    @  checked="checked" value="1" /></td></tr>
    @ <tr><td></td><td></td><td>
    @  <input type="submit" name="diff" value="diff" /></td></tr></table>
    @ </div></form>
    style_footer_cmdref("diff",0);
    return;
  }else if(    vdiff_parse_manifest("from", &ridFrom, &mFrom) 
            || vdiff_parse_manifest("to", &ridTo, &mTo)
  ){
    return;
  }
  style_header("Check-in Differences");
................................................................................
      iFrom++;
      iTo++;
    }
  }
  manifest_clear(&mFrom);
  manifest_clear(&mTo);

  style_footer_cmdref("diff",0);
}

/*
** Write a description of an object to the www reply.
**
** If the object is a file then mention:
**
................................................................................
    }else{
      @ <pre>
      hexdump(&content);
      @ </pre>
    }
    @ </blockquote>
  }
  style_footer_cmdref( "artifact",0 );
}  

/*
** WEBPAGE: tinfo
** URL: /tinfo?name=ARTIFACTID
**
** Show the details of a ticket change control artifact.
................................................................................
    @ </p>
  }
  @
  @ <ol>
  free(zDate);
  ticket_output_change_artifact(&m);
  manifest_clear(&m);
  style_footer_cmdref("info",0);
}


/*
** WEBPAGE: info
** URL: info/ARTIFACTID
**

Changes to src/main.c.

690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
                zDest[dest++]=zSrc[src++]; /* command name */
              }
            }else{
              zDest[dest++] = zSrc[src++];
            }
          }
          zDest[dest] = 0;
          @ <pre>%s(zDest)</pre>
          free(zDest);
          @ <hr>additional information may be found in the web documentation:
          @ <a href="http://www.fossil-scm.org/fossil/doc/tip/www/cmd_%s(aCommand[idx].zName).wiki">
          @ cmd_%s(aCommand[idx].zName)</a>, 
        }
      }
      @ see also the list of
      @ <a href="help">available commands</a> in fossil
      @ version %s(MANIFEST_VERSION" "MANIFEST_DATE) UTC







|

|







690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
                zDest[dest++]=zSrc[src++]; /* command name */
              }
            }else{
              zDest[dest++] = zSrc[src++];
            }
          }
          zDest[dest] = 0;
          @ <div class="cmdhelp">%s(zDest)</div>
          free(zDest);
          @ <hr/>additional information may be found in the web documentation:
          @ <a href="http://www.fossil-scm.org/fossil/doc/tip/www/cmd_%s(aCommand[idx].zName).wiki">
          @ cmd_%s(aCommand[idx].zName)</a>, 
        }
      }
      @ see also the list of
      @ <a href="help">available commands</a> in fossil
      @ version %s(MANIFEST_VERSION" "MANIFEST_DATE) UTC

Changes to src/report.c.

78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
  Th_Store("report_items", blob_str(&ril));
  
  Th_Render(zScript);
  
  blob_reset(&ril);
  if( g.thTrace ) Th_Trace("END_REPORTLIST<br />\n", -1);

  style_footer();
}

/*
** Remove whitespace from both ends of a string.
*/
char *trim_string(const char *zOrig){
  int i;







|







78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
  Th_Store("report_items", blob_str(&ril));
  
  Th_Render(zScript);
  
  blob_reset(&ril);
  if( g.thTrace ) Th_Trace("END_REPORTLIST<br />\n", -1);

  style_footer_cmdref("ticket",0);
}

/*
** Remove whitespace from both ends of a string.
*/
char *trim_string(const char *zOrig){
  int i;

Changes to src/setup.c.

215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
...
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
....
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
....
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
....
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
....
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
  @ privileges of <span class="usertype">developer</span>,
  @ <span class="usertype">anonymous</span>, and
  @ <span class="usertype">nobody</span>.
  @ </p></li>
  @
  @ </ol>
  @ </td></tr></table>
  style_footer_cmdref("user");
}

/*
** Return true if zPw is a valid password string.  A valid
** password string is:
**
**  (1)  A zero-length string, or
................................................................................
  @ <span class="usertype">developer</span>
  @ user.  Similarly, the <span class="usertype">reader</span> user is a 
  @ template for users who are allowed more access than
  @ <span class="usertype">anonymous</span>,
  @ but less than a <span class="usertype">developer</span>.
  @ </p></li>
  @ </ul>
  style_footer_cmdref("user");
}


/*
** Generate a checkbox for an attribute.
*/
static void onoff_attribute(
................................................................................
  @ The default CSS is shown below for reference.  Other examples
  @ of CSS files can be seen on the <a href="setup_skin">skins page</a>.
  @ See also the <a href="setup_header">header</a> and
  @ <a href="setup_footer">footer</a> editing screens.
  @ <blockquote><pre>
  cgi_append_default_css();
  @ </pre></blockquote>
  style_footer();
  db_end_transaction(0);
}

/*
** WEBPAGE: setup_header
*/
void setup_header(void){
................................................................................
  @ The default header is shown below for reference.  Other examples
  @ of headers can be seen on the <a href="setup_skin">skins page</a>.
  @ See also the <a href="setup_editcss">CSS</a> and
  @ <a href="setup_footer">footer</a> editing screeens.
  @ <blockquote><pre>
  @ %h(zDefaultHeader)
  @ </pre></blockquote>
  style_footer();
  db_end_transaction(0);
}

/*
** WEBPAGE: setup_footer
*/
void setup_footer(void){
................................................................................
  @ The default footer is shown below for reference.  Other examples
  @ of footers can be seen on the <a href="setup_skin">skins page</a>.
  @ See also the <a href="setup_editcss">CSS</a> and
  @ <a href="setup_header">header</a> editing screens.
  @ <blockquote><pre>
  @ %h(zDefaultFooter)
  @ </pre></blockquote>
  style_footer();
  db_end_transaction(0);
}

/*
** WEBPAGE: setup_logo
*/
void setup_logo(void){
................................................................................
  @ <input type="submit" name="clr" value="Revert To Default" />
  @ </div></form>
  @
  @ <p><span class="note">Note:</span>  Your browser has probably cached the
  @ logo image, so you will probably need to press the Reload button on your
  @ browser after changing the logo to provoke your browser to reload the new
  @ logo image. </p>
  style_footer();
  db_end_transaction(0);
}







|







 







|







 







|







 







|







 







|







 







|


215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
...
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
....
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
....
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
....
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
....
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
  @ privileges of <span class="usertype">developer</span>,
  @ <span class="usertype">anonymous</span>, and
  @ <span class="usertype">nobody</span>.
  @ </p></li>
  @
  @ </ol>
  @ </td></tr></table>
  style_footer_cmdref("user",0);
}

/*
** Return true if zPw is a valid password string.  A valid
** password string is:
**
**  (1)  A zero-length string, or
................................................................................
  @ <span class="usertype">developer</span>
  @ user.  Similarly, the <span class="usertype">reader</span> user is a 
  @ template for users who are allowed more access than
  @ <span class="usertype">anonymous</span>,
  @ but less than a <span class="usertype">developer</span>.
  @ </p></li>
  @ </ul>
  style_footer_cmdref("user",0);
}


/*
** Generate a checkbox for an attribute.
*/
static void onoff_attribute(
................................................................................
  @ The default CSS is shown below for reference.  Other examples
  @ of CSS files can be seen on the <a href="setup_skin">skins page</a>.
  @ See also the <a href="setup_header">header</a> and
  @ <a href="setup_footer">footer</a> editing screens.
  @ <blockquote><pre>
  cgi_append_default_css();
  @ </pre></blockquote>
  style_footer_cmdref("configuration","area skin");
  db_end_transaction(0);
}

/*
** WEBPAGE: setup_header
*/
void setup_header(void){
................................................................................
  @ The default header is shown below for reference.  Other examples
  @ of headers can be seen on the <a href="setup_skin">skins page</a>.
  @ See also the <a href="setup_editcss">CSS</a> and
  @ <a href="setup_footer">footer</a> editing screeens.
  @ <blockquote><pre>
  @ %h(zDefaultHeader)
  @ </pre></blockquote>
  style_footer_cmdref("configuration","area skin");
  db_end_transaction(0);
}

/*
** WEBPAGE: setup_footer
*/
void setup_footer(void){
................................................................................
  @ The default footer is shown below for reference.  Other examples
  @ of footers can be seen on the <a href="setup_skin">skins page</a>.
  @ See also the <a href="setup_editcss">CSS</a> and
  @ <a href="setup_header">header</a> editing screens.
  @ <blockquote><pre>
  @ %h(zDefaultFooter)
  @ </pre></blockquote>
  style_footer_cmdref("configuration","area skin");
  db_end_transaction(0);
}

/*
** WEBPAGE: setup_logo
*/
void setup_logo(void){
................................................................................
  @ <input type="submit" name="clr" value="Revert To Default" />
  @ </div></form>
  @
  @ <p><span class="note">Note:</span>  Your browser has probably cached the
  @ logo image, so you will probably need to press the Reload button on your
  @ browser after changing the logo to provoke your browser to reload the new
  @ logo image. </p>
  style_footer_cmdref("configuration","area skin");
  db_end_transaction(0);
}

Changes to src/skins.c.

838
839
840
841
842
843
844
845
846
847
      @ <input type="submit" name="load" value="Use This Skin">
      @ <input type="submit" name="del1" value="Delete This Skin">
      @ </form></li>
    }
  }
  db_finalize(&q);
  @ </ol>
  style_footer();
  db_end_transaction(0);
}







|


838
839
840
841
842
843
844
845
846
847
      @ <input type="submit" name="load" value="Use This Skin">
      @ <input type="submit" name="del1" value="Delete This Skin">
      @ </form></li>
    }
  }
  db_finalize(&q);
  @ </ol>
  style_footer_cmdref("configuration","area skin");
  db_end_transaction(0);
}

Changes to src/style.c.

117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
...
745
746
747
748
749
750
751







752
753
754
755
756
757
758
  sideboxUsed = 0;
}

/*
** append a reference to command line to a web page
** and generate the footer
*/
void style_footer_cmdref( const char * const zCmd ){
  @ <div class="cmdref">See also command line help:
  @  <a href="help?cmd=%s(zCmd)">%s(zCmd)</a>
  @ </div>
  style_footer();
}

/*
** Draw the footer at the bottom of the page.
*/
................................................................................
    @   color: blue;
  },
  { "a.hidden",
    "format for links, that should not be very visible",
    @   font-size: xx-small;
    @   color: #aaaaaa;
  },







  { "div.cmdref",
    "format for references to command line help entries the actual gui page."
    "set \"display\" to \"none\" to suppress the display",
    @   font-size: small;
    @   text-align: right;
    @   font-family: monospace;
    @   color: #777777;







|

|







 







>
>
>
>
>
>
>







117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
...
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
  sideboxUsed = 0;
}

/*
** append a reference to command line to a web page
** and generate the footer
*/
void style_footer_cmdref( const char * const zCmd, const char * const zSubCmd ){
  @ <div class="cmdref">See also command line help:
  @  <a href="help?cmd=%s(zCmd)">%s(zCmd)</a> %s(zSubCmd?zSubCmd:"")
  @ </div>
  style_footer();
}

/*
** Draw the footer at the bottom of the page.
*/
................................................................................
    @   color: blue;
  },
  { "a.hidden",
    "format for links, that should not be very visible",
    @   font-size: xx-small;
    @   color: #aaaaaa;
  },
  { "div.cmdhelp",
    "format for single command display on the gui help page",
    @   font-family: monospace;
    @   padding-left: 4em;
    @   padding-bottom: 1em;
    @   white-space: pre;
  },
  { "div.cmdref",
    "format for references to command line help entries the actual gui page."
    "set \"display\" to \"none\" to suppress the display",
    @   font-size: small;
    @   text-align: right;
    @   font-family: monospace;
    @   color: #777777;

Changes to src/tag.c.

529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
      @ %h(zName)</a></li>
    }else{
      @ <li><span class="tagDsp">%h(zName)</span></li>
    }
  }
  @ </ul>
  db_finalize(&q);
  style_footer();
}

/*
** Draw the names of all tags added to check-in rid.  Only tags
** that are directly applied to rid are named.  Propagated tags
** are omitted.
*/







|







529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
      @ %h(zName)</a></li>
    }else{
      @ <li><span class="tagDsp">%h(zName)</span></li>
    }
  }
  @ </ul>
  db_finalize(&q);
  style_footer_cmdref("tags","list");
}

/*
** Draw the names of all tags added to check-in rid.  Only tags
** that are directly applied to rid are named.  Propagated tags
** are omitted.
*/

Changes to src/timeline.c.

950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
....
1093
1094
1095
1096
1097
1098
1099


1100
1101
1102
1103
1104
1105
1106
  }
  blob_zero(&sql);
  db_prepare(&q, "SELECT * FROM timeline ORDER BY timestamp DESC /*scan*/");
  @ <h2>%b(&desc)</h2>
  blob_reset(&desc);
  www_print_timeline(&q, tmFlags, 0);
  db_finalize(&q);
  style_footer_cmdref("timeline");
}

/*
** The input query q selects various records.  Print a human-readable
** summary of those records.
**
** Limit the number of entries printed to nLine.
................................................................................
**     w  = wiki commits only
**     ci = file commits only
**     t  = tickets only
**     e  = events only
**
** The information can also be used in the gui:
**  * go to the <a href="timeline">timeline</a> page


**
** See also: <a>descendants</a>
*/
void timeline_cmd(void){
  Stmt q;
  int n, k;
  const char *zCount;







|







 







>
>







950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
....
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
  }
  blob_zero(&sql);
  db_prepare(&q, "SELECT * FROM timeline ORDER BY timestamp DESC /*scan*/");
  @ <h2>%b(&desc)</h2>
  blob_reset(&desc);
  www_print_timeline(&q, tmFlags, 0);
  db_finalize(&q);
  style_footer_cmdref("timeline",0);
}

/*
** The input query q selects various records.  Print a human-readable
** summary of those records.
**
** Limit the number of entries printed to nLine.
................................................................................
**     w  = wiki commits only
**     ci = file commits only
**     t  = tickets only
**     e  = events only
**
** The information can also be used in the gui:
**  * go to the <a href="timeline">timeline</a> page
**  * or the "history" links on the dedicated details views(events,
**    files, tickets, ..)
**
** See also: <a>descendants</a>
*/
void timeline_cmd(void){
  Stmt q;
  int n, k;
  const char *zCount;

Changes to src/tkt.c.

364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
...
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
...
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
...
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
...
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
    }
    if( cnt ){
      @ </ul>
    }
    db_finalize(&q);
  }
 
  style_footer_cmdref("info");
}

/*
** TH command:   append_field FIELD STRING
**
** FIELD is the name of a database column to which we might want
** to append text.  STRING is the text to be appended to that
................................................................................
  if( g.thTrace ) Th_Trace("BEGIN_TKTNEW_SCRIPT<br />\n", -1);
  if( Th_Render(zScript)==TH_RETURN && !g.thTrace && zNewUuid ){
    cgi_redirect(mprintf("%s/tktview/%s", g.zBaseURL, zNewUuid));
    return;
  }
  @ </form>
  if( g.thTrace ) Th_Trace("END_TKTVIEW<br />\n", -1);
  style_footer();
}

/*
** WEBPAGE: tktedit
** WEBPAGE: debug_tktedit
**
** Edit a ticket.  The ticket is identified by the name CGI parameter.
................................................................................
  if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT_SCRIPT<br />\n", -1);
  if( Th_Render(zScript)==TH_RETURN && !g.thTrace && zName ){
    cgi_redirect(mprintf("%s/tktview/%s", g.zBaseURL, zName));
    return;
  }
  @ </form>
  if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT<br />\n", -1);
  style_footer();
}

/*
** Check the ticket table schema in zSchema to see if it appears to
** be well-formed.  If everything is OK, return NULL.  If something is
** amiss, then return a pointer to a string (obtained from malloc) that
** describes the problem.
................................................................................
         timeline_query_for_www(), tagid, zFullUuid, zFullUuid, zFullUuid
    );
  }
  db_prepare(&q, zSQL);
  free(zSQL);
  www_print_timeline(&q, TIMELINE_ARTID, 0);
  db_finalize(&q);
  style_footer();
}

/*
** WEBPAGE: tkthistory
** URL: /tkthistory?name=TICKETUUID
**
** Show the complete change history for a single ticket
................................................................................
        @ </p>
        ticket_output_change_artifact(&m);
      }
      manifest_clear(&m);
    }
  }
  db_finalize(&q);
  style_footer();
}

/*
** Return TRUE if the given BLOB contains a newline character.
*/
static int contains_newline(Blob *p){
  const char *z = blob_str(p);







|







 







|







 







|







 







|







 







|







364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
...
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
...
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
...
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
...
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
    }
    if( cnt ){
      @ </ul>
    }
    db_finalize(&q);
  }
 
  style_footer_cmdref("info",0);
}

/*
** TH command:   append_field FIELD STRING
**
** FIELD is the name of a database column to which we might want
** to append text.  STRING is the text to be appended to that
................................................................................
  if( g.thTrace ) Th_Trace("BEGIN_TKTNEW_SCRIPT<br />\n", -1);
  if( Th_Render(zScript)==TH_RETURN && !g.thTrace && zNewUuid ){
    cgi_redirect(mprintf("%s/tktview/%s", g.zBaseURL, zNewUuid));
    return;
  }
  @ </form>
  if( g.thTrace ) Th_Trace("END_TKTVIEW<br />\n", -1);
  style_footer_cmdref("ticket","add");
}

/*
** WEBPAGE: tktedit
** WEBPAGE: debug_tktedit
**
** Edit a ticket.  The ticket is identified by the name CGI parameter.
................................................................................
  if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT_SCRIPT<br />\n", -1);
  if( Th_Render(zScript)==TH_RETURN && !g.thTrace && zName ){
    cgi_redirect(mprintf("%s/tktview/%s", g.zBaseURL, zName));
    return;
  }
  @ </form>
  if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT<br />\n", -1);
  style_footer_cmdref("ticket","change");
}

/*
** Check the ticket table schema in zSchema to see if it appears to
** be well-formed.  If everything is OK, return NULL.  If something is
** amiss, then return a pointer to a string (obtained from malloc) that
** describes the problem.
................................................................................
         timeline_query_for_www(), tagid, zFullUuid, zFullUuid, zFullUuid
    );
  }
  db_prepare(&q, zSQL);
  free(zSQL);
  www_print_timeline(&q, TIMELINE_ARTID, 0);
  db_finalize(&q);
  style_footer_cmdref("timeline",0);
}

/*
** WEBPAGE: tkthistory
** URL: /tkthistory?name=TICKETUUID
**
** Show the complete change history for a single ticket
................................................................................
        @ </p>
        ticket_output_change_artifact(&m);
      }
      manifest_clear(&m);
    }
  }
  db_finalize(&q);
  style_footer_cmdref("timeline",0);
}

/*
** Return TRUE if the given BLOB contains a newline character.
*/
static int contains_newline(Blob *p){
  const char *z = blob_str(p);

Changes to src/wiki.c.

162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
...
250
251
252
253
254
255
256




257
258
259
260
261
262
263
...
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
    @ <li> <a href="%s(g.zBaseURL)/wcontent">List of All Wiki Pages</a>
    @      available on this server.</li>
    @ <li> <form method="get" action="%s(g.zBaseURL)/wfind"><div>
    @     Search wiki titles: <input type="text" name="title"/>
    @  &nbsp; <input type="submit" /></div></form>
    @ </li>
    @ </ul>
    style_footer_cmdref("wiki");
    return;
  }
  if( check_name(zPageName) ) return;
  isSandbox = is_sandbox(zPageName);
  if( isSandbox ){
    zBody = db_get("sandbox",zBody);
  }else{
................................................................................
    @ </ul>
  }
  db_finalize(&q);
 
  if( !isSandbox ){
    manifest_clear(&m);
  }




  style_footer();
}

/*
** WEBPAGE: wikiedit
** URL: /wikiedit?name=PAGENAME
*/
................................................................................
      @ <li><a href="%s(g.zTop)/wiki?name=%T(zName)">%h(zName)</a></li>
    }else if( showAll ){
      @ <li><a href="%s(g.zTop)/wiki?name=%T(zName)"><s>%h(zName)</s></a></li>
    }
  }
  db_finalize(&q);
  @ </ul>
  style_footer_cmdref("wiki");
}

/*
** WEBPAGE: wfind
**
** URL: /wfind?title=TITLE
** List all wiki pages whose titles contain the search text







|







 







>
>
>
>







 







|







162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
...
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
...
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
    @ <li> <a href="%s(g.zBaseURL)/wcontent">List of All Wiki Pages</a>
    @      available on this server.</li>
    @ <li> <form method="get" action="%s(g.zBaseURL)/wfind"><div>
    @     Search wiki titles: <input type="text" name="title"/>
    @  &nbsp; <input type="submit" /></div></form>
    @ </li>
    @ </ul>
    style_footer_cmdref("wiki",0);
    return;
  }
  if( check_name(zPageName) ) return;
  isSandbox = is_sandbox(zPageName);
  if( isSandbox ){
    zBody = db_get("sandbox",zBody);
  }else{
................................................................................
    @ </ul>
  }
  db_finalize(&q);
 
  if( !isSandbox ){
    manifest_clear(&m);
  }
  /* don'tshow the help cross reference, because we are rendering
  ** the wiki conten!
  ** style_footer_cmdref("wiki","export");
  */
  style_footer();
}

/*
** WEBPAGE: wikiedit
** URL: /wikiedit?name=PAGENAME
*/
................................................................................
      @ <li><a href="%s(g.zTop)/wiki?name=%T(zName)">%h(zName)</a></li>
    }else if( showAll ){
      @ <li><a href="%s(g.zTop)/wiki?name=%T(zName)"><s>%h(zName)</s></a></li>
    }
  }
  db_finalize(&q);
  @ </ul>
  style_footer_cmdref("wiki","list");
}

/*
** WEBPAGE: wfind
**
** URL: /wfind?title=TITLE
** List all wiki pages whose titles contain the search text