Вход Регистрация
Файл: upload/static/jscript/editor.js
Строк: 308
<?php
/* jQuery plugin: PutCursorAtEnd 1.0
    http://plugins.jquery.com/project/PutCursorAtEnd
    by teedyay

    Puts the cursor at the end of a textbox/ textarea
    codesnippet: 691e18b1-f4f9-41b4-8fe8-bc8ee51b48d4
*/
$Behavior.putCursorAtEnd = function()
{
    
jQuery.fn.putCursorAtEnd = function()
    {
        return 
this.each(function()
        {
            $(
this).focus()
            
/* If this function exists...*/
            
if (this.setSelectionRange)
            {
                
/* ... then use it
                    (Doesn't work in IE)
                    Double the length because Opera is inconsistent about whether a carriage return is one character or two. Sigh.*/
                
var len = $(this).val().length 2;
                
this.setSelectionRange(lenlen);
            }
            else
            {
                
/* ... otherwise replace the contents with itself
                   (Doesn't work in Google Chrome)*/
                
$(this).val($(this).val());
            }
            
/* Scroll to the bottom, in case we're in a tall textarea
               (Necessary for Firefox and Google Chrome)*/
            
this.scrollTop 999999;
        });
    };
}

if (
typeof(oEditor) == 'undefined')
{
    
debug('oEditor not defined.');
}

var 
bAllowEditor true;
if (
oEditor['wysiwyg'] === false)
{
    
bAllowEditor false;    
}

