C2024-005 #377
@ -23519,6 +23519,90 @@ GO
|
|||||||
==========================================================================================================
|
==========================================================================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
==========================================================================================================
|
||||||
|
Start: C2024-005: SQL to delete folders using admin tool
|
||||||
|
==========================================================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'deleteFolderAdmin')
|
||||||
|
DROP PROCEDURE [dbo].[deleteFolderAdmin]
|
||||||
|
GO
|
||||||
|
|
||||||
|
SET ANSI_NULLS ON
|
||||||
|
GO
|
||||||
|
SET QUOTED_IDENTIFIER ON
|
||||||
|
GO
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
||||||
|
Copyright 2012 - Volian Enterprises, Inc. All rights reserved.
|
||||||
|
*****************************************************************************/
|
||||||
|
CREATE PROCEDURE [dbo].[deleteFolderAdmin]
|
||||||
|
|
||||||
|
(
|
||||||
|
@FolderID int
|
||||||
|
)
|
||||||
|
WITH EXECUTE AS OWNER
|
||||||
|
AS
|
||||||
|
BEGIN TRY -- Try Block
|
||||||
|
BEGIN TRANSACTION
|
||||||
|
DELETE From Assignments WHERE [FolderID]=@FolderID
|
||||||
|
DELETE From Associations where VersionID in (select versionid from DocVersions where folderid = @FolderID)
|
||||||
|
DELETE From DocVersions where VersionID in (select versionid from DocVersions where folderid= @FolderID)
|
||||||
|
DELETE From DocVersions where [FolderID]=@FolderID
|
||||||
|
|
||||||
|
-- Delete from items where ItemID matches
|
||||||
|
DELETE FROM tblitems
|
||||||
|
WHERE ItemID IN (
|
||||||
|
SELECT DISTINCT ItemID
|
||||||
|
FROM docversions
|
||||||
|
WHERE folderID = @folderID
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
-- Delete from items where ItemID matches
|
||||||
|
DELETE FROM tblitems
|
||||||
|
WHERE ItemID IN (
|
||||||
|
SELECT DISTINCT ItemID
|
||||||
|
FROM docversions
|
||||||
|
WHERE folderID = @folderID
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Delete from tblContents where ContentID matches
|
||||||
|
DELETE FROM tblContents
|
||||||
|
WHERE ContentID IN (
|
||||||
|
SELECT DISTINCT c.ContentID
|
||||||
|
FROM tblContents c
|
||||||
|
JOIN items i ON c.ContentID = i.ItemID
|
||||||
|
WHERE i.ItemID IN (
|
||||||
|
SELECT DISTINCT ItemID
|
||||||
|
FROM docversions
|
||||||
|
WHERE folderID = @folderID
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
DELETE From Folders WHERE [ParentID] = @FolderID
|
||||||
|
DELETE From Folders WHERE [FolderID] = @FolderID
|
||||||
|
|
||||||
|
|
||||||
|
IF( @@TRANCOUNT > 0 ) COMMIT
|
||||||
|
END TRY
|
||||||
|
BEGIN CATCH -- Catch Block
|
||||||
|
IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level
|
||||||
|
ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback
|
||||||
|
EXEC vlnErrorHandler
|
||||||
|
END CATCH
|
||||||
|
|
||||||
|
GO
|
||||||
|
/*
|
||||||
|
==========================================================================================================
|
||||||
|
End: C2024-005: SQL to delete folders using admin tool
|
||||||
|
==========================================================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
---------------------------------------------------------------------------
|
---------------------------------------------------------------------------
|
||||||
| ADD New Code Before this Block |
|
| ADD New Code Before this Block |
|
||||||
@ -23552,8 +23636,8 @@ BEGIN TRY -- Try Block
|
|||||||
DECLARE @RevDate varchar(255)
|
DECLARE @RevDate varchar(255)
|
||||||
DECLARE @RevDescription varchar(255)
|
DECLARE @RevDescription varchar(255)
|
||||||
|
|
||||||
set @RevDate = '07/18/2024 11:24'
|
set @RevDate = '07/29/2024 11:24'
|
||||||
set @RevDescription = 'C2024-005 Add an Admin tool that can delete a group of annotations.'
|
set @RevDescription = 'C2024-005 Add SQL for Admin tool delete folders.'
|
||||||
|
|
||||||
Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription
|
Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription
|
||||||
PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription
|
PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription
|
||||||
|
@ -530,7 +530,6 @@
|
|||||||
this.superTooltip1.SetSuperTooltip(this.labelX13, new DevComponents.DotNetBar.SuperTooltipInfo("Check RO Links", "", resources.GetString("labelX13.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(350, 175)));
|
this.superTooltip1.SetSuperTooltip(this.labelX13, new DevComponents.DotNetBar.SuperTooltipInfo("Check RO Links", "", resources.GetString("labelX13.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(350, 175)));
|
||||||
this.labelX13.TabIndex = 38;
|
this.labelX13.TabIndex = 38;
|
||||||
this.labelX13.Text = "Delete Folders";
|
this.labelX13.Text = "Delete Folders";
|
||||||
this.labelX13.Visible = false;
|
|
||||||
//
|
//
|
||||||
// swDeleteAnnotations
|
// swDeleteAnnotations
|
||||||
//
|
//
|
||||||
|
@ -24,10 +24,14 @@ namespace VEPROMS
|
|||||||
private bool IsAdministratorUser = false; //C2020-035 used to control what Set Amins can do
|
private bool IsAdministratorUser = false; //C2020-035 used to control what Set Amins can do
|
||||||
// C2017-030 - new Admin Tools user interface
|
// C2017-030 - new Admin Tools user interface
|
||||||
// pass in session info to constructor
|
// pass in session info to constructor
|
||||||
public frmBatchRefresh(SessionInfo sessionInfo)
|
|
||||||
|
private frmVEPROMS _veProms;
|
||||||
|
|
||||||
|
public frmBatchRefresh(SessionInfo sessionInfo, frmVEPROMS veProms)
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
_MySessionInfo = sessionInfo;
|
_MySessionInfo = sessionInfo;
|
||||||
|
_veProms = veProms;
|
||||||
|
|
||||||
if (sideNavItmDelete.Checked)
|
if (sideNavItmDelete.Checked)
|
||||||
{
|
{
|
||||||
@ -155,12 +159,6 @@ namespace VEPROMS
|
|||||||
FolderInfo fi = FolderInfo.GetTop();
|
FolderInfo fi = FolderInfo.GetTop();
|
||||||
|
|
||||||
if (fi.ChildFolderCount > 0)
|
if (fi.ChildFolderCount > 0)
|
||||||
{
|
|
||||||
if (noProcs)
|
|
||||||
{
|
|
||||||
LoadFolders(fi, myTVdel, null);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
TreeNode tn = new TreeNode(fi.Name);
|
TreeNode tn = new TreeNode(fi.Name);
|
||||||
tn.Tag = fi;
|
tn.Tag = fi;
|
||||||
@ -168,32 +166,10 @@ namespace VEPROMS
|
|||||||
LoadChildFolders(fi, tn, noProcs);
|
LoadChildFolders(fi, tn, noProcs);
|
||||||
myTVdel.Nodes.Add(tn);
|
myTVdel.Nodes.Add(tn);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (myTVdel.SelectedNode != null)
|
if (myTVdel.SelectedNode != null)
|
||||||
myTVdel.SelectedNode.Expand();
|
myTVdel.SelectedNode.Expand();
|
||||||
this.Cursor = Cursors.Default;
|
this.Cursor = Cursors.Default;
|
||||||
|
|
||||||
//btnFixLinks.Enabled = false;
|
|
||||||
//this.Cursor = Cursors.WaitCursor;
|
|
||||||
////myTreeNodePath = new List<string>();
|
|
||||||
//myTVdel.Nodes.Clear();
|
|
||||||
//myDocVersions.Clear();
|
|
||||||
//FolderInfo fi = FolderInfo.GetTop();
|
|
||||||
//TreeNode tn = myTVdel.Nodes.Add(fi.Name );
|
|
||||||
//tn.Tag = fi;
|
|
||||||
//if (fi.ChildFolderCount > 0)
|
|
||||||
//{
|
|
||||||
// if (noProcs)
|
|
||||||
// {
|
|
||||||
// LoadBottomLevelFolders(fi, myTVdel);
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// LoadChildFolders(fi, tn, noProcs);
|
|
||||||
//}
|
|
||||||
//if (myTVdel.SelectedNode != null)
|
|
||||||
// myTVdel.SelectedNode.Expand();
|
|
||||||
//this.Cursor = Cursors.Default;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// B2021-060 Higher level folders where being removed from the tree even if there was a child folder that containe a working draft set
|
// B2021-060 Higher level folders where being removed from the tree even if there was a child folder that containe a working draft set
|
||||||
@ -222,100 +198,6 @@ namespace VEPROMS
|
|||||||
tn.Remove();
|
tn.Remove();
|
||||||
return loadedWorkingDraft;
|
return loadedWorkingDraft;
|
||||||
}
|
}
|
||||||
/// <summary>
|
|
||||||
/// Load only folders into treeview
|
|
||||||
/// </summary>
|
|
||||||
private void LoadFolders(FolderInfo fi, TreeView treeView, TreeNode parentNode)
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
foreach (FolderInfo fic in fi.SortedChildFolders)
|
|
||||||
{
|
|
||||||
TreeNode tnc = treeView.Nodes.Add(fic.Name);
|
|
||||||
tnc.Tag = fic;
|
|
||||||
|
|
||||||
if (fic.ChildFolderCount > 0)
|
|
||||||
{
|
|
||||||
// Recursively call for child folders
|
|
||||||
LoadFolders(fic, treeView, tnc);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (fic.Name != "PROMS")
|
|
||||||
{
|
|
||||||
// If the folder is a bottom-level folder (no child folders), add it directly to the TreeView
|
|
||||||
|
|
||||||
//Working
|
|
||||||
//foreach (DocVersionInfo dvi in fic.FolderDocVersions)
|
|
||||||
//{
|
|
||||||
// myDocVersions.Add(tnc, dvi);
|
|
||||||
//}
|
|
||||||
|
|
||||||
// If parentNode is null, add to the root of the tree
|
|
||||||
if (parentNode == null)
|
|
||||||
{
|
|
||||||
// If the folder is a bottom-level folder (no child folders), add it directly to the TreeView
|
|
||||||
treeView.Nodes.Add(tnc);
|
|
||||||
foreach (DocVersionInfo dvi in fic.FolderDocVersions)
|
|
||||||
{
|
|
||||||
myDocVersions.Add(tnc, dvi);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Otherwise, add to the parent node
|
|
||||||
parentNode.Nodes.Add(fic.Name);
|
|
||||||
foreach (DocVersionInfo dvi in fic.FolderDocVersions)
|
|
||||||
{
|
|
||||||
myDocVersions.Add(tnc, dvi);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//foreach (FolderInfo fic in fi.SortedChildFolders)
|
|
||||||
//{
|
|
||||||
// // Skip "PROMS" folder
|
|
||||||
// if (fic.Name == "PROMS")
|
|
||||||
// {
|
|
||||||
// continue;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// //// Create a new tree node for the current folder
|
|
||||||
// TreeNode tnc = new TreeNode(fic.Name) { Tag = fic };
|
|
||||||
|
|
||||||
// // If parentNode is null, add to the root of the tree
|
|
||||||
// if (parentNode == null)
|
|
||||||
// {
|
|
||||||
// // If the folder is a bottom-level folder (no child folders), add it directly to the TreeView
|
|
||||||
// treeView.Nodes.Add(tnc);
|
|
||||||
// foreach (DocVersionInfo dvi in fic.FolderDocVersions)
|
|
||||||
// {
|
|
||||||
// myDocVersions.Add(tnc, dvi);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// // Otherwise, add to the parent node
|
|
||||||
// //parentNode.Nodes.Add(tnc);
|
|
||||||
|
|
||||||
// // If the folder is a bottom-level folder (no child folders), add it directly to the TreeView
|
|
||||||
// parentNode.Nodes.Add(fic.Name);
|
|
||||||
// foreach (DocVersionInfo dvi in fic.FolderDocVersions)
|
|
||||||
// {
|
|
||||||
// myDocVersions.Add(tnc, dvi);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // Recursively call for child folders
|
|
||||||
// if (fic.ChildFolderCount > 0)
|
|
||||||
// {
|
|
||||||
// LoadFolders(fic, treeView, tnc);
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
private bool LoadDocVersions(FolderInfo fic, TreeNode tnc, bool noProcs)
|
private bool LoadDocVersions(FolderInfo fic, TreeNode tnc, bool noProcs)
|
||||||
{
|
{
|
||||||
bool rtnval = false;
|
bool rtnval = false;
|
||||||
@ -1750,6 +1632,11 @@ namespace VEPROMS
|
|||||||
|
|
||||||
if (swDeleteFolder.Value)
|
if (swDeleteFolder.Value)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
if (FlexibleMessageBox.Show(this, "You sure you want to remove the selected folders and their contents?", "Confirm Folder Deletion", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
//TODO process deletions of folders
|
//TODO process deletions of folders
|
||||||
txtProcess.AppendText("Deleting Folders...");
|
txtProcess.AppendText("Deleting Folders...");
|
||||||
|
|
||||||
@ -1766,6 +1653,7 @@ namespace VEPROMS
|
|||||||
|
|
||||||
ProcessDelete(dvil);
|
ProcessDelete(dvil);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Write progress status
|
// Write progress status
|
||||||
@ -1800,11 +1688,13 @@ namespace VEPROMS
|
|||||||
|
|
||||||
foreach (var kvp in foldersToDelete)
|
foreach (var kvp in foldersToDelete)
|
||||||
{
|
{
|
||||||
int itemID = (int)kvp.ItemID;
|
//Gather folder information
|
||||||
string folderName = kvp.Name;
|
|
||||||
|
FolderInfo fi = (FolderInfo)kvp.ActiveParent;
|
||||||
|
int itemID = (int)fi.FolderID;
|
||||||
|
string folderName = fi.Name;
|
||||||
|
|
||||||
// Perform the deletion operation
|
// Perform the deletion operation
|
||||||
// Assume DeleteFolderByID is a method that deletes the folder by its ItemID
|
|
||||||
bool deletionSuccessful = DeleteFolderByID(itemID);
|
bool deletionSuccessful = DeleteFolderByID(itemID);
|
||||||
|
|
||||||
// Update txtProcess with the progress
|
// Update txtProcess with the progress
|
||||||
@ -1818,13 +1708,29 @@ namespace VEPROMS
|
|||||||
}
|
}
|
||||||
txtProcess.AppendText(Environment.NewLine);
|
txtProcess.AppendText(Environment.NewLine);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Run Repair
|
||||||
|
PurgeDisconnectedItems(); // Orphan Items
|
||||||
|
|
||||||
|
//rebuild
|
||||||
|
ResetDelTV(true);
|
||||||
}
|
}
|
||||||
// Example deletion method
|
private bool DeleteFolderByID(int folderID)
|
||||||
private bool DeleteFolderByID(int itemID)
|
|
||||||
{
|
{
|
||||||
// Implement your folder deletion logic here
|
try
|
||||||
// Return true if deletion was successful, false otherwise
|
{
|
||||||
return true; // Placeholder
|
//Delete
|
||||||
|
Folder.DeleteFolderAdmin(folderID);
|
||||||
|
|
||||||
|
//update treeview UI via veProms
|
||||||
|
_veProms.tv_FolderDelete(folderID);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ProcedureInfo> RetrieveChkAnnotations()
|
public List<ProcedureInfo> RetrieveChkAnnotations()
|
||||||
|
@ -216,6 +216,8 @@ namespace VEPROMS
|
|||||||
set { _MyDocVersion = value; }
|
set { _MyDocVersion = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// C2015-022 setup the child PROMS window
|
// C2015-022 setup the child PROMS window
|
||||||
public frmVEPROMS(frmVEPROMS myParent, DocVersionInfo myDocVersion)
|
public frmVEPROMS(frmVEPROMS myParent, DocVersionInfo myDocVersion)
|
||||||
{
|
{
|
||||||
@ -254,6 +256,22 @@ namespace VEPROMS
|
|||||||
tc.RefreshItem(myItemInfo);
|
tc.RefreshItem(myItemInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void tv_FolderDelete(int folderId)
|
||||||
|
{
|
||||||
|
// Create an instance of the event args if needed
|
||||||
|
var args = new vlnTreeFolderDeleteEventArgs(folderId);
|
||||||
|
|
||||||
|
// Trigger the deletion using the event arguments
|
||||||
|
tv.RemoveFolder(args.FolderId);
|
||||||
|
|
||||||
|
}
|
||||||
|
private bool Tv_DeleteFolder(object sender, vlnTreeFolderDeleteEventArgs args)
|
||||||
|
{
|
||||||
|
tv.RemoveFolder(args.FolderId);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private E_UCFImportOptions _UCFImportOptionsFromSettings;
|
private E_UCFImportOptions _UCFImportOptionsFromSettings;
|
||||||
|
|
||||||
public frmVEPROMS()
|
public frmVEPROMS()
|
||||||
@ -475,6 +493,7 @@ namespace VEPROMS
|
|||||||
tv.OpenItem += new vlnTreeViewItemInfoEvent(tv_OpenItem);
|
tv.OpenItem += new vlnTreeViewItemInfoEvent(tv_OpenItem);
|
||||||
tv.TabDisplay += new StepPanelTabDisplayEvent(tc_PanelTabDisplay);
|
tv.TabDisplay += new StepPanelTabDisplayEvent(tc_PanelTabDisplay);
|
||||||
tv.DeleteItemInfo += new vlnTreeViewItemInfoDeleteEvent(tv_DeleteItemInfo);
|
tv.DeleteItemInfo += new vlnTreeViewItemInfoDeleteEvent(tv_DeleteItemInfo);
|
||||||
|
tv.DeleteFolder += new vlnTreeViewItemInfoDeleteFolderEvent(Tv_DeleteFolder);
|
||||||
tv.InsertItemInfo += new vlnTreeViewItemInfoInsertEvent(tv_InsertItemInfo);
|
tv.InsertItemInfo += new vlnTreeViewItemInfoInsertEvent(tv_InsertItemInfo);
|
||||||
tv.NodeInsert += new vlnTreeViewEvent(tv_NodeInsert);
|
tv.NodeInsert += new vlnTreeViewEvent(tv_NodeInsert);
|
||||||
tv.PasteItemInfo += new vlnTreeViewItemInfoPasteEvent(tv_PasteItemInfo);
|
tv.PasteItemInfo += new vlnTreeViewItemInfoPasteEvent(tv_PasteItemInfo);
|
||||||
@ -1603,6 +1622,11 @@ namespace VEPROMS
|
|||||||
return rtval;
|
return rtval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool tv_DeleteFolder(object sender, vlnTreeItemInfoEventArgs args)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
private bool tv_PasteItemInfo(object sender, vlnTreeItemInfoPasteEventArgs args)
|
private bool tv_PasteItemInfo(object sender, vlnTreeItemInfoPasteEventArgs args)
|
||||||
{
|
{
|
||||||
return tc.PasteRTBItem(args.MyItemInfo, args.CopyStartID, args.PasteType, (int)args.Type);
|
return tc.PasteRTBItem(args.MyItemInfo, args.CopyStartID, args.PasteType, (int)args.Type);
|
||||||
@ -2741,7 +2765,7 @@ namespace VEPROMS
|
|||||||
|
|
||||||
void btnAdministrativeTools_Click(object sender, EventArgs e)
|
void btnAdministrativeTools_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
frmBatchRefresh frm = new frmBatchRefresh(MySessionInfo);
|
frmBatchRefresh frm = new frmBatchRefresh(MySessionInfo, this);
|
||||||
frm.ProgressBar = bottomProgBar;
|
frm.ProgressBar = bottomProgBar;
|
||||||
frm.ShowDialog(this);
|
frm.ShowDialog(this);
|
||||||
}
|
}
|
||||||
|
@ -1433,6 +1433,31 @@ namespace VEPROMS.CSLA.Library
|
|||||||
throw new DbCslaException("Folder.Remove", ex);
|
throw new DbCslaException("Folder.Remove", ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
[Transactional(TransactionalTypes.TransactionScope)]
|
||||||
|
public static void DeleteFolderAdmin(int folderID)
|
||||||
|
{
|
||||||
|
if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Folder.Remove", 0);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
|
||||||
|
{
|
||||||
|
using (SqlCommand cm = cn.CreateCommand())
|
||||||
|
{
|
||||||
|
cm.CommandType = CommandType.StoredProcedure;
|
||||||
|
cm.CommandTimeout = Database.SQLTimeout;
|
||||||
|
cm.CommandText = "deleteFolderAdmin";
|
||||||
|
cm.Parameters.AddWithValue("@FolderID", folderID);
|
||||||
|
cm.ExecuteNonQuery();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
if (_MyLog.IsErrorEnabled) _MyLog.Error("Folder.Remove", ex);
|
||||||
|
throw new DbCslaException("Folder.Remove", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
#region Exists
|
#region Exists
|
||||||
public static bool Exists(int folderID)
|
public static bool Exists(int folderID)
|
||||||
@ -1536,6 +1561,8 @@ namespace VEPROMS.CSLA.Library
|
|||||||
// Needs to be overriden to add new validation rules
|
// Needs to be overriden to add new validation rules
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
} // Class
|
} // Class
|
||||||
#region Converter
|
#region Converter
|
||||||
|
@ -167,7 +167,9 @@ namespace VEPROMS.CSLA.Library
|
|||||||
tn.ResetNode("Dummy GetFolder");
|
tn.ResetNode("Dummy GetFolder");
|
||||||
return tn;
|
return tn;
|
||||||
}
|
}
|
||||||
// public abstract void LoadChildren();
|
|
||||||
|
|
||||||
|
// public abstract void LoadChildren();
|
||||||
//private long _Start;
|
//private long _Start;
|
||||||
//private Dictionary<string, long> _Timings=new Dictionary<string,long>();
|
//private Dictionary<string, long> _Timings=new Dictionary<string,long>();
|
||||||
//private void tReset()
|
//private void tReset()
|
||||||
|
@ -26,6 +26,7 @@ namespace Volian.Controls.Library
|
|||||||
public delegate void vlnTreeViewItemInfoEvent(object sender, vlnTreeItemInfoEventArgs args);
|
public delegate void vlnTreeViewItemInfoEvent(object sender, vlnTreeItemInfoEventArgs args);
|
||||||
public delegate bool vlnTreeViewBoolEvent(object sender, vlnTreeEventArgs args);
|
public delegate bool vlnTreeViewBoolEvent(object sender, vlnTreeEventArgs args);
|
||||||
public delegate bool vlnTreeViewItemInfoDeleteEvent(object sender, vlnTreeItemInfoEventArgs args);
|
public delegate bool vlnTreeViewItemInfoDeleteEvent(object sender, vlnTreeItemInfoEventArgs args);
|
||||||
|
public delegate bool vlnTreeViewItemInfoDeleteFolderEvent(object sender, vlnTreeFolderDeleteEventArgs args);
|
||||||
public delegate bool vlnTreeViewItemInfoInsertEvent(object sender, vlnTreeItemInfoInsertEventArgs args);
|
public delegate bool vlnTreeViewItemInfoInsertEvent(object sender, vlnTreeItemInfoInsertEventArgs args);
|
||||||
public delegate bool vlnTreeViewItemInfoPasteEvent(object sender, vlnTreeItemInfoPasteEventArgs args);
|
public delegate bool vlnTreeViewItemInfoPasteEvent(object sender, vlnTreeItemInfoPasteEventArgs args);
|
||||||
public delegate TreeNode vlnTreeViewTreeNodeEvent(object sender, vlnTreeEventArgs args);
|
public delegate TreeNode vlnTreeViewTreeNodeEvent(object sender, vlnTreeEventArgs args);
|
||||||
@ -220,6 +221,15 @@ namespace Volian.Controls.Library
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
public class vlnTreeFolderDeleteEventArgs : EventArgs
|
||||||
|
{
|
||||||
|
public int FolderId { get; }
|
||||||
|
|
||||||
|
public vlnTreeFolderDeleteEventArgs(int folderId)
|
||||||
|
{
|
||||||
|
FolderId = folderId;
|
||||||
|
}
|
||||||
|
}
|
||||||
public enum E_InsertType {Before, After, Child};
|
public enum E_InsertType {Before, After, Child};
|
||||||
public partial class vlnTreeItemInfoInsertEventArgs
|
public partial class vlnTreeItemInfoInsertEventArgs
|
||||||
{
|
{
|
||||||
@ -427,6 +437,12 @@ namespace Volian.Controls.Library
|
|||||||
if (DeleteItemInfo != null) return DeleteItemInfo(sender, args);
|
if (DeleteItemInfo != null) return DeleteItemInfo(sender, args);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
public event vlnTreeViewItemInfoDeleteFolderEvent DeleteFolder;
|
||||||
|
private bool OnDeleteFolder(object sender, vlnTreeFolderDeleteEventArgs args)
|
||||||
|
{
|
||||||
|
if (DeleteItemInfo != null) return DeleteFolder(sender, args);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
public event vlnTreeViewItemInfoInsertEvent InsertItemInfo;
|
public event vlnTreeViewItemInfoInsertEvent InsertItemInfo;
|
||||||
private bool OnInsertItemInfo(object sender, vlnTreeItemInfoInsertEventArgs args)
|
private bool OnInsertItemInfo(object sender, vlnTreeItemInfoInsertEventArgs args)
|
||||||
{
|
{
|
||||||
@ -697,7 +713,7 @@ namespace Volian.Controls.Library
|
|||||||
{
|
{
|
||||||
if (!ui.IsAdministrator() && DoSpecificInfo) cm.MenuItems.Add("Procedure Set Specific Information", new EventHandler(mi_Click));
|
if (!ui.IsAdministrator() && DoSpecificInfo) cm.MenuItems.Add("Procedure Set Specific Information", new EventHandler(mi_Click));
|
||||||
// B2020-111 only allow Set Administrator to add new folders inside folders they admininstrate
|
// B2020-111 only allow Set Administrator to add new folders inside folders they admininstrate
|
||||||
if (ui.IsAdministrator()||ui.IsSetAdministrator(fi.MyParent))
|
if (ui.IsAdministrator() || ui.IsSetAdministrator(fi.MyParent))
|
||||||
{
|
{
|
||||||
cm.MenuItems.Add("Insert Folder Before", new EventHandler(mi_Click));
|
cm.MenuItems.Add("Insert Folder Before", new EventHandler(mi_Click));
|
||||||
cm.MenuItems.Add("Insert Folder After", new EventHandler(mi_Click));
|
cm.MenuItems.Add("Insert Folder After", new EventHandler(mi_Click));
|
||||||
@ -1052,7 +1068,7 @@ namespace Volian.Controls.Library
|
|||||||
ok = true;
|
ok = true;
|
||||||
else if (tn.VEObject is ItemInfo && (ui.IsAdministrator() || ui.IsSetAdministrator((tn.VEObject as ItemInfo).MyProcedure.MyDocVersion) || ui.IsWriter((tn.VEObject as ItemInfo).MyProcedure.MyDocVersion)))
|
else if (tn.VEObject is ItemInfo && (ui.IsAdministrator() || ui.IsSetAdministrator((tn.VEObject as ItemInfo).MyProcedure.MyDocVersion) || ui.IsWriter((tn.VEObject as ItemInfo).MyProcedure.MyDocVersion)))
|
||||||
ok = true;
|
ok = true;
|
||||||
if(ok)
|
if (ok)
|
||||||
Menu_Paste(tn, cm);
|
Menu_Paste(tn, cm);
|
||||||
#endregion
|
#endregion
|
||||||
//_MyLog.WarnFormat("Context Menu 5 - {0}", GC.GetTotalMemory(true));
|
//_MyLog.WarnFormat("Context Menu 5 - {0}", GC.GetTotalMemory(true));
|
||||||
@ -1144,7 +1160,7 @@ namespace Volian.Controls.Library
|
|||||||
// Add Properties to the menu unless at the very 'top' node or on a grouping (partinfo)
|
// Add Properties to the menu unless at the very 'top' node or on a grouping (partinfo)
|
||||||
// node (RNOs, Steps, Cautions, Notes) or at the step level.
|
// node (RNOs, Steps, Cautions, Notes) or at the step level.
|
||||||
// B2020-105 Allow Set Administrators to rename folder's (sets of procedures) to which they have been given access.
|
// B2020-105 Allow Set Administrators to rename folder's (sets of procedures) to which they have been given access.
|
||||||
if ( tn.VEObject is FolderInfo) ok = (ui.IsAdministrator() || ui.IsSetAdministrator(tn.VEObject as FolderInfo));
|
if (tn.VEObject is FolderInfo) ok = (ui.IsAdministrator() || ui.IsSetAdministrator(tn.VEObject as FolderInfo));
|
||||||
else ok = (tn.VEObject is DocVersionInfo) ? (ui.IsAdministrator() || ui.IsSetAdministrator(tn.VEObject as DocVersionInfo))
|
else ok = (tn.VEObject is DocVersionInfo) ? (ui.IsAdministrator() || ui.IsSetAdministrator(tn.VEObject as DocVersionInfo))
|
||||||
: (ui.IsAdministrator() || (tn.VEObject is ItemInfo) && (ui.IsSetAdministrator((tn.VEObject as ItemInfo).MyProcedure.MyDocVersion)
|
: (ui.IsAdministrator() || (tn.VEObject is ItemInfo) && (ui.IsSetAdministrator((tn.VEObject as ItemInfo).MyProcedure.MyDocVersion)
|
||||||
|| ui.IsWriter((tn.VEObject as ItemInfo).MyProcedure.MyDocVersion)));
|
|| ui.IsWriter((tn.VEObject as ItemInfo).MyProcedure.MyDocVersion)));
|
||||||
@ -1256,7 +1272,7 @@ namespace Volian.Controls.Library
|
|||||||
// F2022-024 added Time Critical Action Summary option
|
// F2022-024 added Time Critical Action Summary option
|
||||||
foreach (MenuItem itm in cm.MenuItems)
|
foreach (MenuItem itm in cm.MenuItems)
|
||||||
{
|
{
|
||||||
if(itm.Text == "Procedure Specific Information" || itm.Text == "New Section" || itm.Text == "Approve" || itm.Text == "Open" ||
|
if (itm.Text == "Procedure Specific Information" || itm.Text == "New Section" || itm.Text == "Approve" || itm.Text == "Open" ||
|
||||||
itm.Text == "Copy" || itm.Text == "Delete" || itm.Text == "Properties..." || itm.Text == "Replace Existing Procedure" ||
|
itm.Text == "Copy" || itm.Text == "Delete" || itm.Text == "Properties..." || itm.Text == "Replace Existing Procedure" ||
|
||||||
itm.Text.StartsWith("Showing Change Bars Starting") || itm.Text == "Create Continuous Action Summary" ||
|
itm.Text.StartsWith("Showing Change Bars Starting") || itm.Text == "Create Continuous Action Summary" ||
|
||||||
itm.Text == "Create Time Critical Action Summary" || itm.Text == "Export Procedure")
|
itm.Text == "Create Time Critical Action Summary" || itm.Text == "Export Procedure")
|
||||||
@ -1267,7 +1283,7 @@ namespace Volian.Controls.Library
|
|||||||
{
|
{
|
||||||
foreach (MenuItem itm in cm.MenuItems)
|
foreach (MenuItem itm in cm.MenuItems)
|
||||||
{
|
{
|
||||||
if(!itm.Text.StartsWith("Document Checked Out"))
|
if (!itm.Text.StartsWith("Document Checked Out"))
|
||||||
itm.Enabled = false;
|
itm.Enabled = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1425,7 +1441,7 @@ namespace Volian.Controls.Library
|
|||||||
RevisionConfig rc = ri.MyConfig as RevisionConfig;
|
RevisionConfig rc = ri.MyConfig as RevisionConfig;
|
||||||
// bug fix: B2016-183 - add the child's name (ex Unit 1) to the export file name for Parent/Child procedures.
|
// bug fix: B2016-183 - add the child's name (ex Unit 1) to the export file name for Parent/Child procedures.
|
||||||
int applIdx = rc.Applicability_Index;
|
int applIdx = rc.Applicability_Index;
|
||||||
string str = (applIdx > 0)?_currentPri.MyDocVersion.UnitNames[applIdx-1] +"_":""; // if parent/child get the defined child name to inlcude the export filename
|
string str = (applIdx > 0) ? _currentPri.MyDocVersion.UnitNames[applIdx - 1] + "_" : ""; // if parent/child get the defined child name to inlcude the export filename
|
||||||
System.Xml.XmlDocument xd = new System.Xml.XmlDocument();
|
System.Xml.XmlDocument xd = new System.Xml.XmlDocument();
|
||||||
xd.LoadXml(ri.LatestVersion.ApprovedXML);
|
xd.LoadXml(ri.LatestVersion.ApprovedXML);
|
||||||
string PEIPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\VEPROMS\PEI_" + Database.VEPROMS_SqlConnection.Database;
|
string PEIPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\VEPROMS\PEI_" + Database.VEPROMS_SqlConnection.Database;
|
||||||
@ -1473,12 +1489,12 @@ namespace Volian.Controls.Library
|
|||||||
{
|
{
|
||||||
MenuItem mip = mi.Parent as MenuItem;
|
MenuItem mip = mi.Parent as MenuItem;
|
||||||
//B2021-086 Added the check for the last revision stage is an Approved stage
|
//B2021-086 Added the check for the last revision stage is an Approved stage
|
||||||
if ((ri.RevisionID < int.Parse(mip.Parent.Tag.ToString())) && ri.LatestVersion.MyStage.IsApproved!=0)
|
if ((ri.RevisionID < int.Parse(mip.Parent.Tag.ToString())) && ri.LatestVersion.MyStage.IsApproved != 0)
|
||||||
superceded = true;
|
superceded = true;
|
||||||
}
|
}
|
||||||
vlnTreeViewPdfArgs args = new vlnTreeViewPdfArgs(Volian.Base.Library.TmpFile.CreateFileName(ProcedureInfo.Get(ri.ItemID).PDFNumber), ri.LatestVersion.PDF, superceded ? "Superceded" : "");
|
vlnTreeViewPdfArgs args = new vlnTreeViewPdfArgs(Volian.Base.Library.TmpFile.CreateFileName(ProcedureInfo.Get(ri.ItemID).PDFNumber), ri.LatestVersion.PDF, superceded ? "Superceded" : "");
|
||||||
OnViewPDF(sender, args);
|
OnViewPDF(sender, args);
|
||||||
// System.Diagnostics.Process pp = System.Diagnostics.Process.Start(GetDocPdf(ri, superceded));
|
// System.Diagnostics.Process pp = System.Diagnostics.Process.Start(GetDocPdf(ri, superceded));
|
||||||
}
|
}
|
||||||
void MultiUnitApprovedRevision_Click(object sender, EventArgs e)
|
void MultiUnitApprovedRevision_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
@ -1825,7 +1841,7 @@ namespace Volian.Controls.Library
|
|||||||
OnPrintSection(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, mi.Text, (int)mi.Tag));
|
OnPrintSection(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, mi.Text, (int)mi.Tag));
|
||||||
break;
|
break;
|
||||||
case "Print All Procedures for":
|
case "Print All Procedures for":
|
||||||
OnPrintAllProcedures(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0,mi.Text,(int)mi.Tag));
|
OnPrintAllProcedures(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, mi.Text, (int)mi.Tag));
|
||||||
break;
|
break;
|
||||||
case "Approve":
|
case "Approve":
|
||||||
OnApproveProcedure(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, mi.Text, (int)mi.Tag));
|
OnApproveProcedure(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, mi.Text, (int)mi.Tag));
|
||||||
@ -1837,10 +1853,10 @@ namespace Volian.Controls.Library
|
|||||||
OnApproveSomeProcedures(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, mi.Text, (int)mi.Tag));
|
OnApproveSomeProcedures(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, mi.Text, (int)mi.Tag));
|
||||||
break;
|
break;
|
||||||
case "Create Continuous Action Summary":
|
case "Create Continuous Action Summary":
|
||||||
OnCreateContinuousActionSummary(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null,0,mi.Text,(int)mi.Tag));
|
OnCreateContinuousActionSummary(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, mi.Text, (int)mi.Tag));
|
||||||
break;
|
break;
|
||||||
case "Create Time Critical Action Summary":
|
case "Create Time Critical Action Summary":
|
||||||
OnCreateTimeCriticalActionSummary(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null,0,mi.Text,(int)mi.Tag));
|
OnCreateTimeCriticalActionSummary(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, mi.Text, (int)mi.Tag));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (mip.Text.StartsWith("Showing Change Bars Starting"))
|
if (mip.Text.StartsWith("Showing Change Bars Starting"))
|
||||||
@ -2107,11 +2123,11 @@ namespace Volian.Controls.Library
|
|||||||
UpdateROValues(SelectedNode as VETreeNode);
|
UpdateROValues(SelectedNode as VETreeNode);
|
||||||
break;
|
break;
|
||||||
case "Create Continuous Action Summary":
|
case "Create Continuous Action Summary":
|
||||||
OnCreateContinuousActionSummary(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null,0));
|
OnCreateContinuousActionSummary(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0));
|
||||||
break;
|
break;
|
||||||
// F2022-024 Time Critical Action Summary
|
// F2022-024 Time Critical Action Summary
|
||||||
case "Create Time Critical Action Summary":
|
case "Create Time Critical Action Summary":
|
||||||
OnCreateTimeCriticalActionSummary(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null,0));
|
OnCreateTimeCriticalActionSummary(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0));
|
||||||
break;
|
break;
|
||||||
// B2017-243 added the following two Cannot Paste items when dealing with enhanced documents
|
// B2017-243 added the following two Cannot Paste items when dealing with enhanced documents
|
||||||
// when then user selects these menu items a message box will appear giving more information as to why it cannot be pasted
|
// when then user selects these menu items a message box will appear giving more information as to why it cannot be pasted
|
||||||
@ -2244,7 +2260,7 @@ namespace Volian.Controls.Library
|
|||||||
swROUpdate.Write(string.Format("Fixed Referenced Object for {1}({4}){0}Old Text: {2}{0}New Text: {3}{0}{0}", Environment.NewLine, (sender as ItemInfo).ShortPath, args.OldValue, args.NewValue, (sender as ItemInfo).ItemID));
|
swROUpdate.Write(string.Format("Fixed Referenced Object for {1}({4}){0}Old Text: {2}{0}New Text: {3}{0}{0}", Environment.NewLine, (sender as ItemInfo).ShortPath, args.OldValue, args.NewValue, (sender as ItemInfo).ItemID));
|
||||||
}
|
}
|
||||||
|
|
||||||
private ProgressBarItem _ProgressBar=null;
|
private ProgressBarItem _ProgressBar = null;
|
||||||
public ProgressBarItem ProgressBar
|
public ProgressBarItem ProgressBar
|
||||||
{
|
{
|
||||||
get { return _ProgressBar; }
|
get { return _ProgressBar; }
|
||||||
@ -2422,7 +2438,7 @@ namespace Volian.Controls.Library
|
|||||||
|
|
||||||
// assume that item to paste is a procedure, otherwise the menuing would not have
|
// assume that item to paste is a procedure, otherwise the menuing would not have
|
||||||
// included the paste options
|
// included the paste options
|
||||||
tn = (VETreeNode) tn.Nodes[tn.Nodes.Count - 1];
|
tn = (VETreeNode)tn.Nodes[tn.Nodes.Count - 1];
|
||||||
p = "After";
|
p = "After";
|
||||||
}
|
}
|
||||||
else // this is an empty docversion:
|
else // this is an empty docversion:
|
||||||
@ -2543,8 +2559,8 @@ namespace Volian.Controls.Library
|
|||||||
}
|
}
|
||||||
private void PasteReplace(VETreeNode tn, int copyStartID, TreeNode treeNodeReplace)
|
private void PasteReplace(VETreeNode tn, int copyStartID, TreeNode treeNodeReplace)
|
||||||
{
|
{
|
||||||
VETreeNode prevtn = (VETreeNode) tn.PrevNode;
|
VETreeNode prevtn = (VETreeNode)tn.PrevNode;
|
||||||
VETreeNode partn = (VETreeNode) tn.Parent;
|
VETreeNode partn = (VETreeNode)tn.Parent;
|
||||||
ItemInfo ii = tn.VEObject as ItemInfo;
|
ItemInfo ii = tn.VEObject as ItemInfo;
|
||||||
// F2021-009 display a message if pasting step will results in more sub-step levels than are defined in the format
|
// F2021-009 display a message if pasting step will results in more sub-step levels than are defined in the format
|
||||||
ItemInfo.PasteStepIsWithinDefinedSubStepLevels(copyStartID, ii, true);
|
ItemInfo.PasteStepIsWithinDefinedSubStepLevels(copyStartID, ii, true);
|
||||||
@ -2594,7 +2610,7 @@ namespace Volian.Controls.Library
|
|||||||
private void SetupNodeProperties()
|
private void SetupNodeProperties()
|
||||||
{
|
{
|
||||||
VETreeNode tn = SelectedNode as VETreeNode;
|
VETreeNode tn = SelectedNode as VETreeNode;
|
||||||
if (tn==null)return;
|
if (tn == null) return;
|
||||||
|
|
||||||
if ((tn.VEObject as FolderInfo) != null)
|
if ((tn.VEObject as FolderInfo) != null)
|
||||||
OpenProperties(tn.VEObject as FolderInfo);
|
OpenProperties(tn.VEObject as FolderInfo);
|
||||||
@ -2606,7 +2622,7 @@ namespace Volian.Controls.Library
|
|||||||
if (dvi != null && dvi.DocVersionAssociations != null && dvi.DocVersionAssociations.Count > 0) rofstid = dvi.DocVersionAssociations[0].MyROFst.ROFstID;
|
if (dvi != null && dvi.DocVersionAssociations != null && dvi.DocVersionAssociations.Count > 0) rofstid = dvi.DocVersionAssociations[0].MyROFst.ROFstID;
|
||||||
OpenProperties(tn.VEObject as DocVersionInfo);
|
OpenProperties(tn.VEObject as DocVersionInfo);
|
||||||
if (dvi != null && dvi.DocVersionAssociations != null && dvi.DocVersionAssociations.Count > 0 && rofstid != dvi.DocVersionAssociations[0].MyROFst.ROFstID)
|
if (dvi != null && dvi.DocVersionAssociations != null && dvi.DocVersionAssociations.Count > 0 && rofstid != dvi.DocVersionAssociations[0].MyROFst.ROFstID)
|
||||||
OnTabDisplay(this,new StepPanelTabDisplayEventArgs("DisplayROUpdateROFST"));
|
OnTabDisplay(this, new StepPanelTabDisplayEventArgs("DisplayROUpdateROFST"));
|
||||||
}
|
}
|
||||||
else if ((tn.VEObject as ProcedureInfo) != null)
|
else if ((tn.VEObject as ProcedureInfo) != null)
|
||||||
OpenProperties(tn.VEObject as ProcedureInfo);
|
OpenProperties(tn.VEObject as ProcedureInfo);
|
||||||
@ -2740,7 +2756,7 @@ namespace Volian.Controls.Library
|
|||||||
}
|
}
|
||||||
if (f1 != -1) Folder.Delete(f1);
|
if (f1 != -1) Folder.Delete(f1);
|
||||||
}
|
}
|
||||||
else if (newtype == MenuSelections.FolderAfter||newtype == MenuSelections.FolderBefore)
|
else if (newtype == MenuSelections.FolderAfter || newtype == MenuSelections.FolderBefore)
|
||||||
{
|
{
|
||||||
int f2 = -1;
|
int f2 = -1;
|
||||||
string uniquename = _LastFolderInfo.MyParent.UniqueChildName("New Folder");
|
string uniquename = _LastFolderInfo.MyParent.UniqueChildName("New Folder");
|
||||||
@ -2770,7 +2786,7 @@ namespace Volian.Controls.Library
|
|||||||
else if (newtype == MenuSelections.Procedure)
|
else if (newtype == MenuSelections.Procedure)
|
||||||
{
|
{
|
||||||
int p1 = -1;
|
int p1 = -1;
|
||||||
using (Procedure procedure = Procedure.MakeProcedure(_LastDocVersionInfo, _LastDocVersionInfo.Procedures.Count!=0?_LastDocVersionInfo.Procedures[_LastDocVersionInfo.Procedures.Count-1]:null, null, "New Procedure", 0))
|
using (Procedure procedure = Procedure.MakeProcedure(_LastDocVersionInfo, _LastDocVersionInfo.Procedures.Count != 0 ? _LastDocVersionInfo.Procedures[_LastDocVersionInfo.Procedures.Count - 1] : null, null, "New Procedure", 0))
|
||||||
{
|
{
|
||||||
ShowBrokenRules(procedure.BrokenRulesCollection);
|
ShowBrokenRules(procedure.BrokenRulesCollection);
|
||||||
SetLastValues(ProcedureInfo.Get(procedure.ItemID));
|
SetLastValues(ProcedureInfo.Get(procedure.ItemID));
|
||||||
@ -2866,7 +2882,7 @@ namespace Volian.Controls.Library
|
|||||||
"If you would like to view or copy these hidden steps you will need to go\n" +
|
"If you would like to view or copy these hidden steps you will need to go\n" +
|
||||||
"into the properties of this section and check the Editable Data checkbox.\n" +
|
"into the properties of this section and check the Editable Data checkbox.\n" +
|
||||||
"You will then be able to view and copy those steps. When finished, open\n" +
|
"You will then be able to view and copy those steps. When finished, open\n" +
|
||||||
"the properties page again and uncheck the Editable Data checkbox.\n\n"+
|
"the properties page again and uncheck the Editable Data checkbox.\n\n" +
|
||||||
"Do you want to continue creating the subsection?";
|
"Do you want to continue creating the subsection?";
|
||||||
if (FlexibleMessageBox.Show(this, msgstr, "Subsection Insert", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
|
if (FlexibleMessageBox.Show(this, msgstr, "Subsection Insert", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
|
||||||
{
|
{
|
||||||
@ -2878,7 +2894,7 @@ namespace Volian.Controls.Library
|
|||||||
if (!hasMetaSubs) doPseudo = true;
|
if (!hasMetaSubs) doPseudo = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
using(Section section = CreateNewSection())
|
using (Section section = CreateNewSection())
|
||||||
{
|
{
|
||||||
ShowBrokenRules(section.BrokenRulesCollection);
|
ShowBrokenRules(section.BrokenRulesCollection);
|
||||||
SectionInfo savLastSectionInfo = _LastSectionInfo;
|
SectionInfo savLastSectionInfo = _LastSectionInfo;
|
||||||
@ -2902,7 +2918,7 @@ namespace Volian.Controls.Library
|
|||||||
// may have to add a 'steps' node if a step(s) already exist...
|
// may have to add a 'steps' node if a step(s) already exist...
|
||||||
ItemInfo ii = (SelectedNode as VETreeNode).VEObject as ItemInfo;
|
ItemInfo ii = (SelectedNode as VETreeNode).VEObject as ItemInfo;
|
||||||
int cpindx = 0;
|
int cpindx = 0;
|
||||||
if (SelectedNode.Nodes.Count>0)
|
if (SelectedNode.Nodes.Count > 0)
|
||||||
{
|
{
|
||||||
VETreeNode vtn = SelectedNode.Nodes[0] as VETreeNode;
|
VETreeNode vtn = SelectedNode.Nodes[0] as VETreeNode;
|
||||||
// B2017-014: removed code that was adding a 2nd section part node. and also select node to
|
// B2017-014: removed code that was adding a 2nd section part node. and also select node to
|
||||||
@ -2946,8 +2962,8 @@ namespace Volian.Controls.Library
|
|||||||
if (OnNodeOpenProperty(this, new vlnTreePropertyEventArgs("New Section", section.SectionConfig)) == DialogResult.OK)
|
if (OnNodeOpenProperty(this, new vlnTreePropertyEventArgs("New Section", section.SectionConfig)) == DialogResult.OK)
|
||||||
{
|
{
|
||||||
int indx = tvindex + ((newtype == MenuSelections.SectionBefore) ? 0 : 1);
|
int indx = tvindex + ((newtype == MenuSelections.SectionBefore) ? 0 : 1);
|
||||||
int itemido = (indx >= par.Nodes.Count)?-1:(((par.Nodes[indx] as VETreeNode).VEObject) as ItemInfo).ItemID;
|
int itemido = (indx >= par.Nodes.Count) ? -1 : (((par.Nodes[indx] as VETreeNode).VEObject) as ItemInfo).ItemID;
|
||||||
if (indx >= par.Nodes.Count || (par.Nodes[indx] as VETreeNode).VEObject.ToString() != _LastSectionInfo.ToString() || itemido !=section.ItemID)
|
if (indx >= par.Nodes.Count || (par.Nodes[indx] as VETreeNode).VEObject.ToString() != _LastSectionInfo.ToString() || itemido != section.ItemID)
|
||||||
{
|
{
|
||||||
tn = new VETreeNode(_LastSectionInfo);
|
tn = new VETreeNode(_LastSectionInfo);
|
||||||
par.Nodes.Insert(indx, tn);
|
par.Nodes.Insert(indx, tn);
|
||||||
@ -3229,7 +3245,7 @@ namespace Volian.Controls.Library
|
|||||||
|
|
||||||
// see if enhanced related steps need created:
|
// see if enhanced related steps need created:
|
||||||
SectionConfig scfgE = _LastItemInfo.ActiveSection.MyConfig as SectionConfig; // C2018-003 fixed use of getting the active section
|
SectionConfig scfgE = _LastItemInfo.ActiveSection.MyConfig as SectionConfig; // C2018-003 fixed use of getting the active section
|
||||||
if (scfgE != null && scfgE.Section_LnkEnh=="Y")
|
if (scfgE != null && scfgE.Section_LnkEnh == "Y")
|
||||||
{
|
{
|
||||||
// set up which item to insert from based on whether editor was open (see comment from 11/17 above).
|
// set up which item to insert from based on whether editor was open (see comment from 11/17 above).
|
||||||
EnhancedDocuments enhdocs = null;
|
EnhancedDocuments enhdocs = null;
|
||||||
@ -3512,7 +3528,7 @@ namespace Volian.Controls.Library
|
|||||||
// just clear enhanced links back
|
// just clear enhanced links back
|
||||||
_LastSectionInfo.ClearEnhancedSectionLink();
|
_LastSectionInfo.ClearEnhancedSectionLink();
|
||||||
}
|
}
|
||||||
OnSectionShouldClose(this, new vlnTreeSectionInfoEventArgs(_LastSectionInfo,true));
|
OnSectionShouldClose(this, new vlnTreeSectionInfoEventArgs(_LastSectionInfo, true));
|
||||||
// always return false because an event gets fired to delete tree nodes.
|
// always return false because an event gets fired to delete tree nodes.
|
||||||
if (!DeleteItemInfoAndChildren(_LastSectionInfo))
|
if (!DeleteItemInfoAndChildren(_LastSectionInfo))
|
||||||
{
|
{
|
||||||
@ -3567,6 +3583,41 @@ namespace Volian.Controls.Library
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void RemoveFolder(int folderId)
|
||||||
|
{
|
||||||
|
TreeNode nodeToRemove = FindNodeById(folderId, this.Nodes);
|
||||||
|
if (nodeToRemove != null)
|
||||||
|
{
|
||||||
|
// Perform the removal logic
|
||||||
|
nodeToRemove.Remove(); // This removes the node from its parent
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private TreeNode FindNodeById(int folderId, TreeNodeCollection nodes)
|
||||||
|
{
|
||||||
|
foreach (TreeNode node in nodes)
|
||||||
|
{
|
||||||
|
VETreeNode vetNode = node as VETreeNode;
|
||||||
|
if (vetNode != null)
|
||||||
|
{
|
||||||
|
FolderInfo folderInfo = vetNode.VEObject as FolderInfo;
|
||||||
|
if (folderInfo != null && folderInfo.FolderID == folderId)
|
||||||
|
{
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TreeNode foundNode = FindNodeById(folderId, node.Nodes);
|
||||||
|
if (foundNode != null)
|
||||||
|
{
|
||||||
|
return foundNode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
private bool DeleteItemInfoAndChildren(ItemInfo ii)
|
private bool DeleteItemInfoAndChildren(ItemInfo ii)
|
||||||
{
|
{
|
||||||
DateTime dtStart = DateTime.Now;
|
DateTime dtStart = DateTime.Now;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user