diff -r 71a8438be150 -r 5055aa35340f src/js/libs/renkan-publish.js --- a/src/js/libs/renkan-publish.js Wed Sep 05 11:30:01 2012 +0200 +++ b/src/js/libs/renkan-publish.js Fri Sep 07 18:18:47 2012 +0200 @@ -27,7 +27,8 @@ Rkns.i18n = { en: { zoom_in: "Zoom In", - zoom_out: "Zoom Out" + zoom_out: "Zoom Out", + see_in_project: 'See also "{node}" in "{project}"' } } @@ -57,13 +58,13 @@ Rkns.Models.RenkanModel = Backbone.RelationalModel.extend({ idAttribute : "_id", constructor: function(options) { - + if (typeof options !== "undefined") { options._id = options._id || options.id || Rkns.Models.getUID(this); options.title = options.title || "(untitled " + this.type + ")"; options.description = options.description || ""; options.uri = options.uri || ""; - + if(typeof this.prepare === "function") { options = this.prepare(options); } @@ -125,6 +126,7 @@ uri: this.get("uri"), description: this.get("description"), position: this.get("position"), + image: this.get("image"), created_by: this.get("created_by").get("_id") } }, @@ -263,25 +265,74 @@ if (typeof _opts.search !== "object" || !_opts.search) { _opts.search = []; } - this.project = new Rkns.Models.Project(); + this.projects = []; this.l10n = Rkns.i18n[_opts.language]; this.$ = Rkns.$("#" + _opts.container); this.$.html(this.template()); - this.renderer = new Rkns.Renderer.Scene(this); + this.uris = {}; + this.active_project = null; + this.renderer = null; } + Rkns.Renkan.prototype.template = Rkns._.template( - '
' + '<%=description%>
' + + '<%-description%>
' + + '' ); -Rkns.Renderer.NodeTooltip.prototype.redraw = function() { - var _coords = this.node_representation.paper_coords, - _model = this.node_representation.model, +Rkns.Renderer.NodeTooltip.prototype.draw = function() { + var _model = this.node_representation.model, _title = _model.get("title"), _uri = _model.get("uri"); this.tooltip_$ @@ -581,17 +696,36 @@ a: (_uri ? '' : '' ) + _title + (_uri ? '' : '' ), description: _model.get("description").replace(/(\n|\r|\r\n)/mg,' ').substr(0,180).replace(/(^.{150,179})[\s].+$/m,'$1…') })) - .show(); - Rkns.Renderer.Utils.drawTooltip(_coords, this.tooltip_block, 250, 15, this.tooltip_$); - var _this = this; + var _this = this, + _renkan = this.renderer.renkan, + _uris = _renkan.uris[_uri]; + Rkns._(_uris).each(function(_othernode) { + if (_othernode !== _model && _othernode.get("project") !== _this.project) { + var _otherproj = _othernode.get("project"), + _nodetitle = _othernode.get("title") || "Untitled node" + _projtitle = _otherproj.get("title") || "Untitled node", + _html = _renkan.l10n.see_in_project.replace('{node}',Rkns._.escape(_nodetitle)).replace('{project}',Rkns._.escape(_projtitle)), + _li = Rkns.$("<%=description%>
' + + '<%-description%>
' ); -Rkns.Renderer.EdgeTooltip.prototype.redraw = function() { - var _coords = this.edge_representation.paper_coords, - _model = this.edge_representation.model, +Rkns.Renderer.EdgeTooltip.prototype.draw = function() { + var _model = this.edge_representation.model, _title = _model.get("title"), _uri = _model.get("uri"); this.tooltip_$ .html(this.template({ a: (_uri ? '' : '' ) + _title + (_uri ? '' : '' ), description: _model.get("description").replace(/(\n|\r|\r\n)/mg,' ').substr(0,180).replace(/(^.{150,179})[\s].+$/m,'$1…') - })) - .show(); - Rkns.Renderer.Utils.drawTooltip(_coords, this.tooltip_block, 250, 5, this.tooltip_$); + })); + this.redraw(); var _this = this; this.tooltip_$.find(".Rk-CloseX").click(function() { _this.renderer.removeRepresentation(_this); paper.view.draw(); }); +} + +Rkns.Renderer.EdgeTooltip.prototype.redraw = function() { + var _coords = this.edge_representation.paper_coords; + Rkns.Renderer.Utils.drawTooltip(_coords, this.tooltip_block, 250, 5, this.tooltip_$); + this.tooltip_$.show(); paper.view.draw(); } @@ -654,8 +792,9 @@ /* */ -Rkns.Renderer.Scene = function(_renkan) { +Rkns.Renderer.Scene = function(_renkan, _project) { this.renkan = _renkan; + this.project = _project; this.$ = Rkns.$(".Rk-Render"); this.representations = []; this.$.html(this.template({ @@ -718,24 +857,26 @@ _this.redraw(); },50); - this.addRepresentations("Node", this.renkan.project.get("nodes")); - this.addRepresentations("Edge", this.renkan.project.get("edges")); + this.addRepresentations("Node", this.project.get("nodes")); + this.addRepresentations("Edge", this.project.get("edges")); - this.renkan.project.on("add:nodes", function(_node) { + this._addNodesBinding = function(_node) { _this.addRepresentation("Node", _node); _thRedraw(); - }); - this.renkan.project.on("add:edges", function(_edge) { + } + this._addEdgesBinding = function(_edge) { _this.addRepresentation("Edge", _edge); _thRedraw(); - }); + } + this.project.on("add:nodes", this._addNodesBinding ); + this.project.on("add:edges", this._addEdgesBinding ); this.redraw(); } Rkns.Renderer.Scene.prototype.template = Rkns._.template( - '