var 
Editor 
{
    
sVersion'1.0',
    
    
sEditorId'text',
    
    
sImagePathgetParam('sJsStaticImage') + 'editor/',
    
    
sEditorgetParam('sEditor'),
    
    
aEditors: new Array(),
    
    
setId: function(sId)
    {
        
this.sEditorId sId;    
        
        
this.aEditors[sId] = true;
        
        return 
this;
    },
    
    
getId: function()
    {
        return 
this.sEditorId;
    },
    
    
getEditors: function()
    {
        for (
sEditor in this.aEditors)
        {
            
this.sEditorId sEditor;
            
this.getEditor();
        }
    },
    
    
fullScreen: function(sEditorId)
    {
        
tb_show(oTranslations['core.full_screen_editor'], '#?TB_inline=true&type=textarea&parent_id=' sEditorId);        
        
        return 
false;
    },
    
    
getEditor: function(bReturn)
    {
        var 
sHtml;        
        
        if (
this.sEditor == 'tinymce' && typeof(tinyMCE) == 'object' && tinyMCE.getInstanceById(this.sEditorId) == null)
        {
            
this.sEditor 'default';
        }
        
        if (!
bAllowEditor)
        {
            
this.sEditor 'default';
        }

        
sHtml '';    
/*
        if (!isset(oEditor['no_fullscreen']) && !getParam('bJsIsMobile'))
        {
            sHtml += '<div style="float:right;"><a href="#" onclick="return Editor.fullScreen('' + this.sEditorId + '');" class="editor_button">' + this.getImage(oEditor['toggle_image'], oEditor['toggle_phrase']) + '</a></div>';        
        }
*/
        
$(oEditor['images']).each(function($iKey$aValue)
        {
            if (isset(
$aValue[0]) && $aValue[0] == 'separator')
            {
                
sHtml += Editor.getSeparator();    
            }
            else
            {
                if (isset(
$aValue['command']))
                {
                    
sHtml += Editor.getBBCode($aValue['image'], $aValue['command'], $aValue['phrase']);
                }
                else
                {
                    
sHtml += '<div class="editor_button_holder">';
                    
sHtml += '<a href="#" class="editor_button" onclick="' + (isset($aValue['js']) ? $aValue['js'] : 'Editor.ajaxCall(this, '' + $aValue['ajax'] + '');') + ' return false;">' Editor.getImage($aValue['image'], $aValue['phrase']) + '</a>';
                    
sHtml += '<div class="editor_drop_holder"><div class="editor_drop_content"></div></div>';
                    
sHtml += '</div>';
                }
            }
        });        
    
        
/*
        if ((bAllowEditor || oEditor['toggle']) && getParam('bWysiwyg'))
        {
            sHtml += this.getSeparator();            
            sHtml += '<a href="#" class="editor_button" onclick="return Editor.toggle('' + this.sEditorId + '');"><img class="editor_button" src="' + this.sImagePath + 'toggle.gif" alt="' + getPhrase('core.toggle') + '" title="' + getPhrase('core.toggle') + '" id="editor_toggle" /></a>';
        }
        */
        
        
sHtml += '<div class="clear"></div>';
        
        if (
bReturn)
        {
            return 
sHtml;
        }

        $(
'#js_editor_menu_' this.getId()).html(sHtml);
        $(
'#js_editor_menu_' this.getId()).show();
        $(
'#editor_toggle').blur();

        return 
true;
    },
    
    
getList: function($sType)
    {
        var 
$sList = ($sType == 'bullet' 'ul' 'ol');
        
        
Editor.createBBtag("[" $sList "]""n[/" $sList "]n"this.sEditorId);
        
        
this.getListReply();
    },
    
    
getListReply: function()
    {
        var 
$sReply prompt('Enter text to build your list. Once you are done click cancel.''');
        
        if (!empty(
$sReply))
        {
            
Editor.createBBtag("n[*]"""this.sEditorId$sReply);
            
            
this.getListReply();
        }
    },
    
    
ajaxCall: function($oObject$sCall)
    {
        if (!empty($(
$oObject).parent().find('.editor_drop_content').html()))
        {
            $(
$oObject).parent().find('.editor_drop_holder').toggle();
            return;
        }
        
        var 
$sQuery '';
        
$sQuery getParam('sGlobalTokenName') + '[ajax]=true&' getParam('sGlobalTokenName') + '[call]=' $sCall '&editor_id=' this.getId();
        
        $.
ajax(
        {
            
type'GET',
            
dataType'html',
            
urlgetParam('sJsAjax'),
            
data$sQuery,
            
success: function($sOutput)
            {                            
                $(
$oObject).parent().find('.editor_drop_content').html($sOutput);
                $(
$oObject).parent().find('.editor_drop_holder').show();
            }
        });        
    },
    
    
getAttachments: function(sEditorId)
    {
        
tb_show('' getPhrase('attachment.attach_files') + '', $.ajaxBox('attachment.add''height=500&width=600&category_id=' Attachment['sCategory'] + '&attachments=' + $('#js_attachment').val() + '&item_id=' Attachment['iItemId'] + '&editor_id=' sEditorId));
        
        return 
false;
    },
    
    
promptUrl: function(sEditorId)
    {
        
tb_show('', $.ajaxBox('core.prompt''height=200&width=300&type=url&editor=' sEditorId));
        
        return 
false;
    },
    
    
promptImg: function(sEditorId)
    {
        
tb_show('', $.ajaxBox('core.prompt''height=200&width=300&type=img&editor=' sEditorId));

        return 
false;
    },    
    
    
toggle: function(sEditorId
    {
        if (
tinyMCE.getInstanceById(sEditorId) == null)
        {
            
this.sEditor 'tinymce';
            if (
oEditor['toggle'])
            {
                
customTinyMCE_init(sEditorId);
            }
            
tinyMCE.execCommand('mceAddControl'falsesEditorId);
            $(
'#js_editor_menu_' sEditorId).hide();
            
debug('Enabled WYSIWYG text editor');
            
deleteCookie('editor_wysiwyg');
        }
        else 
        {            
            
tinyMCE.execCommand('mceRemoveControl'falsesEditorId);
            if (
oEditor['toggle'])
            {
                $(
'#layer_text').html('<div id="layer_text"><textarea name="val[text]" rows="12" cols="50" class="w_95" id="text">' tinyMCE.activeEditor.getContent() + '</textarea></div>');                
            }
            
debug('Disabled WYSIWYG text editor');            
            
setCookie('editor_wysiwyg'true360);
            if ($(
'#js_editor_menu_' sEditorId).html() != '')
            {
                $(
'#js_editor_menu_' sEditorId).show();
                $(
'#editor_toggle').blur();
                return 
false;
            }

            
this.getEditor();
        }
        
        return 
false;
    },
    
    
getSeparator: function()
    {
        return 
'<div class="editor_separator"></div>';
    },
    
    
getBBCode: function(sNamesCodesTitle)
    {
        
sHtml '<div class="editor_button_holder">';
        
sHtml += '<a href="#" class="editor_button" onclick="return Editor.createBBtag('[' + sCode + ']', '[/' + sCode + ']', '' + this.sEditorId + '');">' this.getImage(sNamesTitle) + '</a>';
        
sHtml += '</div>';
        
        return 
sHtml;
    },
    
    
getImage: function(sNamesTitle)
    {
        return 
'<img class="editor_button" src="' sName '" alt="' sTitle '" title="' sTitle '" />';        
    },
    
    
setContent: function(mValue)
    {        
        eval(
'var sContent = ' this.sEditor '_wysiwyg_setContent(mValue);');        
    },    
    
    
getContent: function()
    {        
        eval(
'var sContent = ' this.sEditor '_wysiwyg_getContent();');
    
        return 
sContent;
    },
    
    
insert: function(mValue)
    {    
        eval(
this.sEditor '_wysiwyg_insert(mValue);');
        
        $(
'.editor_drop_holder').hide();
        
        return 
true;
    },
    
    
remove: function(mValue)
    {    
        eval(
this.sEditor '_wysiwyg_remove(mValue);');
        
        return 
true;
    },
    
    
createBBtag: function(openerTagcloserTagareaIdsEmptyValue
    {
        if(
bIsIE && bIsWin
        {
            
this.createBBtag_IEopenerTag closerTag areaIdsEmptyValue );
        }
        else 
        {
            
this.createBBtag_navopenerTag closerTag areaIdsEmptyValue );
        }
        
        $(
'#' areaId).putCursorAtEnd();
        return 
false;
    },
    
    
createBBtag_IE: function( openerTag closerTag areaIdsEmptyValue 
    {
        var 
txtArea document.getElementByIdareaId );
        var 
aSelection document.selection.createRange().text;
        var 
range txtArea.createTextRange();
    
        if(
aSelection
        {
            
document.selection.createRange().text openerTag aSelection closerTag;
            
txtArea.focus();
            
range.move('textedit');
            
range.select();
        }
        else 
        {
            if (!empty(
sEmptyValue))
            {
                
openerTag openerTag sEmptyValue;
            }            
            
            var 
oldStringLength range.text.length openerTag.length;
            
txtArea.value += openerTag closerTag;
            
txtArea.focus();
            
range.move('character',oldStringLength);
            
range.collapse(false);
            
range.select();
        }
        return;
    },
    
    
createBBtag_nav: function( openerTag closerTag areaIdsEmptyValue 
    {
        var 
txtArea document.getElementByIdareaId );
        if (
txtArea.selectionEnd && (txtArea.selectionEnd txtArea.selectionStart 0) ) 
        {
            var 
preString = (txtArea.value).substring(0,txtArea.selectionStart);
            var 
newString openerTag + (txtArea.value).substring(txtArea.selectionStart,txtArea.selectionEnd) + closerTag;
            var 
postString = (txtArea.value).substring(txtArea.selectionEnd);
            
txtArea.value preString newString postString;
            
txtArea.focus();
        }
        else 
        {
            if (!empty(
sEmptyValue))
            {
                
openerTag openerTag sEmptyValue;
            }
            
            var 
offset txtArea.selectionStart;
            var 
preString = (txtArea.value).substring(0,offset);
            var 
newString openerTag closerTag;
            var 
postString = (txtArea.value).substring(offset);
            
txtArea.value preString newString postString;
            
txtArea.selectionStart offset openerTag.length;
            
txtArea.selectionEnd offset openerTag.length;
            
txtArea.focus();
        }
        return;
    }    
};

if (!
bAllowEditor)
{
    var 
bForceDefaultEditor true;
}
?>
Онлайн: 0
Реклама