Пример #1
0
        /// <summary>
        /// Отписываемся от события нажатия на дочерний контрол
        /// </summary>
        public void UnsubscribeClickEvent()
        {
            var allControls = HelperControls.GetAllChildrenControls(this.SubTaskPanel);

            foreach (var itemControl in allControls)
            {
                itemControl.Click       -= this.ClickEventHandler;
                itemControl.DoubleClick -= this.DoubleClickEventHandler;
            }
        }
Пример #2
0
        /// <summary>
        /// Вызывается при нажатии на элемент задачи.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private void TaskItem_OnClick(object sender, EventArgs args)
        {
            var taskItem = HelperControls.GetParenByType <TaskItem>(sender as Control);

            if (taskItem == null)
            {
                return;
            }

            ChangeSelectedTaskItem(taskItem);
        }
Пример #3
0
        /// <summary>
        /// Обработчик двойного нажатия мыши на элемент проекта.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ProjectItem_DoubleClick(object sender, EventArgs e)
        {
            if (sender == null || sender is Control == false)
            {
                return;
            }

            ProjectItem proj = HelperControls.GetParenByType <ProjectItem>(sender as Control);

            //ПО ДВОЙНОМУ КЛИКУ БУДЕМ РЕДАКТИРОВАТЬ ЭЛЕМЕНТ ПРОЕКТА
            proj.EditProjectData();
            //данные по проекту изменились, как-будто мы поменяли элемент
            this.ChangeSelectedProjectItem(proj);
        }
Пример #4
0
        /// <summary>
        /// Добавить в список IdeaListItem (пользовательский элемент идеи)
        /// </summary>
        /// <param name="idea"></param>
        private void AddIdeaListItem(Idea idea)
        {
            IdeaListItem IdeaListItem = new IdeaListItem(idea);

            //Устанавливаем обработчик нажатия на все дочерние элементы для корректного визуального выделения объекта идей
            HelperControls.SetOnClickHandlerForAllElementsInControl(IdeaListItem, SelectIdeaItem);

            IdeaListItem.TitleProp        = idea.Title;
            IdeaListItem.MarkProp         = idea.Mark.ToString();
            IdeaListItem.SectionColorProp = Constants.SectionsColors[idea.Section];
            IdeaListItem.Width            = flowLayoutPanelIdeas.Width - 25;
            flowLayoutPanelIdeas.Controls.Add(IdeaListItem);
            flowLayoutPanelIdeas.Controls.SetChildIndex(IdeaListItem, 0);
        }
Пример #5
0
        private void SelectIdeaItem(object sender, EventArgs e)
        {
            Control c = sender as Control;

            //Получим элемент UserControl IdeaListItem
            IdeaListItem ideaItem = HelperControls.GetParenByType <IdeaListItem>(c);

            if (ideaItem == null)
            {
                return;
            }

            //Поменяем цвет для выделенной идеи
            ChangeColorSelectedIdeaItem(ideaItem);

            ShowDataForIdea(ideaItem.Idea);
        }
Пример #6
0
        /// <summary>
        /// Вызывается при нажатии на элемент проекта
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ProjectItem_Click(object sender, EventArgs e)
        {
            if (sender == null || sender is Control == false)
            {
                return;
            }

            Control     control = sender as Control;
            ProjectItem proj    = HelperControls.GetParenByType <ProjectItem>(control);

            if (proj == default(ProjectItem))
            {
                return;
            }

            //Так как мы выбрали Новый ProjectItem, то нужно поменять цвет выделения.
            ChangeSelectedProjectItem(proj);
        }
Пример #7
0
        /// <summary>
        /// Добавить подзадачу в задачу
        /// </summary>
        /// <param name="subTask"></param>
        /// <param name="removeInnerMyTask">Нужно ли удалять объект MyTask, который был автоматически добавлен
        /// при добавлении taskItem. То есть если объект MyProject уже сформирован, то ничего к нему не добавлять</param>
        public void AddSubTaskItem(TaskItem subTask, bool removeInnerMyTask = false, bool selectAfterAdd = true)
        {
            if (subTask?.Task?.Status == TaskStatus.Done)
            {
                subTask.StatusCheckBox.Checked = true;
            }

            //Если это главная панель, то установить скроллинг
            if (Equals(this, this.ProjectItem.MainProjectTaskRoot))
            {
                this.SubTaskPanel.AutoScroll = true;
            }


            this.SubTaskPanel.Controls.Add(subTask.SubTaskPanel);
            this.SubTaskPanel.Controls.Add(subTask);
            this.SubTaskPanel.Controls.SetChildIndex(subTask, 0);
            this.SubTaskPanel.Controls.SetChildIndex(subTask.SubTaskPanel, 0);

            #region Не трогать, а то будет КАПУТ

            this.SubTaskItems.Add(subTask);

            if (removeInnerMyTask == true)
            {
                this.Task.SubTasks.RemoveAt(this.Task.SubTasks.Count - 1);
            }

            #endregion


            //вызовем у проекта событие OnChangeSelectedTaskItem (Что выбрали другую задачу). Вызываем событие через внешний метод.
            //Как-то это не хорошо, но пока что так. Не могу вызвать событие напрямую.
            if (selectAfterAdd)
            {
                this.ProjectItem.SelectedTaskItemWasChanged(subTask);
            }
            //Привязываем обработчик события нажатия для дочерних элементов
            HelperControls.SetOnClickHandlerForAllElementsInControl(subTask, subTask.ClickEventHandler);
            HelperControls.SetOnDoubleClickHandlerForAllElementsInControl(subTask, subTask.DoubleClickEventHandler);
        }
Пример #8
0
        void InitaliseHelpers()
        {
            s4pi.Helpers.HelperManager.Reload();
            int tabIndex = 4;
            foreach (var helper in s4pi.Helpers.HelperManager.Helpers)
            {
                HelperControls hc = new HelperControls(helper.id, ref tabIndex);
                lhc.Add(hc);
                hc.btn.Click += new EventHandler(hc_btn_Click);

                int h = tlpHelpers.Height;

                tlpHelpers.RowCount++;
                tlpHelpers.RowStyles.Insert(tlpHelpers.RowCount - 2, new RowStyle(SizeType.AutoSize));
                tlpHelpers.Controls.Add(hc.btn, 0, tlpHelpers.RowCount - 2);
                tlpHelpers.Controls.Add(hc.cb, 1, tlpHelpers.RowCount - 2);
                tlpHelpers.Controls.Add(hc.lb, 2, tlpHelpers.RowCount - 2);

                this.Height = this.Height - h + tlpHelpers.Height;
            }
        }
Пример #9
0
        /// <summary>
        /// Добавить проект в родительскую панель
        /// </summary>
        /// <param name="parent"></param>
        /// <param name="proj"></param>
        private void AddProjectItemToParentPanel(Control parent, ProjectItem proj)
        {
            this.TaskPanel.Controls.Add(proj.MainProjectTaskRoot.SubTaskPanel);

            proj.Dock = DockStyle.Top;

            //привязываем событие нажатия мыши на элемент проекта
            HelperControls.SetOnClickHandlerForAllElementsInControl(proj, ProjectItem_Click);
            HelperControls.SetOnDoubleClickHandlerForAllElementsInControl(proj, ProjectItem_DoubleClick);

            //Привязываем элемент проекта к родителю
            parent.Controls.Add(proj);
            parent.Controls.SetChildIndex(proj, 0);
            //Добавляем для проекта его личную панель для задач.
            this.TaskPanel.Controls.Add(proj.TasksPanel);
            //Только что созданный проект и будет текущим проектом.
            ChangeSelectedProjectItem(proj, false);

            //Добавим обработчик события изменения текущей(выбранной) задачи
            proj.OnChangeSelectedTaskItem -= ChangeSelectedTaskItem;
            proj.OnChangeSelectedTaskItem += ChangeSelectedTaskItem;
        }
