root/trunk/ttemplate.c

Revision 1001, 16.4 KB (checked in by Gary, 3 years ago)

unxsVZ experimenting with missing ttemplate.c TransformAngleBrackets?() use. So we can
use CKEditor for editing html templates.

  • Property svn:keywords set to id
Line 
1/*
2FILE
3        tTemplate source code of unxsVZ.cgi
4        Built by mysqlRAD2.cgi (C) Gary Wallis 2001-2007
5        $Id$
6PURPOSE
7        Schema dependent RAD generated file.
8        Program app functionality in ttemplatefunc.h while
9        RAD is still to be used.
10*/
11
12
13#include "mysqlrad.h"
14
15//Table Variables
16//Table Variables
17//uTemplate: Primary Key
18static unsigned uTemplate=0;
19//cLabel: Short label
20static char cLabel[33]={""};
21//uTemplateSet: Short label
22static unsigned uTemplateSet=0;
23static char cuTemplateSetPullDown[256]={""};
24//uTemplateType: Short label
25static unsigned uTemplateType=0;
26static char cuTemplateTypePullDown[256]={""};
27//cComment: About the template
28static char *cComment={""};
29//cTemplate: Template itself
30static char *cTemplate={""};
31//uOwner: Record owner
32static unsigned uOwner=0;
33//uCreatedBy: uClient for last insert
34static unsigned uCreatedBy=0;
35//uCreatedDate: Unix seconds date last insert
36static time_t uCreatedDate=0;
37//uModBy: uClient for last update
38static unsigned uModBy=0;
39//uModDate: Unix seconds date last update
40static time_t uModDate=0;
41
42
43
44#define VAR_LIST_tTemplate "tTemplate.uTemplate,tTemplate.cLabel,tTemplate.uTemplateSet,tTemplate.uTemplateType,tTemplate.cComment,tTemplate.cTemplate,tTemplate.uOwner,tTemplate.uCreatedBy,tTemplate.uCreatedDate,tTemplate.uModBy,tTemplate.uModDate"
45
46 //Local only
47void Insert_tTemplate(void);
48void Update_tTemplate(char *cRowid);
49void ProcesstTemplateListVars(pentry entries[], int x);
50
51 //In tTemplatefunc.h file included below
52void ExtProcesstTemplateVars(pentry entries[], int x);
53void ExttTemplateCommands(pentry entries[], int x);
54void ExttTemplateButtons(void);
55void ExttTemplateNavBar(void);
56void ExttTemplateGetHook(entry gentries[], int x);
57void ExttTemplateSelect(void);
58void ExttTemplateSelectRow(void);
59void ExttTemplateListSelect(void);
60void ExttTemplateListFilter(void);
61void ExttTemplateAuxTable(void);
62
63#include "ttemplatefunc.h"
64
65 //Table Variables Assignment Function
66void ProcesstTemplateVars(pentry entries[], int x)
67{
68        register int i;
69
70
71        for(i=0;i<x;i++)
72        {
73                if(!strcmp(entries[i].name,"uTemplate"))
74                        sscanf(entries[i].val,"%u",&uTemplate);
75                else if(!strcmp(entries[i].name,"cLabel"))
76                        sprintf(cLabel,"%.32s",entries[i].val);
77                else if(!strcmp(entries[i].name,"uTemplateSet"))
78                        sscanf(entries[i].val,"%u",&uTemplateSet);
79                else if(!strcmp(entries[i].name,"cuTemplateSetPullDown"))
80                {
81                        sprintf(cuTemplateSetPullDown,"%.255s",entries[i].val);
82                        uTemplateSet=ReadPullDown("tTemplateSet","cLabel",cuTemplateSetPullDown);
83                }
84                else if(!strcmp(entries[i].name,"uTemplateType"))
85                        sscanf(entries[i].val,"%u",&uTemplateType);
86                else if(!strcmp(entries[i].name,"cuTemplateTypePullDown"))
87                {
88                        sprintf(cuTemplateTypePullDown,"%.255s",entries[i].val);
89                        uTemplateType=ReadPullDown("tTemplateType","cLabel",cuTemplateTypePullDown);
90                }
91                else if(!strcmp(entries[i].name,"cComment"))
92                        cComment=entries[i].val;
93                else if(!strcmp(entries[i].name,"cTemplate"))
94                        cTemplate=entries[i].val;
95                else if(!strcmp(entries[i].name,"uOwner"))
96                        sscanf(entries[i].val,"%u",&uOwner);
97                else if(!strcmp(entries[i].name,"uCreatedBy"))
98                        sscanf(entries[i].val,"%u",&uCreatedBy);
99                else if(!strcmp(entries[i].name,"uCreatedDate"))
100                        sscanf(entries[i].val,"%lu",&uCreatedDate);
101                else if(!strcmp(entries[i].name,"uModBy"))
102                        sscanf(entries[i].val,"%u",&uModBy);
103                else if(!strcmp(entries[i].name,"uModDate"))
104                        sscanf(entries[i].val,"%lu",&uModDate);
105
106        }
107
108        //After so we can overwrite form data if needed.
109        ExtProcesstTemplateVars(entries,x);
110
111}//ProcesstTemplateVars()
112
113
114void ProcesstTemplateListVars(pentry entries[], int x)
115{
116        register int i;
117
118        for(i=0;i<x;i++)
119        {
120                if(!strncmp(entries[i].name,"ED",2))
121                {
122                        sscanf(entries[i].name+2,"%u",&uTemplate);
123                        guMode=2002;
124                        tTemplate("");
125                }
126        }
127}//void ProcesstTemplateListVars(pentry entries[], int x)
128
129
130int tTemplateCommands(pentry entries[], int x)
131{
132        ProcessControlVars(entries,x);
133
134        ExttTemplateCommands(entries,x);
135
136        if(!strcmp(gcFunction,"tTemplateTools"))
137        {
138                if(!strcmp(gcFind,LANG_NB_LIST))
139                {
140                        tTemplateList();
141                }
142
143                //Default
144                ProcesstTemplateVars(entries,x);
145                tTemplate("");
146        }
147        else if(!strcmp(gcFunction,"tTemplateList"))
148        {
149                ProcessControlVars(entries,x);
150                ProcesstTemplateListVars(entries,x);
151                tTemplateList();
152        }
153
154        return(0);
155
156}//tTemplateCommands()
157
158
159void tTemplate(const char *cResult)
160{
161        MYSQL_RES *res;
162        MYSQL_RES *res2;
163        MYSQL_ROW field;
164
165        //Internal skip reloading
166        if(!cResult[0])
167        {
168                if(guMode)
169                        ExttTemplateSelectRow();
170                else
171                        ExttTemplateSelect();
172
173                mysql_query(&gMysql,gcQuery);
174                if(mysql_errno(&gMysql))
175                {
176                        if(strstr(mysql_error(&gMysql)," doesn't exist"))
177                        {
178                                CreatetTemplate();
179                                unxsVZ("New tTemplate table created");
180                        }
181                        else
182                        {
183                                htmlPlainTextError(mysql_error(&gMysql));
184                        }
185                }
186
187                res=mysql_store_result(&gMysql);
188                if((guI=mysql_num_rows(res)))
189                {
190                        if(guMode==6)
191                        {
192                        sprintf(gcQuery,"SELECT _rowid FROM tTemplate WHERE uTemplate=%u"
193                                                ,uTemplate);
194                                MYSQL_RUN_STORE(res2);
195                                field=mysql_fetch_row(res2);
196                                sscanf(field[0],"%lu",&gluRowid);
197                                gluRowid++;
198                        }
199                        PageMachine("",0,"");
200                        if(!guMode) mysql_data_seek(res,gluRowid-1);
201                        field=mysql_fetch_row(res);
202                sscanf(field[0],"%u",&uTemplate);
203                sprintf(cLabel,"%.32s",field[1]);
204                sscanf(field[2],"%u",&uTemplateSet);
205                sscanf(field[3],"%u",&uTemplateType);
206                cComment=field[4];
207                cTemplate=field[5];
208                sscanf(field[6],"%u",&uOwner);
209                sscanf(field[7],"%u",&uCreatedBy);
210                sscanf(field[8],"%lu",&uCreatedDate);
211                sscanf(field[9],"%u",&uModBy);
212                sscanf(field[10],"%lu",&uModDate);
213
214                }
215
216        }//Internal Skip
217
218        Header_ism3(":: tTemplate",0);
219        printf("<table width=100%% cellspacing=0 cellpadding=0>\n");
220        printf("<tr><td colspan=2 align=right valign=center>");
221
222
223        printf("<input type=hidden name=gcFunction value=tTemplateTools>");
224        printf("<input type=hidden name=gluRowid value=%lu>",gluRowid);
225        if(guI)
226        {
227                if(guMode==6)
228                        //printf(" Found");
229                        printf(LANG_NBR_FOUND);
230                else if(guMode==5)
231                        //printf(" Modified");
232                        printf(LANG_NBR_MODIFIED);
233                else if(guMode==4)
234                        //printf(" New");
235                        printf(LANG_NBR_NEW);
236                printf(LANG_NBRF_SHOWING,gluRowid,guI);
237        }
238        else
239        {
240                if(!cResult[0])
241                //printf(" No records found");
242                printf(LANG_NBR_NORECS);
243        }
244        if(cResult[0]) printf("%s",cResult);
245        printf("</td></tr>");
246        printf("<tr><td valign=top width=25%%>");
247
248        ExttTemplateButtons();
249
250        printf("</td><td valign=top>");
251        //
252        OpenFieldSet("tTemplate Record Data",100);
253
254        if(guMode==2000 || guMode==2002)
255                tTemplateInput(1);
256        else
257                tTemplateInput(0);
258
259        //
260        CloseFieldSet();
261
262        //Bottom table
263        printf("<tr><td colspan=2>");
264        ExttTemplateAuxTable();
265
266        Footer_ism3();
267
268}//end of tTemplate();
269
270
271void tTemplateInput(unsigned uMode)
272{
273
274//uTemplate
275        OpenRow(LANG_FL_tTemplate_uTemplate,"black");
276        printf("<input title='%s' type=text name=uTemplate value=%u size=16 maxlength=10 "
277,LANG_FT_tTemplate_uTemplate,uTemplate);
278        if(guPermLevel>=20 && uMode)
279        {
280                printf("></td></tr>\n");
281        }
282        else
283        {
284                printf("disabled></td></tr>\n");
285                printf("<input type=hidden name=uTemplate value=%u >\n",uTemplate);
286        }
287//cLabel
288        OpenRow(LANG_FL_tTemplate_cLabel,"black");
289        printf("<input title='%s' type=text name=cLabel value=\"%s\" size=40 maxlength=32 "
290,LANG_FT_tTemplate_cLabel,EncodeDoubleQuotes(cLabel));
291        if(guPermLevel>=7 && uMode)
292        {
293                printf("></td></tr>\n");
294        }
295        else
296        {
297                printf("disabled></td></tr>\n");
298                printf("<input type=hidden name=cLabel value=\"%s\">\n",EncodeDoubleQuotes(cLabel));
299        }
300//uTemplateSet
301        OpenRow(LANG_FL_tTemplate_uTemplateSet,"black");
302        if(guPermLevel>=7 && uMode)
303                tTablePullDown("tTemplateSet;cuTemplateSetPullDown","cLabel","cLabel",uTemplateSet,1);
304        else
305                tTablePullDown("tTemplateSet;cuTemplateSetPullDown","cLabel","cLabel",uTemplateSet,0);
306//uTemplateType
307        OpenRow(LANG_FL_tTemplate_uTemplateType,"black");
308        if(guPermLevel>=7 && uMode)
309                tTablePullDown("tTemplateType;cuTemplateTypePullDown","cLabel","cLabel",uTemplateType,1);
310        else
311                tTablePullDown("tTemplateType;cuTemplateTypePullDown","cLabel","cLabel",uTemplateType,0);
312//cComment
313        OpenRow(LANG_FL_tTemplate_cComment,"black");
314        printf("<textarea title='%s' cols=80 wrap=hard rows=16 name=cComment "
315,LANG_FT_tTemplate_cComment);
316        if(guPermLevel>=7 && uMode)
317        {
318                printf(">%s</textarea></td></tr>\n",TransformAngleBrackets(cComment));
319        }
320        else
321        {
322                printf("disabled>%s</textarea></td></tr>\n",TransformAngleBrackets(cComment));
323                printf("<input type=hidden name=cComment value=\"%s\" >\n",EncodeDoubleQuotes(cComment));
324        }
325//cTemplate
326        OpenRow(LANG_FL_tTemplate_cTemplate,"black");
327        printf("<textarea title='%s' cols=80 wrap=off rows=16 name=cTemplate "
328,LANG_FT_tTemplate_cTemplate);
329        if(guPermLevel>=7 && uMode)
330        {
331                printf(">%s</textarea></td></tr>\n",TransformAngleBrackets(cTemplate));
332        }
333        else
334        {
335                printf("disabled>%s</textarea></td></tr>\n",TransformAngleBrackets(cTemplate));
336                printf("<input type=hidden name=cTemplate value=\"%s\" >\n",EncodeDoubleQuotes(cTemplate));
337        }
338//uOwner
339        OpenRow(LANG_FL_tTemplate_uOwner,"black");
340        if(guPermLevel>=20 && uMode)
341        {
342        printf("%s<input type=hidden name=uOwner value=%u >\n",ForeignKey("tClient","cLabel",uOwner),uOwner);
343        }
344        else
345        {
346        printf("%s<input type=hidden name=uOwner value=%u >\n",ForeignKey("tClient","cLabel",uOwner),uOwner);
347        }
348//uCreatedBy
349        OpenRow(LANG_FL_tTemplate_uCreatedBy,"black");
350        if(guPermLevel>=20 && uMode)
351        {
352        printf("%s<input type=hidden name=uCreatedBy value=%u >\n",ForeignKey("tClient","cLabel",uCreatedBy),uCreatedBy);
353        }
354        else
355        {
356        printf("%s<input type=hidden name=uCreatedBy value=%u >\n",ForeignKey("tClient","cLabel",uCreatedBy),uCreatedBy);
357        }
358//uCreatedDate
359        OpenRow(LANG_FL_tTemplate_uCreatedDate,"black");
360        if(uCreatedDate)
361                printf("%s\n\n",ctime(&uCreatedDate));
362        else
363                printf("---\n\n");
364        printf("<input type=hidden name=uCreatedDate value=%lu >\n",uCreatedDate);
365//uModBy
366        OpenRow(LANG_FL_tTemplate_uModBy,"black");
367        if(guPermLevel>=20 && uMode)
368        {
369        printf("%s<input type=hidden name=uModBy value=%u >\n",ForeignKey("tClient","cLabel",uModBy),uModBy);
370        }
371        else
372        {
373        printf("%s<input type=hidden name=uModBy value=%u >\n",ForeignKey("tClient","cLabel",uModBy),uModBy);
374        }
375//uModDate
376        OpenRow(LANG_FL_tTemplate_uModDate,"black");
377        if(uModDate)
378                printf("%s\n\n",ctime(&uModDate));
379        else
380                printf("---\n\n");
381        printf("<input type=hidden name=uModDate value=%lu >\n",uModDate);
382        printf("</tr>\n");
383
384
385
386}//void tTemplateInput(unsigned uMode)
387
388
389void NewtTemplate(unsigned uMode)
390{
391        register int i=0;
392        MYSQL_RES *res;
393
394        sprintf(gcQuery,"SELECT uTemplate FROM tTemplate WHERE uTemplate=%u",uTemplate);
395        MYSQL_RUN_STORE(res);
396        i=mysql_num_rows(res);
397
398        if(i)
399                //tTemplate("<blink>Record already exists");
400                tTemplate(LANG_NBR_RECEXISTS);
401
402        //insert query
403        Insert_tTemplate();
404        if(mysql_errno(&gMysql)) htmlPlainTextError(mysql_error(&gMysql));
405        //sprintf(gcQuery,"New record %u added");
406        uTemplate=mysql_insert_id(&gMysql);
407        uCreatedDate=luGetCreatedDate("tTemplate",uTemplate);
408        unxsVZLog(uTemplate,"tTemplate","New");
409        if(!uMode)
410        {
411                sprintf(gcQuery,LANG_NBR_NEWRECADDED,uTemplate);
412                tTemplate(gcQuery);
413        }
414
415}//NewtTemplate(unsigned uMode)
416
417
418void DeletetTemplate(void)
419{
420        sprintf(gcQuery,"DELETE FROM tTemplate WHERE uTemplate=%u AND ( uOwner=%u OR %u>9 )"
421                                        ,uTemplate,guLoginClient,guPermLevel);
422        MYSQL_RUN;
423        //tTemplate("Record Deleted");
424        if(mysql_affected_rows(&gMysql)>0)
425        {
426                unxsVZLog(uTemplate,"tTemplate","Del");
427                tTemplate(LANG_NBR_RECDELETED);
428        }
429        else
430        {
431                unxsVZLog(uTemplate,"tTemplate","DelError");
432                tTemplate(LANG_NBR_RECNOTDELETED);
433        }
434
435}//void DeletetTemplate(void)
436
437
438void Insert_tTemplate(void)
439{
440
441        //insert query
442        sprintf(gcQuery,"INSERT INTO tTemplate SET uTemplate=%u,cLabel='%s',uTemplateSet=%u,uTemplateType=%u,cComment='%s',cTemplate='%s',uOwner=%u,uCreatedBy=%u,uCreatedDate=UNIX_TIMESTAMP(NOW())",
443                        uTemplate
444                        ,TextAreaSave(cLabel)
445                        ,uTemplateSet
446                        ,uTemplateType
447                        ,TextAreaSave(cComment)
448                        ,TextAreaSave(cTemplate)
449                        ,uOwner
450                        ,uCreatedBy
451                        );
452
453        MYSQL_RUN;
454
455}//void Insert_tTemplate(void)
456
457
458void Update_tTemplate(char *cRowid)
459{
460
461        //update query
462        sprintf(gcQuery,"UPDATE tTemplate SET uTemplate=%u,cLabel='%s',uTemplateSet=%u,uTemplateType=%u,cComment='%s',cTemplate='%s',uModBy=%u,uModDate=UNIX_TIMESTAMP(NOW()) WHERE _rowid=%s",
463                        uTemplate
464                        ,TextAreaSave(cLabel)
465                        ,uTemplateSet
466                        ,uTemplateType
467                        ,TextAreaSave(cComment)
468                        ,TextAreaSave(cTemplate)
469                        ,uModBy
470                        ,cRowid);
471
472        MYSQL_RUN;
473       
474}//void Update_tTemplate(void)
475
476
477void ModtTemplate(void)
478{
479        register int i=0;
480        MYSQL_RES *res;
481        MYSQL_ROW field;
482        unsigned uPreModDate=0;
483
484        //Mod select gcQuery
485        if(guPermLevel<10)
486        sprintf(gcQuery,"SELECT tTemplate.uTemplate,\
487                                tTemplate.uModDate\
488                                FROM tTemplate,tClient\
489                                WHERE tTemplate.uTemplate=%u\
490                                AND tTemplate.uOwner=tClient.uClient\
491                                AND (tClient.uOwner=%u OR tClient.uClient=%u)"
492                        ,uTemplate,guLoginClient,guLoginClient);
493        else
494        sprintf(gcQuery,"SELECT uTemplate,uModDate FROM tTemplate WHERE uTemplate=%u",uTemplate);
495
496        MYSQL_RUN_STORE(res);
497        i=mysql_num_rows(res);
498
499        //if(i<1) tTemplate("<blink>Record does not exist");
500        if(i<1) tTemplate(LANG_NBR_RECNOTEXIST);
501        //if(i>1) tTemplate("<blink>Multiple rows!");
502        if(i>1) tTemplate(LANG_NBR_MULTRECS);
503
504        field=mysql_fetch_row(res);
505        sscanf(field[1],"%u",&uPreModDate);
506        if(uPreModDate!=uModDate) tTemplate(LANG_NBR_EXTMOD);
507
508        Update_tTemplate(field[0]);
509        if(mysql_errno(&gMysql)) htmlPlainTextError(mysql_error(&gMysql));
510        //sprintf(query,"record %s modified",field[0]);
511        sprintf(gcQuery,LANG_NBRF_REC_MODIFIED,field[0]);
512        uModDate=luGetModDate("tTemplate",uTemplate);
513        unxsVZLog(uTemplate,"tTemplate","Mod");
514        tTemplate(gcQuery);
515
516}//ModtTemplate(void)
517
518
519void tTemplateList(void)
520{
521        MYSQL_RES *res;
522        MYSQL_ROW field;
523
524        ExttTemplateListSelect();
525
526        MYSQL_RUN_STORE(res);
527        guI=mysql_num_rows(res);
528
529        PageMachine("tTemplateList",1,"");//1 is auto header list guMode. Opens table!
530
531        //Filter select drop down
532        ExttTemplateListFilter();
533
534        printf("<input type=text size=16 name=gcCommand maxlength=98 value=\"%s\" >",gcCommand);
535
536        printf("</table>\n");
537
538        printf("<table bgcolor=#9BC1B3 border=0 width=100%%>\n");
539        printf("<tr bgcolor=black><td><font face=arial,helvetica color=white>uTemplate<td><font face=arial,helvetica color=white>cLabel<td><font face=arial,helvetica color=white>uTemplateSet<td><font face=arial,helvetica color=white>uTemplateType<td><font face=arial,helvetica color=white>cComment<td><font face=arial,helvetica color=white>cTemplate<td><font face=arial,helvetica color=white>uOwner<td><font face=arial,helvetica color=white>uCreatedBy<td><font face=arial,helvetica color=white>uCreatedDate<td><font face=arial,helvetica color=white>uModBy<td><font face=arial,helvetica color=white>uModDate</tr>");
540
541        mysql_data_seek(res,guStart-1);
542
543        for(guN=0;guN<(guEnd-guStart+1);guN++)
544        {
545                field=mysql_fetch_row(res);
546                if(!field)
547                {
548                        printf("<tr><td><font face=arial,helvetica>End of data</table>");
549                        Footer_ism3();
550                }
551                        if(guN % 2)
552                                printf("<tr bgcolor=#BBE1D3>");
553                        else
554                                printf("<tr>");
555                time_t luTime8=strtoul(field[8],NULL,10);
556                char cBuf8[32];
557                if(luTime8)
558                        ctime_r(&luTime8,cBuf8);
559                else
560                        sprintf(cBuf8,"---");
561                time_t luTime10=strtoul(field[10],NULL,10);
562                char cBuf10[32];
563                if(luTime10)
564                        ctime_r(&luTime10,cBuf10);
565                else
566                        sprintf(cBuf10,"---");
567                printf("<td><input type=submit name=ED%s value=Edit> %s<td>%s<td>%s<td>%s"
568                                "<td><textarea disabled>%s</textarea>"
569                                "<td><textarea disabled>%s</textarea>"
570                                "<td>%s<td>%s<td>%s<td>%s<td>%s</tr>"
571                        ,field[0]
572                        ,field[0]
573                        ,field[1]
574                        ,ForeignKey("tTemplateSet","cLabel",strtoul(field[2],NULL,10))
575                        ,ForeignKey("tTemplateType","cLabel",strtoul(field[3],NULL,10))
576                        ,TransformAngleBrackets(field[4])
577                        ,TransformAngleBrackets(field[5])
578                        ,ForeignKey("tClient","cLabel",strtoul(field[6],NULL,10))
579                        ,ForeignKey("tClient","cLabel",strtoul(field[7],NULL,10))
580                        ,cBuf8
581                        ,ForeignKey("tClient","cLabel",strtoul(field[9],NULL,10))
582                        ,cBuf10
583                                );
584
585        }
586
587        printf("</table></form>\n");
588        Footer_ism3();
589
590}//tTemplateList()
591
592
593void CreatetTemplate(void)
594{
595        sprintf(gcQuery,"CREATE TABLE IF NOT EXISTS tTemplate ( uTemplate INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, cLabel VARCHAR(32) NOT NULL DEFAULT '', INDEX (cLabel), uOwner INT UNSIGNED NOT NULL DEFAULT 0, INDEX (uOwner), uCreatedBy INT UNSIGNED NOT NULL DEFAULT 0, uCreatedDate INT UNSIGNED NOT NULL DEFAULT 0, uModBy INT UNSIGNED NOT NULL DEFAULT 0, uModDate INT UNSIGNED NOT NULL DEFAULT 0, cComment TEXT NOT NULL DEFAULT '', cTemplate TEXT NOT NULL DEFAULT '', uTemplateSet INT UNSIGNED NOT NULL DEFAULT 0, uTemplateType INT UNSIGNED NOT NULL DEFAULT 0 )");
596        MYSQL_RUN;
597
598}//CreatetTemplate()
599
Note: See TracBrowser for help on using the browser.