+++ /dev/null
-/*\r
- * Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.\r
- * For licensing, see LICENSE.html or http://ckeditor.com/license\r
- */\r
-\r
-(function()\r
-{\r
- function getListElement( editor, listTag )\r
- {\r
- var range;\r
- try { range = editor.getSelection().getRanges()[ 0 ]; }\r
- catch( e ) { return null; }\r
-\r
- range.shrink( CKEDITOR.SHRINK_TEXT );\r
- return range.getCommonAncestor().getAscendant( listTag, 1 );\r
- }\r
-\r
- var listItem = function( node ) { return node.type == CKEDITOR.NODE_ELEMENT && node.is( 'li' ); };\r
-\r
- var mapListStyle = {\r
- 'a' : 'lower-alpha',\r
- 'A' : 'upper-alpha',\r
- 'i' : 'lower-roman',\r
- 'I' : 'upper-roman',\r
- '1' : 'decimal',\r
- 'disc' : 'disc',\r
- 'circle': 'circle',\r
- 'square' : 'square'\r
- };\r
-\r
- function listStyle( editor, startupPage )\r
- {\r
- var lang = editor.lang.list;\r
- if ( startupPage == 'bulletedListStyle' )\r
- {\r
- return {\r
- title : lang.bulletedTitle,\r
- minWidth : 300,\r
- minHeight : 50,\r
- contents :\r
- [\r
- {\r
- id : 'info',\r
- accessKey : 'I',\r
- elements :\r
- [\r
- {\r
- type : 'select',\r
- label : lang.type,\r
- id : 'type',\r
- align : 'center',\r
- style : 'width:150px',\r
- items :\r
- [\r
- [ lang.notset, '' ],\r
- [ lang.circle, 'circle' ],\r
- [ lang.disc, 'disc' ],\r
- [ lang.square, 'square' ]\r
- ],\r
- setup : function( element )\r
- {\r
- var value = element.getStyle( 'list-style-type' )\r
- || mapListStyle[ element.getAttribute( 'type' ) ]\r
- || element.getAttribute( 'type' )\r
- || '';\r
-\r
- this.setValue( value );\r
- },\r
- commit : function( element )\r
- {\r
- var value = this.getValue();\r
- if ( value )\r
- element.setStyle( 'list-style-type', value );\r
- else\r
- element.removeStyle( 'list-style-type' );\r
- }\r
- }\r
- ]\r
- }\r
- ],\r
- onShow: function()\r
- {\r
- var editor = this.getParentEditor(),\r
- element = getListElement( editor, 'ul' );\r
-\r
- element && this.setupContent( element );\r
- },\r
- onOk: function()\r
- {\r
- var editor = this.getParentEditor(),\r
- element = getListElement( editor, 'ul' );\r
-\r
- element && this.commitContent( element );\r
- }\r
- };\r
- }\r
- else if ( startupPage == 'numberedListStyle' )\r
- {\r
-\r
- var listStyleOptions =\r
- [\r
- [ lang.notset, '' ],\r
- [ lang.lowerRoman, 'lower-roman' ],\r
- [ lang.upperRoman, 'upper-roman' ],\r
- [ lang.lowerAlpha, 'lower-alpha' ],\r
- [ lang.upperAlpha, 'upper-alpha' ],\r
- [ lang.decimal, 'decimal' ]\r
- ];\r
-\r
- if ( !CKEDITOR.env.ie || CKEDITOR.env.version > 7 )\r
- {\r
- listStyleOptions.concat( [\r
- [ lang.armenian, 'armenian' ],\r
- [ lang.decimalLeadingZero, 'decimal-leading-zero' ],\r
- [ lang.georgian, 'georgian' ],\r
- [ lang.lowerGreek, 'lower-greek' ]\r
- ]);\r
- }\r
-\r
- return {\r
- title : lang.numberedTitle,\r
- minWidth : 300,\r
- minHeight : 50,\r
- contents :\r
- [\r
- {\r
- id : 'info',\r
- accessKey : 'I',\r
- elements :\r
- [\r
- {\r
- type : 'hbox',\r
- widths : [ '25%', '75%' ],\r
- children :\r
- [\r
- {\r
- label : lang.start,\r
- type : 'text',\r
- id : 'start',\r
- validate : CKEDITOR.dialog.validate.integer( lang.validateStartNumber ),\r
- setup : function( element )\r
- {\r
- // List item start number dominates.\r
- var value = element.getFirst( listItem ).getAttribute( 'value' ) || element.getAttribute( 'start' ) || 1;\r
- value && this.setValue( value );\r
- },\r
- commit : function( element )\r
- {\r
- var firstItem = element.getFirst( listItem );\r
- var oldStart = firstItem.getAttribute( 'value' ) || element.getAttribute( 'start' ) || 1;\r
-\r
- // Force start number on list root.\r
- element.getFirst( listItem ).removeAttribute( 'value' );\r
- var val = parseInt( this.getValue(), 10 );\r
- if ( isNaN( val ) )\r
- element.removeAttribute( 'start' );\r
- else\r
- element.setAttribute( 'start', val );\r
-\r
- // Update consequent list item numbering.\r
- var nextItem = firstItem, conseq = oldStart, startNumber = isNaN( val ) ? 1 : val;\r
- while ( ( nextItem = nextItem.getNext( listItem ) ) && conseq++ )\r
- {\r
- if ( nextItem.getAttribute( 'value' ) == conseq )\r
- nextItem.setAttribute( 'value', startNumber + conseq - oldStart );\r
- }\r
- }\r
- },\r
- {\r
- type : 'select',\r
- label : lang.type,\r
- id : 'type',\r
- style : 'width: 100%;',\r
- items : listStyleOptions,\r
- setup : function( element )\r
- {\r
- var value = element.getStyle( 'list-style-type' )\r
- || mapListStyle[ element.getAttribute( 'type' ) ]\r
- || element.getAttribute( 'type' )\r
- || '';\r
-\r
- this.setValue( value );\r
- },\r
- commit : function( element )\r
- {\r
- var value = this.getValue();\r
- if ( value )\r
- element.setStyle( 'list-style-type', value );\r
- else\r
- element.removeStyle( 'list-style-type' );\r
- }\r
- }\r
- ]\r
- }\r
- ]\r
- }\r
- ],\r
- onShow: function()\r
- {\r
- var editor = this.getParentEditor(),\r
- element = getListElement( editor, 'ol' );\r
-\r
- element && this.setupContent( element );\r
- },\r
- onOk: function()\r
- {\r
- var editor = this.getParentEditor(),\r
- element = getListElement( editor, 'ol' );\r
-\r
- element && this.commitContent( element );\r
- }\r
- };\r
- }\r
- }\r
-\r
- CKEDITOR.dialog.add( 'numberedListStyle', function( editor )\r
- {\r
- return listStyle( editor, 'numberedListStyle' );\r
- });\r
-\r
- CKEDITOR.dialog.add( 'bulletedListStyle', function( editor )\r
- {\r
- return listStyle( editor, 'bulletedListStyle' );\r
- });\r
-})();\r