示例#1
0
        /// <summary></summary>
        private void FillGridOld()
        {
            gridOld.BeginUpdate();
            gridOld.ListGridColumns.Clear();
            gridOld.ListGridRows.Clear();
            if (gridMain.GetSelectedIndex() < 0)
            {
                gridOld.EndUpdate();
                return;
            }
            if (string.IsNullOrEmpty(gridMain.SelectedTag <WikiListHist>()?.ListHeaders))
            {
                gridMain.SelectedGridRows[0].Tag = WikiListHists.SelectOne(gridMain.SelectedTag <WikiListHist>()?.WikiListHistNum ?? 0);
            }
            Dictionary <string, int> dictColWidths = WikiListHeaderWidths.GetFromListHist(gridMain.SelectedTag <WikiListHist>())
                                                     .ToDictionary(x => x.ColName, x => x.ColWidth);

            using (DataTable table = new DataTable()) {
                using (StringReader sr = new StringReader(gridMain.SelectedTag <WikiListHist>().ListContent))
                    using (XmlReader xmlReader = XmlReader.Create(sr)) {
                        try {
                            table.ReadXml(xmlReader);
                        }
                        catch (Exception) {
                            MsgBox.Show(this, "Corruption detected in the Old Revision table.  Partial data will be displayed.  Please call us for support.");
                            gridOld.EndUpdate();
                            return;
                        }
                    }
                gridOld.ListGridColumns.AddRange(
                    table.Columns.OfType <DataColumn>().Select(x => new GridColumn(x.ColumnName, dictColWidths.TryGetValue(x.ColumnName, out int width)?width:100)));
                gridOld.ListGridRows.AddRange(table.Select().Select(x => new GridRow(x.ItemArray.Select(y => y.ToString()).ToArray())));
            }
            gridOld.EndUpdate();
        }
示例#2
0
 private void butRevert_Click(object sender, EventArgs e)
 {
     if (gridMain.GetSelectedIndex() == -1)
     {
         return;
     }
     if (!MsgBox.Show(this, MsgBoxButtons.OKCancel, "Revert list to currently selected revision?"))
     {
         return;
     }
     try {
         WikiListHists.RevertFrom(gridMain.SelectedTag <WikiListHist>(), Security.CurUser.UserNum);
     }
     catch (Exception) {
         MsgBox.Show(this, "There was an error when trying to revert changes.  Please call us for support.");
         return;
     }
     FillGridMain();
     gridMain.SetSelected(gridMain.ListGridRows.Count - 1, true); //select the new revision.
     gridMain.ScrollToEnd();                                      //in case there are LOTS of revisions. Should this go in the fill grid code?
     FillGridOld();
     FillGridCur();
     gridMain.Focus();
     IsReverted = true;
 }
示例#3
0
 ///<summary>Sets the _isEdited bool to true and saves a copy in the wikilisthist table. This only happens once to prevent spamming of updates.</summary>
 private void SetIsEdited()
 {
     if (_isEdited || IsNew)             //Dont save a wikiListHist entry if this is a new list, or we have already saved an entry prior to a previous edit.
     {
         return;
     }
     _wikiListOld.WikiListHistNum = WikiListHists.Insert(_wikiListOld);
     _isEdited = true;
 }
示例#4
0
 /// <summary></summary>
 private void FillGridMain()
 {
     gridMain.BeginUpdate();
     gridMain.ListGridColumns.Clear();
     gridMain.ListGridRows.Clear();
     gridMain.ListGridColumns.AddRange(new[] { new GridColumn(Lan.g(this, "User"), 70), new GridColumn(Lan.g(this, "Saved"), 80) });
     gridMain.ListGridRows.AddRange(WikiListHists.GetByNameNoContent(ListNameCur)
                                    .Select(x => new GridRow(Userods.GetName(x.UserNum), x.DateTimeSaved.ToString())
     {
         Tag = x
     }));
     gridMain.EndUpdate();
 }
示例#5
0
 private void FormWikiListEdit_Load(object sender, EventArgs e)
 {
     SetFilterControlsAndAction(() => FillGrid(),
                                (int)TimeSpan.FromSeconds(0.5).TotalMilliseconds,
                                textSearch);
     if (!WikiLists.CheckExists(WikiListCurName))
     {
         IsNew = true;
         WikiLists.CreateNewWikiList(WikiListCurName);
     }
     _wikiListOld = WikiListHists.GenerateFromName(WikiListCurName, Security.CurUser.UserNum) ?? new WikiListHist();
     FillGrid();
     ActiveControl = textSearch;          //start in search box.
 }
示例#6
0
 private void butHistory_Click(object sender, EventArgs e)
 {
     using (FormWikiListHistory FormWLH = new FormWikiListHistory()) {
         FormWLH.ListNameCur = WikiListCurName;
         FormWLH.ShowDialog();
         if (!FormWLH.IsReverted)
         {
             return;
         }
     }
     //Reversion has already saved a copy of the current revision.
     _wikiListOld = WikiListHists.GenerateFromName(WikiListCurName, Security.CurUser.UserNum);
     FillGrid();
     _isEdited = false;
     IsNew     = false;
 }
