Skip to content

Commit a950712

Browse files
authored
Merge pull request #81 from DMOJ/django-formset
Support AdminMartorWidget in Django admin inlines
2 parents a565782 + f936cb4 commit a950712

File tree

1 file changed

+27
-19
lines changed

1 file changed

+27
-19
lines changed

martor/static/martor/js/martor.js

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,7 @@
1111
$ = django.jQuery;
1212
}
1313
$.fn.martor = function() {
14-
15-
var martor = $(this);
16-
var mainMartor = $('.main-martor');
17-
18-
martor.trigger('martor.init');
14+
$('.martor').trigger('martor.init');
1915

2016
// CSRF code
2117
var getCookie = function(name) {
@@ -33,11 +29,12 @@
3329
}
3430
}
3531
return cookieValue;
36-
}
32+
};
3733

3834
// Each multiple editor fields
39-
mainMartor.each(function(i, obj) {
40-
var field_name = $(obj).data('field-name');
35+
this.each(function(i, obj) {
36+
var mainMartor = $(obj);
37+
var field_name = mainMartor.data('field-name');
4138
var textareaId = $('#id_'+field_name);
4239
var editorId = 'martor-'+field_name;
4340
var editor = ace.edit(editorId);
@@ -761,8 +758,11 @@
761758
$('.modal-help-guide[data-field-name='+field_name+']').modal('show');
762759
});
763760

761+
// Handle tabs.
762+
mainMartor.find('.ui.martor-toolbar .ui.dropdown').dropdown();
763+
mainMartor.find('.ui.tab-martor-menu .item').tab();
764+
764765
// Toggle editor, preview, maximize
765-
var mainMartor = $(obj);
766766
var martorField = $('.martor-field-'+field_name);
767767
var btnToggleMaximize = $('.markdown-toggle-maximize[data-field-name='+field_name+']');
768768

@@ -838,14 +838,22 @@
838838
editor.setValue(textareaId.val(), -1);
839839
}
840840
});// end each `mainMartor`
841-
};
842-
$(function() {
843-
$('.martor').martor();
844-
});
841+
};
842+
843+
$(function() {
844+
$('.main-martor').martor();
845+
});
846+
847+
if ('django' in window && 'jQuery' in window.django)
848+
django.jQuery(document).on('formset:added', function (event, $row) {
849+
$row.find('.main-martor').each(function () {
850+
var id = $row.attr('id');
851+
id = id.substr(id.lastIndexOf('-') + 1);
852+
// Notice here we are using our jQuery instead of Django's.
853+
// This is because plugins are only loaded for ours.
854+
var fixed = $(this.outerHTML.replace(/__prefix__/g, id));
855+
$(this).replaceWith(fixed);
856+
fixed.martor();
857+
});
858+
});
845859
})(jQuery);
846-
847-
$( document ).ready(function(){
848-
// Semantic UI
849-
$('.ui.martor-toolbar .ui.dropdown').dropdown();
850-
$('.ui.tab-martor-menu .item').tab();
851-
});

0 commit comments

Comments
 (0)