Unfortunately .Net doesn’t allow multiple inheritanse, so I had to re-factor EWSoftware.Web.BasePage.
I created an interface IDataChangeChecking, that described the public methods, relevant to data change checking:
//described in http://www.codeproject.com/aspnet/EWSWebPt2.asp
StateBag ControlViewState//expose protected ViewState
and created public class DataChangeCheckingImpl with methods extracted from original BasePage
Finally I’ve created DataChangeCheckingDefaultPage class, derived from DotNetNuke.Framework.CDefault and implementing IDataChangeChecking interface.
Additionaly OnInit event handler created DataChangeCheckingImpl object and methods
DataChangeCheckingImpl.OnInit and OnPreRender are called from the corresponding DataChangeCheckingDefaultPage event handlers.
Now I can configure data editing DotNetNuke modules, that user will see warning if he/she try to exit without saving data.