Um das Redaktions-Interface funktional zu erweitern, kann man eigene Javascript-Extensions einbinden.

Zunächst mal muss man unter Konfiguration >> System >> System-Properties den Pfad für die eigene Extension hinterlegen, z.B.:

zmi.plugin.js=/myzmsx/common/js/zmi.plugin.js

Die Extension muss man anschließend in den bootstrap.libs registrieren:

bootstrap.libs=gen.zmi.js,zmi.plugin.js

Nun kann man in zmi.plugin.js beliebigen eigenen JS-Code implementieren, der im ZMI ausgeführt wird.

Beispiel zmi.plugin.js: Stopwörter in Eingabefeldern

$(function() {
    $('.controls.save .btn-primary').click(function() {
            var b = true;
            if($(this).val()==getZMILangStr("BTN_SAVE")) {
                    var stopwords = getStopwords().split(",");
                    $("input.form-control,textarea.form-control").each(function() {
                            var labelText = "";
                            var $control = $(this);
                            var v = $control.val().trim();
                            if (v.length>0) {
                                var total = stopwords.length;
                                for (var i=0; i < total; i++) {
                                    var exp = stopwords[i].trim();
                                    exp = exp.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
                                    var regexp = new RegExp('\\b'+exp+'\\b', "gi");
                                    if (v.match(regexp)!=null) {
                                        labelText += '<div>Usage of stopword "'+exp+'" is forbidden!</div>';
                                    }
                                }
                            }
                            if (labelText.length>0) {
                                var labelText = '<strong>ERRORS:</strong>'+labelText;
                                var $controlGroup = $control.parents(".form-group");
                                if ($controlGroup.parents(".zmi-richtext").length > 0) {
                                    $controlGroup = $(".form-group",$controlGroup.parents(".zmi-richtext"));
                                }
                                var $label = $("label.control-label span",$controlGroup);
                                $controlGroup.addClass("has-error");
                                $label.attr("title",labelText).tooltip({html:true,placement:'top'});
                                $control.attr("title",labelText).tooltip({html:true,placement:'top'});
                                b = false;
                            }
                        });
            }
            return b;
        });
});