Index: xword/XWord/AddinActions.cs
===================================================================
--- xword/XWord/AddinActions.cs (revision 18464)
+++ xword/XWord/AddinActions.cs (working copy)
@@ -354,7 +354,10 @@
{
MessageBox.Show("You are not currently editing a wiki page", "XWord", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
- }
+ }
+ bool continueWithSaving = ShowSwitchSyntaxDialog();
+ if (!continueWithSaving)
+ return;
LoadingDialog loadingDialog = new LoadingDialog("Saving to wiki...");
ThreadPool.QueueUserWorkItem(new WaitCallback(loadingDialog.ShowSyncDialog));
SaveToXwiki();
@@ -362,6 +365,43 @@
}
///
+ /// If current syntax is XWiki 2.0 and the page contains table(s), promt the user
+ /// to switch to XHTML syntax with an Yes/No/Cancel message box.
+ ///
+ /// Cleaned HTML source code.
+ /// FALSE if the user presses 'Cancel', meaning the saving should not continue. TRUE in other cases.
+ private bool ShowSwitchSyntaxDialog()
+ {
+ if (addin.AddinStatus.Syntax == null)
+ {
+ addin.AddinStatus.Syntax = addin.DefaultSyntax;
+ }
+ if ((addin.ActiveDocumentInstance.Tables.Count>0) &&
+ (addin.AddinStatus.Syntax.ToLower().IndexOf("xhtml") < 0))
+ {
+ DialogResult dr;
+ string infoMessage, caption;
+ infoMessage = "This page contains elements that can not properly be saved inXWiki 2.0 syntax.";
+ infoMessage += Environment.NewLine;
+ infoMessage += "Would you like to switch to XHTML syntax?";
+ caption = "Feature Not Yet Implemented";
+
+ dr = System.Windows.Forms.MessageBox.Show(infoMessage, caption, MessageBoxButtons.YesNoCancel,
+ MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
+
+ if (dr == DialogResult.Yes)
+ {
+ addin.AddinStatus.Syntax = "XHTML";
+ Globals.Ribbons.XWikiRibbon.SwitchSyntax("XHTML");
+ }
+ if (dr == DialogResult.Cancel)
+ return false;
+
+ }
+ return true;
+ }
+
+ ///
/// Saves the currently edited page or document to the server.
///
private void SaveToXwiki()
@@ -408,6 +448,8 @@
{
addin.AddinStatus.Syntax = addin.DefaultSyntax;
}
+
+
//Convert the source to the propper encoding.
Encoding iso = Encoding.GetEncoding("ISO-8859-1");
byte[] content = Encoding.Unicode.GetBytes(cleanHTML);
Index: xword/XWord/XWikiRibbon.cs
===================================================================
--- xword/XWord/XWikiRibbon.cs (revision 18464)
+++ xword/XWord/XWikiRibbon.cs (working copy)
@@ -53,7 +53,19 @@
selectionOptionsGroup.Visible = false;
}
}
-
+
+ ///
+ /// Changes the selected item from dropDownSyntax control with the one
+ /// that is labeled with toSyntax string.
+ ///
+ /// Existing item in dropDownSyntax to be selected.
+ public void SwitchSyntax(string toSyntax)
+ {
+ for (int i = 0; i < dropDownSyntax.Items.Count; i++)
+ if (dropDownSyntax.Items[i].Label == toSyntax)
+ dropDownSyntax.SelectedItem = dropDownSyntax.Items[i];
+ }
+
private void SyncSaving_Click(object sender, RibbonControlEventArgs e)
{
if (syncSaving.Checked)