var showView = Backbone.View.extend({ initialize: function(options){ //that.UL; assignProperties(this, options); }, tagName: 'li', className: "herez node", events: {"click .markdown" : "showMarkDownEditor"}, //todo = refactor this function. render: function(){ var that = this; that.$el.html(""); var id = that.model.get("_id"); var text = that.model.get("text"); var html = that.createUIBullet(id, text, that.depth); that.$el.children("ul").addClass("collapsed"); that.$el.attr("data-depth", that.depth); that.$el.attr("data-id", id); that.$el.html(html); that.UL = that.$el.children("ul"); if(that.snapView){ that.$el.children().children("textarea").prop("disabled", true); that.$el.addClass("snapLI"); } // console.log("about to render textarea") that.renderChildren(); return that; }, // Moved to app.js to handle bubbling issues. collapse: function(){ var that = this; that.$el.children("ul").slideToggle(110); that.$el.children(".zoomButton").toggleClass("collapsed"); }, createUIBullet: function( id , text, depth) { var that = this; var textArea = ""; var expandCollapse = "+" // var aButton = "" + ""; // var handle = "" var zoomButton = "" // var buttonHoist = "" var subList = "" var bullet = expandCollapse + zoomButton + "" + textArea + "" + subList; return bullet; }, //text-area => MarkDownEditor. createMarkDownBullet: function(){ var that = this; var textarea = that.$el.children(".hoverWrap").children("textarea"); var newDiv = "

" + textarea.val() + "

"; textarea.remove(); that.$el.children(".hoverWrap").html(newDiv); that.showMarkDownEditor(); return; }, showMarkDownEditor: function(){ var that = this; var hoverWrap = that.$el.children(".hoverWrap").removeClass("markdown"); hoverWrap.children("div").attr("id", "marked-mathjax-preview"); var buffer = ''; var textareaInput = ''; hoverWrap.append(buffer+textareaInput); debugger; setTimeout(function(){ Preview.Init(); Preview.Update(); hoverWrap.children("textarea").val(that.model.get("text")).focus(); }, 200); // setTimeout(function(){ MathJax.Callback(["CreatePreview",Preview]); }, 300); }, updateId: function(newId){ this.$el.attr("data-id", newId); this.$el.children("ul").attr("data-id", newId); }, updateText: function(newText){ var that = this; this.$el.children().children("textarea").val(that.model.get("text")); }, lock: function(name){ //for concurrent editing... this.$el.children().children("textarea").attr("readonly", "readonly"); this.$el.children().children("textarea").val(name + " is editing."); this.$el.addClass("editing"); }, unlock: function(){ this.$el.children().children("textarea").removeAttr("readonly"); this.$el.children().children("textarea").val(this.model.get("text")); this.$el.removeClass("editing"); } });