Вход Регистрация
Файл: public/js/3rd_party/ckeditor/plugins/ipsbbcode/dialogs/ipsbbcode.js
Строк: 281
<?php

/*
Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*
* This plug in by:
* Matt Mecham 2011
* Invision Power Services, Inc.
*/

(function()
{
    var 
ipsBbCodeDialog = function( editor, initVal )
    {
        var 
fetchDdContents = function()
        {
            
arr = [];
            
arr[0] = [ ipb.lang['ckeditor__pselectbbcode'], 'nill' ];
                                
            
$H(editor.config.IPS_BBCODE).each( function( tag )
            {
                
k = tag.key;
                
v = tag.value;
                
                
arr[ arr.length ] = [ v.title, v.tag ];
            } );
            
            return 
arr;
        };
            
        var 
fetchTagData = function( tag )
        {
            return ( 
editor.config.IPS_BBCODE[tag] ) ? editor.config.IPS_BBCODE[tag] : [];
        }
        
        var 
resetIt = function()
        {
            var 
dialog    = editor.config._dialog; /* When you're hacky and you know it */
            
var option    = dialog.getContentElement( 'info', 'option' ).getElement();
            var 
content   = dialog.getContentElement( 'info', 'content' ).getElement();
            var 
select    = dialog.getContentElement( 'info', 'bbcodeTag' ).getElement();
            
            
option.hide();
            
content.hide();
            
            $(
'bbcode-description').hide();
        };
        
        
// Handles the event when the "Type" selection box is changed.
        
var bbCodeChanged = function()
        {
            var 
dialog    = this.getDialog(),
                
typeValue = this.getValue();
            
            
editor.config._dialog = dialog;
            
            var 
tagData   = fetchTagData( typeValue );
            var 
option    = dialog.getContentElement( 'info', 'option' ).getElement();
            var 
content   = dialog.getContentElement( 'info', 'content' ).getElement();

            
option.hide();
            
content.hide();
            $(
'bbcode-description').hide();
                
            if ( 
typeValue != 'nill' && tagData.tag )
            {
                $(
'bbcode-description').update( tagData.desc ).show();

                
/* Show contents */
                
if ( parseInt( tagData.useoption ) == 1 )
                {
                    
oid = option.getAttribute('id');
                    
option.show();
                    $(
oid).down('label').update( tagData.menu_option_text ? tagData.menu_option_text : ipb.lang['ckeditor__genoption'] );
                }
                
                
/* Show value */
                
if( parseInt( tagData.single_tag ) == 0 )
                {
                    
cid = content.getAttribute('id');
                    
content.show();
                    $(
cid).down('label').update( tagData.menu_content_text ? tagData.menu_content_text : ipb.lang['ckeditor__gencontent'] );
                    
                    var 
html = IPSCKTools.getSelectionHtml( editor );
                    
                    if ( 
html != '' && ! Object.isUndefined( $(cid).down('textarea') ) )
                    {
                        $(
cid).down('textarea').value = html;
                        $(
cid).down('textarea').hide();
                        
                        if ( ! $(
'__x_insert') )
                        {
                            $(
cid).down('textarea').up('div').insert( new Element( 'div', { id: '__x_insert' } ) );
                        }
                        
                         $(
'__x_insert').update( html );
                    }
                    else
                    {
                        
                        if ( $(
'__x_insert') )
                        {
                            $(
'__x_insert').update('');
                            $(
cid).down('textarea').value = '';
                            $(
cid).down('textarea').show();
                        }
                    }
                }
            }
        };
    
        return {
            
title : ipb.lang['ckeditor__bbcode'],
            
minWidth : 350,
            
minHeight : 140,
            
onShow : function()
            {
                var 
element = this.getParentEditor().getSelection().getSelectedElement();
            },
            
onOk : function()
            {
                var 
editor    = this.getParentEditor();
                
                
element = editor.document.createElement( 'span' );
                
element.setAttribute( 'name', 'bbcodename' );
                
                
this.commitContent( { element : element } );
                
                
tag            = element.getAttribute('cke-saved-bbcode-tag');
                
option        = element.getAttribute('cke-saved-bbcode-option');
                
ourcontent    = element.getAttribute('cke-saved-bbcode-content');
                
                if( 
ourcontent == 'false' )
                {
                    
ourcontent = '';
                }
                
                if( 
option == 'false' )
                {
                    
option = '';
                }

                var 
tagData = fetchTagData( tag );
                
                if ( 
ourcontent.match( /n|r/ ) )
                {
                    
Debug.write('moo');
                    
ourcontent = ourcontent.replace( /n|r/g, '<br>' );
                }
                
                if ( 
tagData.tag )
                {
                    if( 
parseInt( tagData.single_tag ) == 1 )
                    {
                        if ( 
parseInt( tagData.useoption ) == 1 )
                        {
                            
mytag = '[' + tag + '='' + option + '']';
                        }
                        else
                        {
                            
mytag = '[' + tag + ']';
                        }
                    }
                    else if ( 
parseInt( tagData.useoption ) == 1 )
                    {
                        if ( 
tagData.optional_option == 1 && option == '' )
                        {
                            
mytag = '[' + tag + ']' + ourcontent + '[/' + tag + ']';
                        }
                        else
                        {
                            
mytag = '[' + tag + '='' + option + '']' + ourcontent + '[/' + tag + ']';
                        }
                    }
                    else
                    {
                        
mytag = '[' + tag + ']' + ourcontent + '[/' + tag + ']';
                    }
                    
                    
// Insert HTML
                    
editor.insertHtml( mytag );
                    
                    
resetIt();
                }
                
            },
            
contents : [
                {
                    
id : 'info',
                    
label : ipb.lang['ckeditor__bbcodelabel'],
                    
title : ipb.lang['ckeditor__bbcodelabel'],
                    
elements : [
                        {
                            
id : 'bbcodeTag',
                            
type : 'select',
                            
label : ipb.lang['ckeditor__bbcodelabel'],
                            
items : fetchDdContents(),
                            
'default': ( typeof( initVal ) != 'undefined' && initVal != '' ) ? initVal : 'nill',
                            
onLoad: bbCodeChanged,
                            
onChange : bbCodeChanged,
                            
commit : function( data )
                            {
                                var 
element = data.element;
    
                                if ( 
this.getValue() )
                                    
element.setAttribute( 'cke-saved-bbcode-tag', this.getValue() );
                                else
                                {
                                    
element.setAttribute( 'cke-saved-bbcode-tag', false );
                                }
                            }
                        },
                        {
                            
id : 'codedescription',
                            
type : 'html',
                            
html: '<div id="bbcode-description"></div>'
                        
},
                        {
                            
id : 'option',
                            
type : 'text',
                            
label : ipb.lang['ckeditor__genoption'],
                            
hidden: 1,
                            
'default' : '',
                            
accessKey : 'N',
                            
setup : function( element )
                            {
                            },
                            
commit : function( data )
                            {
                                var 
element = data.element;
    
                                if ( 
this.getValue() )
                                    
element.setAttribute( 'cke-saved-bbcode-option', this.getValue() );
                                else
                                {
                                    
element.setAttribute( 'cke-saved-bbcode-option', false );
                                }
                            }
                        },
                        {
                            
id : 'content',
                            
type : 'textarea',
                            
label : ipb.lang['ckeditor__gencontent'],
                            
'default' : '',
                            
hidden: 1,
                            
accessKey : 'O',
                            
setup : function( data )
                            {
                            },
                            
commit : function( data )
                            {
                                var 
element = data.element;
    
                                if ( 
this.getValue() )
                                    
element.setAttribute( 'cke-saved-bbcode-content', this.getValue() );
                                else
                                {
                                    
element.setAttribute( 'cke-saved-bbcode-content', false );
                                }
                                
                                
this.value = '';
                            }
                        }
                    ]
                }
            ]
        };
    };
    
    
    
$H(CKEDITOR.config.IPS_BBCODE).each( function( tag )
    {
        
k = tag.key;
        
v = tag.value;

        if ( 
v.image && v.image != '' )
        {
            eval( 
"CKEDITOR.dialog.add( 'ipsbbcode_" + v.tag + "', function( editor ) { return ipsBbCodeDialog( editor, '" + v.tag + "' ); } );" );
        }
    } );
        
    
CKEDITOR.dialog.add( 'ipsbbcode', function( editor )
    {
        return 
ipsBbCodeDialog( editor, '' );
        
    } );
    
} )();
?>
Онлайн: 2
Реклама