for ( var i = 0, count = listNode.getChildCount(); i < count; i++ ) {\r
var listItem = listNode.getChild( i );\r
\r
- // Fixing malformed nested lists by moving it into a previous list item. (#6236)\r
+ // Fixing malformed nested lists by moving it into a previous list item. (http://dev.ckeditor.com/ticket/6236)\r
if ( listItem.type == CKEDITOR.NODE_ELEMENT && listItem.getName() in CKEDITOR.dtd.$list )\r
CKEDITOR.plugins.list.listToArray( listItem, database, baseArray, baseIndentLevel + 1 );\r
\r
currentListItem.append( item.contents[ i ].clone( 1, 1 ) );\r
currentIndex++;\r
} else if ( item.indent == Math.max( indentLevel, 0 ) + 1 ) {\r
- // Maintain original direction (#6861).\r
+ // Maintain original direction (http://dev.ckeditor.com/ticket/6861).\r
var currDir = listArray[ currentIndex - 1 ].element.getDirection( 1 ),\r
listData = CKEDITOR.plugins.list.arrayToList( listArray, null, currentIndex, paragraphMode, currDir != orgDir ? orgDir : null );\r
\r
// If the next block is an <li> with another list tree as the first\r
// child, we'll need to append a filler (<br>/NBSP) or the list item\r
- // wouldn't be editable. (#6724)\r
+ // wouldn't be editable. (http://dev.ckeditor.com/ticket/6724)\r
if ( !currentListItem.getChildCount() && CKEDITOR.env.needsNbspFiller && doc.$.documentMode <= 7 )\r
currentListItem.append( doc.createText( '\xa0' ) );\r
currentListItem.append( listData.listNode );\r
contentBlock.appendTo( listItem );\r
else {\r
contentBlock.copyAttributes( listItem );\r
- // Remove direction attribute after it was merged into list root. (#7657)\r
+ // Remove direction attribute after it was merged into list root. (http://dev.ckeditor.com/ticket/7657)\r
if ( listDir && contentBlock.getDirection() ) {\r
listItem.removeStyle( 'direction' );\r
listItem.removeAttribute( 'dir' );\r
\r
var newList = CKEDITOR.plugins.list.arrayToList( listArray, database, null, editor.config.enterMode, groupObj.root.getAttribute( 'dir' ) );\r
\r
- // Compensate <br> before/after the list node if the surrounds are non-blocks.(#3836)\r
+ // Compensate <br> before/after the list node if the surrounds are non-blocks.(http://dev.ckeditor.com/ticket/3836)\r
var docFragment = newList.listNode,\r
boundaryNode, siblingNode;\r
\r
// Checks wheather this block should be element preserved (not transformed to <li>) when creating list.\r
function shouldPreserveBlock( block ) {\r
return (\r
- // #5335\r
+ // http://dev.ckeditor.com/ticket/5335\r
block.is( 'pre' ) ||\r
- // #5271 - this is a header.\r
+ // http://dev.ckeditor.com/ticket/5271 - this is a header.\r
headerTagRegex.test( block.getName() ) ||\r
// 11083 - this is a non-editable element.\r
block.getAttribute( 'contenteditable' ) == 'false'\r
\r
var elementType = CKEDITOR.dom.walker.nodeType( CKEDITOR.NODE_ELEMENT );\r
\r
- // Merge child nodes with direction preserved. (#7448)\r
+ // Merge child nodes with direction preserved. (http://dev.ckeditor.com/ticket/7448)\r
function mergeChildren( from, into, refNode, forward ) {\r
var child, itemDir;\r
while ( ( child = from[ forward ? 'getLast' : 'getFirst' ]( elementType ) ) ) {\r
selection.selectRanges( ranges );\r
}\r
// Maybe a single range there enclosing the whole list,\r
- // turn on the list state manually(#4129).\r
+ // turn on the list state manually(http://dev.ckeditor.com/ticket/4129).\r
else {\r
var range = ranges.length == 1 && ranges[ 0 ],\r
enclosedNode = range && range.getEnclosedNode();\r
\r
// First, try to group by a list ancestor.\r
for ( var i = pathElementsCount - 1; i >= 0 && ( element = pathElements[ i ] ); i-- ) {\r
- // Don't leak outside block limit (#3940).\r
+ // Don't leak outside block limit (http://dev.ckeditor.com/ticket/3940).\r
if ( listNodeNames[ element.getName() ] && blockLimit.contains( element ) ) {\r
// If we've encountered a list inside a block limit\r
// The last group object of the block limit element should\r
// no longer be valid. Since paragraphs after the list\r
// should belong to a different group of paragraphs before\r
- // the list. (Bug #1309)\r
+ // the list. (Bug http://dev.ckeditor.com/ticket/1309)\r
blockLimit.removeCustomData( 'list_group_object_' + index );\r
\r
var groupObj = element.getCustomData( 'list_group_object' );\r
function mergeSibling( rtl ) {\r
var sibling = listNode[ rtl ? 'getPrevious' : 'getNext' ]( nonEmpty );\r
if ( sibling && sibling.type == CKEDITOR.NODE_ELEMENT && sibling.is( listNode.getName() ) ) {\r
- // Move children order by merge direction.(#3820)\r
+ // Move children order by merge direction.(http://dev.ckeditor.com/ticket/3820)\r
mergeChildren( listNode, sibling, null, !rtl );\r
\r
listNode.remove();\r
nextPath = nextCursor.startPath();\r
nextBlock = nextPath.block;\r
\r
- // Abort when nothing to be removed (#10890).\r
+ // Abort when nothing to be removed (http://dev.ckeditor.com/ticket/10890).\r
if ( !nextBlock )\r
break;\r
\r
nextBlock.remove();\r
}\r
\r
- // Check if need to further merge with the list resides after the merged block. (#9080)\r
+ // Check if need to further merge with the list resides after the merged block. (http://dev.ckeditor.com/ticket/9080)\r
var walkerRng = nextCursor.clone(), editable = editor.editable();\r
walkerRng.setEndAt( editable, CKEDITOR.POSITION_BEFORE_END );\r
var walker = new CKEDITOR.dom.walker( walkerRng );\r
\r
CKEDITOR.plugins.add( 'list', {\r
// jscs:disable maximumLineLength\r
- lang: 'af,ar,az,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,oc,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE%\r
+ lang: 'af,ar,az,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,es-mx,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,oc,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE%\r
// jscs:enable maximumLineLength\r
icons: 'bulletedlist,bulletedlist-rtl,numberedlist,numberedlist-rtl', // %REMOVE_LINE_CORE%\r
hidpi: true, // %REMOVE_LINE_CORE%\r
} );\r
}\r
\r
- // Handled backspace/del key to join list items. (#8248,#9080)\r
+ // Handled backspace/del key to join list items. (http://dev.ckeditor.com/ticket/8248,http://dev.ckeditor.com/ticket/9080)\r
editor.on( 'key', function( evt ) {\r
// Use getKey directly in order to ignore modifiers.\r
// Justification: http://dev.ckeditor.com/ticket/11861#comment:13\r
// Place cursor at the end of previous block.\r
cursor.moveToElementEditEnd( joinWith );\r
\r
- // And then just before end of closest block element (#12729).\r
+ // And then just before end of closest block element (http://dev.ckeditor.com/ticket/12729).\r
cursor.moveToPosition( cursor.endPath().block, CKEDITOR.POSITION_BEFORE_END );\r
}\r
}\r
}\r
else {\r
var list = path.contains( listNodeNames );\r
- // Backspace pressed at the start of list outdents the first list item. (#9129)\r
+ // Backspace pressed at the start of list outdents the first list item. (http://dev.ckeditor.com/ticket/9129)\r
if ( list && range.checkBoundaryOfElement( list, CKEDITOR.START ) ) {\r
li = list.getFirst( nonEmpty );\r
\r
nextLine = range.clone();\r
nextLine.moveToElementEditStart( next );\r
\r
- // #13409\r
+ // http://dev.ckeditor.com/ticket/13409\r
// For the following case and similar\r
//\r
// <ul>\r
}\r
}\r
\r
- // Moving `cursor` and `next line` only when at the end literally (#12729).\r
+ // Moving `cursor` and `next line` only when at the end literally (http://dev.ckeditor.com/ticket/12729).\r
if ( isAtEnd == 2 ) {\r
cursor.moveToPosition( cursor.endPath().block, CKEDITOR.POSITION_BEFORE_END );\r
\r