📄 ucmddisp.pas
字号:
begin
Page := TRtcParse.Create(TemplatePath + 'editpack.htm');
try
ShowPageMessage(Page);
Page['header_area'] := HeaderArea;
pack_id := GetRequestValue('pack_id');
GetPackInfo(pack_id, packname, order_link, extend_lic_link);
Page['caption'] := 'Edit package';
Page['pack_id'] := pack_id;
Page['name'] := packname;
if GetPackVisibility(pack_id) = 'public' then
Page['public_selected'] := SELECTED
else
Page['private_selected'] := SELECTED;
Page['order_link'] := order_link;
Page['extend_lic_link'] := extend_lic_link;
Page['sid'] := SessionID;
Result := Page.Output;
finally
Page.Free;
end;
end;
function TCommandsDispatcher.DoEditPackAccess: string;
var
Page : TRtcParse;
expiredate : string;
grant : boolean;
login, pack_id: string;
packname, order_link, extend_lic_link : string;
begin
login := GetRequestValue('user');
pack_id := GetRequestValue('pack_id');
GetPackInfo(pack_id, packname, order_link, extend_lic_link);
Page := TRtcParse.Create(TemplatePath + 'editpackaccess.htm');
try
Page['header_area'] := HeaderArea;
grant := GetGrant(login, pack_id, expiredate);
if grant then
Page['grant_checked'] := 'checked';
Page['expiredate'] := expiredate;
Page['pack_id'] := pack_id;
Page['package_name'] := packname;
Page['user'] := login;
Page['user_login_enc'] := URL_Encode(login);
Page['sid'] := SessionID;
Result := Page.Output;
finally
Page.Free;
end;
end;
function TCommandsDispatcher.DoPackFiles: string;
var
Page : TRtcParse;
TableRow : TRtcParse;
S : string;
Files : TStringList;
SL : TStringList;
I : integer;
pack_id : string;
packname, order_link, extend_lic_link : string;
begin
Result := '';
Page := TRtcParse.Create(TemplatePath + 'packfiles.htm');
try
ShowPageMessage(Page);
Page['header_area'] := HeaderArea;
pack_id := GetRequestValue('pack_id');
if not GetPackInfo(pack_id, packname, order_link, extend_lic_link) then
Exit;
Page['pack_id'] := pack_id;
Page['package_name'] := packname;
S := '';
TableRow := TRtcParse.Create(TemplatePath + 'files_table_row.htm');
try
Files := TStringList.Create;
SL := TStringList.Create;
try
GetFiles(pack_id, Files);
for I := 0 to Files.Count - 1 do begin
SL.CommaText := _GetValueFromIndex(Files,I);
TableRow.Clear;
TableRow['pack_id'] := pack_id;
TableRow['file_id'] := Files.Names[I];
TableRow['file_name'] := SL.Values['fname'];
if SL.Values['desc'] <> '' then
TableRow['file_description'] := SL.Values['desc']
else
TableRow['file_description'] := ' ';
TableRow['sid'] := SessionID;
S := S + TableRow.Output;
end;
finally
SL.Free;
Files.Free;
end;
finally
TableRow.Free;
end;
Page['table_rows'] := S;
Page['sid'] := SessionID;
Result := Page.Output;
finally
Page.Free;
end;
end;
function TCommandsDispatcher.DoSaveFile: string;
var
pack_id, file_id, datetime : string;
fname, description, size: string;
bind_file : boolean;
selected_file_id : string;
begin
Result := '';
pack_id := GetRequestValue('pack_id');
file_id := GetRequestValue('file_id');
fname := Srv.Request.Info.asString['fname'];
description := Trim(GetRequestValue('description'));
if description = '' then
description := fname;
bind_file := SameText(GetRequestValue('fileaction'), 'select');
selected_file_id := GetRequestValue('selectedfile');
if bind_file then
begin // select file
if selected_file_id = file_id then
SaveFileDesc(file_id, description) // change description of the file
else
BindFile(pack_id, selected_file_id); // bind file to the package
end
else
begin // new file
datetime := DateTime2Str(Now);
datetime := Copy(datetime, 1, Pos('.', datetime)-1);
size := Srv.Request.Info.asString['size'];
file_id := '';
AddFile(pack_id, fname, description, size, datetime, file_id)
end;
//Result := DoPackFiles;
Relocation(Format('?cmd=packfiles&pack_id=%s&sid=%s', [pack_id, SessionID]));
end;
function TCommandsDispatcher.DoSavePack: string;
var
pack_id : string;
packname, order_link, extend_lic_link: string;
vis_level : string;
begin
pack_id := GetRequestValue('pack_id');
packname := GetRequestValue('name');
order_link := GetRequestValue('order_link');
extend_lic_link := GetRequestValue('extend_lic_link');
vis_level := GetRequestValue('vis_level');
if pack_id = '' then
begin
if IsPackExists(packname) then
PageMessage := Format(GetMsg('error_pack_exists'), [packname])
else
begin
AddPack(packname, order_link, extend_lic_link, pack_id);
SetPackVisibility(pack_id, vis_level)
end;
end
else
begin
SavePackInfo(pack_id, packname, order_link, extend_lic_link);
SetPackVisibility(pack_id, vis_level)
end;
//Result := DoShowPackages;
Relocation(Format('?cmd=showpacks&sid=%s', [SessionID]));
end;
function TCommandsDispatcher.DoSavePackAccess: string;
var
login, pack_id, grant, expiredate: string;
begin
login := GetRequestValue('user');
pack_id := GetRequestValue('pack_id');
grant := GetRequestValue('grant');
expiredate := Trim(GetRequestValue('expiredate'));
if expiredate <> '' then
try
Str2DateTime(expiredate);
except
PageMessage := GetMsg('error_bad_date');
expiredate := '';
end;
SaveUserAccess(login, pack_id, grant = 'on', expiredate);
//Result := DoShowPackAccess;
Relocation(Format('?cmd=showpacksaccess&user=%s&sid=%s', [login,SessionID]));
end;
function TCommandsDispatcher.DoShowPackAccess: string;
var
Page : TRtcParse;
TableRow : TRtcParse;
S : string;
Packs : TStringList;
I : integer;
grant : boolean;
expiredate : string;
pack_id : string;
login: string;
begin
Page := TRtcParse.Create(TemplatePath + 'packaccess.htm');
try
ShowPageMessage(Page);
Page['header_area'] := HeaderArea;
login := GetRequestValue('user');
Page['user'] := login;
Page['user_login_enc'] := URL_Encode(login);
S := '';
TableRow := TRtcParse.Create(TemplatePath + 'pack_access_table_row.htm');
try
Packs := TStringList.Create;
try
GetPacks(Packs);
for I := 0 to Packs.Count - 1 do begin
pack_id := Packs.Names[I];
TableRow.Clear;
TableRow['user'] := login;
TableRow['pack_id'] := pack_id;
TableRow['package_name'] := _GetValueFromIndex(Packs,I);
grant := GetGrant(login, pack_id, expiredate);
if grant then
TableRow['grant_checked'] := 'checked'
else
TableRow['grant_checked'] := '';
TableRow['expiredate'] := expiredate;
TableRow['sid'] := SessionID;
S := S + TableRow.Output;
end;
finally
Packs.Free;
end;
finally
TableRow.Free;
end;
Page['table_rows'] := S;
Page['sid'] := SessionID;
Result := Page.Output;
finally
Page.Free;
end;
end;
function TCommandsDispatcher.DoShowPackages: string;
var
Page : TRtcParse;
TableRow : TRtcParse;
S : string;
Packs, Files : TStringList;
I : integer;
pack_id : string;
begin
Page := TRtcParse.Create(TemplatePath + 'packages.htm');
try
ShowPageMessage(Page);
Page['header_area'] := HeaderArea;
S := '';
TableRow := TRtcParse.Create(TemplatePath + 'packages_table_row.htm');
try
Packs := TStringList.Create;
Files := TStringList.Create;
try
GetPacks(Packs);
for I := 0 to Packs.Count - 1 do begin
pack_id := Packs.Names[I];
GetFiles(pack_id, Files);
TableRow.Clear;
TableRow['pack_id'] := pack_id;
TableRow['package_name'] := _GetValueFromIndex(Packs,I);
TableRow['vis_level'] := GetPackVisibility(pack_id);
TableRow['files_count'] := IntToStr(Files.Count);
TableRow['sid'] := SessionID;
S := S + TableRow.Output;
end;
finally
Files.Free;
Packs.Free;
end;
finally
TableRow.Free;
end;
Page['table_rows'] := S;
Page['sid'] := SessionID;
Result := Page.Output;
finally
Page.Free;
end;
end;
function TCommandsDispatcher.GetUploadPath: string;
begin
Result := Forum_Upload_Path;
end;
function TCommandsDispatcher.DoPackagesSectionView: string;
var
login : string;
Page, Row : TRtcParseEx;
Packs : TStrings;
I : integer;
S : string;
grant : boolean;
s_expiredate : string;
d_expiredate : TDateTime;
expired : boolean;
RowOneFile : TRtcParse;
pack_id : string;
packname, order_link, extend_lic_link : string;
function FineSize(Size : string) : string;
var
N : cardinal;
suff : string;
devisor : cardinal;
R : Double;
begin
suff := '';
N := StrToIntDef(Size, 0);
if N < 1024 then
begin
suff := 'b';
devisor := 1;
end
else if N < 1048576 then
begin
suff := 'Kb';
devisor := 1024;
end
else if N < 1073741824 then
begin
suff := 'Mb';
devisor := 1048576;
end
else
begin
suff := 'Gb';
devisor := 1073741824;
end;
if devisor > 1 then
begin
R := N / devisor;
Result := Format('%-.2f %s', [R, suff]);
end
else
Result := Format('%d %s', [N, suff]);
end;
procedure InitRows;
begin
Row := TRtcParseEx.Create(TemplatePath + 'packages_view_row.htm');
RowOneFile := TRtcParse.Create(TemplatePath + 'user_pack_files_row.htm');
end;
procedure DoneRows;
begin
if Assigned(RowOneFile) then FreeAndNil(RowOneFile);
if Assigned(Row) then FreeAndNil(Row);
end;
procedure PackFiles (pack_id, name, expiredate : string);
var
Files : TStringList;
I : integer;
description : string;
filedatetime : string;
size : string;
s_out : string;
fname : string;
SL : TStringList;
file_id : string;
begin
Row['pack_id'] := pack_id;
Row['pack_name'] := name;
if Trim(expiredate) <> '' then
Row['expire_date'] := expiredate
else
Row['expire_date'] := 'n/a';
s_out := '';
Files := TStringList.Create;
SL := TStringList.Create;
try
GetFiles(pack_id, Files);
Row['files_count'] := IntToStr(Files.Count);
for I := 0 to Files.Count - 1 do begin
file_id := Files.Names[I];
GetFileInfo(pack_id, file_id, fname, description, filedatetime, size);
RowOneFile.Clear;
RowOneFile['file_link'] := URL_Encode(ExtractFileName(fname));
RowOneFile['file_description'] := description;
RowOneFile['file_datetime'] := filedatetime;
RowOneFile['file_size'] := FineSize(size);
RowOneFile['sid'] := SessionID;
s_out := s_out + RowOneFile.Output;
end;
finally
SL.Free;
Files.Free;
end;
Row['table_rows'] := s_out;
end;
procedure PackExpired (name, extend_lic_link : string);
begin
Row['pack_name'] := name;
Row['extend_lic_link'] := extend_lic_link;
end;
procedure PackBuy (name, order_link : string);
begin
Row['pack_name'] := name;
Row['order_link'] := order_link;
end;
begin
login := GetSessionLogin;
Page := TRtcParseEx.Create(TemplatePath + 'packages_view.htm'); //user_packs.htm
try
ShowPageMessage(Page);
Page['header_area'] := HeaderArea;
Page['sid'] := SessionID;
Page['packs_section_name'] := GetMsg('Download Area');
Page['forum_page_header'] := GetMsg('Forum');
Packs := TStringList.Create;
GetPacks(Packs);
S := '';
if Packs.Count > 0 then
begin
InitRows;
try
for I := 0 to Packs.Count - 1 do begin
pack_id := Packs.Names[I];
if not assigned(Session) and (SameText(GetPackVisibility(pack_id),'private')) then
Continue;
Row.Clear;
Row['sid'] := SessionID;
grant := GetGrant(login, pack_id, s_expiredate);
Row.Condition['grant'] := grant;
GetPackInfo(pack_id, packname, order_link, extend_lic_link);
if grant then
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -