📄 weboutput.pas
字号:
begin
group.Views.Extract(view);
UnassignedViewsList.Add(view);
end;
//returns a stringlist with associated objects
procedure TWeboutput.GetGroupNames(stringList : TStringList);
var i: Integer;
group: TGroup;
begin
for i:=0 to GroupList.Count-1 do
begin
group := TGroup(GroupList.Items[i]);
stringList.AddObject(group.Name, group);
end;
end;
//paired stringList
procedure TWeboutput.GetViewNamesFromGroup(group: TGroup; stringList :TStringList);
var j : Integer;
viewList: TObjectList;
begin
viewList:= group.Views;
for j:= 0 to viewList.Count-1 do
stringList.AddObject(TView(viewList[j]).name, viewList[j]);
end;
procedure TWeboutput.GetUnassignedViewNames(stringList : TStringList);
var i: Integer;
begin
for i:= 0 to self.UnassignedViewsList.Count-1 do
begin
stringList.AddObject(TView(UnassignedViewsList[i]).Name, UnassignedViewsList[i]);
end;
end;
procedure TWeboutput.GetViewNames(stringList: TStringList);
var i,j: Integer;
begin
GetUnassignedViewNames(stringList);
for i:=0 to Grouplist.Count-1 do
begin
for j:= 0 to TGroup(Grouplist[i]).Views.Count-1 do
begin
stringList.AddObject(TView(TGroup(Grouplist[i]).Views[j]).Name, TGroup(Grouplist[i]).Views[j]);
end;
end;
end;
function TWeboutput.InputComplete() : Boolean;
var i,j:Integer;
tmpGroup: TGroup;
tmpView: TView;
begin
if (databasename = '') then
begin
InputComplete:=false;
Exit;
end;
if (heading = '') then
begin
InputComplete:=false;
Exit;
end;
if (hostname = '') then
begin
InputComplete:=false;
Exit;
end;
if (layout = '') then
begin
InputComplete:=false;
Exit;
end;
if (password = '') then
begin
InputComplete:=false;
Exit;
end;
if (saveDir = '') then
begin
InputComplete:=false;
Exit;
end;
if (username = '') then
begin
InputComplete:=false;
Exit;
end;
InputComplete:= false;
//at least 1 assigned view has to exist (so 1 group has to exist too)
//and moreover this view has to have at least 1 grid-column visible
//*WARNING: THIS HAS TO BE THE LAST CHECK*
for i:=0 to Grouplist.Count-1 do
begin
tmpGroup:= TGroup(Grouplist[i]);
for j:= 0 to tmpGroup.Views.Count-1 do
begin
tmpView := TView(tmpGroup.Views[j]);
if (tmpView.OneGridColVisible()) then
begin
InputComplete := true;
Exit;
end;
end;
end;
end;
//*************************************************************
//**Implementations for TPhpoutput*****************************
//*************************************************************
procedure TPhpoutput.CreateIncludeFile();
var F: TextFile;
begin
try
AssignFile(F,self.SaveDir+'db_open.php');
Rewrite(F);
Writeln(F,'<?php');
Writeln(F,'$host = "'+hostname+'";');
Writeln(F,'$user = "'+username+'";');
Writeln(F,'$password = "'+password+'";');
Writeln(F,'$database = "'+databasename+'";');
Writeln(F,'/* Connect to the db and select a database*/');
Writeln(F,'$dbLink = mysql_connect($host,$user, $password) or die("Couldn''t connect to the database!");');
Writeln(F,'$success = mysql_select_db($database) or die("Error selecting the database! <br> ".mysql_error());');
Writeln(F,'?>');
finally
Close(F);
end;
end;
procedure TPhpoutput.Run();
var a:Integer;
LayoutFilepath,GridTemplateFilename: string;
NeededFilesString, NeededDirsString : String;
tmp,IndexTemplateFilename,SQLTemplateFilename, UpdateTemplateFilename: string;
InsertTemplateFilename,FrameTemplateFilename,SearchTemplateFilename :string;
layoutSettings : TIniFile;
neededDirs, neededFiles : TStringList;
begin
//find out more about the layout we are using
LayoutFilepath:=IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName)) + DataDir+layout+PathDelim;
LayoutSettings:= TIniFile.Create(LayoutFilepath+layout+'.ini');
IndexTemplateFilename:= layoutSettings.ReadString('General','IndexTemplateFilename','');
FrameTemplateFilename:= layoutSettings.ReadString('General','FrameTemplateFilename','');
GridTemplateFilename:= layoutSettings.ReadString('General','GridTemplateFilename','');
UpdateTemplateFilename:= layoutSettings.ReadString('General', 'UpdateTemplateFilename','');
InsertTemplateFilename:= layoutSettings.ReadString('General', 'InsertTemplateFilename','');
SearchTemplateFilename:= layoutSettings.ReadString('General', 'SearchTemplateFilename','');
SQLTemplateFilename:= layoutSettings.ReadString('General', 'SQLTemplateFilename','');
NeededFilesString:= layoutSettings.ReadString('General','NeededFiles','');
NeededDirsString:= layoutSettings.ReadString('General','NeededDirs','');
LayoutSettings.Free();
neededFiles := TStringList.Create;
neededDirs := TStringList.Create;
Split(NeededFilesString , ',', neededFiles);
Split(NeededDirsString , ',', neededDirs);
//copy all files
for a:=0 to neededFiles.Count-1 do
begin
DMMain.CopyDiskFile(LayoutFilepath+neededFiles[a],saveDir+neededFiles[a],false);
end;
//copy all directories including their files
for a:=0 to neededDirs.Count-1 do
begin
tmp:= neededDirs[a];
//copy directory including all files includefilepathdelim
//CopyDir(LayoutFilePath+tmp+PathDelim,tmp,saveDir+tmp);
DMMain.CopyDirRecursive(LayoutFilePath+tmp, saveDir+tmp, false);
end;
neededFiles.Free;
neededDirs.Free;
//first we create the include file
CreateIncludeFile();
//let's create the index.php file now
CreateIndexFile(LayoutFilePath+IndexTemplateFilename);
CreateFrameFiles(LayoutFilePath+FrameTemplateFilename);
CreateSearchFiles(LayoutFilePath+SearchTemplateFilename);
//create the grid-files (= tableview for each view)
CreateGridFiles(LayoutFilepath+GridTemplateFilename);
if (SQLTemplateFilename <> '') THEN
CreateSQLFiles(LayoutFilepath+SQLTemplateFilename);
//create the update-files
if (UpdateTemplateFilename <> '') then
CreateUpdateFiles(LayoutFilepath+UpdateTemplateFilename);
if (InsertTemplateFilename <> '') then
CreateInsertFiles(LayoutFilepath+InsertTemplateFilename);
SaveIcons();
end;
procedure TPHPOutput.SaveIcons();
var i, j: Integer;
TmpGroup : TGroup;
TmpView: TView;
saveFilename : String;
begin
for i:=0 to GroupList.Count-1 do
begin
TmpGroup:=TGroup(GroupList[i]);
ForceDirectories(IncludeTrailingPathDelimiter(saveDir)+'images'+PathDelim+'icons');
//for all views of the group do
for j:=0 to TmpGroup.Views.Count-1 do
begin
TmpView:=TView(TmpGroup.Views[j]);
saveFilename := IncludeTrailingPathDelimiter(saveDir)+'images'+PathDelim+'icons'+PathDelim+TmpView.IconFilename;
DMMain.SaveBitmap(TmpView.Icon.Bitmap.Handle, saveFilename, ExtractFileExt(saveFilename));
end;
end;
end;
procedure TPHPOutput.CreateFrameFiles(FrameTemplateFilename: string);
var i, j, u,fIndex: Integer;
TmpGroup : TGroup;
TmpView: TView;
saveFilename,str,tmp,gridFilename : String;
FrameTemplate : TStringList;
TemplateF, frameFile : TextFile;
begin
fIndex:= 0;
//read in the frame-template file
FrameTemplate := TStringList.Create;
if (NOT (FileExists(FrameTemplateFilename)) ) then
begin
raise ETemplateFileException.Create(FrameTemplateFilename+','+TemplateFileError);
end;
try
AssignFile(TemplateF,FrameTemplateFilename);
Reset(TemplateF);
while not eof(TemplateF) do
begin
ReadLn(TemplateF, str);
//add this line to our stringlist
i := FrameTemplate.Add(str);
if (AnsiContainsText(str,GRID_FILENAME_TOKEN) ) then fIndex:= i;
end;
finally
Close(TemplateF);
end;
for i:=0 to GroupList.Count-1 do
begin
TmpGroup:=TGroup(GroupList[i]);
//for all views of the group do
for j:=0 to TmpGroup.Views.Count-1 do
begin
TmpView:=TView(TmpGroup.Views[j]);
gridFilename := TmpGroup.Name+'_'+TmpView.Name+'.php';
saveFilename := IncludeTrailingPathDelimiter(saveDir)+TmpGroup.Name+'_'+TmpView.Name+'_frame.php';
//create file for grid-view
AssignFile(frameFile,saveFilename);
Rewrite(frameFile);
Writeln(frameFile, GeneratedFileHeader);
for u:=0 to FrameTemplate.Count-1 do
begin
tmp := FrameTemplate[u];
if (u=fIndex) then
tmp := DMMain.ReplaceText(tmp,GRID_FILENAME_TOKEN,'"'+gridFilename+'"');
Writeln(frameFile, tmp);
end;
Close(frameFile);
end;
end;
FrameTemplate.Free;
end;
procedure TPHPOutput.CreateSearchFiles(SearchTemplateFilename: string);
var i, j, u: Integer;
TmpGroup : TGroup;
TmpView: TView;
saveFilename,str,tmp,gridFilename,frameFilename : String;
SearchTemplate : TStringList;
TemplateF, pFile : TextFile;
gridFilenameIndex,frameFilenameIndex,columnCaptionsIndex,columnsOrderIndex : Integer;
viewNameIndex :Integer;
begin
gridFilenameIndex := 0; viewnameIndex:=0;
frameFilenameIndex := 0;
columnCaptionsIndex := 0;
columnsOrderIndex := 0;
//read in the frame-template file
SearchTemplate := TStringList.Create;
if (NOT (FileExists(SearchTemplateFilename)) ) then
begin
raise ETemplateFileException.Create(SearchTemplateFilename+','+TemplateFileError);
end;
try
AssignFile(TemplateF,SearchTemplateFilename);
Reset(TemplateF);
while not eof(TemplateF) do
begin
ReadLn(TemplateF, str);
//add this line to our stringlist
i := SearchTemplate.Add(str);
if (AnsiContainsText(str,VIEWNAME_TOKEN) ) then viewnameIndex := i;
if (AnsiContainsText(str,GRID_FILENAME_TOKEN) ) then gridFilenameIndex:= i;
if (AnsiContainsText(str,FRAME_FILENAME_TOKEN) ) then frameFilenameIndex:= i;
if (AnsiContainsText(str,COLUMN_CAPTIONS_TOKEN) ) then columnCaptionsIndex:= i;
if (AnsiContainsText(str,COLUMNS_ORDER_TOKEN) ) then columnsOrderIndex:= i;
end;
finally
Close(TemplateF);
end;
for i:=0 to GroupList.Count-1 do
begin
TmpGroup:=TGroup(GroupList[i]);
//for all views of the group do
for j:=0 to TmpGroup.Views.Count-1 do
begin
TmpView:=TView(TmpGroup.Views[j]);
gridFilename := TmpGroup.Name+'_'+TmpView.Name+'.php';
frameFilename := TmpGroup.Name+'_'+TmpView.name+'_frame.php';
saveFilename := IncludeTrailingPathDelimiter(saveDir)+TmpGroup.Name+'_'+TmpView.Name+'_search.php';
AssignFile(pFile,saveFilename);
Rewrite(pFile);
Writeln(pFile, GeneratedFileHeader);
for u:=0 to SearchTemplate.Count-1 do
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -