1
  
2
  
3
  
4
  
5
  
6
  
7
  
8
  
9
  
10
  
11
  
12
  
13
  
14
  
15
  
16
  
17
  
18
  
19
  
20
  
21
  
22
  
23
  
24
  
25
  
26
  
27
  
28
  
29
  
30
  
31
  
32
  
33
  
34
  
35
  
36
  
37
  
38
  
39
  
40
  
41
  
42
  
43
  
44
  
45
  
46
  
47
  
48
  
49
  
50
  
51
  
52
  
53
  
54
  
55
  
56
  
57
  
58
  
59
  
60
  
61
  
62
  
63
  
64
  
65
  
66
  
67
  
68
  
69
  
70
  
71
  
72
  
73
  
74
  
75
  
76
  
77
  
78
  
79
  
80
  
81
  
82
  
83
  
84
  
85
  
86
  
87
  
88
  
89
  
90
  
91
  
92
  
93
  
94
  
95
  
96
  
97
  
98
  
99
  
100
  
101
  
102
  
103
  
104
  
105
  
106
  
107
  
108
  
109
  
110
  
111
  
112
  
113
  
114
  
115
  
116
  
117
  
118
  
119
  
120
  
121
  
122
  
123
  
124
  
125
  
126
  
127
  
// This file is part of Roxen WebServer. 
// Copyright © 1996 - 2009, Roxen IS. 
// $Id$ 
 
#pragma strict_types 
 
string input(string name, string value, void|int size, 
             void|mapping(string:string) args, void|int xml) 
{ 
  if(!args) 
    args=([]); 
  else 
    args+=([]); 
 
  args->name=name; 
  args->value=value; 
  if(size) 
    args->size=(string)size;  
 
  string render="<input"; 
 
  foreach([array(string)]indices(args), string attr) { 
    render+=" "+attr+"="; 
    if(!has_value(args[attr], "\"")) render+="\""+args[attr]+"\""; 
    else if(!has_value(args[attr], "'")) render+="'"+args[attr]+"'"; 
    else render+="\""+replace(args[attr], "'", "&#39;")+"\""; 
  } 
 
  if(xml) return render+" />"; 
  return render+">"; 
} 
 
string pre(string f) 
{ 
  return "<pre>\n"+f+"</pre>\n"; 
} 
 
string table(string|void t, int|void cellspacing, int|void cellpadding, 
             int|void border, int|void width) 
{ 
  string d=""; 
  int ds, dp; 
  if(border) 
  { 
    d += " border=\""+border+"\""; 
    ds=2; 
    dp=3; 
  } 
 
  if(cellspacing) 
    ds=cellspacing; 
  d += " cellspacing=\""+ds+"\""; 
  if(cellpadding) 
    dp=cellpadding; 
  d += " cellpadding="+dp+"\""; 
  if(width) 
    d += " width=\""+width+"%\""; 
  return "<table"+d+">\n"+t+"</table>\n\n"; 
} 
 
string tr(string data, int|void rows) 
{ 
  if(rows) 
    return "<tr rowspan=\""+rows+"\">\n" + data + "</tr><p>"; 
  else 
    return "<tr>\n" + data + "</tr><p>\n"; 
} 
 
string td(string t, string|void align, int|void rows, int|void cols) 
{ 
  string q=""; 
  if(align) q+=" align=\""+align+"\""; 
  if(rows)  q+=" rowspan=\""+rows+"\""; 
  if(cols)  q+=" colspan=\""+cols+"\""; 
  return "<td"+q+">\n" + t +"</td>\n"; 
} 
 
string bf(string|void s, int|void i) 
{ 
  return "<font size=\"+"+(i+1)+"\"><b>"+s+"</b></font>"; 
} 
 
string th(string t, string|void align, int|void rows, 
          int|void cols) 
{ 
  string q=""; 
  if(align) q+=" align=\""+align+"\""; 
  if(rows)  q+=" rowspan=\""+rows+"\""; 
  if(cols)  q+=" colspan=\""+cols+"\""; 
  return "<th"+q+">\n" + t +"</th>\n"; 
} 
 
string h1(string h) 
{ 
  return "<h1>"+h+"</h1>\n\n"; 
} 
 
string h2(string h) 
{ 
  return "<h2>"+h+"</h2>\n\n"; 
} 
 
string h3(string h) 
{ 
  return "<h3>"+h+"</h3>\n\n"; 
} 
 
string select(string name, array(string)|array(array(string)) choices, 
                  void|string selected) { 
  string ret = "<select name=\"" + name + "\">\n"; 
 
  if(sizeof(choices) && arrayp(choices[0])) { 
    foreach([array(array(string))]choices, array(string) value) 
      ret += "<option value=\"" + value[0] + "\"" + 
        (value[0]==selected?" selected=\"selected\"":"") + 
        ">" + value[1] + "</option>\n"; 
  } else { 
    foreach([array(string)]choices, string value) 
      ret += "<option value=\"" + value + "\"" + 
        (value==selected?" selected=\"selected\"":"") + 
        ">" + value + "</option>\n"; 
  } 
 
  return ret + "</select>"; 
}