diff --git a/GreenshotConfluencePlugin/ConfluenceDestination.cs b/GreenshotConfluencePlugin/ConfluenceDestination.cs index b19fa33ef..d855b1f7d 100644 --- a/GreenshotConfluencePlugin/ConfluenceDestination.cs +++ b/GreenshotConfluencePlugin/ConfluenceDestination.cs @@ -91,7 +91,7 @@ namespace GreenshotConfluencePlugin { } public override IEnumerable DynamicDestinations() { - if (!ConfluencePlugin.ConfluenceConnector.isLoggedIn) { + if (ConfluencePlugin.ConfluenceConnectorNoLogin.isLoggedIn) { yield break; } List currentPages = ConfluenceUtils.GetCurrentPages(); @@ -111,12 +111,16 @@ namespace GreenshotConfluencePlugin { } Page selectedPage = page; + bool openPage = (page == null) && config.OpenPageAfterUpload; string filename = ConfluencePlugin.Host.GetFilename(config.UploadFormat, captureDetails); - if (page == null) { + if (selectedPage == null) { ConfluenceUpload confluenceUpload = new ConfluenceUpload(filename); Nullable dialogResult = confluenceUpload.ShowDialog(); if (dialogResult.HasValue && dialogResult.Value) { selectedPage = confluenceUpload.SelectedPage; + if (confluenceUpload.isOpenPageSelected) { + openPage = false; + } filename = confluenceUpload.Filename; } else { return false; @@ -124,7 +128,7 @@ namespace GreenshotConfluencePlugin { } if (selectedPage != null) { using (Image image = surface.GetImageForExport()) { - bool uploaded = upload(image, selectedPage, filename); + bool uploaded = upload(image, selectedPage, filename, openPage); if (uploaded) { surface.SendMessageEvent(this, SurfaceMessageTyp.Info, ConfluencePlugin.Host.CoreLanguage.GetFormattedString("exported_to", Description)); surface.Modified = false; @@ -136,7 +140,7 @@ namespace GreenshotConfluencePlugin { return false; } - private bool upload(Image image, Page page, string filename) { + private bool upload(Image image, Page page, string filename, bool openPage) { using (MemoryStream stream = new MemoryStream()) { ConfluencePlugin.Host.SaveToStream(image, stream, config.UploadFormat, config.UploadJpegQuality); byte [] buffer = stream.GetBuffer(); @@ -160,8 +164,10 @@ namespace GreenshotConfluencePlugin { } } } - if (config.OpenPageAfterUpload) { - Process.Start(page.Url); + if (openPage) { + try { + Process.Start(page.Url); + } catch {} } else { System.Windows.MessageBox.Show(lang.GetString(LangKey.upload_success)); } diff --git a/GreenshotConfluencePlugin/ConfluencePlugin.cs b/GreenshotConfluencePlugin/ConfluencePlugin.cs index ec43c4b39..25d6da4ba 100644 --- a/GreenshotConfluencePlugin/ConfluencePlugin.cs +++ b/GreenshotConfluencePlugin/ConfluencePlugin.cs @@ -43,7 +43,7 @@ namespace GreenshotConfluencePlugin { private static ILanguage lang = Language.GetInstance(); private static IGreenshotHost host; - public static ConfluenceConnector ConfluenceConnector { + public static ConfluenceConnector ConfluenceConnectorNoLogin { get { if (confluenceConnector == null) { if (config.Url.Contains("soap-axis")) { @@ -52,6 +52,15 @@ namespace GreenshotConfluencePlugin { confluenceConnector = new ConfluenceConnector(config.Url + ConfluenceConfiguration.DEFAULT_POSTFIX, config.Timeout); } } + return confluenceConnector; + } + } + + public static ConfluenceConnector ConfluenceConnector { + get { + if (confluenceConnector == null) { + confluenceConnector = ConfluenceConnectorNoLogin; + } try { if (!confluenceConnector.isLoggedIn) { confluenceConnector.login(); @@ -113,34 +122,16 @@ namespace GreenshotConfluencePlugin { public virtual void Configure() { ConfluenceConfiguration clonedConfig = config.Clone(); ConfluenceConfigurationForm configForm = new ConfluenceConfigurationForm(clonedConfig); + string url = config.Url; Nullable dialogResult = configForm.ShowDialog(); if (dialogResult.HasValue && dialogResult.Value) { // copy the new object to the old... clonedConfig.CloneTo(config); IniConfig.Save(); - confluenceConnector.logout(); - confluenceConnector = null; - } - } - - public void upload(IImageEditor imageEditor, Page page, string filename) { - using (MemoryStream stream = new MemoryStream()) { - imageEditor.SaveToStream(stream, config.UploadFormat, config.UploadJpegQuality); - byte [] buffer = stream.GetBuffer(); - try { - confluenceConnector.addAttachment(page.id, "image/" + config.UploadFormat.ToString().ToLower(), null, filename, buffer); - imageEditor.Surface.Modified = false; - LOG.Debug("Uploaded to Confluence."); - if (config.CopyWikiMarkupForImageToClipboard) { - System.Windows.Clipboard.SetText("!" + filename + "!"); + if (confluenceConnector != null) { + if (!url.Equals(config.Url) && confluenceConnector.isLoggedIn) { + confluenceConnector.logout(); } - if (config.OpenPageAfterUpload) { - Process.Start(page.Url); - } else { - System.Windows.MessageBox.Show(lang.GetString(LangKey.upload_success)); - } - } catch(Exception e) { - System.Windows.MessageBox.Show(lang.GetString(LangKey.upload_failure) + " " + e.Message); } } } diff --git a/GreenshotConfluencePlugin/Forms/ConfluenceConfigurationForm.xaml b/GreenshotConfluencePlugin/Forms/ConfluenceConfigurationForm.xaml index 862d55115..308a57c5a 100644 --- a/GreenshotConfluencePlugin/Forms/ConfluenceConfigurationForm.xaml +++ b/GreenshotConfluencePlugin/Forms/ConfluenceConfigurationForm.xaml @@ -4,7 +4,7 @@ xmlns:gscp="clr-namespace:GreenshotConfluencePlugin" xmlns:l="clr-namespace:TranslationByMarkupExtension" xmlns:gsc="clr-namespace:GreenshotPlugin.Core;assembly=GreenshotPlugin" - Title="Confluence plugin settings" SizeToContent="WidthAndHeight" Icon="/GreenshotConfluencePlugin;component/Images/Confluence.ico"> + Title="{l:Translate plugin_settings}" SizeToContent="WidthAndHeight" Icon="/GreenshotConfluencePlugin;component/Images/Confluence.ico"> @@ -24,9 +24,9 @@