CrazyCat Programming Factory
rendre internet plus accessible
 

Créer une barre de boutons BBCode

Logo javascript
var edButtons = new Array();
var edLinks = new Array();
var edOpenTags = new Array();

function edButton(id, display, tagStart, tagEnd, open) {
    this.id = id;               // used to name the toolbar button
    this.display = display;     // label on button
    this.tagStart = tagStart;   // open tag
    this.tagEnd = tagEnd;       // close tag
    this.open = open;           // set to -1 if tag does not need to be closed
}

edButtons[edButtons.length] = new edButton('ed_bold', 'Gras', '<strong>', '</strong>');
edButtons[edButtons.length] = new edButton('ed_italic', 'Italique', '<em>', '</em>');
edButtons[edButtons.length] = new edButton('ed_under', 'Souligné', '<u>', '</u>');
edButtons[edButtons.length] = new edButton('ed_strike', 'Barré', '[s]', '[/s]');
edButtons[edButtons.length] = new edButton('ed_link', 'URL', '', '[/url]');
edButtons[edButtons.length] = new edButton('ed_email', 'E-mail', '', '[/email]');
edButtons[edButtons.length] = new edButton('ed_color', 'Couleur', '', '[/color]');
edButtons[edButtons.length] = new edButton('ed_img', 'Image', '', '', -1);
edButtons[edButtons.length] = new edButton('ed_block', 'Citation', '[quote]', '[/quote]');
edButtons[edButtons.length] = new edButton('ed_code', 'Code', '[code]', '[/code]');
edButtons[edButtons.length] = new edButton('ed_list', 'Liste', '', '');

function edLink(display, URL, newWin) {
    this.display = display;
    this.URL = URL;
    if (!newWin) {
        newWin = 0;
    }
    this.newWin = newWin;
}

function edShowButton(button, i) {
    if (button.id == 'ed_img') {
        document.write('<input type="button" id="' + button.id + '" class="button" onclick="edInsertImage(edCanvas);" value="' + button.display + '" />');
    }
    else if (button.id == 'ed_link') {
        document.write('<input type="button" id="' + button.id + '" class="button" onclick="edInsertLink(edCanvas, ' + i + ');" value="' + button.display + '" />');
    }
    else if (button.id == 'ed_email') {
        document.write('<input type="button" id="' + button.id + '" class="button" onclick="edInsertEmail(edCanvas, ' + i + ');" value="' + button.display + '" />');
    }
    else if (button.id == 'ed_color') {
        document.write('<input type="button" id="' + button.id + '" class="button" onclick="edInsertColor(edCanvas, ' + i + ');" value="' + button.display + '" />');
    }
    else if (button.id == 'ed_list') {
        document.write('<input type="button" id="' + button.id + '" class="button" onclick="edInsertList(edCanvas, ' + i + ');" value="' + button.display + '" />');
    }
    else {
        document.write('<input type="button" id="' + button.id + '" class="button" onclick="edInsertTag(edCanvas, ' + i + ');" value="' + button.display + '" />');
    }
}

function edShowLinks() {
    var tempStr = '<select onchange="edQuickLink(this.options[this.selectedIndex].value, this);"><option value="-1" selected>(Quick Links)</option>';
    for (i = 0; i < edLinks.length; i++) {
        tempStr += '<option value="' + i + '">' + edLinks<em>.display + '</option>';
    }
    tempStr += '</select>';
    document.write(tempStr);
}

function edAddTag(button) {
    if (edButtons[button].tagEnd != '') {
        edOpenTags[edOpenTags.length] = button;
        document.getElementById(edButtons[button].id).value = '/' + document.getElementById(edButtons[button].id).value;
    }
}

function edRemoveTag(button) {
    for (i = 0; i < edOpenTags.length; i++) {
        if (edOpenTags<em> == button) {
            edOpenTags.splice(i, 1);
            document.getElementById(edButtons[button].id).value = document.getElementById(edButtons[button].id).value.replace('/', '');
        }
    }
}

function edCheckOpenTags(button) {
    var tag = 0;
    for (i = 0; i < edOpenTags.length; i++) {
        if (edOpenTags<em> == button) {
            tag++;
        }
    }
    if (tag > 0) {
        return true; // tag found
    }
    else {
        return false; // tag not found
    }
}   

function edCloseAllTags() {
    var count = edOpenTags.length;
    for (o = 0; o < count; o++) {
        edInsertTag(edCanvas, edOpenTags[edOpenTags.length - 1]);
    }
}

function edQuickLink(i, thisSelect) {
    if (i > -1) {
        var newWin = '';
        if (edLinks<em>.newWin == 1) {
            newWin = ' target="_blank"';
        }
        var tempStr = '<a href="' + edLinks<em>.URL + '"' + newWin + '>'
                    + edLinks<em>.display
                    + '</a>';
        thisSelect.selectedIndex = 0;
        edInsertContent(edCanvas, tempStr);
    }
    else {
        thisSelect.selectedIndex = 0;
    }
}

// insertion code

