field-code.php
1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<div class="fl-code-field">
<?php $editor_id = 'flcode' . time() . '_' . $name; ?>
<textarea id="<?php echo $editor_id; ?>" name="<?php echo $name; ?>" data-editor="<?php echo $field['editor']; ?>" <?php if(isset($field['class'])) echo ' class="'. $field['class'] .'"'; if(isset($field['rows'])) echo ' rows="'. $field['rows'] .'"'; ?>><?php echo htmlspecialchars($value); ?></textarea>
<script>
jQuery(function(){
var textarea = jQuery('#<?php echo $editor_id; ?>'),
mode = textarea.data('editor'),
editDiv = jQuery('<div>', {
position: 'absolute',
height: parseInt(textarea.attr('rows'), 10) * 20
}),
editor = null;
editDiv.insertBefore(textarea);
textarea.css('display', 'none');
ace.require('ace/ext/language_tools');
editor = ace.edit(editDiv[0]);
editor.$blockScrolling = Infinity;
editor.getSession().setValue(textarea.val());
editor.getSession().setMode('ace/mode/' + mode);
editor.setOptions({
enableBasicAutocompletion: true,
enableLiveAutocompletion: true,
enableSnippets: false
});
editor.getSession().on('change', function(e) {
textarea.val(editor.getSession().getValue()).trigger('change');
});
textarea.closest( '.fl-field' ).data( 'editor', editor );
});
</script>
</div>