|  | @@ -3491,16 +3491,16 @@ var _Enonce = {
 | 
	
		
			
				|  |  |    //   // console.log('Enonce on init', vn);
 | 
	
		
			
				|  |  |      this.partid = vn.attrs.partid;
 | 
	
		
			
				|  |  |      this.id = vn.attrs.id;
 | 
	
		
			
				|  |  | -    this.title = vn.attrs.title;
 | 
	
		
			
				|  |  | +    this.title = vn.attrs.title || "";
 | 
	
		
			
				|  |  |      this.text = vn.attrs.text;
 | 
	
		
			
				|  |  |      this.childs = vn.attrs.childs || [];
 | 
	
		
			
				|  |  |      this.nested = vn.attrs.nested || false;
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    onbeforeupdate:function(vn, old) {
 | 
	
		
			
				|  |  |      // console.log(vn.attrs.childs);
 | 
	
		
			
				|  |  | -    this.title = vn.attrs.title;
 | 
	
		
			
				|  |  | +    this.title = vn.attrs.title || "";
 | 
	
		
			
				|  |  |      this.text = vn.attrs.text;
 | 
	
		
			
				|  |  | -    this.childs = vn.attrs.childs;
 | 
	
		
			
				|  |  | +    this.childs = vn.attrs.childs || [];
 | 
	
		
			
				|  |  |      this.nested = vn.attrs.nested || false;
 | 
	
		
			
				|  |  |      // if(vn.attrs.id == '1d1') console.log('_Enonce UPDATE, text :', vn.attrs.text);
 | 
	
		
			
				|  |  |    },
 | 
	
	
		
			
				|  | @@ -3512,7 +3512,7 @@ var _Enonce = {
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      [
 | 
	
		
			
				|  |  |        // create title node
 | 
	
		
			
				|  |  | -      m("h2", {}, this.title),
 | 
	
		
			
				|  |  | +      m("h2", {}, m.trust(markdown.renderInline(this.title))),
 | 
	
		
			
				|  |  |        // create text node
 | 
	
		
			
				|  |  |        m(_Text, {'text':this.text, 'id':this.id}),
 | 
	
		
			
				|  |  |        // addd children
 | 
	
	
		
			
				|  | @@ -3637,11 +3637,12 @@ var _Dot = {
 | 
	
		
			
				|  |  |      // console.log('setuptext', vn);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // construct text
 | 
	
		
			
				|  |  | -    this.text = markdown.render(vn.attrs.text);
 | 
	
		
			
				|  |  | +    this.text = vn.attrs.text || '';
 | 
	
		
			
				|  |  | +    this.rendered_text = markdown.render(this.text);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // construct summary
 | 
	
		
			
				|  |  |      // TODO: summary needs more work (strip tags, markdown render)
 | 
	
		
			
				|  |  | -    this.summary = vn.attrs.text.match('([^ ]*[ ]{0,1}){1,6}')[0];
 | 
	
		
			
				|  |  | +    this.summary = this.text.match('([^ ]*[ ]{0,1}){1,6}')[0];
 | 
	
		
			
				|  |  |      this.summary = this.summary.trim().replace(/_([^_]+)$/g, "_$1_");
 | 
	
		
			
				|  |  |      this.summary = this.summary.replace(/\[([^\]]+)$/g, "$1");
 | 
	
		
			
				|  |  |      this.summary = markdown.renderInline(this.summary) + " …";
 | 
	
	
		
			
				|  | @@ -3736,7 +3737,7 @@ var _Dot = {
 | 
	
		
			
				|  |  |                vn.dom.querySelector('nav.links>div[uid="'+id+'"]>.summary').click();
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  | -        }, m.trust(this.text)),
 | 
	
		
			
				|  |  | +        }, m.trust(this.rendered_text)),
 | 
	
		
			
				|  |  |          // links from
 | 
	
		
			
				|  |  |          this.links.from.length
 | 
	
		
			
				|  |  |            ? m('nav', {'class':'links from'}, this.links.from.map(function(id){
 | 
	
	
		
			
				|  | @@ -3854,16 +3855,16 @@ var _Enonce = {
 | 
	
		
			
				|  |  |    //   // console.log('Enonce on init', vn);
 | 
	
		
			
				|  |  |      this.partid = vn.attrs.partid;
 | 
	
		
			
				|  |  |      this.id = vn.attrs.id;
 | 
	
		
			
				|  |  | -    this.title = vn.attrs.title;
 | 
	
		
			
				|  |  | +    this.title = vn.attrs.title || "";
 | 
	
		
			
				|  |  |      this.text = vn.attrs.text;
 | 
	
		
			
				|  |  | -    this.childs = vn.attrs.childs;
 | 
	
		
			
				|  |  | +    this.childs = vn.attrs.childs || [];
 | 
	
		
			
				|  |  |      // this.nested = vn.attrs.nested || false;
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    onbeforeupdate:function(vn, old) {
 | 
	
		
			
				|  |  |      // console.log(vn.attrs.childs);
 | 
	
		
			
				|  |  | -    this.title = vn.attrs.title;
 | 
	
		
			
				|  |  | +    this.title = vn.attrs.title || "";
 | 
	
		
			
				|  |  |      this.text = vn.attrs.text;
 | 
	
		
			
				|  |  | -    this.childs = vn.attrs.childs;
 | 
	
		
			
				|  |  | +    this.childs = vn.attrs.childs || [];
 | 
	
		
			
				|  |  |      // this.nested = vn.attrs.nested || false;
 | 
	
		
			
				|  |  |      // if(vn.attrs.id == '1d1') console.log('_Enonce UPDATE, text :', vn.attrs.text);
 | 
	
		
			
				|  |  |    },
 | 
	
	
		
			
				|  | @@ -3889,12 +3890,12 @@ var _Enonce = {
 | 
	
		
			
				|  |  |  var _Part = {
 | 
	
		
			
				|  |  |    oninit: function(vn){
 | 
	
		
			
				|  |  |      this.id = vn.attrs.id;
 | 
	
		
			
				|  |  | -    this.title = vn.attrs.title;
 | 
	
		
			
				|  |  | +    this.title = vn.attrs.title || "";
 | 
	
		
			
				|  |  |      this.enonces = vn.attrs.enonces;
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    onbeforeupdate: function(vn, old){
 | 
	
		
			
				|  |  |      // console.log('_Part, onbeforeupdate old',old);
 | 
	
		
			
				|  |  | -    this.title = vn.attrs.title;
 | 
	
		
			
				|  |  | +    this.title = vn.attrs.title || "";
 | 
	
		
			
				|  |  |      this.enonces = vn.attrs.enonces;
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    view: function(vn){
 |