示例#7
0
        private void butRenameList_Click(object sender, EventArgs e)
        {
            //Logic copied from FormWikiLists.butAdd_Click()---------------------
            string newListName;

            using (InputBox inputListName = new InputBox("New List Name")) {
                if (inputListName.ShowDialog() != DialogResult.OK)
                {
                    return;
                }
                //Format input as it would be saved in the database--------------------------------------------
                newListName = inputListName.textResult.Text.ToLower().Replace(" ", "");
            }
            //Validate list name---------------------------------------------------------------------------
            if (string.IsNullOrEmpty(newListName))
            {
                MsgBox.Show(this, "List name cannot be blank.");
                return;
            }
            if (DbHelper.isMySQLReservedWord(newListName))
            {
                //Can become an issue when retrieving column header names.
                MsgBox.Show(this, "List name is a MySQL reserved word.");
                return;
            }
            if (WikiLists.CheckExists(newListName))
            {
                MsgBox.Show(this, "List name already exists.");
                return;
            }
            try {
                Cursor = Cursors.WaitCursor;
                WikiLists.Rename(WikiListCurName, newListName);
                SetIsEdited();
                WikiListHists.Rename(WikiListCurName, newListName);
                WikiListCurName = newListName;
                FillGrid();
            }
            catch (Exception ex) {
                MessageBox.Show(this, ex.Message);
            }
            finally {
                Cursor = Cursors.Default;
            }
        }
示例#8
0
        /// <summary></summary>
        private void FillGridMain()
        {
            gridMain.BeginUpdate();
            gridMain.Columns.Clear();
            ODGridColumn col = new ODGridColumn(Lan.g(this, "User"), 70);

            gridMain.Columns.Add(col);
            col = new ODGridColumn(Lan.g(this, "Saved"), 80);
            gridMain.Columns.Add(col);
            gridMain.Rows.Clear();
            _listWikiListHists = WikiListHists.GetByName(ListNameCur);
            for (int i = 0; i < _listWikiListHists.Count; i++)
            {
                ODGridRow row = new ODGridRow();
                row.Cells.Add(Userods.GetName(_listWikiListHists[i].UserNum));
                row.Cells.Add(_listWikiListHists[i].DateTimeSaved.ToString());
                gridMain.Rows.Add(row);
            }
            gridMain.EndUpdate();
        }
示例#9
0
 private void FormWikiListEdit_Load(object sender, EventArgs e)
 {
     if (!WikiLists.CheckExists(WikiListCurName))
     {
         IsNew = true;
         WikiLists.CreateNewWikiList(WikiListCurName);
     }
     _table       = WikiLists.GetByName(WikiListCurName);
     _wikiListOld = WikiListHists.GenerateFromName(WikiListCurName, Security.CurUser.UserNum);
     if (_wikiListOld == null)
     {
         _wikiListOld = new WikiListHist();
     }
     //Fill _columnHeaders
     _listColumnHeaders        = WikiListHeaderWidths.GetForList(WikiListCurName);
     radioButHighlight.Checked = true;
     radioButFilter.Checked    = false;
     FillGrid();
     ActiveControl = textSearch;          //start in search box.
 }
示例#10
0
        private void butRenameList_Click(object sender, EventArgs e)
        {
            //Logic copied from FormWikiLists.butAdd_Click()---------------------
            InputBox inputListName = new InputBox("New List Name");

            inputListName.ShowDialog();
            if (inputListName.DialogResult != DialogResult.OK)
            {
                return;
            }
            //Format input as it would be saved in the database--------------------------------------------
            inputListName.textResult.Text = inputListName.textResult.Text.ToLower().Replace(" ", "");
            //Validate list name---------------------------------------------------------------------------
            if (DbHelper.isMySQLReservedWord(inputListName.textResult.Text))
            {
                //Can become an issue when retrieving column header names.
                MsgBox.Show(this, "List name is a reserved word in MySQL.");
                return;
            }
            if (inputListName.textResult.Text == "")
            {
                MsgBox.Show(this, "List name cannot be blank.");
                return;
            }
            if (WikiLists.CheckExists(inputListName.textResult.Text))
            {
                MsgBox.Show(this, "List name already exists.");
                return;
            }
            try {
                WikiLists.Rename(WikiListCurName, inputListName.textResult.Text);
                SetIsEdited();
                WikiListHists.Rename(WikiListCurName, inputListName.textResult.Text);
                WikiListCurName = inputListName.textResult.Text;
                _table          = WikiLists.GetByName(WikiListCurName);
                FillGrid();
            }
            catch (Exception ex) {
                MessageBox.Show(this, ex.Message);
            }
        }