B2022-046 - Copy/Paste table Rows, Columns, or selected Cells was not updating RO and Transition links with new RO or Transition Usage numbers.

This commit is contained in:
John Jenko 2023-11-10 08:57:17 -05:00
parent ca665d9fc8
commit fd97a7853d
2 changed files with 30 additions and 16 deletions

View File

@ -1192,7 +1192,7 @@ namespace Volian.Controls.Library
string linkstr = mro.Groups[2].Value;
string[] roparts = linkstr.Split(" ".ToCharArray());
ContentRoUsage rousg = null;
int oldid = -1;
int oldid = -1;
using (Item itm = MyItemInfo.Get())
{
using (RODb rodb = RODb.GetJustRoDb(Convert.ToInt32(roparts[2])))
@ -1203,7 +1203,7 @@ namespace Volian.Controls.Library
int newid = Rtf.IndexOf("<NewID>", indx);
Rtf = Rtf.Remove(newid, 7);
Rtf = Rtf.Insert(newid, string.Format("<CROUSGID={0}>", rousg.ROUsageID));
itm.Save();
itm.Save(); // this will generate a new ROUsageID that we grab and put in the RO link in the RTF
Rtf = Rtf.Replace(string.Format("<CROUSGID={0}>", oldid), rousg.ROUsageID.ToString());
itm.Save();
MyItemInfo.MyContent.RefreshContentRoUsages();
@ -1265,8 +1265,7 @@ namespace Volian.Controls.Library
int newidt = Rtf.IndexOf("<NewID>", indx);
Rtf = Rtf.Remove(newidt, 7);
Rtf = Rtf.Insert(newidt, string.Format("<CTID={0}>", ct.TransitionID));
//Rtf = Rtf.Replace("<NewID>", string.Format("<CTID={0}>", ct.TransitionID));
itm.Save();
itm.Save(); // this will generate a new TransitionID that we grab and put in the Transition link in the RTF
Rtf = Rtf.Replace(string.Format("<CTID={0}>", oldidt), ct.TransitionID.ToString());
itm.Save();
MyItemInfo.MyContent.RefreshContentTransitions();
@ -1277,6 +1276,9 @@ namespace Volian.Controls.Library
}
}
MyFlexGrid[r, c] = Rtf;
// B2022-046 need to save context of each cell in the table after fixing RO and Transition links
// otherwise the RTF for that cell will revert back to previous data then the itm.Save() is called above
SaveContents();
}
}
c = c + 1;

View File

@ -3397,7 +3397,11 @@ namespace Volian.Controls.Library
// if the paste is below - put back the range for the source location
if ((crm.r2 > crm.r1) || (crm.c2 > crm.c1))
MergedRanges.Add(cr);
this[r + rowOffset, c] = MyCopyInfo.MyCopiedFlexGrid[r, c];
// B2022-046 if the cell contains an RO or Transition then replace the usage id with <NewID> to force a new usage id in the link
if (MyCopyInfo.MyCopiedFlexGrid[r, c] != null)
this[r + rowOffset, c] = ItemInfo.ReplaceLinkWithNewID(MyCopyInfo.MyCopiedFlexGrid[r, c].ToString().Replace("\r\n", ""));
else
this[r + rowOffset, c] = MyCopyInfo.MyCopiedFlexGrid[r, c];
MatchStyle(crm, cr);
PasteBorders(r + rowOffset, c, r, c);
PasteShading(r + rowOffset, c, r, c); // C2021-004 paste the shading information
@ -3506,7 +3510,11 @@ namespace Volian.Controls.Library
if ((crm.r2 > crm.r1) || (crm.c2 > crm.c1))
MergedRanges.Add(cr);
// copy cell text to the destination, copy the style, copy the cell borders
this[r, c + colOffset] = MyCopyInfo.MyCopiedFlexGrid[r, c];
// B2022-046 if the cell contains an RO or Transition then replace the usage id with <NewID> to force a new usage id in the link
if (MyCopyInfo.MyCopiedFlexGrid[r, c] != null)
this[r, c + colOffset] = ItemInfo.ReplaceLinkWithNewID(MyCopyInfo.MyCopiedFlexGrid[r, c].ToString().Replace("\r\n", ""));
else
this[r, c + colOffset] = MyCopyInfo.MyCopiedFlexGrid[r, c];
MatchStyle(crm, cr);
PasteBorders(r, c + colOffset, r, c);
PasteShading(r, c + colOffset, r, c); // C2021-004 paste the shading information
@ -3581,16 +3589,20 @@ namespace Volian.Controls.Library
for (int c = MyCopyInfo.MyCopiedCellRange.c1; c <= Math.Min(MyCopyInfo.MyCopiedCellRange.c2, Cols.Count - 1 - colOffset); c++)
{
CellRange crm = MyCopyInfo.MyCopiedFlexGrid.GetMergedRange(r, c);
if (r == crm.r1 && c == crm.c1)
{
CellRange cr = GetCellRange(crm.r1 + rowOffset, crm.c1 + colOffset, crm.r2 + rowOffset, crm.c2 + colOffset);
if ((crm.r2 > crm.r1) || (crm.c2 > crm.c1))
MergedRanges.Add(cr);
this[r + rowOffset, c + colOffset] = MyCopyInfo.MyCopiedFlexGrid[r, c];
MatchStyle(crm, cr);
PasteBorders(r + rowOffset, c + colOffset, r, c);
PasteShading(r + rowOffset, c + colOffset, r, c); // C2021-004 paste the shading information
}
if (r == crm.r1 && c == crm.c1)
{
CellRange cr = GetCellRange(crm.r1 + rowOffset, crm.c1 + colOffset, crm.r2 + rowOffset, crm.c2 + colOffset);
if ((crm.r2 > crm.r1) || (crm.c2 > crm.c1))
MergedRanges.Add(cr);
// B2022-046 if the cell contains an RO or Transition then replace the usage id with <NewID> to force a new usage id in the link
if (MyCopyInfo.MyCopiedFlexGrid[r, c] != null)
this[r + rowOffset, c + colOffset] = ItemInfo.ReplaceLinkWithNewID(MyCopyInfo.MyCopiedFlexGrid[r, c].ToString().Replace("\r\n", ""));
else
this[r + rowOffset, c + colOffset] = MyCopyInfo.MyCopiedFlexGrid[r, c];
MatchStyle(crm, cr);
PasteBorders(r + rowOffset, c + colOffset, r, c);
PasteShading(r + rowOffset, c + colOffset, r, c); // C2021-004 paste the shading information
}
}
}
this.AdjustGridControlSize();