diff options
Diffstat (limited to 'wiki/lib/scripts/toolbar.js')
-rw-r--r-- | wiki/lib/scripts/toolbar.js | 282 |
1 files changed, 0 insertions, 282 deletions
diff --git a/wiki/lib/scripts/toolbar.js b/wiki/lib/scripts/toolbar.js deleted file mode 100644 index b766f8b..0000000 --- a/wiki/lib/scripts/toolbar.js +++ /dev/null @@ -1,282 +0,0 @@ -// used to identify pickers -var pickercounter=0; - -/** - * Create a toolbar - * - * @param string tbid ID of the element where to insert the toolbar - * @param string edid ID of the editor textarea - * @param array tb Associative array defining the buttons - * @param bool allowblock Allow buttons creating multiline content - * @author Andreas Gohr <andi@splitbrain.org> - */ -function initToolbar(tbid,edid,tb, allowblock){ - var $toolbar, $edit; - if (typeof tbid == 'string') { - $toolbar = jQuery('#' + tbid); - } else { - $toolbar = jQuery(tbid); - } - - $edit = jQuery('#' + edid); - - if ($toolbar.length == 0 || $edit.length == 0 || $edit.attr('readOnly')) { - return; - } - - if (typeof allowblock === 'undefined') { - allowblock = true; - } - - //empty the toolbar area: - $toolbar.html(''); - - jQuery.each(tb, function (k, val) { - if (!tb.hasOwnProperty(k) || (!allowblock && val.block === true)) { - return; - } - var actionFunc, $btn; - - // create new button (jQuery object) - $btn = jQuery(createToolButton(val.icon, val.title, val.key, val.id, - val['class'])); - - // type is a tb function -> assign it as onclick - actionFunc = 'tb_'+val.type; - if( jQuery.isFunction(window[actionFunc]) ){ - $btn.on('click', bind(window[actionFunc],$btn,val,edid) ); - $toolbar.append($btn); - return; - } - - // type is a init function -> execute it - actionFunc = 'addBtnAction'+val.type.charAt(0).toUpperCase()+val.type.substring(1); - if( jQuery.isFunction(window[actionFunc]) ){ - var pickerid = window[actionFunc]($btn, val, edid); - if(pickerid !== ''){ - $toolbar.append($btn); - $btn.attr('aria-controls', pickerid); - if (actionFunc === 'addBtnActionPicker') { - $btn.attr('aria-haspopup', 'true'); - } - } - return; - } - - alert('unknown toolbar type: '+val.type+' '+actionFunc); - }); -} - -/** - * Button action for format buttons - * - * @param DOMElement btn Button element to add the action to - * @param array props Associative array of button properties - * @param string edid ID of the editor textarea - * @author Gabriel Birke <birke@d-scribe.de> - * @author Andreas Gohr <andi@splitbrain.org> - */ -function tb_format(btn, props, edid) { - var sample = props.sample || props.title; - insertTags(edid, - fixtxt(props.open), - fixtxt(props.close), - fixtxt(sample)); - pickerClose(); - return false; -} - -/** - * Button action for format buttons - * - * This works exactly as tb_format() except that, if multiple lines - * are selected, each line will be formatted seperately - * - * @param DOMElement btn Button element to add the action to - * @param array props Associative array of button properties - * @param string edid ID of the editor textarea - * @author Gabriel Birke <birke@d-scribe.de> - * @author Andreas Gohr <andi@splitbrain.org> - */ -function tb_formatln(btn, props, edid) { - var sample = props.sample || props.title, - opts, - selection = DWgetSelection(jQuery('#'+edid)[0]); - - sample = fixtxt(sample); - props.open = fixtxt(props.open); - props.close = fixtxt(props.close); - - // is something selected? - if(selection.getLength()){ - sample = selection.getText(); - opts = {nosel: true}; - }else{ - opts = { - startofs: props.open.length, - endofs: props.close.length - }; - } - - sample = sample.split("\n").join(props.close+"\n"+props.open); - sample = props.open+sample+props.close; - - pasteText(selection,sample,opts); - - pickerClose(); - return false; -} - -/** - * Button action for insert buttons - * - * @param DOMElement btn Button element to add the action to - * @param array props Associative array of button properties - * @param string edid ID of the editor textarea - * @author Gabriel Birke <birke@d-scribe.de> - * @author Andreas Gohr <andi@splitbrain.org> - */ -function tb_insert(btn, props, edid) { - insertAtCarret(edid,fixtxt(props.insert)); - pickerClose(); - return false; -} - -/** - * Button action for the media popup - * - * @param DOMElement btn Button element to add the action to - * @param array props Associative array of button properties - * @param string edid ID of the editor textarea - * @author Andreas Gohr <andi@splitbrain.org> - */ -function tb_mediapopup(btn, props, edid) { - window.open( - DOKU_BASE+props.url+encodeURIComponent(NS)+'&edid='+encodeURIComponent(edid), - props.name, - props.options); - return false; -} - -/** - * Button action for automatic headlines - * - * Insert a new headline based on the current section level - * - * @param DOMElement btn Button element to add the action to - * @param array props Associative array of button properties - * @param string edid ID of the editor textarea - * @author Andreas Gohr <andi@splitbrain.org> - */ -function tb_autohead(btn, props, edid){ - var lvl = currentHeadlineLevel(edid), - tags; - - // determine new level - lvl += props.mod; - if(lvl < 1) lvl = 1; - if(lvl > 5) lvl = 5; - - tags = (new Array(8 - lvl)).join('='); - insertTags(edid, tags+' ', ' '+tags+"\n", props.text); - pickerClose(); - return false; -} - - -/** - * Add button action for picker buttons and create picker element - * - * @param jQuery btn Button element to add the action to - * @param array props Associative array of button properties - * @param string edid ID of the editor textarea - * @return boolean If button should be appended - * @author Gabriel Birke <birke@d-scribe.de> - */ -function addBtnActionPicker($btn, props, edid) { - var pickerid = 'picker'+(pickercounter++); - var picker = createPicker(pickerid, props, edid); - jQuery(picker).attr('aria-hidden', 'true'); - - $btn.click( - function(e) { - pickerToggle(pickerid,$btn); - e.preventDefault(); - return ''; - } - ); - - return pickerid; -} - -/** - * Add button action for the link wizard button - * - * @param DOMElement btn Button element to add the action to - * @param array props Associative array of button properties - * @param string edid ID of the editor textarea - * @return boolean If button should be appended - * @author Andreas Gohr <gohr@cosmocode.de> - */ -function addBtnActionLinkwiz($btn, props, edid) { - dw_linkwiz.init(jQuery('#'+edid)); - jQuery($btn).click(function(e){ - dw_linkwiz.val = props; - dw_linkwiz.toggle(); - e.preventDefault(); - return ''; - }); - return 'link__wiz'; -} - - -/** - * Show/Hide a previously created picker window - * - * @author Andreas Gohr <andi@splitbrain.org> - */ -function pickerToggle(pickerid,$btn){ - var $picker = jQuery('#' + pickerid), - pos = $btn.offset(); - if ($picker.hasClass('a11y')) { - $picker.removeClass('a11y').attr('aria-hidden', 'false'); - } else { - $picker.addClass('a11y').attr('aria-hidden', 'true'); - } - var picker_left = pos.left + 3, - picker_width = $picker.width(), - window_width = jQuery(window).width(); - if (picker_width > 300) { - $picker.css("max-width", "300"); - picker_width = 300; - } - if ((picker_left + picker_width + 40) > window_width) { - picker_left = window_width - picker_width - 40; - } - if (picker_left < 0) { - picker_left = 0; - } - $picker.offset({left: picker_left, top: pos.top+$btn[0].offsetHeight+3}); -} - -/** - * Close all open pickers - * - * @author Andreas Gohr <andi@splitbrain.org> - */ -function pickerClose(){ - jQuery('.picker').addClass('a11y'); -} - - -/** - * Replaces \n with linebreaks - */ -function fixtxt(str){ - return str.replace(/\\n/g,"\n"); -} - -jQuery(function () { - initToolbar('tool__bar','wiki__text',toolbar); - jQuery('#tool__bar').attr('role', 'toolbar'); -}); |