Ignore:
Timestamp:
Jan 4, 2010, 8:02:21 AM (14 years ago)
Author:
Kevin Toppenberg
Message:

Added HTML templating

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cprs/branches/tmg-cprs/CPRS-Chart/Templates/fTemplateDialog.pas

    r453 r654  
    66uses
    77  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    8   StdCtrls, ExtCtrls, ORCtrls, ORFn, AppEvnts, uTemplates, DKLang;
     8  StdCtrls, StrUtils, ExtCtrls, ORCtrls, ORFn, AppEvnts, uTemplates, DKLang;
    99
    1010type
     
    4444    FCheck4Required: boolean;
    4545    FSilent: boolean;
     46    FHTMLMode : boolean; //kt added 12/28/09
     47    FAnswerOpenTag : string; //kt added 12/28/09
     48    FAnswerCloseTag : string; //kt added 12/28/09
    4649    procedure SizeFormToCancelBtn();
    4750    procedure ChkAll(Chk: boolean);
     
    5962    procedure ParentCBEnter(Sender: TObject);
    6063    procedure ParentCBExit(Sender: TObject);
     64    procedure SetAnswerHTMLTag(Value : string); //kt 12/28/09
    6165  public
    6266    property Silent: boolean read FSilent write FSilent ;
     67    property HTMLMode : boolean read FHTMLMode write FHTMLMode; //kt added 12/28/09
     68    property HTMLAnswerOpenTag : string read FAnswerOpenTag write SetAnswerHTMLTag;  //kt added 12/28/09
     69    property HTMLAnswerCloseTag : string read FAnswerCloseTag write SetAnswerHTMLTag;  //kt added 12/28/09
    6370  published
    6471  end;
     
    6673// Returns True if Cancel button is pressed
    6774function DoTemplateDialog(SL: TStrings; const CaptionText: string; PreviewMode: boolean = FALSE): boolean;
     75function RemoveHTMLTags(Txt : string) : string;
     76function FormatHTMLTags(Txt : string): string;
    6877procedure CheckBoilerplate4Fields(SL: TStrings; const CaptionText: string = ''; PreviewMode: boolean = FALSE); overload;
    6978procedure CheckBoilerplate4Fields(var AText: string; const CaptionText: string = ''; PreviewMode: boolean = FALSE); overload;
     
    8190  Gap = 4;
    8291  IndentGap = 18;
     92  HTMLBEGINNINGTAG = '{HTML:';   //kt
     93  HTMLENDINGTAG = '}';       //kt
     94  HTMLBEGINNINGTAGLEN = length(HTMLBEGINNINGTAG);  //kt
     95  HTMLENDINGTAGLEN = length(HTMLENDINGTAG);   //kt
    8396
    8497
     
    89102  Save, Hidden: boolean;
    90103  TmpCtrl: TStringList;
    91 
     104  HTMLMode : boolean; //kt added 12/28/09
     105  HTMLOpenTag,HTMLCloseTag : string; //kt added 12/28/09
    92106begin
    93107  Txt := SL.Text;
    94108  SL.Clear;
    95109  TmpCtrl := TStringList.Create;
     110  HTMLMode := frmTemplateDialog.HTMLMode; //kt added 12/28/09
     111  HTMLOpenTag := frmTemplateDialog.HTMLAnswerOpenTag;  //kt added 12/28/09
     112  HTMLCloseTag := frmTemplateDialog.HTMLAnswerCloseTag; //kt added 12/28/09
     113  //kt added 12/28/09
    96114  try
    97115    for i := 0 to frmTemplateDialog.sbMain.ControlCount-1 do
     
    117135        p2 := StrToInt(Piece(tmp,'~',2));
    118136        Hidden := (copy(Piece(tmp,'~',3),2,1)=BOOLCHAR[TRUE]);
    119         SL.Text := SL.Text + ResolveTemplateFields(Copy(Txt,p1,p2), FALSE, Hidden, IncludeEmbeddedFields);
     137        //kt original line 12/28/09 --> SL.Text := SL.Text + ResolveTemplateFields(Copy(Txt,p1,p2), FALSE, Hidden, IncludeEmbeddedFields);
     138        SL.Text := SL.Text + ResolveTemplateFields(Copy(Txt,p1,p2), FALSE, Hidden, IncludeEmbeddedFields,
     139                                                   HTMLMode, HTMLOpenTag, HTMLCloseTag );
    120140      end;
    121141    end;
     
    195215    DlgIDCounts.Duplicates := dupError;
    196216    frmTemplateDialog.Caption := CaptionText;
     217    frmTemplateDialog.HTMLMode := uTemplates.bUsingHTMLMode; //kt
     218    frmTemplateDialog.HTMLAnswerOpenTag := '<I>'; //kt 12/28/09
     219    //SL.Text := RemoveHTMLTags(SL.Text);  //elh
    197220    AssignFieldIDs(SL);
    198221    frmTemplateDialog.SL := SL;
     
    237260      end;
    238261      frmTemplateDialog.BuildAllControls;
    239       repeat                     
     262      repeat
    240263         frmTemplateDialog.ShowModal;
    241          if(frmTemplateDialog.ModalResult = mrOK) then
    242            GetText(SL, TRUE)     {TRUE = Include embedded fields}
    243          else
     264         if(frmTemplateDialog.ModalResult = mrOK) then begin
     265           GetText(SL, TRUE);     {TRUE = Include embedded fields}
     266           if uTemplates.bUsingHTMLMode then begin
     267              SL.Text := FormatHTMLTags(SL.Text);
     268           end else begin
     269              SL.Text := RemoveHTMLTags(SL.Text);
     270           end;
     271         end else begin
    244272          if (not PreviewMode) and (not frmTemplateDialog.Silent) and (not uInit.TimedOut) then
    245273            begin
     
    262290              CancelDlg := TRUE;
    263291            end;
     292         end;     
    264293      until CancelDlg or (frmTemplateDialog.ModalResult = mrOK)
    265294    end
     
    281310end;
    282311
     312function RemoveHTMLTags(Txt : string): string;
     313var
     314  beginning,ending : integer;
     315  tempString,tempResult : string;
     316begin
     317  tempString := Txt;
     318  //here we will strip out all HTML formatting tags  //elh
     319  beginning := pos(HTMLBEGINNINGTAG, tempString);
     320  if beginning = 0 then begin
     321     Result := Txt;
     322  end else begin
     323    while beginning > 0 do
     324    begin
     325      tempResult := tempResult + Leftstr(tempString,beginning-1);
     326      tempString := Rightstr(tempString,length(tempString)-beginning-HTMLBEGINNINGTAGLEN);
     327      ending := pos(HTMLENDINGTAG, tempString);
     328      tempString := Rightstr(tempString,length(tempString)-ending);
     329      beginning := pos(HTMLBEGINNINGTAG, tempString);
     330  //    tempString := Midstr(Txt,i,HTMLBEGINNINGTAGLEN);
     331    end;
     332    Result := tempResult + tempString;
     333  end;
     334end;
     335
     336function FormatHTMLTags(Txt : string): string;
     337var
     338  beginning,ending : integer;
     339  tempString,tempResult : string;
     340begin
     341  tempString := Txt;
     342  //here we will strip out all HTML formatting tags  //elh
     343  beginning := pos(HTMLBEGINNINGTAG, tempString);
     344  if beginning = 0 then begin
     345     Result := Txt;
     346  end else begin
     347    while beginning > 0 do
     348    begin
     349      tempResult := tempResult + Leftstr(tempString,beginning-1);
     350      tempString := Rightstr(tempString,length(tempString)-beginning-HTMLBEGINNINGTAGLEN+1);
     351      ending := pos(HTMLENDINGTAG, tempString);
     352      tempResult := tempResult + Leftstr(tempString,ending-1);
     353      tempString := Rightstr(tempString,length(tempString)-ending);
     354      beginning := pos(HTMLBEGINNINGTAG, tempString);
     355  //    tempString := Midstr(Txt,i,HTMLBEGINNINGTAGLEN);
     356    end;
     357    Result := tempResult + tempString;
     358  end;
     359end;
     360
    283361procedure CheckBoilerplate4Fields(SL: TStrings; const CaptionText: string = ''; PreviewMode: boolean = FALSE);
    284362begin
     
    307385  finally
    308386    tmp.free;
     387  end;
     388end;
     389
     390procedure TfrmTemplateDialog.SetAnswerHTMLTag(Value : string);
     391//kt 12/28/09 Added entire function
     392begin
     393  if Value='' then begin
     394    FAnswerOpenTag :='';
     395    FAnswerCloseTag := '';
     396  end else begin
     397    if Pos('<',Value)>0 then Value := Piece(Value,'<',2);
     398    if Pos('>',Value)>0 then Value := Piece(Value,'>',1);
     399    if Pos('/',Value)>0 then Value := Piece(Value,'/',2);
     400    FAnswerOpenTag :='<'+Value+'>';
     401    FAnswerCloseTag := '</' + Value + '>';
    309402  end;
    310403end;
     
    460553  end;
    461554  tmp := copy(SL.Text, p1, p2);
     555  tmp := RemoveHTMLTags(tmp);
    462556  if(copy(tmp, length(tmp)-1, 2) = CRLF) then
    463557    delete(tmp, length(tmp)-1, 2);
     
    637731procedure TfrmTemplateDialog.FormCreate(Sender: TObject);
    638732begin
     733  FHTMLMode := false; //kt added 12/28/09
    639734  BuildIdx := TStringList.Create;
    640735  Entries := TStringList.Create;
Note: See TracChangeset for help on using the changeset viewer.