public RefreshDisplayOfCurrentPage ( ) : void | ||
return | void |
private void OnShowBookMetadataEditor() { try { if (!_model.CanEditCopyrightAndLicense) { MessageBox.Show(LocalizationManager.GetString("EditTab.CannotChangeCopyright", "Sorry, the copyright and license for this book cannot be changed.")); return; } _model.SaveNow(); //in case we were in this dialog already and made changes, which haven't found their way out to the Book yet Metadata metadata = _model.CurrentBook.GetLicenseMetadata(); if (metadata.License is NullLicense && string.IsNullOrWhiteSpace(metadata.CopyrightNotice)) { //looks like the first time. Nudge them with a nice default license. metadata.License = new CreativeCommonsLicense(true, true, CreativeCommonsLicense.DerivativeRules.Derivatives); } Logger.WriteEvent("Showing Metadata Editor Dialog"); using (var dlg = new Palaso.UI.WindowsForms.ClearShare.WinFormsUI.MetadataEditorDialog(metadata)) { dlg.ShowCreator = false; if (DialogResult.OK == dlg.ShowDialog()) { string imagePath = _model.CurrentBook.FolderPath.CombineForPath("license.png"); if (File.Exists(imagePath)) { File.Delete(imagePath); } Image licenseImage = dlg.Metadata.License.GetImage(); if (licenseImage != null) { licenseImage.Save(imagePath); } else if (File.Exists(imagePath)) { File.Delete(imagePath); } // Both LicenseNotes and Copyright By could have user-entered html characters that need escaping. var copyright = dlg.Metadata.CopyrightNotice; dlg.Metadata.CopyrightNotice = copyright; //NB: we are mapping "RightsStatement" (which comes from XMP-dc:Rights) to "LicenseNotes" in the html. //note that the only way currently to recognize a custom license is that RightsStatement is non-empty while description is empty var rights = dlg.Metadata.License.RightsStatement; dlg.Metadata.License.RightsStatement = rights; string description = dlg.Metadata.License.GetDescription("en") == null ? string.Empty : dlg.Metadata.License.GetDescription("en").Replace("'", "\\'"); string licenseImageName = licenseImage == null? string.Empty: "license.png"; string result = string.Format( "{{ copyright: '{0}', licenseImage: '{1}', licenseUrl: '{2}', licenseNotes: '{3}', licenseDescription: '{4}' }}", MakeJavaScriptContent(dlg.Metadata.CopyrightNotice), licenseImageName, dlg.Metadata.License.Url, MakeJavaScriptContent(rights), description); _browser1.RunJavaScript("if (calledByCSharp) { calledByCSharp.setCopyrightAndLicense(" + result + "); }"); //ok, so the the dom for *that page* is updated, but if the page doesn't display some of those values, they won't get //back to the data div in the actual html file even when the page is read and saved, because individual pages don't //have the data div. _model.CurrentBook.UpdateLicenseMetdata(dlg.Metadata); _model.SaveNow(); _model.RefreshDisplayOfCurrentPage(); //the cleanup() that is part of Save removes qtips, so let' redraw everything } } Logger.WriteMinorEvent("Emerged from Metadata Editor Dialog"); } catch (Exception error) { #if DEBUG throw; #endif Palaso.Reporting.ErrorReport.NotifyUserOfProblem(error, "There was a problem recording your changes to the copyright and license."); } }
public void RegisterWithApiHandler(BloomApiHandler apiHandler) { apiHandler.RegisterEndpointHandler(kApiUrlPart + "requestState", request => { if (request.HttpMethod == HttpMethods.Get) { request.ReplyWithJson(CurrentStateString); } else // post { Debug.Fail("We shouldn't ever be using the 'post' version."); request.PostSucceeded(); } }, true); apiHandler.RegisterEndpointHandler(kApiUrlPart + "addPage", request => { AddPageButton_Click(); request.PostSucceeded(); }, true); apiHandler.RegisterEndpointHandler(kApiUrlPart + "duplicatePage", request => { _editingModel.OnDuplicatePage(); request.PostSucceeded(); }, true); apiHandler.RegisterEndpointHandler(kApiUrlPart + "deletePage", request => { if (ConfirmRemovePageDialog.Confirm()) { _editingModel.OnDeletePage(); } request.PostSucceeded(); }, true); apiHandler.RegisterEndpointHandler(kApiUrlPart + "lockBook", request => { _editingModel.SaveNow(); // BL-5421 lock and unlock lose typing _editingModel.CurrentBook.TemporarilyUnlocked = false; request.PostSucceeded(); UpdateState(); // because we aren't selecting a new page _editingModel.RefreshDisplayOfCurrentPage(); }, true); apiHandler.RegisterEndpointHandler(kApiUrlPart + "unlockBook", request => { _editingModel.SaveNow(); // BL-5421 lock and unlock lose typing _editingModel.CurrentBook.TemporarilyUnlocked = true; request.PostSucceeded(); UpdateState(); // because we aren't selecting a new page _editingModel.RefreshDisplayOfCurrentPage(); }, true); apiHandler.RegisterEndpointHandler(kApiUrlPart + "cleanup", request => { SendCleanupState(); request.PostSucceeded(); }, true); apiHandler.RegisterEndpointHandler(kApiUrlPart + "zoomMinus", request => { _editingModel.AdjustPageZoom(-10); request.PostSucceeded(); }, true); apiHandler.RegisterEndpointHandler(kApiUrlPart + "zoomPlus", request => { _editingModel.AdjustPageZoom(10); request.PostSucceeded(); }, true); apiHandler.RegisterEndpointHandler(kApiUrlPart + "requestVideoPlaceHolder", request => { _editingModel.RequestVideoPlaceHolder(); request.PostSucceeded(); }, true); apiHandler.RegisterEndpointHandler(kApiUrlPart + "requestWidgetPlaceHolder", request => { _editingModel.RequestWidgetPlaceHolder(); request.PostSucceeded(); }, true); }