/// <summary>
        /// Inserts the extended entry break into the editor.
        /// </summary>
        internal void InsertExtendedEntryBreak()
        {
            IHTMLDocument3 doc3       = (IHTMLDocument3)HTMLElement.document;
            IHTMLElement2  entryBreak = (IHTMLElement2)doc3.getElementById(EXTENDED_ENTRY_ID);

            if (entryBreak == null)
            {
                using (IUndoUnit undo = EditorContext.CreateUndoUnit())
                {
                    using (EditorContext.DamageServices.CreateDamageTracker(ElementRange.Clone(), true))
                    {
                        MarkupPointer insertionPoint =
                            EditorContext.MarkupServices.CreateMarkupPointer(EditorContext.Selection.SelectedMarkupRange.Start);

                        //delete the parent block element of the insertion point if it is empty (bug 421500)
                        DeleteInsertionTargetBlockIfEmpty(insertionPoint);

                        IHTMLElement extendedEntryBreak = InsertExtendedEntryBreak(insertionPoint);

                        //reselect the insertion point
                        MarkupRange selection = EditorContext.MarkupServices.CreateMarkupRange();
                        insertionPoint.MoveAdjacentToElement(extendedEntryBreak, _ELEMENT_ADJACENCY.ELEM_ADJ_AfterEnd);
                        MarkupPointerMoveHelper.MoveUnitBounded(
                            insertionPoint, MarkupPointerMoveHelper.MoveDirection.RIGHT,
                            MarkupPointerAdjacency.AfterEnterBlock | MarkupPointerAdjacency.BeforeText
                            , HTMLElement);
                        selection.Start.MoveToPointer(insertionPoint);
                        selection.End.MoveToPointer(insertionPoint);
                        selection.ToTextRange().select();
                    }
                    undo.Commit();
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Select all of the text in the region.
        /// </summary>
        protected void SelectAll()
        {
            MarkupRange selectRange = ElementRange.Clone();

            selectRange.MoveToElement(HTMLElement, false);
            selectRange.ToTextRange().select();
        }
Exemplo n.º 3
0
        /// <summary>
        /// 根据ID修改文本值域选项
        /// </summary>
        /// <param name="elementRange">文本值域选项对象</param>
        /// <param name="dt">最后修改时间</param>
        public void PutElementRangeByID(ElementRange elementRange)
        {
            ///获取当前时间
            DateTime        dt = NewData.NewDate();
            ElementRangeDAL elementRangeDAL = new ElementRangeDAL();

            elementRangeDAL.PutElementRangeByID(elementRange, dt);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 新增文本值域选项
        /// </summary>
        /// <param name="elementRange">文本值域选项对象</param>
        /// <param name="dt">最后修改时间</param>
        /// <param name="nid">新GUID</param>
        public void CreateElementRange(ElementRange elementRange)
        {
            ///获取当前时间
            DateTime dt = NewData.NewDate();
            //获取新的GUID
            string          nid             = NewData.NewGuid();
            ElementRangeDAL elementRangeDAL = new ElementRangeDAL();

            elementRangeDAL.CreateElementRange(elementRange, dt, nid);
        }
 /// <summary>
 /// Prepare the HTML selection to deal with keyboard navigation events.
 /// </summary>
 /// <param name="direction"></param>
 /// <param name="selectBlock"></param>
 private void PrepareForKeyboardNavigation(MarkupDirection direction, bool selectBlock)
 {
     if (direction == MarkupDirection.Left && selectBlock)
     {
         //HACK: make shift+Left keep the div selected by putting the selection at the
         //right-side of the div before the key event is handled.
         MarkupPointer caretPointer = EditorContext.MarkupServices.CreateMarkupPointer(HTMLElement, _ELEMENT_ADJACENCY.ELEM_ADJ_AfterEnd);
         EditorContext.MarkupServices.CreateMarkupRange(caretPointer, caretPointer).ToTextRange().select();
     }
     else
     {
         ElementRange.ToTextRange().select();
     }
 }
Exemplo n.º 6
0
 private IHTMLElement GetResizeTargetElement(string id)
 {
     if (_contentSource.ResizeCapabilities != ResizeCapabilities.None)
     {
         if (id != null)
         {
             IHTMLElement[] elements = ElementRange.GetElements(ElementFilters.CreateIdFilter(id), true);
             if (elements.Length > 0)
             {
                 return(elements[0]);
             }
         }
     }
     return(HTMLElement);
 }
Exemplo n.º 7
0
        /// <summary>
        /// 根据ID修改文本值域选项
        /// </summary>
        /// <param name="elementRange">ElementClassify对象</param>
        /// <param name="dt">最后修改时间</param>
        public void PutElementRangeByID(ElementRange elementRange, DateTime dt)
        {
            OracleDataAccess oracleDataAccess = new OracleDataAccess(SiteConfig.OracleConn);
            string           sql = @"update 文本选项值域  set  选项名称=:选项名称,
                                                 备注=:备注,
                                                 最后修改人=:最后修改人,
                                                 最后修改时间=:最后修改时间,
                                                 要素ID=:要素ID
                                             where 选项值域ID=:选项值域ID";

            OracleParameter[] oracleParameters =
            {
                new OracleParameter(":选项名称",   OracleDbType.Varchar2, elementRange.Name == null?"":elementRange.Name, ParameterDirection.Input),
                new OracleParameter(":备注",     OracleDbType.Varchar2, elementRange.Note,                              ParameterDirection.Input),
                new OracleParameter(":最后修改人",  OracleDbType.Varchar2, elementRange.LastModify,                        ParameterDirection.Input),
                new OracleParameter(":最后修改时间", OracleDbType.Date,     dt,                                             ParameterDirection.Input),
                new OracleParameter(":要素ID",   OracleDbType.Varchar2, elementRange.EID,                               ParameterDirection.Input),
                new OracleParameter(":选项值域ID", OracleDbType.Varchar2, elementRange.ID,                                ParameterDirection.Input),
            };
            oracleDataAccess.ExecuteNonQuery(sql, System.Data.CommandType.Text, oracleParameters);
        }
Exemplo n.º 8
0
        /// <summary>
        /// 新增文本值域选项
        /// </summary>
        /// <param name="elementRange">ElementRange对象</param>
        /// <param name="dt">最后修改时间</param>
        /// <param name="nid">新GUID</param>
        public void CreateElementRange(ElementRange elementRange, DateTime dt, string nid)
        {
            OracleDataAccess oracleDataAccess = new OracleDataAccess(SiteConfig.OracleConn);
            string           sql = @"insert into 文本选项值域( 选项值域ID,
                                                     选项名称,
                                                     备注,
                                                     最后修改人,
                                                     最后修改时间,
                                                     要素ID
                                                ) 
                                        values(:选项值域ID,:选项名称,:备注,:最后修改人,:最后修改时间,:要素ID)";

            OracleParameter[] oracleParameters =
            {
                new OracleParameter(":选项值域ID", OracleDbType.Varchar2, nid,                                            ParameterDirection.Input),
                new OracleParameter(":选项名称",   OracleDbType.Varchar2, elementRange.Name == null?"":elementRange.Name, ParameterDirection.Input),
                new OracleParameter(":备注",     OracleDbType.Varchar2, elementRange.Note,                              ParameterDirection.Input),
                new OracleParameter(":最后修改人",  OracleDbType.Varchar2, elementRange.LastModify,                        ParameterDirection.Input),
                new OracleParameter(":最后修改时间", OracleDbType.Date,     dt,                                             ParameterDirection.Input),
                new OracleParameter(":要素ID",   OracleDbType.Varchar2, elementRange.EID,                               ParameterDirection.Input),
            };
            oracleDataAccess.ExecuteNonQuery(sql, System.Data.CommandType.Text, oracleParameters);
        }
Exemplo n.º 9
0
 protected override bool QueryElementSelected()
 {
     return(ElementRange.InRange(EditorContext.Selection.SelectedMarkupRange, false));
 }
        /// <summary>
        /// Returns true if shift+tab focused region changing is supported for the current edit location
        /// </summary>
        /// <returns></returns>
        private bool ShiftTabFocusChangeSupported()
        {
            //Shift-tab is only supported if the caret is positioned at the beginning of the post
            //If the selection is currently inside a non-blockquote block element with no visible content
            //to the left of it, then focus change is supported.

            if (!EditorContext.Selection.SelectedMarkupRange.IsEmpty())
            {
                return(false);
            }

            MarkupRange range = ElementRange.Clone();

            range.Start.MoveAdjacentToElement(HTMLElement, _ELEMENT_ADJACENCY.ELEM_ADJ_AfterBegin);
            range.End = EditorContext.Selection.SelectedMarkupRange.Start;

            //if there is any text between the caret and the beginning of the post,
            //then ShiftTab focus changing is not allowed.
            string text = range.Text;

            if (text != null && range.Text.Trim() != String.Empty)
            {
                return(false);
            }

            MarkupContext context = new MarkupContext();

            range.Start.Right(true, context);
            int blockElementDepth = 0;

            while (range.Start.IsLeftOfOrEqualTo(range.End))
            {
                if (context.Context == _MARKUP_CONTEXT_TYPE.CONTEXT_TYPE_EnterScope || context.Context == _MARKUP_CONTEXT_TYPE.CONTEXT_TYPE_NoScope)
                {
                    string tagName = context.Element.tagName;
                    if (tagName.Equals("BLOCKQUOTE") || ElementFilters.IsListElement(context.Element) || ElementFilters.IsListItemElement(context.Element))
                    {
                        return(false); //ShiftTab in a blockquote or list implies "un-blockquote" or "un-list"
                    }
                    else if (ElementFilters.IsBlockElement(context.Element))
                    {
                        blockElementDepth++;
                        if (blockElementDepth > 1)
                        {
                            return(false); //there are multiple block elements, so this is not the beginning
                        }
                    }
                    else if (ElementFilters.IsVisibleEmptyElement(context.Element))
                    {
                        return(false); //there is a visible empty element (like an image), so this is not the beginning
                    }
                }
                else if (context.Context == _MARKUP_CONTEXT_TYPE.CONTEXT_TYPE_ExitScope)
                {
                    if (ElementFilters.IsVisibleEmptyElement(context.Element))
                    {
                        return(false); //there is a visible empty element (like an image), so this is not the beginning
                    }
                }
                range.Start.Right(true, context);
            }

            return(true);
        }
Exemplo n.º 11
0
        public void PutElementRangeByID([FromBody] ElementRange elementRange)
        {
            ElementRangeBLL elementRangeBLL = new ElementRangeBLL();

            elementRangeBLL.PutElementRangeByID(elementRange);
        }
Exemplo n.º 12
0
        public void CreateElementRange([FromBody] ElementRange elementRange)
        {
            ElementRangeBLL elementRangeBLL = new ElementRangeBLL();

            elementRangeBLL.CreateElementRange(elementRange);
        }