From bc6fcfd05b6b1de21ecee7e33feca374ba61a22c Mon Sep 17 00:00:00 2001 From: John Date: Wed, 9 Dec 2015 21:04:02 +0000 Subject: [PATCH] =?UTF-8?q?Use=20static=20function=20to=20check=20user?= =?UTF-8?q?=E2=80=99s=20security=20level=20in=20allowing=20changes=20to=20?= =?UTF-8?q?step=20properties=20Use=20static=20function=20to=20check=20user?= =?UTF-8?q?=E2=80=99s=20security=20level=20in=20allowing=20the=20insert=20?= =?UTF-8?q?or=20change=20of=20a=20transition=20Use=20static=20function=20t?= =?UTF-8?q?o=20check=20user=E2=80=99s=20security=20level=20in=20allowing?= =?UTF-8?q?=20the=20user=20to=20edit=20a=20table=20cell=20Use=20static=20f?= =?UTF-8?q?unction=20to=20check=20user=E2=80=99s=20security=20level=20in?= =?UTF-8?q?=20allowing=20text=20modifications=20when=20keyboard=20shortcut?= =?UTF-8?q?s=20are=20used=20ROEditor=20only=20security=20is=20now=20also?= =?UTF-8?q?=20considered=20a=20Reviewer.=20=20Don=E2=80=99t=20allow=20a=20?= =?UTF-8?q?Review=20goto=20an=20RO=20(run=20the=20RO=20editor),=20Don?= =?UTF-8?q?=E2=80=99t=20allow=20a=20Reviewer=20toggle=20out=20of=20view=20?= =?UTF-8?q?mode=20from=20the=20context=20menu,=20for=20Reviewers,=20don?= =?UTF-8?q?=E2=80=99t=20allow=20the=20Enter=20key=20enter=20new=20steps=20?= =?UTF-8?q?and=20substeps.=20For=20Reviewers,=20when=20on=20a=20table=20(g?= =?UTF-8?q?rid)=20have=20the=20Enter=20Key=20move=20down=20to=20the=20next?= =?UTF-8?q?=20step=20element,=20don=E2=80=99t=20allow=20Reviewers=20edit?= =?UTF-8?q?=20a=20table?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PROMS/Volian.Controls.Library/DisplayTags.cs | 11 +++ .../DisplayTransition.cs | 26 +++++-- PROMS/Volian.Controls.Library/GridItem.cs | 25 ++++++- PROMS/Volian.Controls.Library/StepRTB.cs | 36 +++++++++- .../Volian.Controls.Library/StepTabRibbon.cs | 70 ++++++++++--------- PROMS/Volian.Controls.Library/VlnFlexGrid.cs | 42 +++++++++-- 6 files changed, 160 insertions(+), 50 deletions(-) diff --git a/PROMS/Volian.Controls.Library/DisplayTags.cs b/PROMS/Volian.Controls.Library/DisplayTags.cs index 3cc6c607..f3d0c990 100644 --- a/PROMS/Volian.Controls.Library/DisplayTags.cs +++ b/PROMS/Volian.Controls.Library/DisplayTags.cs @@ -168,6 +168,15 @@ namespace Volian.Controls.Library else cbPageBreak.Checked = false; // Page Break is set to false } + public DocVersionInfo Mydvi = null; // this is initialized in vlnTreeComboSetsFillIn() + + private static UserInfo _MyUserInfo = null; + public static UserInfo MyUserInfo + { + get { return _MyUserInfo; } + set { _MyUserInfo = value; } + } + private void TagsFillIn() { _Initalizing = true; @@ -341,6 +350,8 @@ namespace Volian.Controls.Library StepConfig sc2 = CurItemInfo.MyConfig as StepConfig; tbRespons.Text = sc2.Step_Responsibility; } + // diable fields if user is only a reviewer + groupPanelCheckoff.Enabled = groupPanelChgBar.Enabled = groupPanelChgStepType.Enabled = groupPanelIncludeOn.Enabled = groupPanelPaginate.Enabled = groupPanelWcnTrnResp.Enabled = UserInfo.CanEdit(MyUserInfo, Mydvi); // Can Change Tag Info _Initalizing = false; } private int DoListStepTypes(FormatData fmtdata, StepData topType, string curType) diff --git a/PROMS/Volian.Controls.Library/DisplayTransition.cs b/PROMS/Volian.Controls.Library/DisplayTransition.cs index 924919ee..48824d18 100644 --- a/PROMS/Volian.Controls.Library/DisplayTransition.cs +++ b/PROMS/Volian.Controls.Library/DisplayTransition.cs @@ -32,7 +32,8 @@ namespace Volian.Controls.Library if (_CurTrans == value && _CurItemFrom == MyRTB.MyItemInfo) return; _CurItemFrom = MyRTB.MyItemInfo; _TranFmtIndx = 0; - btnTranSave.Enabled = btnTranCancel.Enabled = true; + btnTranSave.Enabled = UserInfo.CanEdit(MyUserInfo, Mydvi); //Can Insert Transitons + btnTranCancel.Enabled = true; } else // Modify a transition { @@ -347,6 +348,7 @@ namespace Volian.Controls.Library // so that the tree can be expanded highlighting (selecting) the current set. List filist = new List(); DocVersionInfo mydocversion = prcitm.ActiveParent as DocVersionInfo; + Mydvi = mydocversion; // used for security check FolderInfo tmpfi = mydocversion.ActiveParent as FolderInfo; while (tmpfi != null) { @@ -949,7 +951,7 @@ namespace Volian.Controls.Library if (sectstartid == -1) btnTranSave.Enabled = false; // if there is an invalid section start - don't allow save. IList chldrn = prcitm.GetChildren(); cbTranSectsFillIn((ItemInfo)chldrn[0], sectstartid, true); - btnTranSave.Enabled = true; + btnTranSave.Enabled = UserInfo.CanEdit(MyUserInfo, Mydvi); //Can Insert Transitons SaveCancelEnabling(); } private void tvTran_AfterSelect(object sender, TreeViewEventArgs e) @@ -958,7 +960,7 @@ namespace Volian.Controls.Library E_TransUI etm = (E_TransUI)_CurItemFrom.ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList[listBoxTranFmt.SelectedIndex].TransUI; if ((etm & E_TransUI.StepAllowNone) == E_TransUI.StepAllowNone && tvTran.SelectedNode.Tag==null) { - btnTranSave.Enabled = true; + btnTranSave.Enabled = UserInfo.CanEdit(MyUserInfo, Mydvi); //Can Insert Transitons return; } // check if node is a true end-point, i.e. not a 'part' node. If part node, don't @@ -991,7 +993,7 @@ namespace Volian.Controls.Library tvTranRangeHilites(true, _RangeNode1, _RangeNode2); lblxTranRangeTip.Text = "Select First Transition\r\nfor Range"; lblxTranRangeTip.BackColor = Color.Yellow; - btnTranSave.Enabled = true; + btnTranSave.Enabled = UserInfo.CanEdit(MyUserInfo, Mydvi); //Can Insert Transitons } } } @@ -1000,7 +1002,7 @@ namespace Volian.Controls.Library //bool hasChanged = _CurItemFrom != _SavCurItemFrom || _TranFmtIndx != _SavTranFmtIndx // || ( selii != null && _CurTrans.ToID != selii.ItemID); bool hasChanged = SettingsChanged; - btnTranSave.Enabled = hasChanged; + btnTranSave.Enabled = hasChanged && UserInfo.CanEdit(MyUserInfo, Mydvi); //Can Insert Transitons btnTranCancel.Enabled = _CurTrans != null && hasChanged; //btnTranSave.Enabled = allowSave; //if (CurTrans != null && selii != null) @@ -1280,6 +1282,15 @@ namespace Volian.Controls.Library } #endregion + public DocVersionInfo Mydvi = null; // this is initialized in vlnTreeComboSetsFillIn() + + private static UserInfo _MyUserInfo = null; + public static UserInfo MyUserInfo + { + get { return _MyUserInfo; } + set { _MyUserInfo = value; } + } + private void cbIncStepNum_CheckedChanged(object sender, EventArgs e) { tvTran.Enabled=cbIncStepNum.Checked; @@ -1288,7 +1299,10 @@ namespace Volian.Controls.Library private void cbPageNum_CheckedChanged(object sender, EventArgs e) { if (_ModExistingPageNum != cbPageNum.Checked) - btnTranCancel.Enabled = btnTranSave.Enabled = true; + { + btnTranCancel.Enabled = true; + btnTranSave.Enabled = UserInfo.CanEdit(MyUserInfo, Mydvi); //Can Insert Transitons + } } } public class TransItem diff --git a/PROMS/Volian.Controls.Library/GridItem.cs b/PROMS/Volian.Controls.Library/GridItem.cs index f80f8fa5..7b586470 100644 --- a/PROMS/Volian.Controls.Library/GridItem.cs +++ b/PROMS/Volian.Controls.Library/GridItem.cs @@ -17,6 +17,27 @@ namespace Volian.Controls.Library public partial class GridItem : EditItem { #region Fields + private DocVersionInfo _MyDVI = null; + + public DocVersionInfo MyDVI + { + get + { + ItemInfo procInfo = MyItemInfo.MyProcedure as ItemInfo; + if (procInfo == null) + _MyDVI = null; + else + _MyDVI = procInfo.ActiveParent as DocVersionInfo; + return _MyDVI; + } + } + private static UserInfo _MyUserInfo = null; + + public static UserInfo MyUserInfo + { + get { return _MyUserInfo; } + set { _MyUserInfo = value; } + } private bool _IsSaving; public bool IsSaving { @@ -62,7 +83,7 @@ namespace Volian.Controls.Library if (MyStepPanel.DisplayItemChanging) return; MyStepRTB.MyItemInfo = MyItemInfo; // should be in vlnFlexGrid MyStepPanel.SelectedEditItem = this; - if (MyFlexGrid.IsRoTable) + if (MyFlexGrid.IsRoTable || !UserInfo.CanEdit(MyUserInfo,MyDVI));//(!MyUserInfo.IsAdministrator() && ! MyUserInfo.IsSetAdministrator(MyDVI) && !MyUserInfo.IsWriter(MyDVI))) { MyFlexGrid.Cols.Fixed = MyFlexGrid.Cols.Count; MyFlexGrid.Rows.Fixed = MyFlexGrid.Rows.Count; @@ -784,7 +805,7 @@ namespace Volian.Controls.Library { Focus(); MyFlexGrid.Focus(); - if (!MyFlexGrid.IsRoTable) // Table ROs are none editable - don't select a table cell + if (!MyFlexGrid.IsRoTable) // Table ROs are not editable - don't select a table cell { try { diff --git a/PROMS/Volian.Controls.Library/StepRTB.cs b/PROMS/Volian.Controls.Library/StepRTB.cs index 6cec2ec6..af258880 100644 --- a/PROMS/Volian.Controls.Library/StepRTB.cs +++ b/PROMS/Volian.Controls.Library/StepRTB.cs @@ -232,6 +232,27 @@ namespace Volian.Controls.Library OnEditModeChanged(this, new EventArgs()); } } + private DocVersionInfo _MyDVI = null; + + public DocVersionInfo MyDVI + { + get + { + ItemInfo procInfo = _MyItemInfo.MyProcedure as ItemInfo; + if (procInfo == null) + _MyDVI = null; + else + _MyDVI = procInfo.ActiveParent as DocVersionInfo; + return _MyDVI; + } + } + private static UserInfo _MyUserInfo = null; + + public static UserInfo MyUserInfo + { + get { return _MyUserInfo; } + set { _MyUserInfo = value; } + } private static string _MySymbolFontName; public static string MySymbolFontName { @@ -1881,7 +1902,7 @@ namespace Volian.Controls.Library if (newend > 0) SetSelection(SelectionStart, newend - SelectionStart); break; case Keys.Space: - if (e.Control) // Hardspace - Ctrl+Shift+Space + if (e.Control && MyDVI!= null && UserInfo.CanEdit(MyUserInfo,MyDVI)); // Hardspace - Ctrl+Shift+Space InsertSymbol(@"\u160?"); break; case Keys.F3: // shift F3 @@ -2283,13 +2304,22 @@ namespace Volian.Controls.Library case Keys.Enter: if (!e.Control && !e.Shift && !e.Alt) { - OnEnterKeyPressed(sender, e); + if (UserInfo.CanEdit(MyUserInfo,MyItemInfo.MyDocVersion)) + OnEnterKeyPressed(sender, e); + else + { + // user cannot change data so just move to the next step element + StepRTB_ArrowPressed(E_ArrowKeys.CtrlDown); // perform a + HandleLocalSelectionChange(); + e.Handled = true; + } } break; case Keys.F2: if (e.Alt && !e.Control && !e.Shift) // toggle change bar { - OnToggleChangeBar(this, new EventArgs()); + if (MyUserInfo.IsAdministrator() || MyUserInfo.IsSetAdministrator(MyDVI) || MyUserInfo.IsWriter(MyDVI)) + OnToggleChangeBar(this, new EventArgs()); e.Handled = true; } break; diff --git a/PROMS/Volian.Controls.Library/StepTabRibbon.cs b/PROMS/Volian.Controls.Library/StepTabRibbon.cs index 344e57ff..fb2c85c9 100644 --- a/PROMS/Volian.Controls.Library/StepTabRibbon.cs +++ b/PROMS/Volian.Controls.Library/StepTabRibbon.cs @@ -71,23 +71,23 @@ namespace Volian.Controls.Library } // added jcb 20121221 to support set ro from word doc private ROFSTLookup MyLookup; - private DocVersionInfo _MyDVI; - public DocVersionInfo MyDVI + private DocVersionInfo _Mydvi; + public DocVersionInfo Mydvi { get { - if (_MyDVI != null) return _MyDVI; + if (_Mydvi != null) return _Mydvi; if (_MyEditItem != null) { ItemInfo procInfo = _MyEditItem.MyItemInfo.MyProcedure as ItemInfo; if (procInfo == null) return null; - _MyDVI = procInfo.ActiveParent as DocVersionInfo; + _Mydvi = procInfo.ActiveParent as DocVersionInfo; // added jcb 20121221 to support set ro from word doc - if (_MyDVI.DocVersionAssociations != null && _MyDVI.DocVersionAssociations.Count > 0) - MyLookup = _MyDVI.DocVersionAssociations[0].MyROFst.GetROFSTLookup(_MyDVI); + if (_Mydvi.DocVersionAssociations != null && _Mydvi.DocVersionAssociations.Count > 0) + MyLookup = _Mydvi.DocVersionAssociations[0].MyROFst.GetROFSTLookup(_Mydvi); else MyLookup = null; - return _MyDVI; + return _Mydvi; } return null; } @@ -318,7 +318,7 @@ namespace Volian.Controls.Library { bool rv = false; MyAvailableROs = new Dictionary(); - if (MyDVI != null) + if (Mydvi != null) { #region force arp without hi or lo jcb 20121221 //if (data == "") @@ -328,7 +328,7 @@ namespace Volian.Controls.Library //} #endregion string accPageID = GetAccPageID(data); - ROFSTLookup.rochild? roc = MyLookup.GetRoChildByAccPagID(accPageID, MyDVI.DocVersionConfig.RODefaults_setpointprefix, MyDVI.DocVersionConfig.RODefaults_graphicsprefix); + ROFSTLookup.rochild? roc = MyLookup.GetRoChildByAccPagID(accPageID, Mydvi.DocVersionConfig.RODefaults_setpointprefix, Mydvi.DocVersionConfig.RODefaults_graphicsprefix); if (roc != null) { int index = GetROValueIndex(data); @@ -354,7 +354,7 @@ namespace Volian.Controls.Library for (int i = 1; i < 4; i++) { tmpAccPageID = accPageID + suffix + i.ToString(); - roc = MyLookup.GetRoChildByAccPagID(tmpAccPageID, MyDVI.DocVersionConfig.RODefaults_setpointprefix, MyDVI.DocVersionConfig.RODefaults_graphicsprefix); + roc = MyLookup.GetRoChildByAccPagID(tmpAccPageID, Mydvi.DocVersionConfig.RODefaults_setpointprefix, Mydvi.DocVersionConfig.RODefaults_graphicsprefix); if (roc != null) { int index = GetROValueIndex(data); @@ -370,7 +370,7 @@ namespace Volian.Controls.Library for (int i = 1; i < 4; i++) { tmpAccPageID = accPageID + suffix + i.ToString(); - roc = MyLookup.GetRoChildByAccPagID(tmpAccPageID, MyDVI.DocVersionConfig.RODefaults_setpointprefix, MyDVI.DocVersionConfig.RODefaults_graphicsprefix); + roc = MyLookup.GetRoChildByAccPagID(tmpAccPageID, Mydvi.DocVersionConfig.RODefaults_setpointprefix, Mydvi.DocVersionConfig.RODefaults_graphicsprefix); if (roc != null) { int index = GetROValueIndex(data); @@ -392,7 +392,7 @@ namespace Volian.Controls.Library // // txt = txt.Replace(" 0) // position to current type diff --git a/PROMS/Volian.Controls.Library/VlnFlexGrid.cs b/PROMS/Volian.Controls.Library/VlnFlexGrid.cs index e7502700..d6c6f300 100644 --- a/PROMS/Volian.Controls.Library/VlnFlexGrid.cs +++ b/PROMS/Volian.Controls.Library/VlnFlexGrid.cs @@ -112,6 +112,30 @@ namespace Volian.Controls.Library // } // return sb.ToString(); //} + private DocVersionInfo _MyDVI = null; + + public DocVersionInfo MyDVI + { + get + { + ItemInfo procInfo = _MyItemInfo.MyProcedure as ItemInfo; //_MyEditItem.MyItemInfo.MyProcedure as ItemInfo; + if (procInfo == null) + _MyDVI = null; + else + _MyDVI = procInfo.ActiveParent as DocVersionInfo; + return _MyDVI; + } + } + private static UserInfo _MyUserInfo = null; + public static UserInfo MyUserInfo + { + get { return _MyUserInfo; } + set + { + _MyUserInfo = value; + GridItem.MyUserInfo = value; + } + } public bool IsDirty { get @@ -1170,13 +1194,17 @@ namespace Volian.Controls.Library e.Handled = true; break; case Keys.Enter: - //if (e.Shift) return; - //Select(Rows.Count - 1, 0); - //_tableCellEditor.StepRTB_ArrowPressed(E_ArrowKeys.Down); - //e.Handled = true; if (!e.Control && !e.Shift && !e.Alt) { - OnEnterKeyPressed(sender, e); + if (MyDVI != null && UserInfo.CanEdit(MyUserInfo,MyDVI)) + OnEnterKeyPressed(sender, e); + else + { + // if a Reviewer, then do a . Don't allow changes to a table + if (IsRoTable) Select(Rows.Count - 1, 0); + _tableCellEditor.StepRTB_ArrowPressed(e.Control ? E_ArrowKeys.CtrlDown : E_ArrowKeys.Down); + e.Handled = true; + } } break; } @@ -4571,8 +4599,10 @@ namespace Volian.Controls.Library // start editing: move to cell and activate public void StartEditing(int row, int col) { + ItemInfo pinfo = MyItemInfo.MyProcedure as ItemInfo; + DocVersionInfo dvi = (pinfo == null) ? null : pinfo.ActiveParent as DocVersionInfo; _initializingEdit = true; - ReadOnly = IsRoTable; + ReadOnly = IsRoTable || !UserInfo.CanEdit(MyUserInfo, dvi); // reviewer cannot make changes to a table // save coordinates of cell being edited _row = row; _col = col;