/// <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(); } } }
/// <summary> /// Select all of the text in the region. /// </summary> protected void SelectAll() { MarkupRange selectRange = ElementRange.Clone(); selectRange.MoveToElement(HTMLElement, false); selectRange.ToTextRange().select(); }
/// <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); }
/// <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(); } }
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); }
/// <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); }
/// <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); }
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); }
public void PutElementRangeByID([FromBody] ElementRange elementRange) { ElementRangeBLL elementRangeBLL = new ElementRangeBLL(); elementRangeBLL.PutElementRangeByID(elementRange); }
public void CreateElementRange([FromBody] ElementRange elementRange) { ElementRangeBLL elementRangeBLL = new ElementRangeBLL(); elementRangeBLL.CreateElementRange(elementRange); }