function edInsertTag(myField, i) {
    //IE support
    if (document.selection) {
        myField.focus();
        sel = document.selection.createRange();
        if (sel.text.length > 0) {
            sel.text = edButtons<em>.tagStart + sel.text + edButtons<em>.tagEnd;
        }
        else {
            if (!edCheckOpenTags(i) || edButtons<em>.tagEnd == '') {
                sel.text = edButtons<em>.tagStart;
                edAddTag(i);
            }
            else {
                sel.text = edButtons<em>.tagEnd;
                edRemoveTag(i);
            }
        }
        myField.focus();
    }
    //MOZILLA/NETSCAPE support
    else if (myField.selectionStart || myField.selectionStart == '0') {
        var startPos = myField.selectionStart;
        var endPos = myField.selectionEnd;
        var cursorPos = endPos;
        var scrollTop = myField.scrollTop;

        if (startPos != endPos) {
            myField.value = myField.value.substring(0, startPos)
                          + edButtons<em>.tagStart
                          + myField.value.substring(startPos, endPos)
                          + edButtons<em>.tagEnd
                          + myField.value.substring(endPos, myField.value.length);
            cursorPos += edButtons<em>.tagStart.length + edButtons<em>.tagEnd.length;
        }
        else {
            if (!edCheckOpenTags(i) || edButtons<em>.tagEnd == '') {
                myField.value = myField.value.substring(0, startPos)
                              + edButtons<em>.tagStart
                              + myField.value.substring(endPos, myField.value.length);
                edAddTag(i);
                cursorPos = startPos + edButtons<em>.tagStart.length;
            }
            else {
                myField.value = myField.value.substring(0, startPos)
                              + edButtons<em>.tagEnd
                              + myField.value.substring(endPos, myField.value.length);
                edRemoveTag(i);
                cursorPos = startPos + edButtons<em>.tagEnd.length;
            }
        }
        myField.focus();
        myField.selectionStart = cursorPos;
        myField.selectionEnd = cursorPos;
        myField.scrollTop = scrollTop;
    }
    else {
        if (!edCheckOpenTags(i) || edButtons<em>.tagEnd == '') {
            myField.value += edButtons<em>.tagStart;
            edAddTag(i);
        }
        else {
            myField.value += edButtons<em>.tagEnd;
            edRemoveTag(i);
        }
        myField.focus();
    }
}

function edInsertContent(myField, myValue) {
    //IE support
    if (document.selection) {
        myField.focus();
        sel = document.selection.createRange();
        sel.text = myValue;
        myField.focus();
    }
    //MOZILLA/NETSCAPE support
    else if (myField.selectionStart || myField.selectionStart == '0') {
        var startPos = myField.selectionStart;
        var endPos = myField.selectionEnd;
        myField.value = myField.value.substring(0, startPos)
                      + myValue
                      + myField.value.substring(endPos, myField.value.length);
        myField.focus();
        myField.selectionStart = startPos + myValue.length;
        myField.selectionEnd = startPos + myValue.length;
    } else {
        myField.value += myValue;
        myField.focus();
    }
}

function edInsertLink(myField, i, defaultValue) {
    if (!defaultValue) {
        defaultValue = 'http://';
    }
    if (!edCheckOpenTags(i)) {
        var URL = prompt('Entrez l\'URL' ,defaultValue);
        if (URL) {
            edButtons<em>.tagStart = '[url=' + URL + ']';
            edInsertTag(myField, i);
        }
    }
    else {
        edInsertTag(myField, i);
    }
}

function edInsertList(myField, i, defaultValue) {
    if (!defaultValue) {
        defaultValue = '';
    }
    if (!edCheckOpenTags(i)) {
        var LI = prompt('Entrez un élément de la liste' ,defaultValue);
        if (LI) {
            edButtons<em>.tagStart = '[list]\r\n[*] ' + LI + '\r\n[/list]\r\n';
            edInsertTag(myField, i);
        }
    }
    else {
        edInsertTag(myField, i);
    }
}

function edInsertEmail(myField, i, defaultValue) {
    if (!defaultValue) {
        defaultValue = '';
    }
    if (!edCheckOpenTags(i)) {
        var EMAIL = prompt('Entrez l\'e-mail', defaultValue);
        if (EMAIL) {
            edButtons<em>.tagStart = '[email=' + EMAIL + ']';
            edInsertTag(myField, i);
        }
    }
    else {
        edInsertTag(myField, i);
    }
}

function edInsertColor(myField, i, defaultValue) {
    if (!defaultValue) {
        defaultValue = 'red';
    }
    if (!edCheckOpenTags(i)) {
        var COLOR = prompt('Couleur' ,defaultValue);
        if (COLOR) {
            edButtons<em>.tagStart = '[color=' + COLOR + ']';
            edInsertTag(myField, i);
        }
    }
    else {
        edInsertTag(myField, i);
    }
}

function edInsertImage(myField) {
    var myValue = prompt('Entrez l\'url de l\'image', 'upload/');
    if (myValue) {
        myValue = '[img]'
                + myValue
                + '[/img]';
        edInsertContent(myField, myValue);
    }
}

©2006-2019 Geek Zone | eggdrop.fr | zeolia.net