/// <summary> /// Switches the settings page view on or off depending on the /// given request in <paramref name="isSettingsPageVisibleRequest"/>. /// /// Translation Service data is saved to <seealso cref="ISettingsManager"/> /// if settings page is switched from visible to invisible and the /// <paramref name="settings"/> param is non-null. /// </summary> /// <param name="isSettingsPageVisibleRequest"></param> /// <param name="settings"></param> private void SwitchSettingsPageView(bool isSettingsPageVisibleRequest, ISettingsManager settings = null) { var settingsViewModel = CurrentPage as SettingsPageViewModel; if (settingsViewModel != null) { // Switch to display other than Settings page if (settings != null) { // Copy data from settings viewmodel to model settingsViewModel.SaveOptionsToModel(settings.Options); } // Switch pages back to normal view and dispose of settings page SwitchCurrentPageToNewPage(mCurrentBackPage, true); mCurrentBackPage = null; IsSettingsPageVisible = false; } else { // Switch to display Settings page if (settings == null) { settings = GetService <ISettingsManager>(); } // Copy data from settings Options model to viewmodel var settingsVM = new SettingsPageViewModel(mSettingsPageModels); settingsVM.LoadOptionsFromModel(settings.Options); mCurrentBackPage = SwitchCurrentPageToNewPage(settingsVM, false); IsSettingsPageVisible = true; } }
/// <summary> /// Have a look at the page and determine whether there are any data items that require persistence. /// </summary> /// <param name="page"></param> /// <param name="settings"></param> private void SavePageSettings(PageBaseViewModel page, ISettingsManager settings) { var item = page as ISaveSettings; if (item != null) { item.SavePageSettings(settings); } }
public void PopulateBaseProperties(PageBaseViewModel viewModel, IPublishedContent pageContent) { if (viewModel == null || pageContent == null) { return; } // shared seo properties can go here }
/// <summary> /// Switch the currently shown page to the page in <paramref name="newPage"/>. /// The page that is current at the time of the call is disposed if <paramref name="disposeOldPage"/> /// is true. Otherwise, the currentpage is returned and can later on be switched in back again. /// </summary> /// <param name="newPage"></param> /// <param name="disposeOldPage"></param> /// <returns></returns> private PageBaseViewModel SwitchCurrentPageToNewPage(PageBaseViewModel newPage, bool disposeOldPage) { PageBaseViewModel oldPage = CurrentPage; CurrentPage = null; var freeze = newPage as IDocumentCanUnload; // Freeze states of current page if (freeze != null) { freeze.OnViewUnloaded(); } CurrentPage = newPage; freeze = oldPage as IDocumentCanUnload; // Restore states of new current page if (freeze != null) { freeze.OnViewLoaded(); } if (oldPage != null) { SavePageSettings(oldPage, GetService <ISettingsManager>()); // Be sure to always save changed settings from old page if (disposeOldPage == true) { if (oldPage is IDisposable) { (oldPage as IDisposable).Dispose(); } oldPage = null; } } return(oldPage); }
public ActionResult Index(PageBaseViewModel viewModel) { return(CurrentTemplate(viewModel)); }