+ VisualPerspective.prototype.insertAtRange = function(range, elem) {
+ let self = this;
+ let $end = $(range.endContainer);
+ if ($end.attr('id') == 'caret') {
+ self.caret.insert(elem);
+ } else {
+ range.insertNode(elem[0]);
+ }
+ }
+
+ VisualPerspective.prototype.addReference = function() {
+ let self = this;
+ var selection = window.getSelection();
+ var n = selection.rangeCount;
+
+ // TODO: if no selection, take caret position..
+ if (n == 0) {
+ window.alert("Nie zaznaczono żadnego obszaru");
+ return false;
+ }
+
+ var range = selection.getRangeAt(n - 1);
+ if (!verifyTagInsertPoint(range.endContainer)) {
+ window.alert("Nie można wstawić w to miejsce referencji.");
+ return false;
+ }
+
+ var tag = $('<span></span>');
+
+ range.collapse(false);
+ self.insertAtRange(range, tag);
+
+ xml2html({
+ xml: '<ref href=""/>',
+ success: function(text){
+ var t = $(text);
+ tag.replaceWith(t);
+ openForEdit(t);
+ },
+ error: function(){
+ tag.remove();
+ alert('Błąd przy dodawaniu referncji:' + errors);
+ }
+ })
+ }
+