Current File : /home/escuelai/public_html/biblioteca.escuelaintegral.edu.uy/javascript/dojo/apps/pmb/AceManager.js
// +-------------------------------------------------+
// � 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
// +-------------------------------------------------+
// $Id: AceManager.js,v 1.7 2022/03/07 14:27:58 qvarin Exp $

define([
	"dojo/_base/declare", 
	"dojo/_base/lang",
	"dojo/dom-construct",
    "dojo/request/xhr",
	"ace/ace",
	"ace/ext-language_tools", ], function(declare, lang, domConstruct, xhr) {
	return declare(null, {
		constructor : function() {
			this.registry = {};
			ace.config.set('basePath', 'javascript/ace')
		},
		initEditor : function(id, mode) { // Cette méthode n'est à utiliser
											// qu'avec des textarea ou des
											// inputs
			if (!mode) {
				mode = 'twig';
			}
			var node = document.getElementById(id)
			if (node) { // Un noeud porte l'identifiant
				var nodeName = node.getAttribute('name');
				var createdNode = domConstruct.create('input', {
					type : 'hidden',
					id : id,
					value : node.value,
					name : nodeName
				}, node, "after");
				var editor = ace.edit(id);
				editor.getSession().on(
						"change",
						function() {
							createdNode.setAttribute('value', editor
									.getSession().getValue());
						});

				editor.setTheme('ace/theme/eclipse');
				editor.getSession().setMode('ace/mode/' + mode);
				editor.setOptions({
					maxLines : Infinity,
					minLines : 5,
					enableBasicAutocompletion: true
					
				});
				editor.getSession().setUseWorker(true);
				editor.getSession().setUseWrapMode(true);
				this.registry[id] = editor;
				var pmbCompleter = {
					getCompletions : function(editor, session, pos, prefix, callback) {
						xhr.get("./ajax.php?module=ajax&categ=aceEditorCompletion&word=" + prefix,{
							handleAs : 'json'
						}).then(function(wordList) {
							callback(null, wordList);
						});
					}
				};
				var langTools = ace.require("ace/ext/language_tools");
				langTools.addCompleter(pmbCompleter);
			}
		},
		getEditor : function(id) {
			if (this.registry) {
				if (typeof this.registry[id] != "undefined") {
					return this.registry[id];
				}
			}
		}
	});
});