⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ucmddisp.pas

📁 著名的SecureBlackBox控件完整源码
💻 PAS
📖 第 1 页 / 共 5 页
字号:
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'] := '&nbsp;';
          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 + -