comparison js/taggingtext.js @ 54:f9e7119339b2 extractapp

bug fixed: when addTagTitle, removing self-closing tag which causes error in coloring tag
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Mon, 30 Mar 2015 15:34:47 +0200
parents 3e42a63de0ea
children 3395385476d1
comparison
equal deleted inserted replaced
53:f9594c240826 54:f9e7119339b2
120 newbutton.appendTo(newdiv); 120 newbutton.appendTo(newdiv);
121 121
122 tagObject.append(newdiv); 122 tagObject.append(newdiv);
123 } 123 }
124 124
125 function removeEmptyNodes( node ) {
126 if (node.hasChildNodes()) {
127 var children = node.childNodes;
128 for (var i = 0; i < children.length; i++) {
129 if (children[i].textContent == "" && children[i].innerHTML == "" && children[i].nodeName != "BR") {
130 //console.log("removing child: "+children[i].nodeName+", its parent: "+node.nodeName);
131 node.removeChild(children[i]);
132 } else {
133 //console.log("recursive to "+children[i].nodeName+"("+children[i].textContent+")")
134 removeEmptyNodes(children[i]); // recursive
135 }
136
137 };
138 } else {
139 //console.log(node.nodeName+" ("+node.textContent+") has no childNodes.");
140 }
141
142 }
125 143
126 144
127 function removeTagTitle( range, container ) { 145 function removeTagTitle( range, container ) {
128 saveUndoText(); 146 saveUndoText();
129 range.deleteContents(); 147 range.deleteContents();
166 184
167 $('.tagItemDivClass').remove(); 185 $('.tagItemDivClass').remove();
168 } 186 }
169 187
170 function addTagTitle( range, container ) { 188 function addTagTitle( range, container ) {
171 saveUndoText(); 189 // TODO: bug: here generate self-closing tag when the end of text with tag on it
190
191 saveUndoText();
192
193 var el = document.getElementById("editable-area");
194
172 lastAddTag = $('#TitletagType').val(); 195 lastAddTag = $('#TitletagType').val();
173 var tag = "<"+$('#TitletagType').val()+">〈"+$('#TitletagName').val()+"〉</"+$('#TitletagType').val()+">"; 196 var tag = "<"+$('#TitletagType').val()+">〈"+$('#TitletagName').val()+"〉</"+$('#TitletagType').val()+">";
174 range.deleteContents(); 197
198 range.deleteContents(); // may causes self-closing tag
199
175 var stringtemp = container.innerHTML; 200 var stringtemp = container.innerHTML;
176 201
177 var regexText=/<br>/g; 202 var regexText=/<br>/g;
178 var replaceText="<br>"+tag; 203 var replaceText="<br>"+tag;
179 stringtemp = stringtemp.replace(regexText, replaceText); 204 stringtemp = stringtemp.replace(regexText, replaceText);
180 205
181 var newdiv = document.createElement("aaaa"); 206 var newdiv = document.createElement("aaaa");
182 newdiv.innerHTML = tag+stringtemp; 207 newdiv.innerHTML = tag+stringtemp;
208
183 range.insertNode(newdiv); 209 range.insertNode(newdiv);
184 210
185 var el = document.getElementById("editable-area");
186
187 211
188 var regexText=/<aaaa>/gi; 212 var regexText=/<aaaa>/gi;
189 var replaceText=''; 213 var replaceText='';
190 el.innerHTML = el.innerHTML.replace(regexText, replaceText); 214 el.innerHTML = el.innerHTML.replace(regexText, replaceText);
191 215
192 var regexText=/<\/aaaa>/gi; 216 var regexText=/<\/aaaa>/gi;
193 var replaceText=''; 217 var replaceText='';
194 el.innerHTML = el.innerHTML.replace(regexText, replaceText); 218 el.innerHTML = el.innerHTML.replace(regexText, replaceText);
195 219
196 $('.tagItemDivClass').remove(); 220 $('.tagItemDivClass').remove();
221
222 removeEmptyNodes(el); // removing self-closing tags
223
197 } 224 }
198 225
199 function cleanUpTextArea() { 226 function cleanUpTextArea() {
200 var el = document.getElementById("editable-area"); 227 var el = document.getElementById("editable-area");
201 228
321 } 348 }
322 349
323 350
324 //Tagging Items 351 //Tagging Items
325 function getSelected() { 352 function getSelected() {
326 if(window.getSelection) { 353 if(window.getSelection) { // all browsers, except IE before version 9
327 return window.getSelection(); 354 return window.getSelection();
328 } else if (document.getSelection) { 355 } else if (document.getSelection) {
329 return document.getSelection(); 356 return document.getSelection();
330 } else { 357 } else { // IE
331 var selection = document.selection && document.selection.createRange(); 358 var selection = document.selection && document.selection.createRange();
332 if(selection.text) { 359 if(selection.text) {
333 return selection.text; 360 return selection.text;
334 } 361 }
362
335 return false; 363 return false;
336 } 364 }
337 return false; 365 return false;
338 } 366 }
339 367