diff --git a/controller/Notebooks.py b/controller/Notebooks.py
index cfbe7ec..87aaa8a 100644
--- a/controller/Notebooks.py
+++ b/controller/Notebooks.py
@@ -488,6 +488,9 @@ class Notebooks( object ):
raise Access_error()
note = self.__database.load( Note, note_id )
+ if note is None or note.notebook_id != notebook_id:
+ raise Access_error()
+
items = []
for match in self.LINK_PATTERN.finditer( note.contents ):
@@ -495,7 +498,7 @@ class Notebooks( object ):
# if it has a link target, it's a link to an external web site
if target:
- items.append( Note_tree_area.make_item( title, attributes, u"note_tree_external_link", target = u"_new" ) )
+ items.append( Note_tree_area.make_item( title, attributes, u"note_tree_external_link" ) )
continue
# if it has '/files/' in its path, it's an uploaded file link
diff --git a/controller/test/Test_notebooks.py b/controller/test/Test_notebooks.py
index 6995c14..5054eed 100644
--- a/controller/test/Test_notebooks.py
+++ b/controller/test/Test_notebooks.py
@@ -1002,6 +1002,200 @@ class Test_notebooks( Test_controller ):
assert revisions[ 0 ].user_id == self.user.object_id
assert revisions[ 0 ].username == self.username
+ def test_load_note_links( self ):
+ self.login()
+
+ result = self.http_post( "/notebooks/load_note_links/", dict(
+ notebook_id = self.notebook.object_id,
+ note_id = self.note.object_id,
+ ), session_id = self.session_id )
+
+ html = result.get( "tree_html" )
+ assert u"
link'
+ self.note.contents = u"blah
this is a %s" % ( link % "" )
+ self.database.save( self.note )
+
+ result = self.http_post( "/notebooks/load_note_links/", dict(
+ notebook_id = self.notebook.object_id,
+ note_id = self.note.object_id,
+ ), session_id = self.session_id )
+
+ html = result.get( "tree_html" )
+ assert u"link to file'
+ self.note.contents = u"blah
this is a %s" % ( link % "" )
+ self.database.save( self.note )
+
+ result = self.http_post( "/notebooks/load_note_links/", dict(
+ notebook_id = self.notebook.object_id,
+ note_id = self.note.object_id,
+ ), session_id = self.session_id )
+
+ html = result.get( "tree_html" )
+ assert u"link to note2'
+ self.note.contents = u"blah
this is a %s" % ( link % "" )
+ self.database.save( self.note )
+
+ result = self.http_post( "/notebooks/load_note_links/", dict(
+ notebook_id = self.notebook.object_id,
+ note_id = self.note.object_id,
+ ), session_id = self.session_id )
+
+ html = result.get( "tree_html" )
+ assert u"link to note2'
+ self.note.contents = u"blah
this is a %s" % ( link % "" )
+ self.database.save( self.note )
+
+ result = self.http_post( "/notebooks/load_note_links/", dict(
+ notebook_id = self.notebook.object_id,
+ note_id = self.note.object_id,
+ ), session_id = self.session_id )
+
+ html = result.get( "tree_html" )
+ assert u"link to note2'
+ assert link % u' class="note_tree_link"' in html
+ assert u"tree_expander_empty" in html
+
+ def test_load_note_links_with_note_link_to_unknown_note_id( self ):
+ self.login()
+
+ link = u'link to note2'
+ self.note.contents = u"blah
this is a %s" % ( link % "" )
+ self.database.save( self.note )
+
+ result = self.http_post( "/notebooks/load_note_links/", dict(
+ notebook_id = self.notebook.object_id,
+ note_id = self.note.object_id,
+ ), session_id = self.session_id )
+
+ html = result.get( "tree_html" )
+ assert u"link to note2'
+ self.note.contents = u"blah
this is a %s" % ( link % "" )
+ self.database.save( self.note )
+
+ link2 = u'link back to note'
+ self.note2.contents = u"blah
this is a %s" % ( link % "" )
+ self.database.save( self.note2 )
+
+ result = self.http_post( "/notebooks/load_note_links/", dict(
+ notebook_id = self.notebook.object_id,
+ note_id = self.note.object_id,
+ ), session_id = self.session_id )
+
+ html = result.get( "tree_html" )
+ assert u"link to note2'
+ link2 = u'link to self'
+ external_link = u'link'
+ file_link = u'link to file'
+ self.note.contents = u"blah
%s and %s and %s and %s as well" % (
+ link % "", link2 % "", external_link % "", file_link % "",
+ )
+ self.database.save( self.note )
+
+ result = self.http_post( "/notebooks/load_note_links/", dict(
+ notebook_id = self.notebook.object_id,
+ note_id = self.note.object_id,
+ ), session_id = self.session_id )
+
+ html = result.get( "tree_html" )
+ assert u"%s" % (
+ u'%s' % (
link_attributes,
root_note_id and u' id="%s_link_%s"' % ( base_name, root_note_id ) or "",
target and u' target="%s"' % target or "",