aboutsummaryrefslogtreecommitdiff
path: root/src/Groups.c
blob: 73644ceffef0de4f036030733c505088aa1315fe (plain)
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
 /*@@
   @file      Groups.c
   @date      Wed Sep 14 23:47:43 2000
   @author    Gabrielle Allen
   @desc 
   Pages about groups
   @enddesc
   @version $Header$
 @@*/

#include <stdio.h>
#include <string.h>

#include "cctk.h"

#include "util_String.h"

#include "CactusConnect/HTTPD/src/http_Request.h"
#include "CactusConnect/HTTPD/src/http_Content.h"

static char *rcsid = "$Header$";

CCTK_FILEVERSION(CactusConnect_HTTPDExtra_Groups_c)

/********************************************************************
 *********************     Local Data Types   ***********************
 ********************************************************************/

static char memo[4098];

/********************************************************************
 ********************* Local Routine Prototypes *********************
 ********************************************************************/

static int MessagesPage(cGH *cctkGH, httpRequest *request, void *data);

/********************************************************************
 ********************* Other Routine Prototypes *********************
 ********************************************************************/

/********************************************************************
 *********************     Local Data   *****************************
 ********************************************************************/

/********************************************************************
 *********************     External Routines   **********************
 ********************************************************************/

 /*@@
   @routine    HTTPUTILS_RegisterPages
   @date       Wed Sep 14 11:29:43 2000
   @author     Gabrielle Allen
   @desc 
   Httpd utils registration routine.
   @enddesc 
   @calls     
   @calledby   
   @history 
 
   @endhistory 

@@*/
int HTTPUTILS_RegisterPages(void)
{
  /* Register the message board page. */
  HTTP_RegisterPage("/Messages", MessagesPage, NULL);

  HTTP_ContentLink("/Messages/index.html", "Message Board",
                   "Collaborative simulation notepad",
                   HTTP_QUICKLINK);

  return 0;
}

/********************************************************************
 *********************     Local Routines   *************************
 ********************************************************************/

 /*@@
   @routine    MessagesPage
   @date       Sat Sep 16
   @author     Gabrielle
   @desc 
   Message board for simulation.
   @enddesc 
   @calls     
   @calledby   
@@*/
static int MessagesPage(cGH *cctkGH, httpRequest *request, void *data)
{
  int retval;
  char message[4098];
  char currtime[100];
  char currdate[100];

  if (request->n_arguments > 0)
  { 
    Util_CurrentTime(100,currtime);
    Util_CurrentDate(100,currdate);

    sprintf(memo,"%s\n\n<p><strong>%s</strong> %s %s<br>",
	    memo,HTTP_ArgumentValue(request, "name"),
	    currtime,currdate);
    
    sprintf(memo,"%s\n\n<i>%s</i></p>",memo,
	    HTTP_ArgumentValue(request, "memo"));
  }

  /* Status message */
  strcpy(message,"HTTP/1.0 200 OK\r\n");
  
  HTTP_Write(request, message, strlen(message));

  /* Content-Type */
  strcpy(message,"Content-Type: text/html\r\n\r\n");

  HTTP_Write(request, message, strlen(message));

  /* Start the page */
  strcpy(message,"<HTML><HEAD><TITLE>CACTUS Messages</TITLE>\n");

  HTTP_Write(request, message, strlen(message));

  /* Write out the header part */
  HTTP_ContentHeader(cctkGH, 0, 4098, message,NULL);
  HTTP_Write(request, message, strlen(message));

  strcpy(message,"<center><H1>Message Board</H1></center>\n"
	 "<p>This page can be used to post messages during a simulation. "
	 "At the moment the messages will disappear when the simulation"
	 " finishes, but soon there will be an option to save them to a file"
	 "</p><center>"
	 "<table>");

  HTTP_Write(request, message, strlen(message));

  sprintf(message,
          "<FORM ACTION=\"/Messages/\">\n");
  HTTP_Write(request, message, strlen(message));
  
  sprintf(message,"<tr><td>Name:</td><td>"
	  "<INPUT TYPE=TEXT SIZE=40 MAXLENGTH=100 NAME=\"name\" VALUE=\"\">"
	  "</td></tr>\n");

  HTTP_Write(request, message, strlen(message));

  sprintf(message,"<tr><td valign=top>Message:</td><td>"
	  "<TEXTAREA NAME=\"memo\" ROWS=10 COLS=40></TEXTAREA>\n"
	  "</td></tr></table>");
  
  HTTP_Write(request, message, strlen(message));
  
  sprintf(message,
	  "<INPUT TYPE=SUBMIT VALUE=\"Submit Message\"></FORM>\n");

  HTTP_Write(request, message, strlen(message));

  sprintf(message,"%s","<table width=80%%><tr><td><h2>Messages:</h2></td></tr><tr><td>");
  HTTP_Write(request, message, strlen(message)); 

  if (strlen(memo)>0)
  {
    sprintf(message,"<table width=\"100%%\" cellpadding=5 cellspacing=5><tr><td BGCOLOR=\"#E9F4D3\" >%s</td></tr></table>",memo);
    HTTP_Write(request, message, strlen(message)); 
  }
  else
  {
    strcpy(message,"<table width=\"100%%\" cellpadding=5 cellspacing=5><tr><td BGCOLOR=\"#E9F4D3\">No messages yet ... use the form above to add one</td></tr></table>");
    HTTP_Write(request, message, strlen(message)); 
  }

  sprintf(message, "</td></tr></table></center>");
  HTTP_Write(request, message, strlen(message)); 

  /* Write out the footer part. */

  HTTP_ContentFooter(cctkGH, 0, 4098, message);
  retval = HTTP_Write(request, message, strlen(message));

  return retval;
}