mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-21 11:29:24 +02:00
* Actually implemented Options (readonly, disable edit/delete/insert
git-svn-id: trunk@15568 -
This commit is contained in:
parent
2397fa8b40
commit
1b20fa6843
@ -468,6 +468,8 @@ type
|
||||
Property OnGetInputAdaptor;
|
||||
Property OnGetProvider;
|
||||
Property OnContent;
|
||||
Property OnNewSession;
|
||||
Property OnSessionExpired;
|
||||
end;
|
||||
|
||||
Var
|
||||
@ -477,7 +479,7 @@ Function WebDataProviderManager : TFPCustomWebDataProviderManager;
|
||||
|
||||
implementation
|
||||
|
||||
{ $define wmdebug}
|
||||
{$define wmdebug}
|
||||
|
||||
{$ifdef wmdebug}
|
||||
uses dbugintf;
|
||||
@ -499,6 +501,11 @@ Resourcestring
|
||||
SErrDuplicateHTTPDataProducer = 'Duplicate web data output content producer name: "%s"';
|
||||
SErrUnknownInputAdaptor = 'Unknown web data input adaptor name: "%s"';
|
||||
SErrUnknownHTTPDataProducer = 'Unknown web data output content producer name: "%s"';
|
||||
SErrActionNotAllowed = 'Options of provider %s do not allow %s.';
|
||||
SEditing = 'editing';
|
||||
SDeleting = 'deleting';
|
||||
SInserting = 'inserting';
|
||||
|
||||
|
||||
{ TCustomWebdataInputAdaptor }
|
||||
|
||||
@ -736,6 +743,8 @@ end;
|
||||
procedure TFPCustomWebDataProvider.Update;
|
||||
begin
|
||||
{$ifdef wmdebug}SendDebug('TFPCustomWebDataProvider.Update enter');{$endif}
|
||||
If ((Options * [wdpReadOnly,wdpDisableEdit])<>[]) then
|
||||
Raise EFPHTTPError.CreateFmt(SErrActionNotAllowed,[Name,SEditing]);
|
||||
CheckAdaptor;
|
||||
DoUpdate;
|
||||
{$ifdef wmdebug}SendDebug('TFPCustomWebDataProvider.Update leave');{$endif}
|
||||
@ -743,14 +752,22 @@ end;
|
||||
|
||||
procedure TFPCustomWebDataProvider.Delete;
|
||||
begin
|
||||
{$ifdef wmdebug}SendDebug('TFPCustomWebDataProvider.Delete enter');{$endif}
|
||||
If ((Options * [wdpReadOnly,wdpDisableDelete])<>[]) then
|
||||
Raise EFPHTTPError.CreateFmt(SErrActionNotAllowed,[Name,SDeleting]);
|
||||
CheckAdaptor;
|
||||
DoDelete;
|
||||
{$ifdef wmdebug}SendDebug('TFPCustomWebDataProvider.Delete leave');{$endif}
|
||||
end;
|
||||
|
||||
procedure TFPCustomWebDataProvider.Insert;
|
||||
begin
|
||||
{$ifdef wmdebug}SendDebug('TFPCustomWebDataProvider.Insert enter');{$endif}
|
||||
If ((Options * [wdpReadOnly,wdpDisableInsert])<>[]) then
|
||||
Raise EFPHTTPError.CreateFmt(SErrActionNotAllowed,[Name,SInserting]);
|
||||
CheckAdaptor;
|
||||
DoInsert;
|
||||
{$ifdef wmdebug}SendDebug('TFPCustomWebDataProvider.Insert leave');{$endif}
|
||||
end;
|
||||
|
||||
procedure TFPCustomWebDataProvider.ApplyParams;
|
||||
@ -1635,6 +1652,11 @@ begin
|
||||
FRequest:=ARequest;
|
||||
FResponse:=AResponse;
|
||||
try
|
||||
{$ifdef wmdebug}SendDebug('Checking session');{$endif}
|
||||
CheckSession(ARequest);
|
||||
{$ifdef wmdebug}SendDebug('Init session');{$endif}
|
||||
InitSession(AResponse);
|
||||
{$ifdef wmdebug}SendDebug('Getting providername');{$endif}
|
||||
ProviderName:=Request.GetNextPathInfo;
|
||||
{$ifdef wmdebug}SendDebug('Handlerequest, providername : '+Providername);{$endif}
|
||||
AProvider:=GetProvider(ProviderName,AContainer);
|
||||
@ -1649,6 +1671,7 @@ begin
|
||||
wdaInsert : InsertWebdata(AProvider);
|
||||
wdaDelete : DeleteWebData(AProvider);
|
||||
end;
|
||||
UpdateSession(AResponse);
|
||||
finally
|
||||
If (AContainer=Nil) then
|
||||
begin
|
||||
|
Loading…
Reference in New Issue
Block a user