You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

243 lines
9.9 KiB

// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
//
// All Rights Reserved. See copyright.txt for details and a complete list of authors.
// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
// $Id$
/* Include for tiki-admin_toolbars.php
*
* Selector vars set up in tiki-admin_toolbars.php:
*
*/
$(document).ready(function () {
$(".row", ".rows").sortable({
connectWith: 'ul.full, .row',
forcePlaceholderSize: true,
forceHelperSize: true,
placeholder: 'toolbars-placeholder',
stop: function (event, ui) {
},
start: function (event, ui) {
},
receive: function(event, ui) {
$(ui.item).addClass("navbar-text");
}
}).disableSelection();
$("ul.full").sortable({
connectWith: '.row, #full-list-c',
forcePlaceholderSize: true,
forceHelperSize: true,
placeholder: 'toolbars-placeholder',
remove: function (event, ui) { // special handling for separator to allow duplicates
if ($(ui.item).text() === '-' || $(ui.item).text() === '|') {
$(this).prepend($(ui.item).clone()); // leave a copy at the top of the full list
}
},
receive: function (event, ui) {
const $item = $(ui.item).css('float', '');
if ($item.text() === '-') {
$(this).children().remove('.qt--'); // remove all seps
$(this).prepend($item.clone()); // put one back at the top
} else if ($(this).attr('id') === 'full-list-c') { // dropped in custom list
$item.dblclick(function () { showToolEditForm(ui.item); });
$item.trigger('dblclick');
}
sortList(this);
},
stop: function (event, ui) {
sortList(this);
}
}).disableSelection();
const sortList = function (list) {
var arr = $(list).children().get(), item, labelA, labelB;
arr.sort(function(a, b) {
labelA = $(a).text().toUpperCase();
labelB = $(b).text().toUpperCase();
if (labelA < labelB) { return -1; }
if (labelA > labelB) { return 1; }
return 0;
});
$(list).empty();
for (item = 0; item < arr.length; item++) {
$(list).append(arr[item]);
}
if ($(list).attr("id") === "full-list-c") {
$('.qt-custom').dblclick(function () { showToolEditForm(this); });
}
};
$('.qt-custom').dblclick(function () { showToolEditForm(this); });
// show edit form dialogue
var showToolEditForm = function (item) {
$(".modal.fade:not(.show):first")
.modal("show")
.on("shown.bs.modal", function () {
const $this = $(this);
$this.find("select").removeClass("noselect2").applySelect2();
const $toolType = $("#tool_type", $this);
const $toolPlugin = $("#tool_plugin", $this);
const $toolName = $("#tool_name", $this);
const $toolLabel = $("#tool_label", $this);
const $toolIcon = $("#tool_icon", $this);
const $toolToken = $("#tool_token", $this);
const $toolSyntax = $("#tool_syntax", $this);
$toolIcon.tiki("autocomplete", "icon");
$toolToken.tiki("autocomplete", "other", {
source:
function ( request, response) {
let commands = [];
for (let commandsKey in CKEDITOR.instances.cked.commands) {
const search = request.term.toLowerCase();
if (CKEDITOR.instances.cked.commands.hasOwnProperty(commandsKey) && commandsKey.toLowerCase().indexOf(search) > -1) {
commands.push(commandsKey);
}
}
response(commands);
}
});
if (item) {
const $item = $(item);
$toolName.val($.trim($item.text()));
$toolLabel.val($.trim($item.find("input[name=label]").val()));
if ($item.children("img").length && $item.children("img").attr("src") !== "img/icons/shading.png") {
$toolIcon.val($item.children("img").attr("src"));
} else {
const iconname = $("span.icon", item).attr("class").match(/icon-(\w*)/);
if (iconname) {
$toolIcon.val(iconname[1]);
}
}
$toolToken.val($item.find("input[name=token]").val());
// TODO use CKEDITOR.instances.editwiki.commands as the autocomplete on this field
$toolSyntax.val($item.find("input[name=syntax]").val());
$toolType.val($item.find("input[name=type]").val());
if ($item.find("input[name=type]").val() === "Wikiplugin") {
$toolPlugin.val($item.find("input[name=plugin]").val());
}
}
// handle plugin select on edit dialogue
$toolType.change( function () {
$toolSyntax.parents(".form-group").hide();
$toolPlugin.parents(".form-group").hide();
if ($toolType.val() === "Wikiplugin") {
$toolPlugin.parents(".form-group").show();
} else {
if (["Inline", "Block", "LineBased"].includes($toolType.val())) {
$toolSyntax.parents(".form-group").show();
}
}
$toolPlugin.trigger("change.select2");
}).change();
$(".btn.save").click(function () {
$("#save_tool", $this).val("Save");
$("form", $this).submit();
$(this).modal("hide");
});
$(".btn.delete").click(function () {
if (confirm(tr("Are you sure you want to delete this custom tool?"))) {
$("#delete_tool", $this).val("Delete");
$("form", $this).submit();
}
$(this).modal("hide");
});
})
.find(".modal-content")
.html($("#toolbar_edit_div").html())
;
};
var checkLength = function (o, n, min, max) {
if (o.val().length > max || o.val().length < min) {
o.addClass('ui-state-error');
o.prev("label").find(".dialog_tips").text(" Length must be between " + min + " and " + max).addClass('ui-state-highlight');
setTimeout(function () {
o.prev("label").find(".dialog_tips").removeClass('ui-state-highlight', 1500);
}, 500);
return false;
} else {
return true;
}
};
// view mode filter (still doc.ready)
var $viewMode = $('#view_mode');
if ($("#section").val() === "sheet") {
$viewMode.val("sheet");
}
$viewMode.change(function setViewMode() {
if ($viewMode.val() === 'both') {
$('.qt-wyswik').addClass("d-none").removeClass("d-flex");
$('.qt-wiki').removeClass("d-none").addClass("d-flex");
$('.qt-wys').removeClass("d-none").addClass("d-flex");
$('.qt-sheet').addClass("d-none").removeClass("d-flex");
} else if ($viewMode.val() === 'wiki') {
$('.qt-wyswik').addClass("d-none").addClass("d-flex");
$('.qt-wys').addClass("d-none").removeClass("d-flex");
$('.qt-wiki').removeClass("d-none").addClass("d-flex");
$('.qt-sheet').addClass("d-none").removeClass("d-flex");
} else if ($viewMode.val() === 'wysiwyg') {
$('.qt-wyswik').addClass("d-none").removeClass("d-flex");
$('.qt-wiki').addClass("d-none").removeClass("d-flex");
$('.qt-wys').removeClass("d-none").addClass("d-flex");
$('.qt-sheet').addClass("d-none").removeClass("d-flex");
} else if ($viewMode.val() === 'wysiwyg_wiki') {
$('.qt-wiki').addClass("d-none").removeClass("d-flex");
$('.qt-wys').addClass("d-none").removeClass("d-flex");
$('.qt-sheet').addClass("d-none").removeClass("d-flex");
$('.qt-wyswik').removeClass("d-none").addClass("d-flex");
$('.qt--').removeClass("d-none").addClass("d-flex");
} else if ($viewMode.val() === 'sheet') {
$('.qt-wyswik').addClass("d-none").removeClass("d-flex");
$('.qt-wys').addClass("d-none").removeClass("d-flex");
$('.qt-wiki').removeClass("d-none").addClass("d-flex");
$('.qt-sheet').removeClass("d-none").addClass("d-flex");
}
}).change();
$('#toolbar_add_custom').click(function () {
showToolEditForm();
return false;
});
}); // end doc ready
// save toolbars
function saveRows() {
var ser, text;
ser = $('.toolbars-admin ul.row').map(function (){ /* do this on everything of class 'row' inside toolbars-admin div */
return $(this).children().map(function (){ /* do this on each child node */
text = "";
if ($(this).hasClass('qt-plugin')) { text += 'wikiplugin_'; }
text += $.trim($(this).text());
return text;
}).get().join(",").replace(",|", "|").replace("|,", "|"); /* put commas inbetween */
});
if (typeof(ser) === 'object' && ser.length > 1) {
ser = $.makeArray(ser).join('/'); // row separators
} else {
ser = ser[0];
}
$('#qt-form-field').val(ser.replace(',,', ','));
}