Add script 'get-openssl-version.sh'.
This commit is contained in:
282
snippets/dokuwiki-2023-04-04/lib/scripts/toolbar.js
Normal file
282
snippets/dokuwiki-2023-04-04/lib/scripts/toolbar.js
Normal file
@@ -0,0 +1,282 @@
|
||||
// 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');
|
||||
});
|
||||
Reference in New Issue
Block a user