[Error] ¿Como poner exactamente botones para spoiler y fieldset en el editor?
- URL del foro: alonegamerz.com
- Versión del foro: 1.6
- Actualización: ninguna
bueno respecto al tema.
e intentado este tutorial http://www.soportemybb.com/tema_Tutorial...r-de-texto
y la verdad que no me da resultado
cuando quiero crear un tema y intentar ver si esta el boton que supuestamente lo cree para spoiler que abdon me dijo.
que lo podia agarrar para spoiler tambien.
y nada el editor se desaparece aca una imagen.
http://img577.imageshack.us/img577/8863/dibujomo.png
Solo tienes que hacer ese tutorial cambiando donde pone descarga por "fieldset". Y luego lo vuelves a hacer poniendo "spoiler".
eso es lo que hice, subi la imagen todo biem.
pero no se lo que pasa .
en la imagen que deje es como me sale despues de hacerlo eso de "descarga"
lo cambie por spoiler pero no se por que me sale haci.
pero no se lo que pasa .
en la imagen que deje es como me sale despues de hacerlo eso de "descarga"
lo cambie por spoiler pero no se por que me sale haci.
Pon aquí tu editor.js para verlo.
aca esta los 2 lo que dice el tutorial.
aca esta el editor.js
Esto es lo del stylesheet.css
lo que quiero hacer es para boton del spoiler
me gustaria tambien del fieldset.
muchas gracias.
PD: haci lo hicieron aqui?
aca esta el editor.js
var messageEditor = Class.create();
messageEditor.prototype = {
openTags: new Array(),
toolbarHeight: 0,
currentTheme: '',
themePath: '',
openDropDownMenu: null,
setTheme: function(theme)
{
if(this.currentTheme != '' || $('editorTheme')) {
$('editorTheme').remove();
}
var stylesheet = document.createElement('link');
stylesheet.setAttribute('rel', 'stylesheet');
stylesheet.setAttribute('type', 'text/css');
stylesheet.setAttribute('href', this.baseURL + 'editor_themes/'+theme+'/stylesheet.css');
document.getElementsByTagName('head')[0].appendChild(stylesheet);
this.currentTheme = theme;
this.themePath = this.baseURL + 'editor_themes/'+theme;
},
initialize: function(textarea, options)
{
// Sorry Konqueror, but due to a browser bug out of control with textarea values
// you do not get to use the fancy editor.
if(MyBB.browser == "konqueror" || (typeof(mybb_editor_disabled) != "undefined" && mybb_editor_disabled == true))
{
return false;
}
// Establish the base path to this javascript file
$$('script').each(function(script) {
if(script.src && script.src.indexOf('editor.js') != -1) {
this.baseURL = script.src.replace(/editor\.js(.*?)$/, '');
}
}, this);
this.options = options;
if(this.options)
{
if(!this.options.lang)
{
return false;
}
if(!this.options.rtl)
{
this.options.rtl = 0;
}
}
if(this.options && this.options.theme)
{
this.setTheme(this.options.theme);
}
else
{
this.setTheme('default');
}
// Defines an array of fonts to be shown in the font drop down.
this.fonts = new Object();
this.fonts["Arial"] = "Arial";
this.fonts["Courier"] = "Courier";
this.fonts["Impact"] = "Impact";
this.fonts["Tahoma"] = "Tahoma";
this.fonts["Times New Roman"] = "Times New Roman";
this.fonts["Trebuchet MS"] = "Trebuchet MS";
this.fonts["Verdana"] = "Verdana";
// An array of font sizes to be shown.
this.sizes = new Object();
this.sizes["xx-small"] = this.options.lang.size_xx_small;
this.sizes["x-small"] = this.options.lang.size_x_small;
this.sizes["small"] = this.options.lang.size_small;
this.sizes["medium"] = this.options.lang.size_medium;
this.sizes["large"] = this.options.lang.size_large;
this.sizes["x-large"] = this.options.lang.size_x_large;
this.sizes["xx-large"] = this.options.lang.size_xx_large;
// An array of colours to be shown.
this.colors = new Object();
this.colors[1] = "#800000";
this.colors[2] = "#8B4513";
this.colors[3] = "#006400";
this.colors[4] = "#2F4F4F";
this.colors[5] = "#000080";
this.colors[6] = "#4B0082";
this.colors[7] = "#800080";
this.colors[8] = "#000000";
this.colors[9] = "#FF0000";
this.colors[10] = "#DAA520";
this.colors[11] = "#6B8E23";
this.colors[12] = "#708090";
this.colors[13] = "#0000CD";
this.colors[14] = "#483D8B";
this.colors[15] = "#C71585";
this.colors[16] = "#696969";
this.colors[17] = "#FF4500";
this.colors[18] = "#FFA500";
this.colors[19] = "#808000";
this.colors[20] = "#4682B4";
this.colors[21] = "#1E90FF";
this.colors[22] = "#9400D3";
this.colors[23] = "#FF1493";
this.colors[24] = "#A9A9A9";
this.colors[25] = "#FF6347";
this.colors[26] = "#FFD700";
this.colors[27] = "#32CD32";
this.colors[28] = "#87CEEB";
this.colors[29] = "#00BFFF";
this.colors[30] = "#9370DB";
this.colors[31] = "#FF69B4";
this.colors[32] = "#DCDCDC";
this.colors[33] = "#FFDAB9";
this.colors[34] = "#FFFFE0";
this.colors[35] = "#98FB98";
this.colors[36] = "#E0FFFF";
this.colors[37] = "#87CEFA";
this.colors[38] = "#E6E6FA";
this.colors[39] = "#DDA0DD";
this.colors[40] = "#FFFFFF";
// An array of video services to be shown (youtube, vimeo, etc)
this.videos = new Object();
this.videos["dailymotion"] = this.options.lang.video_dailymotion;
this.videos["googlevideo"] = this.options.lang.video_googlevideo;
this.videos["metacafe"] = this.options.lang.video_metacafe;
this.videos["myspacetv"] = this.options.lang.video_myspacetv;
this.videos["vimeo"] = this.options.lang.video_vimeo;
this.videos["yahoo"] = this.options.lang.video_yahoo;
this.videos["youtube"] = this.options.lang.video_youtube;
// Here we get the ID of the textarea we're replacing and store it.
this.textarea = textarea;
// Only swap it over once the page has loaded (add event)
if(MyBB.page_loaded == 1)
{
this.showEditor();
}
else
{
Event.observe(document, "dom:loaded", this.showEditor.bindAsEventListener(this));
}
},
showEditor: function()
{
// Assign the old textarea to a variable for later use.
oldTextarea = $(this.textarea);
// Now this.textarea becomes the new textarea ID
this.textarea += "_new";
// Begin the creation of our new editor.
this.editor = document.createElement("div");
this.editor.style.position = "relative";
this.editor.style.display = "none";
this.editor.className = "messageEditor";
// Append the new editor
oldTextarea.parentNode.insertBefore(this.editor, oldTextarea);
// Determine the overall height and width - messy, but works
w = oldTextarea.getDimensions().width+"px";
if(!w || parseInt(w) < 400)
{
w = "400px";
}
if(this.options && this.options.height)
{
h = this.options.height;
}
else if(oldTextarea.offsetHeight)
{
h = oldTextarea.offsetHeight+"px";
}
else if(oldTextarea.clientHeight)
{
h = oldTextarea.clientHeight+"px";
}
else if(oldTextarea.style.height)
{
h = oldTextarea.style.height;
}
else
{
h = "400px";
}
this.editor.style.width = w;
this.editor.style.height = h;
this.createToolbarContainer('top');
this.createToolbar('closetags', {
container: 'top',
alignment: 'right',
items: [
{type: 'button', name: 'close_tags', insert: 'zzzz', sprite: 'close_tags', width: 80, style: {visibility: 'hidden'}}
]
});
this.createToolbar('topformatting', {
container: 'top',
items: [
{type: 'dropdown', name: 'font', insert: 'font', title: this.options.lang.font, options: this.fonts},
{type: 'dropdown', name: 'size', insert: 'size', title: this.options.lang.size, options: this.sizes},
{type: 'button', name: 'color', insert: 'color', dropdown: true, color_select: true, image: 'color.gif', draw_option: this.drawColorOption, options: this.colors}
]
});
this.createToolbarContainer('bottom');
this.createToolbar('insertables', {
container: 'bottom',
alignment: 'right',
items: [
{type: 'button', name: 'list_num', sprite: 'list_num', insert: 'list', extra: 1, title: this.options.lang.title_numlist},
{type: 'button', name: 'list_bullet', sprite: 'list_bullet', insert: 'list', title: this.options.lang.title_bulletlist},
{type: 'separator'},
{type: 'button', name: 'img', sprite: 'image', insert: 'image', extra: 1, title: this.options.lang.title_image},
{type: 'button', name: 'url', sprite: 'link', insert: 'url', title: this.options.lang.title_hyperlink},
{type: 'button', name: 'email', sprite: 'email', insert: 'email', extra: 1, title: this.options.lang.title_email},
{type: 'separator'},
{type: 'button', name: 'quote', sprite: 'quote', insert: 'quote', title: this.options.lang.title_quote},
{type: 'button', name: 'code', sprite: 'code', insert: 'code', title: this.options.lang.title_code},
{type: 'button', name: 'php', sprite: 'php', insert: 'php', title: this.options.lang.title_php},
{type: 'button', name: 'video', insert: 'video', image: 'television.gif', dropdown: true, title: this.options.lang.title_video, options: this.videos}
]
});
this.createToolbar('formatting', {
container: 'bottom',
items: [
{type: 'button', name: 'b', sprite: 'bold', insert: 'b', title: this.options.lang.title_bold},
{type: 'button', name: 'i', sprite: 'italic', insert: 'i', title: this.options.lang.title_italic},
{type: 'button', name: 'u', sprite: 'underline', insert: 'u', title: this.options.lang.title_underline},
{type: 'separator'},
{type: 'button', name: 'align_left', sprite: 'align_left', insert: 'align', extra: 'left', title: this.options.lang.title_left},
{type: 'button', name: 'align_center', sprite: 'align_center', insert: 'align', extra: 'center', title: this.options.lang.title_center},
{type: 'button', name: 'align_right', sprite: 'align_right', insert: 'align', extra: 'right', title: this.options.lang.title_right},
{type: 'button', name: 'align_justify', sprite: 'align_justify', insert: 'align', extra: 'justify', title: this.options.lang.title_justify}
]
});
// Create our new text area
areaContainer = document.createElement("div");
areaContainer.style.clear = "both";
// Set the width/height of the area
subtract = 20;
subtract2 = 12;
areaContainer.style.height = parseInt(Element.getDimensions(this.editor).height)-this.toolbarHeight-subtract+"px";
areaContainer.style.width = parseInt(Element.getDimensions(this.editor).width)-subtract2+"px";
// Create text area
textInput = document.createElement("textarea");
textInput.setAttribute("cols", oldTextarea.getAttribute("cols"));
textInput.setAttribute("rows", oldTextarea.getAttribute("rows"));
textInput.id = this.textarea;
textInput.name = oldTextarea.name+"_new";
textInput.style.height = parseInt(areaContainer.style.height)+"px";
textInput.style.width = parseInt(areaContainer.style.width)+"px";
if(oldTextarea.value != '')
{
textInput.value = oldTextarea.value;
}
if(oldTextarea.tabIndex)
{
textInput.tabIndex = oldTextarea.tabIndex;
}
areaContainer.appendChild(textInput);
this.editor.appendChild(areaContainer);
if(oldTextarea.form)
{
Event.observe(oldTextarea.form, "submit", this.closeTags.bindAsEventListener(this));
Event.observe(oldTextarea.form, "submit", this.updateOldArea.bindAsEventListener(this));
}
// Hide the old editor
oldTextarea.style.visibility = "hidden";
oldTextarea.style.position = "absolute";
oldTextarea.style.top = "-1000px";
oldTextarea.id += "_old";
this.oldTextarea = oldTextarea;
this.editor.style.display = "";
Event.observe(textInput, "keyup", this.updateOldArea.bindAsEventListener(this));
if(MyBB.browser == 'ie') {
Event.observe($(this.textarea), 'focus', function() {
this.trackingCaret = true;
}.bindAsEventListener(this));
Event.observe($(this.textarea), 'blur', function() {
this.trackingCaret = false;
}.bindAsEventListener(this));
Event.observe($(this.textarea), 'mousedown', function() {
this.trackingCaret = true;
this.storeCaret();
}.bindAsEventListener(this));
}
Event.observe(textInput, "blur", this.updateOldArea.bindAsEventListener(this));
},
drawColorOption: function(option)
{
var item = document.createElement('li');
item.extra = option.value;
item.className = 'editor_dropdown_color_item';
item.innerHTML = '<a style="background-color: '+option.value+'"></a>';
return item;
},
createToolbarContainer: function(name)
{
if($('editor_toolbar_container_'+name)) return;
var container = document.createElement("div");
container.id = 'editor_toolbar_container_'+name;
container.className = 'toolbar_container';
this.editor.appendChild(container);
this.toolbarHeight += 28;
return container;
},
createToolbar: function(name, options)
{
if(typeof(options.container) == 'undefined')
{
options.container = this.createToolbarContainer('auto_'+name);
}
else {
options.container = $('editor_toolbar_container_'+options.container);
if(!options.container) return;
}
if($('editor_toolbar_'+name)) return;
var toolbar = document.createElement('div');
toolbar.id = 'editor_toolbar_'+name;
toolbar.className = 'toolbar';
var clear = document.createElement('br');
clear.style.clear = 'both';
toolbar.appendChild(clear);
if(options.alignment && options.alignment == 'right') {
toolbar.className += ' float_right';
}
options.container.appendChild(toolbar);
if(typeof(options.items) == 'object') {
for(var i = 0; i < options.items.length; ++i) {
this.addToolbarItem(toolbar, options.items[i]);
}
}
// add closing item
if(toolbar.lastChild.previousSibling)
toolbar.lastChild.previousSibling.className += ' toolbar_button_group_last';
},
setElementState: function(element, state) {
element.addClassName('toolbar_'+state);
if(element.hasClassName('toolbar_button_group_first')) {
if(state == 'clicked') {
append = 'toolbar_clicked';
}
else if(state == 'hover') {
append = 'toolbar_hover';
}
append += '_button_group_first';
element.addClassName(append);
}
if(element.hasClassName('toolbar_button_group_last')) {
if(state == 'clicked') {
append = 'toolbar_clicked';
}
else if(state == 'hover') {
append = 'toolbar_hover';
}
append += '_button_group_last';
element.addClassName(append);
}
},
removeElementState: function(element, state)
{
element.removeClassName('toolbar_'+state);
if(element.hasClassName('toolbar_button_group_first')) {
if(state == 'clicked') {
append = 'toolbar_clicked';
}
else if(state == 'hover') {
append = 'toolbar_hover';
}
append += '_button_group_first';
element.removeClassName(append);
}
if(element.hasClassName('toolbar_button_group_last')) {
if(state == 'clicked') {
append = 'toolbar_clicked';
}
else if(state == 'hover') {
append = 'toolbar_hover';
}
append += '_button_group_last';
element.removeClassName(append);
}
},
dropDownMenuItemClick: function(e)
{
this.restartEditorSelection();
element = Event.element(e);
if(!element)
return;
if(!element.extra)
element = element.up('li');
var mnu = element.up('ul');
var dropdown = this.getElementToolbarItem(mnu);
var label = dropdown.down('.editor_dropdown_label');
if(!dropdown.insertText || (mnu.activeItem && mnu.activeItem == element))
return;
mnu.lastItemValue = element.extra;
this.insertMyCode(dropdown.insertText, element.extra);
if(this.getSelectedText($(this.textarea)))
{
this.setDropDownMenuActiveItem(dropdown, 0);
}
else
{
if(label)
{
label.innerHTML = element.innerHTML;
label.style.overflow = 'hidden';
}
var sel_color = dropdown.down('.editor_button_color_selected')
if(sel_color)
{
sel_color.style.backgroundColor = element.extra;
var use_default = dropdown.down('.editor_dropdown_color_item_default');
if(use_default) use_default.style.display = '';
}
mnu.activeItem = element;
element.addClassName('editor_dropdown_menu_item_active');
}
this.hideOpenDropDownMenu();
Event.stop(e);
},
setDropDownMenuActiveItem: function(element, index)
{
if(element == null)
{
return;
}
var mnu = element.down('ul');
var label = element.down('.editor_dropdown_label');
if(mnu.activeItem)
{
mnu.activeItem.removeClassName('editor_dropdown_menu_item_active');
mnu.activeItem = null;
}
if(index > 0)
{
var item = mnu.childNodes[index];
if(!item) return;
mnu.activeItem = item;
if(label)
{
label.innerHTML = item.innerHTML;
}
var sel_color = element.down('.editor_dropdown_color_selected')
if(sel_color)
{
sel_color.style.backgroundColor = item.style.backgroundColor;
mnu.lastItemValue = item.insertExtra;
var use_default = element.down('.editor_dropdown_color_item_default');
if(use_default) use_default.style.display = '';
}
item.addClassName('editor_dropdown_menu_item_active');
}
else
{
if(label)
{
label.innerHTML = mnu.childNodes[0].innerHTML;
}
var sel_color = element.down('.editor_button_color_selected')
if(sel_color)
{
//sel_color.style.backgroundColor = '';
var use_default = element.down('.editor_dropdown_color_item_default');
if(use_default) use_default.style.display = 'none';
}
this.removeElementState(element, 'clicked');
}
},
createDropDownMenu: function(options)
{
var dropdown = document.createElement('div');
dropdown.itemType = options.type;
if(options.image || options.sprite)
dropdown.className = 'toolbar_dropdown_image';
else
dropdown.className = 'toolbar_dropdown';
dropdown.className += ' editor_dropdown toolbar_dropdown_'+options.name;
dropdown.id = 'editor_item_'+options.name;
Event.observe(dropdown, 'mouseover', function()
{
this.storeCaret();
dropdown.addClassName('toolbar_dropdown_over');
}.bindAsEventListener(this));
Event.observe(dropdown, 'mouseout', function()
{
this.storeCaret();
dropdown.removeClassName('toolbar_dropdown_over');
}.bindAsEventListener(this));
dropdown.insertText = options.insert;
// create the dropdown label container
var label = document.createElement('div');
label.className = 'editor_dropdown_label';
if(options.title)
{
label.innerHTML = options.title;
}
else
{
label.innerHTML = ' ';
}
dropdown.appendChild(label)
// create the arrow
var arrow = document.createElement('div');
arrow.className = 'editor_dropdown_arrow';
dropdown.appendChild(arrow);
// create the menu item container
var mnu = this.buildDropDownMenu(options);
Event.observe(dropdown, 'click', this.toggleDropDownMenu.bindAsEventListener(this));
dropdown.appendChild(mnu);
return dropdown;
},
buildDropDownMenu: function(options)
{
var mnu = document.createElement('ul');
mnu.className = 'editor_dropdown_menu';
mnu.style.display = 'none';
// create the first item
if(options.title)
{
var item = document.createElement('li');
item.className = 'editor_dropdown_menu_title';
item.innerHTML = options.title;
mnu.appendChild(item);
Event.observe(item, 'click', function()
{
if(mnu.activeItem)
{
this.restartEditorSelection();
this.insertMyCode(dropdown.insertText, '-');
}
this.setDropDownMenuActiveItem(dropdown, 0);
}.bindAsEventListener(this));
}
$H(options.options).each(function(option)
{
if(options.draw_option)
{
item = options.draw_option(option)
}
else
{
var item = document.createElement('li');
item.innerHTML = option.value;
var content = document.createElement('span');
item.appendChild(content);
item.extra = option.key;
}
Event.observe(item, 'click', this.dropDownMenuItemClick.bindAsEventListener(this));
Event.observe(item, 'mouseover', function()
{
item.addClassName('editor_dropdown_menu_item_over');
});
Event.observe(item, 'mouseout', function()
{
item.removeClassName('editor_dropdown_menu_item_over');
});
mnu.appendChild(item);
}, this);
return mnu;
},
toggleDropDownMenu: function(e)
{
element = Event.element(e);
if(!element)
return;
if(!element.itemType)
element = this.getElementToolbarItem(element);
var mnu = $(element).down('ul');
// This menu is already open, close it
if(mnu.style.display != 'none')
{
mnu.style.display = 'none';
element.removeClassName('editor_dropdown_menu_open');
this.removeElementState(element, 'clicked');
this.openDropDownMenu = null;
Event.stopObserving(document, 'click', this.hideOpenDropDownMenu.bindAsEventListener(this));
}
// Opening this menu
else
{
// If a menu is already open, close it first
this.showDropDownMenu(mnu);
}
this.removeElementState(element, 'clicked');
Event.stop(e);
},
showDropDownMenu: function(mnu)
{
this.hideOpenDropDownMenu();
mnu.style.display = '';
element = this.getElementToolbarItem(mnu);
element.addClassName('editor_dropdown_menu_open');
this.setElementState(element, 'clicked');
this.openDropDownMenu = mnu;
Event.observe(document, 'click', this.hideOpenDropDownMenu.bindAsEventListener(this));
},
hideOpenDropDownMenu: function()
{
if(!this.openDropDownMenu) return;
this.openDropDownMenu.style.display = 'none';
this.getElementToolbarItem(this.openDropDownMenu).removeClassName('editor_dropdown_menu_open');
var dropDown = this.getElementToolbarItem(this.openDropDownMenu);
this.removeElementState(element, 'clicked');
this.openDropDownMenu = null;
Event.stopObserving(document, 'click', this.hideOpenDropDownMenu.bindAsEventListener(this));
},
getElementToolbarItem: function(elem)
{
var parent = elem;
do {
if(parent.insertText) return parent;
parent = parent.parentNode;
} while($(parent));
return false;
},
storeCaret: function()
{
if(MyBB.browser != 'ie' || !this.trackingCaret)
{
return;
}
// Internet explorer errors if you try and select an element... so just handle that by try catch
try {
var range = document.selection.createRange();
var range_all = document.body.createTextRange();
range_all.moveToElementText($(this.textarea));
for(var sel_start = 0; range_all.compareEndPoints('StartToStart', range) < 0; sel_start++)
range_all.moveStart('character', 1);
var range_all = document.body.createTextRange();
range_all.moveToElementText($(this.textarea));
for(var sel_end = 0; range_all.compareEndPoints('StartToEnd', range) < 0; sel_end++)
range_all.moveStart('character', 1);
this.lastCaretS = sel_start;
this.lastCaretE = sel_end;
} catch(e) { }
},
restartEditorSelection: function()
{
if(MyBB.browser != 'ie')
{
return;
}
var range = $(this.textarea).createTextRange();
range.collapse(true);
range.moveStart('character', this.lastCaretS);
range.moveEnd('character', this.lastCaretE - this.lastCaretS);
range.select();
},
addToolbarItem: function(toolbar, options)
{
if(typeof(toolbar) == 'string')
{
toolbar = $('editor_toolbar_'+toolbar);
}
if(!$(toolbar)) return;
// Does this item already exist?
if($('editor_item_'+options.name)) return;
insert_first_class = false;
// Is this the first item? childnodes = 1 (closing br) or lastchild.previousSibling = sep
if(toolbar.childNodes.length == 1 || (toolbar.lastChild.previousSibling && toolbar.lastChild.previousSibling.className.indexOf('toolbar_sep') > -1 || (toolbar.lastChild.previousSibling.className.indexOf('editor_dropdown') > -1 && options.type != 'dropdown')))
{
insert_first_class = true;
}
if(options.type == "dropdown")
{
var dropdown = this.createDropDownMenu(options);
if(dropdown)
toolbar.insertBefore(dropdown, toolbar.lastChild);
if(insert_first_class == true)
dropdown.className += ' toolbar_dropdown_group_first';
}
else if(options.type == 'button')
{
var button = this.createToolbarButton(options)
toolbar.insertBefore(button, toolbar.lastChild);
if(insert_first_class == true)
button.className += ' toolbar_button_group_first';
}
else if(options.type == 'separator')
{
if(toolbar.lastChild.previousSibling && !$(toolbar.lastChild.previousSibling).hasClassName('toolbar_dropdown'))
{
toolbar.lastChild.previousSibling.className += ' toolbar_button_group_last';
}
var separator = document.createElement("span");
separator.itemType = options.type;
separator.className = "toolbar_sep";
toolbar.insertBefore(separator, toolbar.lastChild);
}
},
createToolbarButton: function(options)
{
var button = document.createElement('span');
button.itemType = options.type;
button.id = 'editor_item_'+options.name;
if(typeof(options.title) != 'undefined')
{
button.title = options.title;
}
button.className = 'toolbar_button toolbar_normal toolbar_button_'+options.name;
if(typeof(options.style) == 'object')
{
$H(options.style).each(function(item) {
eval('button.style.'+item.key+' = "'+item.value+'";');
});
}
button.insertText = options.insert;
button.insertExtra = '';
if(typeof(options.extra) != 'undefined')
button.insertExtra = options.extra;
if(typeof(options.sprite) != 'undefined')
{
var img = document.createElement('span');
img.className = 'toolbar_sprite toolbar_sprite_'+options.sprite;
}
else
{
var img = document.createElement('img');
img.src = this.themePath + "/images/" + options.image;
}
button.appendChild(img);
if(options.dropdown)
{
if(options.color_select == true)
{
var sel = document.createElement('em');
sel.className = 'editor_button_color_selected';
button.appendChild(sel);
}
// create the arrow
var arrow = document.createElement('u');
arrow.className = 'toolbar_button_arrow';
button.appendChild(arrow);
button.className += ' toolbar_button_with_arrow';
}
var end = document.createElement('strong');
button.appendChild(end);
// Create the actual drop down menu
if(options.dropdown)
{
// create the menu item container
var mnu = this.buildDropDownMenu(options);
Event.observe(arrow, 'click', this.toggleDropDownMenu.bindAsEventListener(this));
Event.observe(button, 'click', this.toggleDropDownMenu.bindAsEventListener(this));
Event.observe(arrow, 'mouseover', function(e)
{
elem = Event.element(e);
if(!elem) return;
elem.parentNode.addClassName('toolbar_button_over_arrow');
});
Event.observe(arrow, 'mouseout', function(e)
{
elem = Event.element(e);
if(!elem) return;
elem.parentNode.removeClassName('toolbar_button_over_arrow');
});
button.appendChild(mnu);
button.dropdown = true;
button.menu = mnu;
}
// Does this button have enabled/disabled states?
if(options.disabled_img || options.disabled_sprite)
{
button.disable = function()
{
if(button.disabled == true) return;
if(options.disabled_sprite)
{
img.removeClassName('toolbar_sprite_'+options.sprite);
img.addClassName('toolbar_sprite_disabled_'+options.disabled_sprite);
}
else
img.src = this.themePath + '/images/' + options.disabled_img;
button.disabled = true;
};
button.enable = function()
{
if(!button.disabled) return;
if(options.disabled_sprite)
{
img.removeClassName('toolbar_sprite_disabled_'+options.disabled_sprite);
img.addClassName('toolbar_sprite_'+options.sprite);
}
else
img.src = this.themePath + '/images/' + options.image;
button.enabled = true;
};
if(options.disabled && options.disabled == true)
{
button.disable();
button.disabled = true;
}
else
button.disabled = false;
}
Event.observe(button, "mouseover", this.toolbarItemHover.bindAsEventListener(this));
Event.observe(button, "mouseout", this.toolbarItemOut.bindAsEventListener(this));
if(!options.dropdown)
{
// Dropdown event listener is above...
Event.observe(button, "click", this.toolbarItemClick.bindAsEventListener(this));
}
return button;
},
updateOldArea: function(e)
{
this.oldTextarea.value = $(this.textarea).value;
},
toolbarItemOut: function(e)
{
this.storeCaret();
element = Event.element(e);
if(!element)
return false;
if(!element.itemType)
element = this.getElementToolbarItem(element);
if(element.disabled)
return;
if(typeof(element.insertText) != 'undefined')
{
if(element.insertExtra)
{
insertCode = element.insertText+"_"+element.insertExtra;
}
else
{
insertCode = element.insertText;
}
if(this.openTags.indexOf(insertCode) != -1 || element.className.indexOf('editor_dropdown_menu_open') > -1)
{
this.setElementState(element, 'clicked');
}
}
this.removeElementState(element, 'hover');
},
toolbarItemHover: function(e)
{
this.storeCaret();
element = Event.element(e);
if(!element)
return false;
if(!element.itemType)
element = this.getElementToolbarItem(element);
if(element.disabled)
return;
if(!element.className || element.className.indexOf('toolbar_clicked') == -1)
this.setElementState(element, 'hover');
},
toolbarItemClick: function(e)
{
element = Event.element(e);
if(!element)
return false;
if(!element.itemType)
element = this.getElementToolbarItem(element);
if(element.disabled)
return;
if(element.dropdown && element.menu)
{
if(typeof(element.menu.activeItem) != "undefined")
{
Event.stop(e);
if(!element.menu.lastItemValue)
{
this.showDropDownMenu(element.menu);
}
else
{
this.insertMyCode(element.insertText, element.menu.lastItemValue);
}
return;
}
}
if(element.id == "editor_item_close_tags")
{
this.closeTags();
}
else
{
if(typeof(element.insertExtra) != 'undefined')
this.insertMyCode(element.insertText, element.insertExtra);
else
this.insertMyCode(element.insertText);
}
},
insertList: function(type)
{
list = "";
do
{
listItem = prompt(this.options.lang.enter_list_item, "");
if(listItem != "" && listItem != null)
{
list = list+"[*]"+listItem+"\n";
}
}
while(listItem != "" && listItem != null);
if(list == "")
{
return false;
}
if(type)
{
list = "[list="+type+"]\n"+list;
}
else
{
list = "[list]\n"+list;
}
list = list+"[/list]\n";
this.performInsert(list, "", true, false);
},
insertURL: function()
{
selectedText = this.getSelectedText($(this.textarea));
url = prompt(this.options.lang.enter_url, "http://");
if(url)
{
if(!selectedText)
{
title = prompt(this.options.lang.enter_url_title, "");
}
else
{
title = selectedText;
}
if(title)
{
this.performInsert("[url="+url+"]"+title+"[/url]", "", true, false);
}
else
{
this.performInsert("[url]"+url+"[/url]", "", true, false);
}
}
},
insertEmail: function()
{
selectedText = this.getSelectedText($(this.textarea));
email = prompt(this.options.lang.enter_email, "");
if(email)
{
if(!selectedText)
{
title = prompt(this.options.lang.enter_email_title, "");
}
else
{
title = selectedText;
}
if(title)
{
this.performInsert("[email="+email+"]"+title+"[/email]", "", true, false);
}
else
{
this.performInsert("[email]"+email+"[/email]", "", true, false);
}
}
},
insertIMG: function()
{
image = prompt(this.options.lang.enter_image, "http://");
if(image)
{
this.performInsert("[img]"+image+"[/img]", "", true);
}
},
insertVideo: function(type)
{
selectedText = this.getSelectedText($(this.textarea));
if(!selectedText)
{
url = prompt(this.options.lang.enter_video_url, "http://");
}
else
{
url = selectedText;
}
if(url)
{
this.performInsert("[video="+type+"]"+url+"[/video]", "", true, false);
}
this.setDropDownMenuActiveItem($('editor_item_video'), 0);
},
insertMyCode: function(code, extra)
{
this.restartEditorSelection();
switch(code)
{
case "list":
this.insertList(extra);
break;
case "url":
this.insertURL();
break;
case "image":
this.insertIMG();
break;
case "email":
this.insertEmail();
break;
case "video":
this.insertVideo(extra);
break;
default:
var already_open = false;
var no_insert = false;
if(extra)
{
var full_tag = code+"_"+extra;
}
else
{
var full_tag = code;
}
var newTags = new Array();
this.openTags.each(function(tag)
{
exploded_tag = tag.split("_");
if(exploded_tag[0] == code)
{
already_open = true;
this.performInsert("[/"+exploded_tag[0]+"]", "", false);
var elem = $('editor_item_'+exploded_tag[0]);
if(elem)
{
this.removeElementState(elem, 'clicked');
}
if(elem && (elem.itemType == "dropdown" || elem.dropdown || elem.menu))
{
this.setDropDownMenuActiveItem(elem, 0);
}
if(tag == full_tag)
{
no_insert = true;
}
}
else
{
newTags[newTags.length] = tag;
}
}.bind(this));
this.openTags = newTags;
var do_insert = false;
if(extra != "" && extra != "-" && no_insert == false)
{
start_tag = "["+code+"="+extra+"]";
end_tag = "[/"+code+"]";
do_insert = true;
}
else if(!extra && already_open == false)
{
start_tag = "["+code+"]";
end_tag = "[/"+code+"]";
do_insert = true;
}
if(do_insert == true)
{
if(!this.performInsert(start_tag, end_tag, true))
{
this.openTags.push(full_tag);
$('editor_item_close_tags').style.visibility = '';
}
else if($('editor_item_'+full_tag))
{
this.removeElementState($('editor_item_'+full_tag), 'clicked');
}
else if($('editor_item_'+code))
{
elem = $('editor_item_'+code);
if(elem.type == "dropdown" || elem.dropdown || elem.menu)
this.setDropDownMenuActiveItem($('editor_item_'+start_tag), 0);
}
}
}
if(this.openTags.length == 0)
{
$('editor_item_close_tags').style.visibility = 'hidden';
}
},
getSelectedText: function(element)
{
element.focus();
if(document.selection)
{
var selection = document.selection;
var range = selection.createRange();
if((selection.type == "Text" || selection.type == "None") && range != null)
{
return range.text;
}
}
else if(element.selectionEnd)
{
var select_start = element.selectionStart;
var select_end = element.selectionEnd;
if(select_end <= 0)
{
select_end = element.textLength;
}
var start = element.value.substring(0, select_start);
var middle = element.value.substring(select_start, select_end);
return middle;
}
},
performInsert: function(open_tag, close_tag, is_single, ignore_selection)
{
var is_closed = true;
if(!ignore_selection)
{
var ignore_selection = false;
}
if(!close_tag)
{
var close_tag = "";
}
var textarea = $(this.textarea);
textarea.focus();
if(document.selection)
{
var selection = document.selection;
var range = selection.createRange();
if(ignore_selection != false)
{
selection.collapse;
}
if((selection.type == "Text" || selection.type == "None") && range != null && ignore_selection != true)
{
if(close_tag != "" && range.text.length > 0)
{
var keep_selected = true;
range.text = open_tag+range.text+close_tag;
}
else
{
var keep_selected = false;
if(is_single)
{
is_closed = false;
}
range.text = open_tag;
}
range.select();
}
else
{
textarea.value += open_tag;
}
}
else if(typeof(textarea.selectionEnd) != 'undefined')
{
var select_start = textarea.selectionStart;
var select_end = textarea.selectionEnd;
var scroll_top = textarea.scrollTop;
var start = textarea.value.substring(0, select_start);
var middle = textarea.value.substring(select_start, select_end);
var end = textarea.value.substring(select_end, textarea.textLength);
if(select_end - select_start > 0 && ignore_selection != true && close_tag != "")
{
var keep_selected = true;
middle = open_tag+middle+close_tag;
}
else
{
var keep_selected = false;
if(is_single)
{
is_closed = false;
}
middle = open_tag;
}
textarea.value = start+middle+end;
if(keep_selected == true && ignore_selection != true)
{
textarea.selectionStart = select_start;
textarea.selectionEnd = select_start + middle.length;
}
else if(ignore_selection != true)
{
textarea.selectionStart = select_start + middle.length;
textarea.selectionEnd = textarea.selectionStart;
}
textarea.scrollTop = scroll_top;
}
else
{
textarea.value += open_tag;
if(is_single)
{
is_closed = false;
}
}
this.updateOldArea();
textarea.focus();
this.trackingCaret = true;
this.storeCaret();
this.trackingCaret = false;
return is_closed;
},
closeTags: function()
{
if(this.openTags[0])
{
while(this.openTags[0])
{
tag = this.openTags.pop();
exploded_tag = tag.split("_");
this.performInsert("[/"+exploded_tag[0]+"]", "", false);
if($('editor_item_'+exploded_tag[0]))
{
tag = $('editor_item_'+exploded_tag[0]);
}
else
{
tag = $('editor_item_'+tag);
}
if(tag)
{
if(tag.itemType == "dropdown" || tag.dropdown || tag.menu)
{
this.setDropDownMenuActiveItem(tag, 0);
}
else
{
this.removeElementState(tag, 'clicked');
}
}
}
}
$(this.textarea).focus();
$('editor_item_close_tags').style.visibility = 'hidden';
this.openTags = new Array();
},
bindSmilieInserter: function(id)
{
if(!$(id))
{
return false;
}
var smilies = $(id).select('.smilie');
if(smilies.length > 0)
{
smilies.each(function(smilie)
{
smilie.onclick = this.insertSmilie.bindAsEventListener(this);
smilie.style.cursor = "pointer";
}.bind(this));
}
},
openGetMoreSmilies: function(editor)
{
MyBB.popupWindow('misc.php?action=smilies&popup=true&editor='+editor, 'sminsert', 240, 280);
},
insertSmilie: function(e)
{
element = Event.element(e);
if(!element || !element.alt)
{
return false;
}
this.performInsert(element.alt, "", true, false);
},
insertAttachment: function(aid)
{
this.performInsert("[attachment="+aid+"]", "", true, false);
}
};
Esto es lo del stylesheet.css
.messageEditor {
background: #d5e4f2;
border: 1px solid #9dbcd7;
padding: 3px;
padding-top: 3px;
}
.messageEditor .toolbar_container {
height: 28px;
padding: 2px;
}
.toolbar {
height: 28px;
}
.messageEditor .toolbar_dropdown {
margin-top: 3px;
margin-right: 4px;
}
.messageEditor .toolbar_button {
margin: 2px 0;
height: 22px;
float: left;
display: block;
z-index: 1;
}
.messageEditor .toolbar_button img, .messageEditor .toolbar_button span {
width: 23px;
height: 22px;
float: left;
}
.messageEditor .toolbar_sprite {
display: block;
background: url('images/toolbar.gif') no-repeat;
background-position: 0 0;
}
.messageEditor .toolbar_button .toolbar_sprite_italic {
background-position: -46px 0;
}
.messageEditor .toolbar_button .toolbar_sprite_underline {
background-position: -23px 0;
}
.messageEditor .toolbar_button .toolbar_sprite_align_left {
background-position: -69px 0;
}
.messageEditor .toolbar_button .toolbar_sprite_align_center {
background-position: -92px 0;
}
.messageEditor .toolbar_button .toolbar_sprite_align_right {
background-position: -115px 0;
}
.messageEditor .toolbar_button .toolbar_sprite_align_justify {
background-position: -138px 0;
}
.messageEditor .toolbar_button .toolbar_sprite_list_num {
background-position: -161px 0;
}
.messageEditor .toolbar_button .toolbar_sprite_list_bullet {
background-position: -184px 0;
}
.messageEditor .toolbar_button .toolbar_sprite_image {
background-position: -207px 0;
}
.messageEditor .toolbar_button .toolbar_sprite_link {
background-position: -230px 0;
}
.messageEditor .toolbar_button .toolbar_sprite_email {
background-position: -253px 0;
}
.messageEditor .toolbar_button .toolbar_sprite_quote {
background-position: -276px 0;
}
.messageEditor .toolbar_button .toolbar_sprite_code {
background-position: -299px 0;
}
.messageEditor .toolbar_button .toolbar_sprite_php {
background-position: -322px 0;
}
.messageEditor .toolbar_button_close_tags {
width: 90px;
}
.messageEditor .toolbar_button .toolbar_sprite_video {
width: 25px;
background-position: -347px 0;
}
.messageEditor .toolbar_button .toolbar_sprite_close_tags {
width: 87px;
background-position: -345px 0;
}
.messageEditor .toolbar_normal {
background: url(images/ui.gif) no-repeat;
background-position: -2px 0;
border: 0;
}
.messageEditor .toolbar_hover {
background: url(images/ui.gif) no-repeat -105px 0px;
border: 0;
}
.messageEditor .toolbar_clicked {
background: url(images/ui.gif) no-repeat -208px 0px;
border: 0;
}
.messageEditor .editor_dropdown_menu_open {
background: url(images/ui.gif) no-repeat -208px 0px;
border: 0;
}
.messageEditor .toolbar_sep {
width: 6px;
height: 23px;
margin: 0px;
margin-top: 4px;
float: left;
}
.messageEditor .toolbar_dropdown, .messageEditor .toolbar_dropdown_image {
font-size: 11px;
display: block;
float: left;
position: relative;
z-index: 100;
cursor: default;
}
.messageEditor .toolbar_dropdown {
min-width: 130px;
}
/* IE 6 */
* html .messageEditor .toolbar_dropdown {
width: 130px;
}
.messageEditor .toolbar_dropdown .editor_dropdown_label, .messageEditor .toolbar_dropdown_image .editor_dropdown_label {
display: block;
}
.messageEditor .toolbar_dropdown .editor_dropdown_label {
min-width: 120px;
background: #eaf2fb;
padding: 3px 4px;
margin-right: 14px;
border: 1px solid #abc1de;
border-right: 0;
height: 14px;
overflow: hidden;
}
/* IE 6 */
* html .messageEditor .toolbar_dropdown .editor_dropdown_label {
height: 17px;
padding-bottom: 0px;
}
.messageEditor .toolbar_dropdown_image .editor_dropdown_label {
margin: 2px 0;
width: 23px;
height: 22px;
background: #eaf2fb;
border: 1px solid #abc1de;
float: left;
overflow: hidden;
}
.messageEditor .toolbar_dropdown .editor_dropdown_arrow, .messageEditor .toolbar_dropdown_image .editor_dropdown_arrow {
top: 0px;
float: left;
display: block;
width: 14px;
background: url(images/ui.gif) no-repeat 0 -28px;
}
.messageEditor .toolbar_dropdown .editor_dropdown_arrow {
position: absolute;
right: 0;
height: 22px;
background-color: #eaf2fb;
}
.messageEditor .toolbar_dropdown_image .editor_dropdown_arrow {
height: 22px;
margin: 2px 0;
background-color: #f5f5f5;
border: 1px solid #f5f5f5;
border-left: 0;
width: 10px;
}
.messageEditor .toolbar_dropdown_over .editor_dropdown_label, .messageEditor .editor_dropdown_menu_open .editor_dropdown_label {
background: #fff;
}
.messageEditor .toolbar_dropdown_over .editor_dropdown_arrow {
background-position: -17px -28px;
}
.messageEditor .toolbar_dropdown_image.toolbar_dropdown_over .editor_dropdown_label,
.messageEditor .toolbar_dropdown_image.toolbar_dropdown_over .editor_dropdown_arrow {
background-color: #fff;
}
.messageEditor .editor_dropdown_menu_open .editor_dropdown_arrow {
background-position: -34px -28px;
}
.messageEditor .toolbar_dropdown_image.editor_dropdown_menu_open .editor_dropdown_label,
.messageEditor .toolbar_dropdown_image.editor_dropdown_menu_open .editor_dropdown_arrow {
background-color: #e1F2fe;
}
.messageEditor .editor_dropdown_menu {
margin: 0;
padding: 0;
margin-top: -2px;
top: 24px;
left: 0;
border: 1px solid #868686;
position: absolute;
width: 160px;
background: #fff;
z-index: 10000;
max-height: 200px;
overflow: auto;
-moz-border-radius: 2px;
}
.messageEditor .toolbar_dropdown_image .editor_dropdown_menu {
margin-top: -1px;
}
.messageEditor .editor_dropdown_menu li {
list-style: none;
padding: 4px 3px 6px 12px;
margin: 0;
position: relative;
cursor: pointer;
}
.messageEditor .editor_dropdown_menu li.editor_dropdown_menu_item_active {
background-image: url(images/dropdown2.gif);
background-repeat: no-repeat;
background-position: 2px center;
}
.messageEditor .editor_dropdown_menu_title {
background: #dde7ee;
padding-left: 3px;
border-bottom: 1px solid #c5c5c5;
color: #00156e;
font-size: 10px;
font-weight: bold;
}
.messageEditor .editor_dropdown_menu li.editor_dropdown_menu_item_over {
background: url(images/ui.gif) no-repeat -49px -25px;
cursor: pointer;
margin-right: 4px;
}
.messageEditor .editor_dropdown_menu li.editor_dropdown_menu_item_over span {
display: block;
position: absolute;
top: 0px;
right: -2px;
width: 3px;
height: 25px;
background: url(images/ui.gif) no-repeat -303px -25px;
}
.messageEditor .toolbar_button_color .editor_dropdown_menu {
width: 153px;
height: 98px;
padding: 1px;
background: #D5E4F2;
}
.messageEditor .toolbar_button_color li.editor_dropdown_color_item {
float: left;
padding: 3px;
margin: 1px;
width: 11px;
height: 11px;
}
.messageEditor .toolbar_button_color a {
width: 9px;
height: 9px;
display: block;
border: 1px solid #FFF;
}
.messageEditor .toolbar_button_color li.editor_dropdown_menu_item_active {
background: url('images/ui.gif') no-repeat -331px -27px;
}
.messageEditor .toolbar_button_color li.editor_dropdown_menu_item_active a {
border: 0;
}
.messageEditor .toolbar_button_color {
position: relative;
}
.messageEditor .toolbar_button_video {
position: relative;
}
.messageEditor .editor_button_color_selected {
position: absolute;
z-index: 100;
width: 16px;
height: 4px;
top: 15px;
left: 6px;
display: block;
background: transparent;
}
.messageEditor .toolbar_button_color li.editor_dropdown_menu_item_over {
border: 1px solid #5296f7;
background: transparent;
margin: 0px;
}
.messageEditor .toolbar_button strong, .messageEditor .toolbar_button strong {
border-right: 1px solid #b7cdea;
margin-top: 0px;
}
.messageEditor .toolbar_button_group_first strong {
border-left: 0;
}
.messageEditor .toolbar_button_group_first {
padding-left: 3px;
background: url(images/ui.gif) no-repeat 0 0;
}
.messageEditor .toolbar_clicked_button_group_first {
background-position: -206px 0;
}
.messageEditor .toolbar_hover_button_group_first {
background-position: -103px 0;
}
.messageEditor .toolbar_button_group_last strong {
border-right: 0;
}
.messageEditor .toolbar_button strong {
display: block;
float: left;
width: 3px;
height: 21px;
margin-top: 1px;
}
.messageEditor .toolbar_button_group_last strong {
background: url(images/ui.gif) no-repeat -99px 0;
margin-top: 0;
height: 22px;
}
.messageEditor .toolbar_clicked_button_group_last strong {
background-position: -204px 0;
}
.messageEditor .toolbar_hover_button_group_last strong {
background-position: -200px 0;
}
.messageEditor .toolbar_button_arrow {
background: transparent url(images/ui.gif) no-repeat scroll -306px 0px;
float: left;
width: 12px;
display: block;
height: 22px;
}
.messageEditor .toolbar_hover .toolbar_button_arrow {
background-position: -319px 0px;
}lo que quiero hacer es para boton del spoiler
me gustaria tambien del fieldset.
muchas gracias.
PD: haci lo hicieron aqui?
en el editor.js cambias:
por:
Y luego en lo otro ya deberías saber tú...
this.createToolbar('topformatting', {
container: 'top',
items: [
{type: 'dropdown', name: 'font', insert: 'font', title: this.options.lang.font, options: this.fonts},
{type: 'dropdown', name: 'size', insert: 'size', title: this.options.lang.size, options: this.sizes},
{type: 'button', name: 'color', insert: 'color', dropdown: true, color_select: true, image: 'color.gif', draw_option: this.drawColorOption, options: this.colors}
]
});por:
this.createToolbar('topformatting', {
container: 'top',
items: [
{type: 'dropdown', name: 'font', insert: 'font', title: this.options.lang.font, options: this.fonts},
{type: 'dropdown', name: 'size', insert: 'size', title: this.options.lang.size, options: this.sizes},
{type: 'button', name: 'color', insert: 'color', dropdown: true, color_select: true, image: 'color.gif', draw_option: this.drawColorOption, options: this.colors},
{type: 'button', name: 'spoiler', sprite: 'spoiler', insert: 'spoiler', title: 'Envuelve en spoiler'},
{type: 'button', name: 'fieldset', sprite: 'fieldset', insert: 'fieldset', title: 'Envuelve en spoiler'}
]
});Y luego en lo otro ya deberías saber tú...
bueno abdon. o es por que te molestes.
hago segun como lo dices tu apie de la letra me demore 15 minutos en encontrarlos
pero igual.
sale como en la imagen.
http://img577.imageshack.us/img577/8863/dibujomo.png
no sale ,. no se q pasa.
no se por que no ami.
hago segun como lo dices tu apie de la letra me demore 15 minutos en encontrarlos
pero igual.
sale como en la imagen.
http://img577.imageshack.us/img577/8863/dibujomo.png
no sale ,. no se q pasa.
no se por que no ami.
Es imposible que no salga el editor :S
Pon todo el editor.js así:
Pon todo el editor.js así:
var messageEditor = Class.create();
messageEditor.prototype = {
openTags: new Array(),
toolbarHeight: 0,
currentTheme: '',
themePath: '',
openDropDownMenu: null,
setTheme: function(theme)
{
if(this.currentTheme != '' || $('editorTheme')) {
$('editorTheme').remove();
}
var stylesheet = document.createElement('link');
stylesheet.setAttribute('rel', 'stylesheet');
stylesheet.setAttribute('type', 'text/css');
stylesheet.setAttribute('href', this.baseURL + 'editor_themes/'+theme+'/stylesheet.css');
document.getElementsByTagName('head')[0].appendChild(stylesheet);
this.currentTheme = theme;
this.themePath = this.baseURL + 'editor_themes/'+theme;
},
initialize: function(textarea, options)
{
// Sorry Konqueror, but due to a browser bug out of control with textarea values
// you do not get to use the fancy editor.
if(MyBB.browser == "konqueror" || (typeof(mybb_editor_disabled) != "undefined" && mybb_editor_disabled == true))
{
return false;
}
// Establish the base path to this javascript file
$$('script').each(function(script) {
if(script.src && script.src.indexOf('editor.js') != -1) {
this.baseURL = script.src.replace(/editor\.js(.*?)$/, '');
}
}, this);
this.options = options;
if(this.options)
{
if(!this.options.lang)
{
return false;
}
if(!this.options.rtl)
{
this.options.rtl = 0;
}
}
if(this.options && this.options.theme)
{
this.setTheme(this.options.theme);
}
else
{
this.setTheme('default');
}
// Defines an array of fonts to be shown in the font drop down.
this.fonts = new Object();
this.fonts["Arial"] = "Arial";
this.fonts["Courier"] = "Courier";
this.fonts["Impact"] = "Impact";
this.fonts["Tahoma"] = "Tahoma";
this.fonts["Times New Roman"] = "Times New Roman";
this.fonts["Trebuchet MS"] = "Trebuchet MS";
this.fonts["Verdana"] = "Verdana";
// An array of font sizes to be shown.
this.sizes = new Object();
this.sizes["xx-small"] = this.options.lang.size_xx_small;
this.sizes["x-small"] = this.options.lang.size_x_small;
this.sizes["small"] = this.options.lang.size_small;
this.sizes["medium"] = this.options.lang.size_medium;
this.sizes["large"] = this.options.lang.size_large;
this.sizes["x-large"] = this.options.lang.size_x_large;
this.sizes["xx-large"] = this.options.lang.size_xx_large;
// An array of colours to be shown.
this.colors = new Object();
this.colors[1] = "#800000";
this.colors[2] = "#8B4513";
this.colors[3] = "#006400";
this.colors[4] = "#2F4F4F";
this.colors[5] = "#000080";
this.colors[6] = "#4B0082";
this.colors[7] = "#800080";
this.colors[8] = "#000000";
this.colors[9] = "#FF0000";
this.colors[10] = "#DAA520";
this.colors[11] = "#6B8E23";
this.colors[12] = "#708090";
this.colors[13] = "#0000CD";
this.colors[14] = "#483D8B";
this.colors[15] = "#C71585";
this.colors[16] = "#696969";
this.colors[17] = "#FF4500";
this.colors[18] = "#FFA500";
this.colors[19] = "#808000";
this.colors[20] = "#4682B4";
this.colors[21] = "#1E90FF";
this.colors[22] = "#9400D3";
this.colors[23] = "#FF1493";
this.colors[24] = "#A9A9A9";
this.colors[25] = "#FF6347";
this.colors[26] = "#FFD700";
this.colors[27] = "#32CD32";
this.colors[28] = "#87CEEB";
this.colors[29] = "#00BFFF";
this.colors[30] = "#9370DB";
this.colors[31] = "#FF69B4";
this.colors[32] = "#DCDCDC";
this.colors[33] = "#FFDAB9";
this.colors[34] = "#FFFFE0";
this.colors[35] = "#98FB98";
this.colors[36] = "#E0FFFF";
this.colors[37] = "#87CEFA";
this.colors[38] = "#E6E6FA";
this.colors[39] = "#DDA0DD";
this.colors[40] = "#FFFFFF";
// An array of video services to be shown (youtube, vimeo, etc)
this.videos = new Object();
this.videos["dailymotion"] = this.options.lang.video_dailymotion;
this.videos["googlevideo"] = this.options.lang.video_googlevideo;
this.videos["metacafe"] = this.options.lang.video_metacafe;
this.videos["myspacetv"] = this.options.lang.video_myspacetv;
this.videos["vimeo"] = this.options.lang.video_vimeo;
this.videos["yahoo"] = this.options.lang.video_yahoo;
this.videos["youtube"] = this.options.lang.video_youtube;
// Here we get the ID of the textarea we're replacing and store it.
this.textarea = textarea;
// Only swap it over once the page has loaded (add event)
if(MyBB.page_loaded == 1)
{
this.showEditor();
}
else
{
Event.observe(document, "dom:loaded", this.showEditor.bindAsEventListener(this));
}
},
showEditor: function()
{
// Assign the old textarea to a variable for later use.
oldTextarea = $(this.textarea);
// Now this.textarea becomes the new textarea ID
this.textarea += "_new";
// Begin the creation of our new editor.
this.editor = document.createElement("div");
this.editor.style.position = "relative";
this.editor.style.display = "none";
this.editor.className = "messageEditor";
// Append the new editor
oldTextarea.parentNode.insertBefore(this.editor, oldTextarea);
// Determine the overall height and width - messy, but works
w = oldTextarea.getDimensions().width+"px";
if(!w || parseInt(w) < 400)
{
w = "400px";
}
if(this.options && this.options.height)
{
h = this.options.height;
}
else if(oldTextarea.offsetHeight)
{
h = oldTextarea.offsetHeight+"px";
}
else if(oldTextarea.clientHeight)
{
h = oldTextarea.clientHeight+"px";
}
else if(oldTextarea.style.height)
{
h = oldTextarea.style.height;
}
else
{
h = "400px";
}
this.editor.style.width = w;
this.editor.style.height = h;
this.createToolbarContainer('top');
this.createToolbar('closetags', {
container: 'top',
alignment: 'right',
items: [
{type: 'button', name: 'close_tags', insert: 'zzzz', sprite: 'close_tags', width: 80, style: {visibility: 'hidden'}}
]
});
this.createToolbar('topformatting', {
container: 'top',
items: [
{type: 'dropdown', name: 'font', insert: 'font', title: this.options.lang.font, options: this.fonts},
{type: 'dropdown', name: 'size', insert: 'size', title: this.options.lang.size, options: this.sizes},
{type: 'button', name: 'color', insert: 'color', dropdown: true, color_select: true, image: 'color.gif', draw_option: this.drawColorOption, options: this.colors},
{type: 'button', name: 'spoiler', sprite: 'spoiler', insert: 'spoiler', title: 'Envuelve en spoiler'},
{type: 'button', name: 'fieldset', sprite: 'fieldset', insert: 'fieldset', title: 'Envuelve en fieldset'}
]
});
this.createToolbarContainer('bottom');
this.createToolbar('insertables', {
container: 'bottom',
alignment: 'right',
items: [
{type: 'button', name: 'list_num', sprite: 'list_num', insert: 'list', extra: 1, title: this.options.lang.title_numlist},
{type: 'button', name: 'list_bullet', sprite: 'list_bullet', insert: 'list', title: this.options.lang.title_bulletlist},
{type: 'separator'},
{type: 'button', name: 'img', sprite: 'image', insert: 'image', extra: 1, title: this.options.lang.title_image},
{type: 'button', name: 'url', sprite: 'link', insert: 'url', title: this.options.lang.title_hyperlink},
{type: 'button', name: 'email', sprite: 'email', insert: 'email', extra: 1, title: this.options.lang.title_email},
{type: 'separator'},
{type: 'button', name: 'quote', sprite: 'quote', insert: 'quote', title: this.options.lang.title_quote},
{type: 'button', name: 'code', sprite: 'code', insert: 'code', title: this.options.lang.title_code},
{type: 'button', name: 'php', sprite: 'php', insert: 'php', title: this.options.lang.title_php},
{type: 'button', name: 'video', insert: 'video', image: 'television.gif', dropdown: true, title: this.options.lang.title_video, options: this.videos}
]
});
this.createToolbar('formatting', {
container: 'bottom',
items: [
{type: 'button', name: 'b', sprite: 'bold', insert: 'b', title: this.options.lang.title_bold},
{type: 'button', name: 'i', sprite: 'italic', insert: 'i', title: this.options.lang.title_italic},
{type: 'button', name: 'u', sprite: 'underline', insert: 'u', title: this.options.lang.title_underline},
{type: 'separator'},
{type: 'button', name: 'align_left', sprite: 'align_left', insert: 'align', extra: 'left', title: this.options.lang.title_left},
{type: 'button', name: 'align_center', sprite: 'align_center', insert: 'align', extra: 'center', title: this.options.lang.title_center},
{type: 'button', name: 'align_right', sprite: 'align_right', insert: 'align', extra: 'right', title: this.options.lang.title_right},
{type: 'button', name: 'align_justify', sprite: 'align_justify', insert: 'align', extra: 'justify', title: this.options.lang.title_justify}
]
});
// Create our new text area
areaContainer = document.createElement("div");
areaContainer.style.clear = "both";
// Set the width/height of the area
subtract = 20;
subtract2 = 12;
areaContainer.style.height = parseInt(Element.getDimensions(this.editor).height)-this.toolbarHeight-subtract+"px";
areaContainer.style.width = parseInt(Element.getDimensions(this.editor).width)-subtract2+"px";
// Create text area
textInput = document.createElement("textarea");
textInput.setAttribute("cols", oldTextarea.getAttribute("cols"));
textInput.setAttribute("rows", oldTextarea.getAttribute("rows"));
textInput.id = this.textarea;
textInput.name = oldTextarea.name+"_new";
textInput.style.height = parseInt(areaContainer.style.height)+"px";
textInput.style.width = parseInt(areaContainer.style.width)+"px";
if(oldTextarea.value != '')
{
textInput.value = oldTextarea.value;
}
if(oldTextarea.tabIndex)
{
textInput.tabIndex = oldTextarea.tabIndex;
}
areaContainer.appendChild(textInput);
this.editor.appendChild(areaContainer);
if(oldTextarea.form)
{
Event.observe(oldTextarea.form, "submit", this.closeTags.bindAsEventListener(this));
Event.observe(oldTextarea.form, "submit", this.updateOldArea.bindAsEventListener(this));
}
// Hide the old editor
oldTextarea.style.visibility = "hidden";
oldTextarea.style.position = "absolute";
oldTextarea.style.top = "-1000px";
oldTextarea.id += "_old";
this.oldTextarea = oldTextarea;
this.editor.style.display = "";
Event.observe(textInput, "keyup", this.updateOldArea.bindAsEventListener(this));
if(MyBB.browser == 'ie') {
Event.observe($(this.textarea), 'focus', function() {
this.trackingCaret = true;
}.bindAsEventListener(this));
Event.observe($(this.textarea), 'blur', function() {
this.trackingCaret = false;
}.bindAsEventListener(this));
Event.observe($(this.textarea), 'mousedown', function() {
this.trackingCaret = true;
this.storeCaret();
}.bindAsEventListener(this));
}
Event.observe(textInput, "blur", this.updateOldArea.bindAsEventListener(this));
},
drawColorOption: function(option)
{
var item = document.createElement('li');
item.extra = option.value;
item.className = 'editor_dropdown_color_item';
item.innerHTML = '<a style="background-color: '+option.value+'"></a>';
return item;
},
createToolbarContainer: function(name)
{
if($('editor_toolbar_container_'+name)) return;
var container = document.createElement("div");
container.id = 'editor_toolbar_container_'+name;
container.className = 'toolbar_container';
this.editor.appendChild(container);
this.toolbarHeight += 28;
return container;
},
createToolbar: function(name, options)
{
if(typeof(options.container) == 'undefined')
{
options.container = this.createToolbarContainer('auto_'+name);
}
else {
options.container = $('editor_toolbar_container_'+options.container);
if(!options.container) return;
}
if($('editor_toolbar_'+name)) return;
var toolbar = document.createElement('div');
toolbar.id = 'editor_toolbar_'+name;
toolbar.className = 'toolbar';
var clear = document.createElement('br');
clear.style.clear = 'both';
toolbar.appendChild(clear);
if(options.alignment && options.alignment == 'right') {
toolbar.className += ' float_right';
}
options.container.appendChild(toolbar);
if(typeof(options.items) == 'object') {
for(var i = 0; i < options.items.length; ++i) {
this.addToolbarItem(toolbar, options.items[i]);
}
}
// add closing item
if(toolbar.lastChild.previousSibling)
toolbar.lastChild.previousSibling.className += ' toolbar_button_group_last';
},
setElementState: function(element, state) {
element.addClassName('toolbar_'+state);
if(element.hasClassName('toolbar_button_group_first')) {
if(state == 'clicked') {
append = 'toolbar_clicked';
}
else if(state == 'hover') {
append = 'toolbar_hover';
}
append += '_button_group_first';
element.addClassName(append);
}
if(element.hasClassName('toolbar_button_group_last')) {
if(state == 'clicked') {
append = 'toolbar_clicked';
}
else if(state == 'hover') {
append = 'toolbar_hover';
}
append += '_button_group_last';
element.addClassName(append);
}
},
removeElementState: function(element, state)
{
element.removeClassName('toolbar_'+state);
if(element.hasClassName('toolbar_button_group_first')) {
if(state == 'clicked') {
append = 'toolbar_clicked';
}
else if(state == 'hover') {
append = 'toolbar_hover';
}
append += '_button_group_first';
element.removeClassName(append);
}
if(element.hasClassName('toolbar_button_group_last')) {
if(state == 'clicked') {
append = 'toolbar_clicked';
}
else if(state == 'hover') {
append = 'toolbar_hover';
}
append += '_button_group_last';
element.removeClassName(append);
}
},
dropDownMenuItemClick: function(e)
{
this.restartEditorSelection();
element = Event.element(e);
if(!element)
return;
if(!element.extra)
element = element.up('li');
var mnu = element.up('ul');
var dropdown = this.getElementToolbarItem(mnu);
var label = dropdown.down('.editor_dropdown_label');
if(!dropdown.insertText || (mnu.activeItem && mnu.activeItem == element))
return;
mnu.lastItemValue = element.extra;
this.insertMyCode(dropdown.insertText, element.extra);
if(this.getSelectedText($(this.textarea)))
{
this.setDropDownMenuActiveItem(dropdown, 0);
}
else
{
if(label)
{
label.innerHTML = element.innerHTML;
label.style.overflow = 'hidden';
}
var sel_color = dropdown.down('.editor_button_color_selected')
if(sel_color)
{
sel_color.style.backgroundColor = element.extra;
var use_default = dropdown.down('.editor_dropdown_color_item_default');
if(use_default) use_default.style.display = '';
}
mnu.activeItem = element;
element.addClassName('editor_dropdown_menu_item_active');
}
this.hideOpenDropDownMenu();
Event.stop(e);
},
setDropDownMenuActiveItem: function(element, index)
{
if(element == null)
{
return;
}
var mnu = element.down('ul');
var label = element.down('.editor_dropdown_label');
if(mnu.activeItem)
{
mnu.activeItem.removeClassName('editor_dropdown_menu_item_active');
mnu.activeItem = null;
}
if(index > 0)
{
var item = mnu.childNodes[index];
if(!item) return;
mnu.activeItem = item;
if(label)
{
label.innerHTML = item.innerHTML;
}
var sel_color = element.down('.editor_dropdown_color_selected')
if(sel_color)
{
sel_color.style.backgroundColor = item.style.backgroundColor;
mnu.lastItemValue = item.insertExtra;
var use_default = element.down('.editor_dropdown_color_item_default');
if(use_default) use_default.style.display = '';
}
item.addClassName('editor_dropdown_menu_item_active');
}
else
{
if(label)
{
label.innerHTML = mnu.childNodes[0].innerHTML;
}
var sel_color = element.down('.editor_button_color_selected')
if(sel_color)
{
//sel_color.style.backgroundColor = '';
var use_default = element.down('.editor_dropdown_color_item_default');
if(use_default) use_default.style.display = 'none';
}
this.removeElementState(element, 'clicked');
}
},
createDropDownMenu: function(options)
{
var dropdown = document.createElement('div');
dropdown.itemType = options.type;
if(options.image || options.sprite)
dropdown.className = 'toolbar_dropdown_image';
else
dropdown.className = 'toolbar_dropdown';
dropdown.className += ' editor_dropdown toolbar_dropdown_'+options.name;
dropdown.id = 'editor_item_'+options.name;
Event.observe(dropdown, 'mouseover', function()
{
this.storeCaret();
dropdown.addClassName('toolbar_dropdown_over');
}.bindAsEventListener(this));
Event.observe(dropdown, 'mouseout', function()
{
this.storeCaret();
dropdown.removeClassName('toolbar_dropdown_over');
}.bindAsEventListener(this));
dropdown.insertText = options.insert;
// create the dropdown label container
var label = document.createElement('div');
label.className = 'editor_dropdown_label';
if(options.title)
{
label.innerHTML = options.title;
}
else
{
label.innerHTML = ' ';
}
dropdown.appendChild(label)
// create the arrow
var arrow = document.createElement('div');
arrow.className = 'editor_dropdown_arrow';
dropdown.appendChild(arrow);
// create the menu item container
var mnu = this.buildDropDownMenu(options);
Event.observe(dropdown, 'click', this.toggleDropDownMenu.bindAsEventListener(this));
dropdown.appendChild(mnu);
return dropdown;
},
buildDropDownMenu: function(options)
{
var mnu = document.createElement('ul');
mnu.className = 'editor_dropdown_menu';
mnu.style.display = 'none';
// create the first item
if(options.title)
{
var item = document.createElement('li');
item.className = 'editor_dropdown_menu_title';
item.innerHTML = options.title;
mnu.appendChild(item);
Event.observe(item, 'click', function()
{
if(mnu.activeItem)
{
this.restartEditorSelection();
this.insertMyCode(dropdown.insertText, '-');
}
this.setDropDownMenuActiveItem(dropdown, 0);
}.bindAsEventListener(this));
}
$H(options.options).each(function(option)
{
if(options.draw_option)
{
item = options.draw_option(option)
}
else
{
var item = document.createElement('li');
item.innerHTML = option.value;
var content = document.createElement('span');
item.appendChild(content);
item.extra = option.key;
}
Event.observe(item, 'click', this.dropDownMenuItemClick.bindAsEventListener(this));
Event.observe(item, 'mouseover', function()
{
item.addClassName('editor_dropdown_menu_item_over');
});
Event.observe(item, 'mouseout', function()
{
item.removeClassName('editor_dropdown_menu_item_over');
});
mnu.appendChild(item);
}, this);
return mnu;
},
toggleDropDownMenu: function(e)
{
element = Event.element(e);
if(!element)
return;
if(!element.itemType)
element = this.getElementToolbarItem(element);
var mnu = $(element).down('ul');
// This menu is already open, close it
if(mnu.style.display != 'none')
{
mnu.style.display = 'none';
element.removeClassName('editor_dropdown_menu_open');
this.removeElementState(element, 'clicked');
this.openDropDownMenu = null;
Event.stopObserving(document, 'click', this.hideOpenDropDownMenu.bindAsEventListener(this));
}
// Opening this menu
else
{
// If a menu is already open, close it first
this.showDropDownMenu(mnu);
}
this.removeElementState(element, 'clicked');
Event.stop(e);
},
showDropDownMenu: function(mnu)
{
this.hideOpenDropDownMenu();
mnu.style.display = '';
element = this.getElementToolbarItem(mnu);
element.addClassName('editor_dropdown_menu_open');
this.setElementState(element, 'clicked');
this.openDropDownMenu = mnu;
Event.observe(document, 'click', this.hideOpenDropDownMenu.bindAsEventListener(this));
},
hideOpenDropDownMenu: function()
{
if(!this.openDropDownMenu) return;
this.openDropDownMenu.style.display = 'none';
this.getElementToolbarItem(this.openDropDownMenu).removeClassName('editor_dropdown_menu_open');
var dropDown = this.getElementToolbarItem(this.openDropDownMenu);
this.removeElementState(element, 'clicked');
this.openDropDownMenu = null;
Event.stopObserving(document, 'click', this.hideOpenDropDownMenu.bindAsEventListener(this));
},
getElementToolbarItem: function(elem)
{
var parent = elem;
do {
if(parent.insertText) return parent;
parent = parent.parentNode;
} while($(parent));
return false;
},
storeCaret: function()
{
if(MyBB.browser != 'ie' || !this.trackingCaret)
{
return;
}
// Internet explorer errors if you try and select an element... so just handle that by try catch
try {
var range = document.selection.createRange();
var range_all = document.body.createTextRange();
range_all.moveToElementText($(this.textarea));
for(var sel_start = 0; range_all.compareEndPoints('StartToStart', range) < 0; sel_start++)
range_all.moveStart('character', 1);
var range_all = document.body.createTextRange();
range_all.moveToElementText($(this.textarea));
for(var sel_end = 0; range_all.compareEndPoints('StartToEnd', range) < 0; sel_end++)
range_all.moveStart('character', 1);
this.lastCaretS = sel_start;
this.lastCaretE = sel_end;
} catch(e) { }
},
restartEditorSelection: function()
{
if(MyBB.browser != 'ie')
{
return;
}
var range = $(this.textarea).createTextRange();
range.collapse(true);
range.moveStart('character', this.lastCaretS);
range.moveEnd('character', this.lastCaretE - this.lastCaretS);
range.select();
},
addToolbarItem: function(toolbar, options)
{
if(typeof(toolbar) == 'string')
{
toolbar = $('editor_toolbar_'+toolbar);
}
if(!$(toolbar)) return;
// Does this item already exist?
if($('editor_item_'+options.name)) return;
insert_first_class = false;
// Is this the first item? childnodes = 1 (closing br) or lastchild.previousSibling = sep
if(toolbar.childNodes.length == 1 || (toolbar.lastChild.previousSibling && toolbar.lastChild.previousSibling.className.indexOf('toolbar_sep') > -1 || (toolbar.lastChild.previousSibling.className.indexOf('editor_dropdown') > -1 && options.type != 'dropdown')))
{
insert_first_class = true;
}
if(options.type == "dropdown")
{
var dropdown = this.createDropDownMenu(options);
if(dropdown)
toolbar.insertBefore(dropdown, toolbar.lastChild);
if(insert_first_class == true)
dropdown.className += ' toolbar_dropdown_group_first';
}
else if(options.type == 'button')
{
var button = this.createToolbarButton(options)
toolbar.insertBefore(button, toolbar.lastChild);
if(insert_first_class == true)
button.className += ' toolbar_button_group_first';
}
else if(options.type == 'separator')
{
if(toolbar.lastChild.previousSibling && !$(toolbar.lastChild.previousSibling).hasClassName('toolbar_dropdown'))
{
toolbar.lastChild.previousSibling.className += ' toolbar_button_group_last';
}
var separator = document.createElement("span");
separator.itemType = options.type;
separator.className = "toolbar_sep";
toolbar.insertBefore(separator, toolbar.lastChild);
}
},
createToolbarButton: function(options)
{
var button = document.createElement('span');
button.itemType = options.type;
button.id = 'editor_item_'+options.name;
if(typeof(options.title) != 'undefined')
{
button.title = options.title;
}
button.className = 'toolbar_button toolbar_normal toolbar_button_'+options.name;
if(typeof(options.style) == 'object')
{
$H(options.style).each(function(item) {
eval('button.style.'+item.key+' = "'+item.value+'";');
});
}
button.insertText = options.insert;
button.insertExtra = '';
if(typeof(options.extra) != 'undefined')
button.insertExtra = options.extra;
if(typeof(options.sprite) != 'undefined')
{
var img = document.createElement('span');
img.className = 'toolbar_sprite toolbar_sprite_'+options.sprite;
}
else
{
var img = document.createElement('img');
img.src = this.themePath + "/images/" + options.image;
}
button.appendChild(img);
if(options.dropdown)
{
if(options.color_select == true)
{
var sel = document.createElement('em');
sel.className = 'editor_button_color_selected';
button.appendChild(sel);
}
// create the arrow
var arrow = document.createElement('u');
arrow.className = 'toolbar_button_arrow';
button.appendChild(arrow);
button.className += ' toolbar_button_with_arrow';
}
var end = document.createElement('strong');
button.appendChild(end);
// Create the actual drop down menu
if(options.dropdown)
{
// create the menu item container
var mnu = this.buildDropDownMenu(options);
Event.observe(arrow, 'click', this.toggleDropDownMenu.bindAsEventListener(this));
Event.observe(button, 'click', this.toggleDropDownMenu.bindAsEventListener(this));
Event.observe(arrow, 'mouseover', function(e)
{
elem = Event.element(e);
if(!elem) return;
elem.parentNode.addClassName('toolbar_button_over_arrow');
});
Event.observe(arrow, 'mouseout', function(e)
{
elem = Event.element(e);
if(!elem) return;
elem.parentNode.removeClassName('toolbar_button_over_arrow');
});
button.appendChild(mnu);
button.dropdown = true;
button.menu = mnu;
}
// Does this button have enabled/disabled states?
if(options.disabled_img || options.disabled_sprite)
{
button.disable = function()
{
if(button.disabled == true) return;
if(options.disabled_sprite)
{
img.removeClassName('toolbar_sprite_'+options.sprite);
img.addClassName('toolbar_sprite_disabled_'+options.disabled_sprite);
}
else
img.src = this.themePath + '/images/' + options.disabled_img;
button.disabled = true;
};
button.enable = function()
{
if(!button.disabled) return;
if(options.disabled_sprite)
{
img.removeClassName('toolbar_sprite_disabled_'+options.disabled_sprite);
img.addClassName('toolbar_sprite_'+options.sprite);
}
else
img.src = this.themePath + '/images/' + options.image;
button.enabled = true;
};
if(options.disabled && options.disabled == true)
{
button.disable();
button.disabled = true;
}
else
button.disabled = false;
}
Event.observe(button, "mouseover", this.toolbarItemHover.bindAsEventListener(this));
Event.observe(button, "mouseout", this.toolbarItemOut.bindAsEventListener(this));
if(!options.dropdown)
{
// Dropdown event listener is above...
Event.observe(button, "click", this.toolbarItemClick.bindAsEventListener(this));
}
return button;
},
updateOldArea: function(e)
{
this.oldTextarea.value = $(this.textarea).value;
},
toolbarItemOut: function(e)
{
this.storeCaret();
element = Event.element(e);
if(!element)
return false;
if(!element.itemType)
element = this.getElementToolbarItem(element);
if(element.disabled)
return;
if(typeof(element.insertText) != 'undefined')
{
if(element.insertExtra)
{
insertCode = element.insertText+"_"+element.insertExtra;
}
else
{
insertCode = element.insertText;
}
if(this.openTags.indexOf(insertCode) != -1 || element.className.indexOf('editor_dropdown_menu_open') > -1)
{
this.setElementState(element, 'clicked');
}
}
this.removeElementState(element, 'hover');
},
toolbarItemHover: function(e)
{
this.storeCaret();
element = Event.element(e);
if(!element)
return false;
if(!element.itemType)
element = this.getElementToolbarItem(element);
if(element.disabled)
return;
if(!element.className || element.className.indexOf('toolbar_clicked') == -1)
this.setElementState(element, 'hover');
},
toolbarItemClick: function(e)
{
element = Event.element(e);
if(!element)
return false;
if(!element.itemType)
element = this.getElementToolbarItem(element);
if(element.disabled)
return;
if(element.dropdown && element.menu)
{
if(typeof(element.menu.activeItem) != "undefined")
{
Event.stop(e);
if(!element.menu.lastItemValue)
{
this.showDropDownMenu(element.menu);
}
else
{
this.insertMyCode(element.insertText, element.menu.lastItemValue);
}
return;
}
}
if(element.id == "editor_item_close_tags")
{
this.closeTags();
}
else
{
if(typeof(element.insertExtra) != 'undefined')
this.insertMyCode(element.insertText, element.insertExtra);
else
this.insertMyCode(element.insertText);
}
},
insertList: function(type)
{
list = "";
do
{
listItem = prompt(this.options.lang.enter_list_item, "");
if(listItem != "" && listItem != null)
{
list = list+"[*]"+listItem+"\n";
}
}
while(listItem != "" && listItem != null);
if(list == "")
{
return false;
}
if(type)
{
list = "[list="+type+"]\n"+list;
}
else
{
list = "[list]\n"+list;
}
list = list+"[/list]\n";
this.performInsert(list, "", true, false);
},
insertURL: function()
{
selectedText = this.getSelectedText($(this.textarea));
url = prompt(this.options.lang.enter_url, "http://");
if(url)
{
if(!selectedText)
{
title = prompt(this.options.lang.enter_url_title, "");
}
else
{
title = selectedText;
}
if(title)
{
this.performInsert("[url="+url+"]"+title+"[/url]", "", true, false);
}
else
{
this.performInsert("[url]"+url+"[/url]", "", true, false);
}
}
},
insertEmail: function()
{
selectedText = this.getSelectedText($(this.textarea));
email = prompt(this.options.lang.enter_email, "");
if(email)
{
if(!selectedText)
{
title = prompt(this.options.lang.enter_email_title, "");
}
else
{
title = selectedText;
}
if(title)
{
this.performInsert("[email="+email+"]"+title+"[/email]", "", true, false);
}
else
{
this.performInsert("[email]"+email+"[/email]", "", true, false);
}
}
},
insertIMG: function()
{
image = prompt(this.options.lang.enter_image, "http://");
if(image)
{
this.performInsert("[img]"+image+"[/img]", "", true);
}
},
insertVideo: function(type)
{
selectedText = this.getSelectedText($(this.textarea));
if(!selectedText)
{
url = prompt(this.options.lang.enter_video_url, "http://");
}
else
{
url = selectedText;
}
if(url)
{
this.performInsert("[video="+type+"]"+url+"[/video]", "", true, false);
}
this.setDropDownMenuActiveItem($('editor_item_video'), 0);
},
insertMyCode: function(code, extra)
{
this.restartEditorSelection();
switch(code)
{
case "list":
this.insertList(extra);
break;
case "url":
this.insertURL();
break;
case "image":
this.insertIMG();
break;
case "email":
this.insertEmail();
break;
case "video":
this.insertVideo(extra);
break;
default:
var already_open = false;
var no_insert = false;
if(extra)
{
var full_tag = code+"_"+extra;
}
else
{
var full_tag = code;
}
var newTags = new Array();
this.openTags.each(function(tag)
{
exploded_tag = tag.split("_");
if(exploded_tag[0] == code)
{
already_open = true;
this.performInsert("[/"+exploded_tag[0]+"]", "", false);
var elem = $('editor_item_'+exploded_tag[0]);
if(elem)
{
this.removeElementState(elem, 'clicked');
}
if(elem && (elem.itemType == "dropdown" || elem.dropdown || elem.menu))
{
this.setDropDownMenuActiveItem(elem, 0);
}
if(tag == full_tag)
{
no_insert = true;
}
}
else
{
newTags[newTags.length] = tag;
}
}.bind(this));
this.openTags = newTags;
var do_insert = false;
if(extra != "" && extra != "-" && no_insert == false)
{
start_tag = "["+code+"="+extra+"]";
end_tag = "[/"+code+"]";
do_insert = true;
}
else if(!extra && already_open == false)
{
start_tag = "["+code+"]";
end_tag = "[/"+code+"]";
do_insert = true;
}
if(do_insert == true)
{
if(!this.performInsert(start_tag, end_tag, true))
{
this.openTags.push(full_tag);
$('editor_item_close_tags').style.visibility = '';
}
else if($('editor_item_'+full_tag))
{
this.removeElementState($('editor_item_'+full_tag), 'clicked');
}
else if($('editor_item_'+code))
{
elem = $('editor_item_'+code);
if(elem.type == "dropdown" || elem.dropdown || elem.menu)
this.setDropDownMenuActiveItem($('editor_item_'+start_tag), 0);
}
}
}
if(this.openTags.length == 0)
{
$('editor_item_close_tags').style.visibility = 'hidden';
}
},
getSelectedText: function(element)
{
element.focus();
if(document.selection)
{
var selection = document.selection;
var range = selection.createRange();
if((selection.type == "Text" || selection.type == "None") && range != null)
{
return range.text;
}
}
else if(element.selectionEnd)
{
var select_start = element.selectionStart;
var select_end = element.selectionEnd;
if(select_end <= 0)
{
select_end = element.textLength;
}
var start = element.value.substring(0, select_start);
var middle = element.value.substring(select_start, select_end);
return middle;
}
},
performInsert: function(open_tag, close_tag, is_single, ignore_selection)
{
var is_closed = true;
if(!ignore_selection)
{
var ignore_selection = false;
}
if(!close_tag)
{
var close_tag = "";
}
var textarea = $(this.textarea);
textarea.focus();
if(document.selection)
{
var selection = document.selection;
var range = selection.createRange();
if(ignore_selection != false)
{
selection.collapse;
}
if((selection.type == "Text" || selection.type == "None") && range != null && ignore_selection != true)
{
if(close_tag != "" && range.text.length > 0)
{
var keep_selected = true;
range.text = open_tag+range.text+close_tag;
}
else
{
var keep_selected = false;
if(is_single)
{
is_closed = false;
}
range.text = open_tag;
}
range.select();
}
else
{
textarea.value += open_tag;
}
}
else if(typeof(textarea.selectionEnd) != 'undefined')
{
var select_start = textarea.selectionStart;
var select_end = textarea.selectionEnd;
var scroll_top = textarea.scrollTop;
var start = textarea.value.substring(0, select_start);
var middle = textarea.value.substring(select_start, select_end);
var end = textarea.value.substring(select_end, textarea.textLength);
if(select_end - select_start > 0 && ignore_selection != true && close_tag != "")
{
var keep_selected = true;
middle = open_tag+middle+close_tag;
}
else
{
var keep_selected = false;
if(is_single)
{
is_closed = false;
}
middle = open_tag;
}
textarea.value = start+middle+end;
if(keep_selected == true && ignore_selection != true)
{
textarea.selectionStart = select_start;
textarea.selectionEnd = select_start + middle.length;
}
else if(ignore_selection != true)
{
textarea.selectionStart = select_start + middle.length;
textarea.selectionEnd = textarea.selectionStart;
}
textarea.scrollTop = scroll_top;
}
else
{
textarea.value += open_tag;
if(is_single)
{
is_closed = false;
}
}
this.updateOldArea();
textarea.focus();
this.trackingCaret = true;
this.storeCaret();
this.trackingCaret = false;
return is_closed;
},
closeTags: function()
{
if(this.openTags[0])
{
while(this.openTags[0])
{
tag = this.openTags.pop();
exploded_tag = tag.split("_");
this.performInsert("[/"+exploded_tag[0]+"]", "", false);
if($('editor_item_'+exploded_tag[0]))
{
tag = $('editor_item_'+exploded_tag[0]);
}
else
{
tag = $('editor_item_'+tag);
}
if(tag)
{
if(tag.itemType == "dropdown" || tag.dropdown || tag.menu)
{
this.setDropDownMenuActiveItem(tag, 0);
}
else
{
this.removeElementState(tag, 'clicked');
}
}
}
}
$(this.textarea).focus();
$('editor_item_close_tags').style.visibility = 'hidden';
this.openTags = new Array();
},
bindSmilieInserter: function(id)
{
if(!$(id))
{
return false;
}
var smilies = $(id).select('.smilie');
if(smilies.length > 0)
{
smilies.each(function(smilie)
{
smilie.onclick = this.insertSmilie.bindAsEventListener(this);
smilie.style.cursor = "pointer";
}.bind(this));
}
},
openGetMoreSmilies: function(editor)
{
MyBB.popupWindow('misc.php?action=smilies&popup=true&editor='+editor, 'sminsert', 240, 280);
},
insertSmilie: function(e)
{
element = Event.element(e);
if(!element || !element.alt)
{
return false;
}
this.performInsert(element.alt, "", true, false);
},
insertAttachment: function(aid)
{
this.performInsert("[attachment="+aid+"]", "", true, false);
}
};
ya sale los botos.
ahora enves que salga las imagenes que subi todo al respecto lo que dice m la guia.
sale una "B"
no se por que si todas las imagenes " las 2 " les e subido correctamente
no se por q sale esa " B"
aca una imagen.
http://img233.imageshack.us/img233/1001/dibujoeli.png
ahora enves que salga las imagenes que subi todo al respecto lo que dice m la guia.
sale una "B"
no se por que si todas las imagenes " las 2 " les e subido correctamente
no se por q sale esa " B"
aca una imagen.
http://img233.imageshack.us/img233/1001/dibujoeli.png
Cambia a usar el editor 2007 en el Panel de administración > Estilos y plantillas > Estilos > Tu theme