Пример #10
0
        void InitaliseHelpers()
        {
            s3pi.Helpers.HelperManager.Reload();
            int tabIndex = 4;

            foreach (var helper in s3pi.Helpers.HelperManager.Helpers)
            {
                HelperControls hc = new HelperControls(helper.id, ref tabIndex);
                lhc.Add(hc);
                hc.btn.Click += new EventHandler(hc_btn_Click);

                int h = tlpHelpers.Height;

                tlpHelpers.RowCount++;
                tlpHelpers.RowStyles.Insert(tlpHelpers.RowCount - 2, new RowStyle(SizeType.AutoSize));
                tlpHelpers.Controls.Add(hc.btn, 0, tlpHelpers.RowCount - 2);
                tlpHelpers.Controls.Add(hc.cb, 1, tlpHelpers.RowCount - 2);
                tlpHelpers.Controls.Add(hc.lb, 2, tlpHelpers.RowCount - 2);

                this.Height = this.Height - h + tlpHelpers.Height;
            }
        }
Пример #11
0
        /// <summary>
        /// Fired when a user taps the markdown helper
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void RedditMarkdownVisualHelper_OnHelperTapped(object sender, HelperControls.OnHelperTappedArgs e)
        {
            int selStart = ui_postUrlTextBox.SelectionStart;
            int selLength = ui_postUrlTextBox.SelectionLength;
            string curText = ui_postUrlTextBox.Text;
            string insertNewLine = null;

            // Depending on the type see what we can do.
            switch (e.Type)
            {
                case HelperControls.VisualHelperTypes.Bold:
                    if(selLength != 0)
                    {
                        // Wrap the selected text
                        ui_postUrlTextBox.Text = curText.Insert(selStart + selLength, "**").Insert(selStart, "**");
                    }
                    else
                    {
                        // Or add to the end
                        ui_postUrlTextBox.Text = curText + " **example**";
                    }
                    break;
                case HelperControls.VisualHelperTypes.Italic:
                    if (selLength != 0)
                    {
                        // Wrap the selected text
                        ui_postUrlTextBox.Text = curText.Insert(selStart + selLength, "*").Insert(selStart, "*");
                    }
                    else
                    {
                        // Or add to the end
                        ui_postUrlTextBox.Text = curText + " *example*";
                    }
                    break;
                case HelperControls.VisualHelperTypes.Link:
                    if (selLength != 0)
                    {
                        // Wrap the selected text
                        ui_postUrlTextBox.Text = curText.Insert(selStart + selLength, ")[http://www.example.com]").Insert(selStart, "{");
                    }
                    else
                    {
                        // Or add to the end
                        ui_postUrlTextBox.Text = curText + " [example](http://www.example.com)";
                    }
                    break;
                case HelperControls.VisualHelperTypes.NewLine:
                    int injectPos = selStart;
                    // Inject the new line at the current pos
                    ui_postUrlTextBox.Text = curText.Insert(injectPos, "  \r\n");
                    // Move the selection to the end of insert
                    ui_postUrlTextBox.SelectionStart = injectPos + 3;
                    break;
                case HelperControls.VisualHelperTypes.Quote:
                    insertNewLine = "> ";
                    break;
                case HelperControls.VisualHelperTypes.List:
                    insertNewLine = "* ";
                    break;
                case HelperControls.VisualHelperTypes.NumberedList:
                    insertNewLine = "1. ";
                    break;
                case HelperControls.VisualHelperTypes.Code:
                    insertNewLine = "    ";
                    break;
               
            }

            // If the insert on new line is not null we need to find the last new line and
            // insert the text.
            if(insertNewLine != null)
            {
                int searchStart = selStart == curText.Length ? selStart - 1 : selStart;
                int indexLastNewLine = curText.LastIndexOf('\n', searchStart);
                ui_postUrlTextBox.Text = curText.Insert(indexLastNewLine + 1, insertNewLine);
            }

            // When we leave focus the text box again so we don't press enter on the key again
            ui_postUrlTextBox.Focus(FocusState.Programmatic);
        }
