1 #################################################################################
2 # template.lib: Kiriwrite Template Library #
4 # This library is under the same license as the main Kiriwrite script. #
5 #################################################################################
7 # This section of the file is for when the library is called from the main
10 if ($form_data->{'action'}){
12 # An action has been specified in the HTTP query.
14 my $http_query_action = $form_data->{'action'};
16 if ($http_query_action eq "delete"){
17 # Get the required parameters from the HTTP query.
19 my $http_query_template = $form_data->{'template'};
20 my $http_query_confirm = $form_data->{'confirm'};
22 # Check if a value for confirm has been specified (it shouldn't)
25 if (!$http_query_confirm){
26 # The confirm parameter of the HTTP query is blank, so
27 # write out a form asking the user to confirm the deletion
28 # of the selected template.
30 my $pagedata = kiriwrite_template_delete($http_query_template);
32 kiriwrite_output_header; # Output the header to browser/console/stdout.
33 kiriwrite_output_page($kiriwrite_lang->{template}->{deletetemplate}, $pagedata, "template"); # Output the page to browser/console/stdout.
34 exit; # End the script.
38 my $pagedata = kiriwrite_template_delete($http_query_template, $http_query_confirm);
40 kiriwrite_output_header; # Output the header to browser/console/stdout.
41 kiriwrite_output_page($kiriwrite_lang->{template}->{deletetemplate}, $pagedata, "template"); # Output the page to browser/console/stdout.
42 exit; # End the script.
46 } elsif ($http_query_action eq "add") {
48 # Get the variables from the HTTP query in preperation for processing.
50 my $http_query_confirm = $form_data->{'confirm'};
51 my $http_query_templatelayout = $form_data->{'templatelayout'};
52 my $http_query_templatename = $form_data->{'templatename'};
53 my $http_query_templatedescription = $form_data->{'templatedescription'};
54 my $http_query_templatefilename = $form_data->{'templatefilename'};
56 # Check if there is a confirmed value in the http_query_confirm variable.
58 if (!$http_query_confirm){
60 # Since there is no confirm value, print out a form for creating a new
63 my $pagedata = kiriwrite_template_add();
65 kiriwrite_output_header; # Output the header to browser/console/stdout.
66 kiriwrite_output_page($kiriwrite_lang->{template}->{addtemplate}, $pagedata, "template"); # Output the page to browser/console/stdout.
67 exit; # End the script.
71 # A value in the http_query_confirm value is specified, so pass the
72 # variables onto the kiriwrite_template_add subroutine.
74 my $pagedata = kiriwrite_template_add($http_query_templatefilename, $http_query_templatename, $http_query_templatedescription, $http_query_templatelayout, $http_query_confirm);
76 kiriwrite_output_header; # Output the header to browser/console/stdout.
77 kiriwrite_output_page($kiriwrite_lang->{template}->{addtemplate}, $pagedata, "template"); # Output the page to browser/console/stdout.
78 exit; # End the script.
82 } elsif ($http_query_action eq "edit") {
84 # Get the required parameters from the HTTP query.
86 my $http_query_templatefile = $form_data->{'template'};
87 my $http_query_confirm = $form_data->{'confirm'};
89 # Check to see if http_query_confirm has a value of '1' in it and
90 # if it does, edit the template using the settings providied.
92 if (!$http_query_confirm){
94 # Since there is no confirm value, open the template configuration
95 # file and the template file itself then print out the data on to
98 my $pagedata = kiriwrite_template_edit($http_query_templatefile);
99 kiriwrite_output_header; # Output the header to browser/console/stdout.
100 kiriwrite_output_page($kiriwrite_lang->{template}->{edittemplate}, $pagedata, "template"); # Output the page to browser/console/stdout.
101 exit; # End the script.
103 } elsif ($http_query_confirm eq 1) {
105 # Since there is a confirm value of 1, the user has confirm the
106 # action of editing of a template so get the other variables
107 # that were also sent and pass the variables to the subroutine.
109 my $http_query_newfilename = $form_data->{'newfilename'};
110 my $http_query_newname = $form_data->{'newname'};
111 my $http_query_newdescription = $form_data->{'newdescription'};
112 my $http_query_newlayout = $form_data->{'newlayout'};
114 my $pagedata = kiriwrite_template_edit($http_query_templatefile, $http_query_newfilename, $http_query_newname, $http_query_newdescription, $http_query_newlayout, $http_query_confirm);
115 kiriwrite_output_header; # Output the header to browser/console/stdout.
116 kiriwrite_output_page($kiriwrite_lang->{template}->{edittemplate}, $pagedata, "template"); # Output the page to browser/console/stdout.
117 exit; # End the script.
121 # Another confirm value is there instead of '0' or '1'. Return
122 # an error saying it is invalid.
124 kiriwrite_error("invalidvariable");
128 } elsif ($http_query_action eq "view"){
130 # Get the required parameters from the HTTP query.
132 my $http_query_browsenumber = $form_data->{'browsenumber'};
134 my $pagedata = kiriwrite_template_list($http_query_browsenumber);
136 kiriwrite_output_header; # Output the header to browser/console/stdout.
137 kiriwrite_output_page($kiriwrite_lang->{template}->{viewtemplates}, $pagedata, "template"); # Output the page to browser/console/stdout.
138 exit; # End the script.
142 # Another action was specified and was not one of the ones above, so
145 kiriwrite_error("invalidaction");
151 # If the action option is left blank, then print out a form where the list
152 # of templates are available.
154 my $pagedata = kiriwrite_template_list();
156 kiriwrite_output_header; # Output the header to browser/console/stdout.
157 kiriwrite_output_page($kiriwrite_lang->{template}->{viewtemplates}, $pagedata, "template"); # Output the page to browser/console/stdout.
158 exit; # End the script.
162 #################################################################################
163 # Begin list of relevant subroutines. #
164 #################################################################################
166 sub kiriwrite_template_add{
167 #################################################################################
168 # kiriwrite_template_add: Add a template to the template folder #
172 # kiriwrite_template_add(filename, name, description, layout, confirm); #
174 # filename The filename of the new template. #
175 # name The name of the template. #
176 # description The description of the template. #
177 # layout The layout of the new template. #
178 # confirm Confirm the action of creating a new template. #
179 #################################################################################
181 # Get the variables that were passed to the subroutine.
183 my ($templatefilename, $templatename, $templatedescription, $templatelayout, $confirm) = @_;
185 # Check if the confirm value is blank and if it is then set confirm to 0.
189 # The confirm value is blank, so set the value of confirm to 0.
197 # Check (validate) each of the values.
199 kiriwrite_variablecheck($templatename, "utf8", 0, 0);
200 kiriwrite_variablecheck($templatedescription, "utf8", 0, 0);
201 kiriwrite_variablecheck($templatelayout, "utf8", 0, 0);
203 # Convert the values into proper UTF8 strings that can be used.
205 $templatename = kiriwrite_utf8convert($templatename);
206 $templatedescription = kiriwrite_utf8convert($templatedescription);
207 $templatelayout = kiriwrite_utf8convert($templatelayout);
209 # Check the length of the converted UTF8 strings.
211 my $templatefilename_length_check = kiriwrite_variablecheck($templatefilename, "maxlength", 64, 1);
212 my $templatename_length_check = kiriwrite_variablecheck($templatename, "maxlength", 512, 1);
213 my $templatedescription_length_check = kiriwrite_variablecheck($templatedescription, "maxlength", 512, 1);
214 kiriwrite_variablecheck($confirm, "maxlength", 1, 0);
216 if ($templatefilename_length_check eq 1){
218 # The template filename length is too long, so return an error.
220 kiriwrite_error("templatefilenametoolong");
224 if ($templatename_length_check eq 1){
226 # The template name length is too long, so return an error.
228 kiriwrite_error("templatenametoolong");
233 if ($templatedescription_length_check eq 1){
235 # The template description length is too long, so return an error.
237 kiriwrite_error("templatedescriptiontoolong");
241 # Check if the filename specified is a valid filename.
243 kiriwrite_variablecheck($templatefilename, "filename", "", 0);
245 # Connect to the template server.
247 $kiriwrite_dbmodule->connect();
249 # Connect to the template database.
251 $kiriwrite_dbmodule->connecttemplate(1);
253 # Check if any errors had occured.
255 if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseInvalidPermissionsSet"){
257 # The template database has invalid permissions set so
260 kiriwrite_error("templatedatabaseinvalidpermissions");
264 $kiriwrite_dbmodule->addtemplate({ TemplateFilename => $templatefilename, TemplateName => $templatename, TemplateDescription => $templatedescription, TemplateLayout => $templatelayout });
266 if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseError"){
268 # A database error has occured so return an error along
269 # with the extended error information.
271 kiriwrite_error("templatedatabaseerror", $kiriwrite_dbmodule->geterror(1));
273 } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseInvalidPermissionsSet"){
275 # The template database has invalid permissions set so return
278 kiriwrite_error("templatedatabaseinvalidpermissions");
280 } elsif ($kiriwrite_dbmodule->geterror eq "TemplatePageExists"){
282 # The template page already exists so return an error.
284 kiriwrite_error("templatefilenameexists");
286 } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseUncreateable"){
288 # The template databases is uncreatable so return an error.
290 kiriwrite_error("templatedatabasenotcreated");
294 $kiriwrite_dbmodule->disconnecttemplate();
296 # Disconnect from the template server.
298 $kiriwrite_dbmodule->disconnect();
300 # Print out the confirmation message.
302 $kiriwrite_presmodule->addtext($kiriwrite_lang->{template}->{addedtemplate}, { Style => "pageheader" });
303 $kiriwrite_presmodule->addlinebreak();
304 $kiriwrite_presmodule->addlinebreak();
305 $kiriwrite_presmodule->addtext(kiriwrite_language($kiriwrite_lang->{template}->{addedtemplatemessage}, $templatename));
306 $kiriwrite_presmodule->addlinebreak();
307 $kiriwrite_presmodule->addlinebreak();
308 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=template", { Text => $kiriwrite_lang->{template}->{returntemplatelist} });
309 return $kiriwrite_presmodule->grab();
312 # No confirmation was made, so print out a form for adding a template.
314 $kiriwrite_presmodule->addtext($kiriwrite_lang->{template}->{addtemplate}, { Style => "pageheader" });
315 $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
316 $kiriwrite_presmodule->startbox();
317 $kiriwrite_presmodule->addhiddendata("mode", "template");
318 $kiriwrite_presmodule->addhiddendata("action", "add");
319 $kiriwrite_presmodule->addhiddendata("confirm", 1);
320 $kiriwrite_presmodule->addlinebreak();
321 $kiriwrite_presmodule->starttable("", { CellSpacing => 0, CellPadding => 5 });
323 $kiriwrite_presmodule->startheader();
324 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{setting}, { Style => "tablecellheader" });
325 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{value}, { Style => "tablecellheader" });
326 $kiriwrite_presmodule->endheader();
328 $kiriwrite_presmodule->startrow();
329 $kiriwrite_presmodule->addcell("tablecell1");
330 $kiriwrite_presmodule->addtext($kiriwrite_lang->{template}->{templatename});
331 $kiriwrite_presmodule->endcell();
332 $kiriwrite_presmodule->addcell("tablecell2");
333 $kiriwrite_presmodule->addinputbox("templatename", { Size => 64, MaxLength => 512 });
334 $kiriwrite_presmodule->endcell();
335 $kiriwrite_presmodule->endrow();
337 $kiriwrite_presmodule->startrow();
338 $kiriwrite_presmodule->addcell("tablecell1");
339 $kiriwrite_presmodule->addtext($kiriwrite_lang->{template}->{templatedescription});
340 $kiriwrite_presmodule->endcell();
341 $kiriwrite_presmodule->addcell("tablecell2");
342 $kiriwrite_presmodule->addinputbox("templatedescription", { Size => 64, MaxLength => 512 });
343 $kiriwrite_presmodule->endcell();
344 $kiriwrite_presmodule->endrow();
346 $kiriwrite_presmodule->startrow();
347 $kiriwrite_presmodule->addcell("tablecell1");
348 $kiriwrite_presmodule->addtext($kiriwrite_lang->{template}->{templatefilename});
349 $kiriwrite_presmodule->endcell();
350 $kiriwrite_presmodule->addcell("tablecell2");
351 $kiriwrite_presmodule->addinputbox("templatefilename", { Size => 32, MaxLength => 64 });
352 $kiriwrite_presmodule->endcell();
353 $kiriwrite_presmodule->endrow();
355 $kiriwrite_presmodule->startrow();
356 $kiriwrite_presmodule->addcell("tablecell1");
357 $kiriwrite_presmodule->addtext($kiriwrite_lang->{template}->{templatelayout});
358 $kiriwrite_presmodule->endcell();
359 $kiriwrite_presmodule->addcell("tablecell2");
360 $kiriwrite_presmodule->addtextbox("templatelayout", { Columns => 50, Rows => 10 });
361 $kiriwrite_presmodule->addlinebreak();
362 $kiriwrite_presmodule->addlinebreak();
363 $kiriwrite_presmodule->startbox("datalist");
364 $kiriwrite_presmodule->addboldtext($kiriwrite_lang->{common}->{tags});
365 $kiriwrite_presmodule->addlinebreak();
366 $kiriwrite_presmodule->addtext($kiriwrite_lang->{common}->{pagecontent});
367 $kiriwrite_presmodule->addlinebreak();
368 $kiriwrite_presmodule->addtext($kiriwrite_lang->{common}->{pagetitle});
369 $kiriwrite_presmodule->addlinebreak();
370 $kiriwrite_presmodule->addtext($kiriwrite_lang->{common}->{pagename});
371 $kiriwrite_presmodule->addlinebreak();
372 $kiriwrite_presmodule->addtext($kiriwrite_lang->{common}->{pagedescription});
373 $kiriwrite_presmodule->addlinebreak();
374 $kiriwrite_presmodule->addtext($kiriwrite_lang->{common}->{pagesection});
375 $kiriwrite_presmodule->addlinebreak();
376 $kiriwrite_presmodule->addtext($kiriwrite_lang->{common}->{pageautosection});
377 $kiriwrite_presmodule->addlinebreak();
378 $kiriwrite_presmodule->addtext($kiriwrite_lang->{common}->{pageautotitle});
379 $kiriwrite_presmodule->addlinebreak();
380 $kiriwrite_presmodule->endbox();
381 $kiriwrite_presmodule->endcell();
382 $kiriwrite_presmodule->endrow();
383 $kiriwrite_presmodule->endtable();
385 $kiriwrite_presmodule->addlinebreak();
386 $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{template}->{addtemplatebutton});
387 $kiriwrite_presmodule->addtext(" | ");
388 $kiriwrite_presmodule->addreset($kiriwrite_lang->{common}->{clearvalues});
389 $kiriwrite_presmodule->addtext(" | ");
390 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=template" , { Text => $kiriwrite_lang->{template}->{returntemplatelist} });
392 $kiriwrite_presmodule->endbox();
393 $kiriwrite_presmodule->endform();
395 return $kiriwrite_presmodule->grab();
402 sub kiriwrite_template_edit{
403 #################################################################################
404 # kiriwrite_template_edit: Edit a template from the template folder. #
408 # kiriwrite_template_edit(filename, [newfilename], [newname], [newdescription], #
409 # [templatelayout], [confirm]); #
411 # filename The current filename of the template to edit. #
412 # newfilename The new filename of the template to edit. #
413 # newname The new name of the template being edited. #
414 # newdescription The new description of the template being edited. #
415 # templatelayout The modified/altered template layout. #
416 # confirm Confirms the action to edit a template and its #
418 #################################################################################
420 # Get all the variables that have been passed to the subroutine.
422 my ($templatefilename, $templatenewfilename, $templatenewname, $templatenewdescription, $templatelayout, $confirm) = @_;
424 # Check if the confirm variable is blank, if it is then
429 # confirm is uninitalised/blank, so set the value of confirm
436 # Check if the template filename is blank and if it is, then return
439 if (!$templatefilename){
441 kiriwrite_error("templatefilenameblank");
445 # Connect to the database server.
447 $kiriwrite_dbmodule->connect();
449 # Check if any errors occured while connecting to the database server.
451 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
453 # A database connection error has occured so return
456 kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
462 # Check certain strings to see if they UTF8 compiliant.
464 kiriwrite_variablecheck($templatenewname, "utf8", 0, 0);
465 kiriwrite_variablecheck($templatenewdescription, "utf8", 0, 0);
466 kiriwrite_variablecheck($templatelayout, "utf8", 0, 0);
468 # Convert the values into proper UTF8 strings.
470 $templatenewname = kiriwrite_utf8convert($templatenewname);
471 $templatenewdescription = kiriwrite_utf8convert($templatenewdescription);
472 $templatelayout = kiriwrite_utf8convert($templatelayout);
474 # Check if the filenames recieved are valid filenames.
476 kiriwrite_variablecheck($templatenewfilename, "maxlength", 64, 0);
477 kiriwrite_variablecheck($templatenewdescription, "maxlength", 512, 0);
478 kiriwrite_variablecheck($templatenewname, "maxlength", 512, 0);
479 kiriwrite_variablecheck($templatefilename, "maxlength", 64, 0);
480 kiriwrite_variablecheck($confirm, "maxlength", 1, 0);
482 kiriwrite_variablecheck($templatefilename, "filename", "", 0);
483 kiriwrite_variablecheck($templatenewfilename, "filename", "", 0);
485 # Connect to the template database.
487 $kiriwrite_dbmodule->connecttemplate();
489 # Check if any errors had occured.
491 if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseInvalidPermissionsSet"){
493 # The template database has invalid permissions set so
496 kiriwrite_error("templatedatabaseinvalidpermissions");
502 $kiriwrite_dbmodule->edittemplate({ TemplateFilename => $templatefilename, NewTemplateFilename => $templatenewfilename, NewTemplateName => $templatenewname, NewTemplateDescription => $templatenewdescription, NewTemplateLayout => $templatelayout });
504 # Check if any error occured while editing the template.
506 if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseError"){
508 # A database error has occured, so return an error.
510 kiriwrite_error("templatedatabaseerror", $kiriwrite_dbmodule->geterror(1));
512 } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseInvalidPermissionsSet"){
514 # The template database has invalid permissions set so return
517 kiriwrite_error("templatedatabaseinvalidpermissions");
519 } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDoesNotExist"){
521 # The template does not exist, so process the next template.
523 kiriwrite_error("templatedoesnotexist");
527 # Disconnect from the database server.
529 $kiriwrite_dbmodule->disconnect();
531 # Disconnect from the template database.
533 $kiriwrite_dbmodule->disconnecttemplate();
535 # Append a link so that the user can return to the templates list.
537 $kiriwrite_presmodule->addtext($kiriwrite_lang->{template}->{editedtemplate}, { Style => "pageheader" });
538 $kiriwrite_presmodule->addlinebreak();
539 $kiriwrite_presmodule->addlinebreak();
540 $kiriwrite_presmodule->addtext(kiriwrite_language($kiriwrite_lang->{template}->{editedtemplatemessage}, $templatenewname));
541 $kiriwrite_presmodule->addlinebreak();
542 $kiriwrite_presmodule->addlinebreak();
543 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=template", { Text => $kiriwrite_lang->{template}->{returntemplatelist} });
547 # Connect to the template database.
549 $kiriwrite_dbmodule->connecttemplate();
551 # Check if any errors had occured.
553 if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseInvalidPermissionsSet"){
555 # The template database has invalid permissions set so
558 kiriwrite_error("templatedatabaseinvalidpermissions");
562 # Get the template information.
564 my %template_info = $kiriwrite_dbmodule->gettemplateinfo({ TemplateFilename => $templatefilename });
566 # Check if any error occured while getting the template information.
568 if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseError"){
570 # A database error has occured, so return an error.
572 kiriwrite_error("templatedatabaseerror", $kiriwrite_dbmodule->geterror(1));
574 } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDoesNotExist"){
576 # The template does not exist, so return an error.
578 kiriwrite_error("templatedoesnotexist");
582 # Disconnect from the template database.
584 $kiriwrite_dbmodule->disconnecttemplate();
586 # Get the values from the query results.
588 my $template_filename = $template_info{"TemplateFilename"};
589 my $template_name = $template_info{"TemplateName"};
590 my $template_description = $template_info{"TemplateDescription"};
591 my $template_layout = $template_info{"TemplateLayout"};
592 my $template_modified = $template_info{"TemplateLastModified"};
594 # Check if the values are undefined and set them blank
597 if (!$template_name){
601 if (!$template_description){
602 $template_description = "";
605 if (!$template_layout){
606 $template_layout = "";
609 # Write out the form for editing an template with the current template
610 # settings put into the correct place.
612 $kiriwrite_presmodule->addtext($kiriwrite_lang->{template}->{edittemplate}, { Style => "pageheader" });
613 $kiriwrite_presmodule->addlinebreak();
614 $kiriwrite_presmodule->addlinebreak();
615 $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
616 $kiriwrite_presmodule->startbox();
617 $kiriwrite_presmodule->addhiddendata("mode", "template");
618 $kiriwrite_presmodule->addhiddendata("action", "edit");
619 $kiriwrite_presmodule->addhiddendata("confirm", 1);
620 $kiriwrite_presmodule->addhiddendata("template", $template_filename);
621 $kiriwrite_presmodule->starttable("", { CellSpacing => 0, CellPadding => 5});
623 $kiriwrite_presmodule->startheader();
624 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{setting}, { Style => "tablecellheader" });
625 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{value}, { Style => "tablecellheader" });
626 $kiriwrite_presmodule->endheader();
628 $kiriwrite_presmodule->startrow();
629 $kiriwrite_presmodule->addcell("tablecell1");
630 $kiriwrite_presmodule->addtext($kiriwrite_lang->{template}->{templatename});
631 $kiriwrite_presmodule->endcell();
632 $kiriwrite_presmodule->addcell("tablecell2");
633 $kiriwrite_presmodule->addinputbox("newname", { Size => 64, MaxLength => 512, Value => $template_name });
634 $kiriwrite_presmodule->endcell();
635 $kiriwrite_presmodule->endrow();
637 $kiriwrite_presmodule->startrow();
638 $kiriwrite_presmodule->addcell("tablecell1");
639 $kiriwrite_presmodule->addtext($kiriwrite_lang->{template}->{templatedescription});
640 $kiriwrite_presmodule->endcell();
641 $kiriwrite_presmodule->addcell("tablecell2");
642 $kiriwrite_presmodule->addinputbox("newdescription", { Size => 64, MaxLength => 512, Value => $template_description });
643 $kiriwrite_presmodule->endcell();
644 $kiriwrite_presmodule->endrow();
646 $kiriwrite_presmodule->startrow();
647 $kiriwrite_presmodule->addcell("tablecell1");
648 $kiriwrite_presmodule->addtext($kiriwrite_lang->{template}->{templatefilename});
649 $kiriwrite_presmodule->endcell();
650 $kiriwrite_presmodule->addcell("tablecell2");
651 $kiriwrite_presmodule->addinputbox("newfilename", { Size => 32, MaxLength => 64, Value => $template_filename });
652 $kiriwrite_presmodule->endcell();
653 $kiriwrite_presmodule->endrow();
655 $kiriwrite_presmodule->startrow();
656 $kiriwrite_presmodule->addcell("tablecell1");
657 $kiriwrite_presmodule->addtext($kiriwrite_lang->{template}->{templatelayout});
658 $kiriwrite_presmodule->endcell();
659 $kiriwrite_presmodule->addcell("tablecell2");
660 $kiriwrite_presmodule->addtextbox("newlayout", { Rows => 10, Columns => 50, Value => $template_layout});
661 $kiriwrite_presmodule->addlinebreak();
662 $kiriwrite_presmodule->addlinebreak();
663 $kiriwrite_presmodule->startbox("datalist");
664 $kiriwrite_presmodule->addboldtext($kiriwrite_lang->{common}->{tags});
665 $kiriwrite_presmodule->addlinebreak();
666 $kiriwrite_presmodule->addtext($kiriwrite_lang->{common}->{pagecontent});
667 $kiriwrite_presmodule->addlinebreak();
668 $kiriwrite_presmodule->addtext($kiriwrite_lang->{common}->{pagetitle});
669 $kiriwrite_presmodule->addlinebreak();
670 $kiriwrite_presmodule->addtext($kiriwrite_lang->{common}->{pagename});
671 $kiriwrite_presmodule->addlinebreak();
672 $kiriwrite_presmodule->addtext($kiriwrite_lang->{common}->{pagedescription});
673 $kiriwrite_presmodule->addlinebreak();
674 $kiriwrite_presmodule->addtext($kiriwrite_lang->{common}->{pagesection});
675 $kiriwrite_presmodule->addlinebreak();
676 $kiriwrite_presmodule->addtext($kiriwrite_lang->{common}->{pageautosection});
677 $kiriwrite_presmodule->addlinebreak();
678 $kiriwrite_presmodule->addtext($kiriwrite_lang->{common}->{pageautotitle});
679 $kiriwrite_presmodule->addlinebreak();
680 $kiriwrite_presmodule->endbox();
681 $kiriwrite_presmodule->endcell();
682 $kiriwrite_presmodule->endrow();
684 $kiriwrite_presmodule->endtable();
686 $kiriwrite_presmodule->addlinebreak();
688 $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{template}->{edittemplatebutton});
689 $kiriwrite_presmodule->addtext(" | ");
690 $kiriwrite_presmodule->addreset($kiriwrite_lang->{common}->{restorecurrent});
691 $kiriwrite_presmodule->addtext(" | ");
692 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=template", { Text => $kiriwrite_lang->{template}->{returntemplatelist} });
694 $kiriwrite_presmodule->endbox();
695 $kiriwrite_presmodule->endform();
699 # Disconnect from the database server.
701 $kiriwrite_dbmodule->disconnect();
703 return $kiriwrite_presmodule->grab();
707 sub kiriwrite_template_delete{
708 #################################################################################
709 # kiriwrite_template_delete: Delete a template from the template folder. #
713 # kiriwrite_template_delete(filename, confirm); #
715 # filename Specifies the filename of the database to delete. #
716 # confirm Confirms the action to delete a template. #
717 #################################################################################
719 # Get the parameters that were passed to the subroutine.
721 my ($template_filename, $template_confirm) = @_;
723 if (!$template_confirm){
724 $template_confirm = 0;
727 # Check the length of the variables.
728 kiriwrite_variablecheck($template_filename, "maxlength", 64, 0);
729 kiriwrite_variablecheck($template_confirm, "maxlength", 1, 0);
731 # Check if the template_name string is blank and if it is then
732 # return an error (as the template_name string should not be
735 if (!$template_filename){
737 # The template_filename string really is blank,
738 # so return an error saying that an empty
739 # filename was passed (to the subroutine).
741 kiriwrite_error("templatefilenameblank");
745 # Check if the template_confirm string is blank and if it is, write
746 # out a form asking the user to confirm the deletion.
748 if ($template_confirm eq 1){
750 # The action to delete the template from the template database has
751 # been confirmed so delete the template.
753 # Connect to the database server.
755 $kiriwrite_dbmodule->connect();
757 # Check if any errors occured while connecting to the database server.
759 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
761 # A database connection error has occured so return
764 kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
768 # Check if the template database exists and the file permissions
769 # are valid and return an error if they aren't.
771 $kiriwrite_dbmodule->connecttemplate();
773 if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseDoesNotExist"){
775 # The template database does not exist so write a warning
778 kiriwrite_error("templatedatabasemissing");
780 } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseInvalidPermissionsSet"){
782 # The template database has invalid permissions set so
785 kiriwrite_error("templatedatabaseinvalidpermissions");
789 my %template_info = $kiriwrite_dbmodule->gettemplateinfo({ TemplateFilename => $template_filename });
791 # Check if any error occured while getting the template information.
793 if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseError"){
795 # A database error has occured, so return an error.
797 kiriwrite_error("templatedatabaseerror", $kiriwrite_dbmodule->geterror(1));
799 } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDoesNotExist"){
801 # The template does not exist, so return an error.
803 kiriwrite_error("templatedoesnotexist");
807 # Delete the selected template.
809 $kiriwrite_dbmodule->deletetemplate({ TemplateFilename => $template_filename });
811 # Check if any error occured while deleting the template.
813 if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseError"){
815 # A database error has occured, so return an error.
817 kiriwrite_error("templatedatabaseerror", $kiriwrite_dbmodule->geterror(1));
819 } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDoesNotExist"){
821 # The template does not exist, so process the next template.
823 kiriwrite_error("templatedoesnotexist");
827 $kiriwrite_dbmodule->disconnecttemplate();
829 # Get the deleted database name.
831 my $database_template_name = $template_info{"TemplateName"};
833 # Disconnect from the database server.
835 $kiriwrite_dbmodule->disconnect();
837 $kiriwrite_presmodule->addtext($kiriwrite_lang->{template}->{deletedtemplate}, { Style => "pageheader" });
838 $kiriwrite_presmodule->addlinebreak();
839 $kiriwrite_presmodule->addlinebreak();
840 $kiriwrite_presmodule->addtext(kiriwrite_language($kiriwrite_lang->{template}->{deletedtemplatemessage}, $database_template_name) );
841 $kiriwrite_presmodule->addlinebreak();
842 $kiriwrite_presmodule->addlinebreak();
843 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=template", { Text => $kiriwrite_lang->{template}->{returntemplatelist} });
845 return $kiriwrite_presmodule->grab();
847 } elsif ($template_confirm eq 0) {
849 # The template confirm value is 0 (previously blank and then set to 0), so
850 # write out a form asking the user to confirm the deletion of the template.
852 # Connect to the database server.
854 $kiriwrite_dbmodule->connect();
856 # Check if any errors occured while connecting to the database server.
858 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
860 # A database connection error has occured so return
863 kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
867 # Connect to the template database.
869 $kiriwrite_dbmodule->connecttemplate();
871 if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseDoesNotExist"){
873 # The template database does not exist so write a warning
876 kiriwrite_error("templatedatabasemissing");
878 } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseInvalidPermissionsSet"){
880 # The template database has invalid permissions set so
883 kiriwrite_error("templatedatabaseinvalidpermissions");
887 my %template_info = $kiriwrite_dbmodule->gettemplateinfo({ TemplateFilename => $template_filename });
889 if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseError"){
891 # A database error has occured, so return an error.
893 kiriwrite_error("templatedatabaseerror", $kiriwrite_dbmodule->geterror(1));
895 } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDoesNotExist"){
897 # The template does not exist, so return an error.
899 kiriwrite_error("templatedoesnotexist");
903 my $template_data_filename = $template_info{"TemplateFilename"};
904 my $template_data_name = $template_info{"TemplateName"};
906 $kiriwrite_dbmodule->disconnecttemplate();
908 # Disconnect from the database server.
910 $kiriwrite_dbmodule->disconnect();
912 # Write out the confirmation form.
914 $kiriwrite_presmodule->addtext($kiriwrite_lang->{template}->{deletetemplate}, { Style => "pageheader" });
915 $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "POST");
916 $kiriwrite_presmodule->startbox();
917 $kiriwrite_presmodule->addhiddendata("mode", "template");
918 $kiriwrite_presmodule->addhiddendata("template", $template_filename);
919 $kiriwrite_presmodule->addhiddendata("action", "delete");
920 $kiriwrite_presmodule->addhiddendata("confirm", 1);
921 $kiriwrite_presmodule->addlinebreak();
922 $kiriwrite_presmodule->addtext(kiriwrite_language($kiriwrite_lang->{template}->{deletetemplatemessage}, $template_data_name, $template_data_filename));
923 $kiriwrite_presmodule->addlinebreak();
924 $kiriwrite_presmodule->addlinebreak();
925 $kiriwrite_presmodule->addsubmit($kiriwrite_lang->{template}->{deletetemplatebutton});
926 $kiriwrite_presmodule->addtext(" | ");
927 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=template", { Text => $kiriwrite_lang->{template}->{deletetemplatereturntolist} });
928 $kiriwrite_presmodule->endbox();
929 $kiriwrite_presmodule->endform();
931 return $kiriwrite_presmodule->grab();
935 kiriwrite_error("invalidvariable");
941 sub kiriwrite_template_list{
942 #################################################################################
943 # kiriwrite_template_list: List the templates in the template folder. #
947 # kiriwrite_template_list([browsenumber]); #
949 # browsenumber Specifies the page browse number to use. #
950 #################################################################################
952 # Define certain values for later.
954 my $template_browsenumber = shift;
961 my $template_filename = "";
962 my $template_filename_list = "";
963 my $template_name = "";
964 my $template_description = "";
965 my $template_data = "";
967 my $template_split = 50;
968 my $template_list = 0;
970 my $template_count = 0;
972 my $template_style = 0;
973 my $template_stylename = "";
975 my $templatewarning = "";
977 # Connect to the database server.
979 $kiriwrite_dbmodule->connect();
981 # Check if any errors occured while connecting to the database server.
983 if ($kiriwrite_dbmodule->geterror eq "DatabaseConnectionError"){
985 # A database connection error has occured so return
988 kiriwrite_error("databaseconnectionerror", $kiriwrite_dbmodule->geterror(1));
992 # Connect to the template database.
994 $kiriwrite_dbmodule->connecttemplate();
996 # Check if any errors had occured.
998 if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseDoesNotExist"){
1000 # The template database does not exist so write a warning
1003 $templatewarning = $kiriwrite_lang->{template}->{templatedatabasedoesnotexist};
1005 } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseInvalidPermissionsSet"){
1007 # The template database has invalid permissions set so
1010 kiriwrite_error("templatedatabaseinvalidpermissions");
1012 } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseError"){
1014 # A database error occured while getting the list of
1015 # templates so return an error with the extended
1016 # error information.
1018 kiriwrite_error("templatedatabaseerror", $kiriwrite_dbmodule->geterror(1));
1022 # Get the list of template databases.
1024 if (!$templatewarning){
1026 # Get the total count of filters in the filter database.
1028 my $template_total_count = $kiriwrite_dbmodule->gettemplatecount;
1030 # Check if any errors occured while getting the count of filters.
1032 if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseError"){
1034 # A database error has occured with the filter database.
1036 kiriwrite_error("templatedatabaseerror", $kiriwrite_dbmodule->geterror(1));
1040 if (!$template_browsenumber || $template_browsenumber eq 0){
1042 $template_browsenumber = 1;
1046 # Check if the template browse number is valid and if it isn't
1047 # then return an error.
1049 my $kiriwrite_browsenumber_length_check = kiriwrite_variablecheck($template_browsenumber, "maxlength", 7, 1);
1050 my $kiriwrite_browsenumber_number_check = kiriwrite_variablecheck($template_browsenumber, "numbers", 0, 1);
1052 if ($kiriwrite_browsenumber_length_check eq 1){
1054 # The browse number was too long so return
1057 kiriwrite_error("browsenumbertoolong");
1061 if ($kiriwrite_browsenumber_number_check eq 1){
1063 # The browse number wasn't a number so
1066 kiriwrite_error("browsenumberinvalid");
1070 if ($template_total_count ne 0){
1072 if ($template_total_count eq $template_split){
1074 $template_list = substr(($template_total_count / $template_split), 0, 1);
1078 $template_list = substr(($template_total_count / $template_split), 0, 1) + 1;
1084 my $start_from = ($template_browsenumber - 1) * $template_split;
1086 @templates_list = $kiriwrite_dbmodule->gettemplatelist({ StartFrom => $start_from, Limit => $template_split });
1090 # Check if any errors had occured.
1092 if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseError"){
1094 # A database error occured while getting the list
1095 # of templates so return an error with the
1096 # extended error information.
1098 kiriwrite_error("templatedatabaseerror", $kiriwrite_dbmodule->geterror(1));
1102 # Check if any templates are in the database and if there isn't
1103 # then write a message saying that there are no templates in the
1106 if (!@database_pages && $template_browsenumber > 1){
1108 # There were no values given for the page browse
1109 # number given so write a message saying that
1110 # there were no pages for the page browse number
1113 $kiriwrite_presmodule->clear();
1114 $kiriwrite_presmodule->addtext(kiriwrite_language($kiriwrite_lang->{template}->{viewtemplates}, $db_name), { Style => "pageheader" });
1115 $kiriwrite_presmodule->addlinebreak();
1116 $kiriwrite_presmodule->addlinebreak();
1117 $kiriwrite_presmodule->startbox("errorbox");
1118 $kiriwrite_presmodule->enterdata($kiriwrite_lang->{template}->{notemplatesinpagebrowse});
1119 $kiriwrite_presmodule->addlinebreak();
1120 $kiriwrite_presmodule->addlinebreak();
1121 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=template" . $database_file, { Text => $kiriwrite_lang->{template}->{returntofirstpagebrowse} });
1122 $kiriwrite_presmodule->endbox();
1124 return $kiriwrite_presmodule->grab();
1126 } elsif (!@templates_list && !$templatewarning){
1127 $templatewarning = $kiriwrite_lang->{template}->{notemplatesavailable};
1130 # Process the templates into a template list.
1132 $kiriwrite_presmodule->addtext($kiriwrite_lang->{template}->{viewtemplates}, { Style => "pageheader" });
1133 $kiriwrite_presmodule->addlinebreak();
1134 $kiriwrite_presmodule->addlinebreak();
1136 if ($templatewarning){
1138 $kiriwrite_presmodule->startbox("errorbox");
1139 $kiriwrite_presmodule->addtext($templatewarning);
1140 $kiriwrite_presmodule->endbox();
1144 if (!$template_browsenumber || $template_browsenumber eq 0){
1146 $template_browsenumber = 1;
1150 # Check if the template browse number is valid and if it isn't
1151 # then return an error.
1153 my $kiriwrite_browsenumber_length_check = kiriwrite_variablecheck($template_browsenumber, "maxlength", 7, 1);
1154 my $kiriwrite_browsenumber_number_check = kiriwrite_variablecheck($template_browsenumber, "numbers", 0, 1);
1156 if ($kiriwrite_browsenumber_length_check eq 1){
1158 # The browse number was too long so return
1161 kiriwrite_error("browsenumbertoolong");
1165 if ($kiriwrite_browsenumber_number_check eq 1){
1167 # The browse number wasn't a number so
1170 kiriwrite_error("browsenumberinvalid");
1174 # Start a form for using the template browsing list with.
1176 $kiriwrite_presmodule->startform($kiriwrite_env{"script_filename"}, "GET");
1177 $kiriwrite_presmodule->addhiddendata("mode", "template");
1179 # Write out the template browsing list.
1181 $kiriwrite_presmodule->addtext($kiriwrite_lang->{template}->{showlistpage});
1182 $kiriwrite_presmodule->addselectbox("browsenumber");
1184 # Write out the list of available pages to browse.
1186 if (!$template_list_count){
1188 $template_list_count = 0;
1192 while ($template_list_count ne $template_list){
1194 $template_list_count++;
1196 if ($template_list_count eq 1 && !$template_browsenumber){
1198 $kiriwrite_presmodule->addoption($template_list_count, { Value => $template_list_count, Selected => 1 });
1202 if ($template_browsenumber eq $template_list_count){
1204 $kiriwrite_presmodule->addoption($template_list_count, { Value => $template_list_count, Selected => 1 });
1208 $kiriwrite_presmodule->addoption($template_list_count, { Value => $template_list_count });
1216 $kiriwrite_presmodule->endselectbox();
1217 $kiriwrite_presmodule->addbutton("action", { Value => "view", Description => $kiriwrite_lang->{template}->{show} });
1219 if ($template_list ne $template_browsenumber){
1221 $kiriwrite_presmodule->addtext(" | ");
1222 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=template&action=view&browsenumber=" . ($template_browsenumber + 1), { Text => $kiriwrite_lang->{template}->{nextpage} });
1226 # Check if the filter browse number is not blank and
1227 # not set as 0 and hide the Previous page link if
1230 if ($template_browsenumber > 1){
1232 $kiriwrite_presmodule->addtext(" | ");
1233 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=template&action=view&browsenumber=" . ($template_browsenumber - 1), { Text => $kiriwrite_lang->{template}->{previouspage} });
1237 $kiriwrite_presmodule->addlinebreak();
1238 $kiriwrite_presmodule->addlinebreak();
1240 $kiriwrite_presmodule->starttable("", { CellPadding => 5, CellSpacing => 0 });
1241 $kiriwrite_presmodule->startheader();
1242 $kiriwrite_presmodule->addheader($kiriwrite_lang->{template}->{templatefilename}, { Style => "tablecellheader" });
1243 $kiriwrite_presmodule->addheader($kiriwrite_lang->{template}->{templatename}, { Style => "tablecellheader" });
1244 $kiriwrite_presmodule->addheader($kiriwrite_lang->{template}->{templatedescription}, { Style => "tablecellheader" });
1245 $kiriwrite_presmodule->addheader($kiriwrite_lang->{common}->{options}, { Style => "tablecellheader" });
1246 $kiriwrite_presmodule->endheader();
1248 foreach $template (@templates_list){
1250 # Get the template data.
1252 %template_info = $kiriwrite_dbmodule->gettemplateinfo({ TemplateFilename => $template, Reduced => 1 });
1254 # Check if any errors occured while trying to get the template
1257 if ($kiriwrite_dbmodule->geterror eq "TemplateDatabaseError"){
1259 # A database error has occured, so return an error.
1261 kiriwrite_error("templatedatabaseerror", $kiriwrite_dbmodule->geterror(1));
1263 } elsif ($kiriwrite_dbmodule->geterror eq "TemplateDoesNotExist"){
1265 # The template does not exist, so process the next template.
1271 $template_filename = $template_info{"TemplateFileName"};
1272 $template_name = $template_info{"TemplateName"};
1273 $template_description = $template_info{"TemplateDescription"};
1275 # Check what style the row of table cells should be.
1277 if ($template_style eq 0){
1279 $template_stylename = "tablecell1";
1280 $template_style = 1;
1284 $template_stylename = "tablecell2";
1285 $template_style = 0;
1289 $kiriwrite_presmodule->startrow();
1290 $kiriwrite_presmodule->addcell($template_stylename);
1291 $kiriwrite_presmodule->addtext($template_info{"TemplateFilename"});
1293 # Check if the blank template value was set.
1295 if (!$template_info{"TemplateLayout"}){
1296 $kiriwrite_presmodule->additalictext(" " . "[Blank Template]");
1299 $kiriwrite_presmodule->endcell();
1300 $kiriwrite_presmodule->addcell($template_stylename);
1302 # Check if the template name is blank and if it is
1303 # write a message to say there's no name for the
1306 if (!$template_info{"TemplateName"}){
1307 $kiriwrite_presmodule->additalictext($kiriwrite_lang->{blank}->{noname});
1309 $kiriwrite_presmodule->addtext($template_info{"TemplateName"});
1312 $kiriwrite_presmodule->endcell();
1313 $kiriwrite_presmodule->addcell($template_stylename);
1315 # Check if the template description is blank and if
1316 # it is then write a message to say there's no
1317 # description for the template.
1319 if (!$template_info{"TemplateDescription"}){
1320 $kiriwrite_presmodule->additalictext($kiriwrite_lang->{blank}->{nodescription});
1322 $kiriwrite_presmodule->addtext($template_info{"TemplateDescription"});
1325 $kiriwrite_presmodule->endcell();
1326 $kiriwrite_presmodule->addcell($template_stylename);
1327 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=template&action=edit&template=" . $template_info{"TemplateFilename"}, { Text => $kiriwrite_lang->{options}->{edit} });
1328 $kiriwrite_presmodule->addlink($kiriwrite_env{"script_filename"} . "?mode=template&action=delete&template=" . $template_info{"TemplateFilename"}, { Text => $kiriwrite_lang->{options}->{delete} });
1329 $kiriwrite_presmodule->endcell();
1330 $kiriwrite_presmodule->endrow();
1334 $kiriwrite_presmodule->endtable();
1335 $kiriwrite_presmodule->endform();
1339 # Disconnect from the database server.
1341 $kiriwrite_dbmodule->disconnect();
1343 $kiriwrite_dbmodule->disconnecttemplate();
1344 return $kiriwrite_presmodule->grab();