anonymous user), open a search result from a notebook. Then, login and try to
edit that notebook as a user with read-write privileges. it will show up as
read-only, presumably because it's being read from the cache.
- make model.Notebook.sql_search_notes() search either with user_id or an anonymous user_id, not both
- update controller.Notebooks.search(), so if the anonymous user has access to the given notebook,
then run the search as the anonymous user instead of the given user id
- update unit tests
- don't search trash/deleted notebooks
- change model.Notebook.sql_search_notes() to be a static method
- take a first_notebook_id argument and a user_id argument
- join user_notebook on notebook_id and matches on user_notebook.user_id instead of notebook_id
- order by notebook_id = first_notebook desc, rank instead of just rank
- include search result for notebooks readable by anonymous user, but only if such a notebook is given as first_notebook_id
- update code that calls model.Notebook.sql_search_notes()
- update model.Note.to_dict() to include notebook_id
- modify Wiki.display_search_results()
- separate search results for the current notebook and results for all other notebooks
- indicate which notebook each result is from
- if there are results in other notebooks but no results in the current notebook, indicate that clearly
- when you click on a result note link in the current notebook, it should simply open a new note
- when you click on a result note link in another notebook, it should open in a new window
- test in IE
- update unit tests for:
- controller.Notebooks.search()
- model.Notebook.sql_search_notes()
- model.Note.to_dict()
* Using the browser's tweaked version of the initial HTML, instead of the HTML that we tell the browser to use.
* Improved normalize_html() function to handle more cases.
* Added start_dirty flag to Editor() constructor and made use of it for completely new notes.
There is still at least one case (IE only) where this detection fails and a
note unaltered by the user gets resaved to the server. This is because IE
alters relative links within design mode documents.
The bug arose because Firefox shows br tags as "<br>" even when they are
initially "<br />". This meant that the initial and current html didn't match
up, so dirty() returned true even though nothing had changed.
In IE, there's a similar problem because IE likes to uppercase all tags. That
will be fixed in a subsequent commit.
prevent some session deadlock errors.
* Fixed some bugs with the new auto-resizing toolbar:
* In IE 6/7, when you click on a formatting button such as italics, it
doesn't visibly depress, because update_toolbar() is causing it to
unpress until you start typing the italic text. Fixed by only calling
update_toolbar() in focused_editor() if focused_editor is null.
* When downing or upping a toolbar button, now calling
resize_toolbar_button() unconditionally.
name would cause a UnicodeEncodeError upon sending the invite email. Now
such invites are encoded as quoted-printable UTF-8, while other invites
continue to be 7-bit ASCII.