Пример #12
0
        /// <summary>
        /// Обработчик мобытия нажатия на TaskItem.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private void TaskItem_OnClick(object sender, EventArgs args)
        {
            TaskItem clickedTaskItem = HelperControls.GetParenByType <TaskItem>(sender as Control);

            this.ProjectItem?.SelectedTaskItemWasChanged(clickedTaskItem);
        }
Пример #13
0
        protected void CreateControls()
        {
            Controls.Clear();
            Item item      = null;
            var  published = new List <Item>();

            Item[] targets = null;

            try
            {
                var db = Factory.GetDatabase(Constants.Databases.MASTERDB) ??
                         Factory.GetDatabase(Constants.Databases.WEBDB);

                var id = !string.IsNullOrEmpty(ItemId)
                    ? ItemId
                    : ControlAttributes.Substring(ControlAttributes.IndexOf("//master/", StringComparison.Ordinal) + 9,
                                                  38);
                item = new ID(id).ToSitecoreItem(db);

                var targetsRoot = item.Database.GetItem(
                    Constants.Sitecore.PUBLISHING_TARGETS);

                targets = targetsRoot.GetChildren().ToArray();


                foreach (var target in targets)
                {
                    try
                    {
                        var webItem = item.ID.ToSitecoreItem(Factory.GetDatabase(target[TARGETDATABASE]));
                        if (webItem != null && webItem.Versions.Count != 0)
                        {
                            HelperControls.CreateLitertal("Published Version on " + target[TARGETDATABASE], Controls);
                            HelperControls.CreateSitecoreControl <Integer>("version" + target[TARGETDATABASE], true,
                                                                           true, true,
                                                                           webItem.Version.ToString(), Controls,
                                                                           GetID("version" + target.Name), false, false);

                            published.Add(webItem);
                        }
                        else if (webItem != null && webItem.Versions.Count == 0)
                        {
                            HelperControls.CreateLitertal("Published, but no Versions on " + target[TARGETDATABASE],
                                                          Controls);
                        }
                        else
                        {
                            HelperControls.CreateLitertal("Not published on " + target[TARGETDATABASE], Controls);
                        }
                    }
                    catch (Exception)
                    {
                        HelperControls.CreateLitertal("Target DB " + target[TARGETDATABASE] + " not found.", Controls);
                    }
                    finally
                    {
                        HelperControls.CreateLitertal("<br />", Controls);
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex.Message, ex, this);
            }
            finally
            {
                if (item != null)
                {
                    HelperControls.CreateLitertal("<br />", Controls);
                    HelperControls.CreateLitertal("Number of Versions on master", Controls);
                    HelperControls.CreateSitecoreControl <Integer>("version_master", true, true, true,
                                                                   item.Versions.Count.ToString(), Controls,
                                                                   GetID("version_master"), false, false);
                    HelperControls.CreateLitertal("<br />", Controls);
                }

                try
                {
                    HelperControls.CreateLitertal("<br />", Controls);
                    HelperControls.CreateLitertal(
                        "<table width='100%'><tr><td colspan=7 style='background-color:silver;color:white'><center>Version Details</center></td><td >&nbsp;&nbsp;</td><td style='background-color:silver;color:white'></td></tr><tr><td style='background-color:silver;color:white'><center>Version</center></td><td style='background-color:silver;color:white'><center>Created By</center></td><td style='background-color:silver;color:white'><center>Created Date</center></td><td style='background-color:silver;color:white'><center>Modified By</center></td><td style='background-color:silver;color:white'><center>Modified Date</center></td><td style='background-color:silver;color:white'><center>Languages</center></td><td style='background-color:silver;color:white'><center>Work-Flow State</center></td><td><center>&nbsp;&nbsp;</center></td><td style='background-color:silver;color:white'><center>Published</center></td></tr><tbody>",
                        Controls);

                    if (item != null)
                    {
                        var versions =
                            (from p in item.Versions.GetVersions(true).ToArray() orderby p.Version.Number select p).ToList();

                        foreach (var version in versions)
                        {
                            DateTime outValCreate;
                            DateTime outValModify;
                            string   workFlowName;
                            GetOutValCreate(version, out outValCreate, out outValModify, out workFlowName);

                            var isPublished = false;

                            var pub =
                                (published.Where(
                                     p =>
                                     p.Version.Number == version.Version.Number &&
                                     p.Languages.Where(
                                         l =>
                                         p.Database.GetItem(p.ID, l) != null &&
                                         p.Database.GetItem(p.ID, l).Versions.Count > 0)
                                     .Select(l => l.Name)
                                     .Contains(version.Language.Name))).
                                FirstOrDefault();

                            if (pub != null)
                            {
                                isPublished = true;
                            }

                            HelperControls.CreateLitertal(
                                "<tr><td style='" +
                                (isPublished ? "background-color:lightgreen;color:black;" : string.Empty) +
                                "'><center>" + version.Version.Number + "</center></td><td" +
                                (isPublished ? " style='background-color:lightgreen;color:black;'" : string.Empty) +
                                "><center>" +
                                version.Fields[FieldIDs.CreatedBy].Value + "</center></td><td" +
                                (isPublished ? " style='background-color:lightgreen;color:black;'" : string.Empty) +
                                "><center>" +
                                (outValCreate == DateTime.MinValue
                                    ? string.Empty
                                    : outValCreate.ToString("dd MMM yyyy HH:mm")) + "</center></td><td" +
                                (isPublished ? " style='background-color:lightgreen;color:black;'" : string.Empty) +
                                "><center>" +
                                version.Fields[FieldIDs.UpdatedBy].Value + "</center></td><td" +
                                (isPublished ? " style='background-color:lightgreen;color:black;'" : string.Empty) +
                                "><center>" +
                                (outValModify == DateTime.MinValue
                                    ? string.Empty
                                    : outValModify.ToString("dd MMM yyyy HH:mm")) + "</td><td" +
                                (isPublished ? " style='background-color:lightgreen;color:black;'" : string.Empty) +
                                "><center>" + version.Language.Name + "</center>" +
                                "</td><td" +
                                (isPublished ? " style='background-color:lightgreen;color:black;'" : string.Empty) +
                                "><center>" +
                                workFlowName + "</center></td>" +
                                "</td><td><center></center></td>" +
                                "</td><td><center>" + (isPublished ? "◄" : string.Empty) + "</center></td>"
                                + "</tr>",
                                Controls);
                        }
                    }

                    HelperControls.CreateLitertal("</tbody></table>", Controls);

                    if (targets != null)
                    {
                        foreach (var target in targets)
                        {
                            try
                            {
                                var  errMessage = string.Empty;
                                Item webItem;
                                try
                                {
                                    webItem = item.ID.ToSitecoreItem(Factory.GetDatabase(target[TARGETDATABASE]));
                                }
                                catch (Exception ex)
                                {
                                    errMessage = ex.Message;
                                    webItem    = null;
                                }
                                if (webItem != null)
                                {
                                    DateTime outValCreate;
                                    DateTime outValModify;
                                    string   workFlowName;
                                    GetOutValCreate(webItem, out outValCreate, out outValModify, out workFlowName);

                                    HelperControls.CreateLitertal("<br />", Controls);
                                    HelperControls.CreateLitertal(
                                        "<table width='100%'><tr><td colspan=7 style='background-color:silver;color:white'><center>Item Details on " +
                                        target[TARGETDATABASE] +
                                        "</center></td></tr><tr><td style='background-color:silver;color:white'><center>Version</center></td><td style='background-color:silver;color:white'><center>Created By</center></td><td style='background-color:silver;color:white'><center>Created Date</center></td><td style='background-color:silver;color:white'><center>Modified By</center></td><td style='background-color:silver;color:white'><center>Modified Date</center></td><td style='background-color:silver;color:white'><center>Languages</center></td><td style='background-color:silver;color:white'><center>Work-Flow State</center></td></tr><tbody>",
                                        Controls);

                                    HelperControls.CreateLitertal(
                                        "<tr><td><center>" + webItem.Version.Number +
                                        "</center></td><td><center>" +
                                        webItem.Fields[FieldIDs.CreatedBy].Value + "</center></td><td><center>" +
                                        (outValCreate == DateTime.MinValue
                                            ? string.Empty
                                            : outValCreate.ToString("dd MMM yyyy HH:mm")) + "</center></td><td><center>" +
                                        webItem.Fields[FieldIDs.UpdatedBy].Value + "</td><td><center>" +
                                        (outValModify == DateTime.MinValue
                                            ? string.Empty
                                            : outValModify.ToString("dd MMM yyyy HH:mm")) + "</center>" +
                                        "</td><td><center>" +
                                        string.Join(",", webItem.Languages.Where(p => webItem.Database.GetItem(webItem.ID, p) != null && webItem.Database.GetItem(webItem.ID, p).Versions.Count > 0).Select(p => p.Name).ToArray())
                                        + "</center></td><td><center>" +
                                        workFlowName + "</center></td></tr>",
                                        Controls);
                                }
                                else
                                {
                                    HelperControls.CreateLitertal("<br />", Controls);
                                    HelperControls.CreateLitertal(
                                        "<table width='100%'><tr><td style='background-color:silver;color:white'><center>Item Details on " +
                                        target[TARGETDATABASE] +
                                        "</center></td></tr><tbody>",
                                        Controls);
                                    HelperControls.CreateLitertal(
                                        "<tr><td style='text-align:center;' >No Item Found" +
                                        (!string.IsNullOrEmpty(errMessage)
                                            ? " ( <span style='color:red;'>" + errMessage + "</span>)"
                                            : string.Empty) + "</td></tr>",
                                        Controls);
                                }
                            }
                            catch (Exception ex)
                            {
                                Log.Error(ex.Message, ex, this);
                            }
                            finally
                            {
                                HelperControls.CreateLitertal("</tbody></table>", Controls);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Log.Error(ex.Message, ex, this);
                }
            }
        }
Пример #14
0
        /// <summary>
        /// Обработчик cобытия двойного нажатия на TaskItem.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private void TaskItem_OnDoubleClick(object sender, EventArgs args)
        {
            TaskItem clickedTaskItem = HelperControls.GetParenByType <TaskItem>(sender as Control);

            this.EditTaskItemData();
        }
Пример #15
0
 private void Ui_postList_OnListEndDetectedEvent(object sender, HelperControls.OnListEndDetected e)
 {
     // Suppress more event until we get more items.
     ui_postList.SuppressEndOfListEvent = true;
     m_collector.ExtendCollection();
 }
Пример #16
0
 /// <summary>
 /// Fired when a user taps the markdown helper
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void RedditMarkdownVisualHelper_OnHelperTapped(object sender, HelperControls.OnHelperTappedArgs e)
 {
     // Do the edit.
     RedditMarkdownVisualHelper.DoEdit(ui_postTitleTextBox, e.Type);
 }
Пример #17
0
        /// <summary>
        /// Fired when the list is scrolled down a ways.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CommentList_OnListEndDetectedEvent(object sender, HelperControls.OnListEndDetected e)
        {
            if (m_user == null)
            {
                return;
            }

            EnsureCommentCollector();

            // Request a extension.
            m_commentCollector.ExtendCollection();
        }