Make the "Diff Revision" label dynamically rendered in javascript.

Review Request #4555 — Created Sept. 10, 2013 and submitted

Information

Review Board
master

Reviewers

Make the "Diff Revision" label dynamically rendered in javascript.

In order to be able to update the displayed revision, this content needs to be
generated on the client side instead of the server.

  • Viewed various revisions of a diff, including interdiffs. Saw the expected
    text each time.
  • Checked that the "latest diff" and "See what's changed" links worked
    correctly.
  • Ran js-tests.
  • Ran jshint.
Description From Last Updated

'from settings_local import *' used; unable to detect undefined names

reviewbotreviewbot

The <h1> shouldn't be part of the localized string.

chipx86chipx86

Same.

chipx86chipx86

It doesn't seem that all this should be localized. The "Diff revision XYZ" should, and the "This is not ..." …

chipx86chipx86

This should also be two strings, and should not involve tags. That's a layout thing for a template to deal …

chipx86chipx86

'from settings_local import *' used; unable to detect undefined names

reviewbotreviewbot

'from settings_local import *' used; unable to detect undefined names

reviewbotreviewbot

'from settings_local import *' used; unable to detect undefined names

reviewbotreviewbot

This is the only detail string without tags. Do we want to make sure we escape here?

chipx86chipx86

Maybe just have a string for the revision, and build the common parts after (or in the call to window.location). …

chipx86chipx86

'from settings_local import *' used; unable to detect undefined names

reviewbotreviewbot
reviewbot
  1. This is a review from Review Bot.
    Tool: PEP8 Style Checker
    Processed Files:
    reviewboard/settings.py
    Ignored Files:
    reviewboard/templates/diffviewer/view_diff.html
    reviewboard/static/rb/js/diffviewer/views/diffRevisionLabelView.js
    reviewboard/static/rb/js/diffviewer/models/diffRevisionModel.js
    reviewboard/static/rb/js/pages/views/diffViewerPageView.js

  2. 
      
reviewbot
  1. This is a review from Review Bot.
    Tool: Pyflakes
    Processed Files:
    reviewboard/settings.py
    Ignored Files:
    reviewboard/templates/diffviewer/view_diff.html
    reviewboard/static/rb/js/diffviewer/views/diffRevisionLabelView.js
    reviewboard/static/rb/js/diffviewer/models/diffRevisionModel.js
    reviewboard/static/rb/js/pages/views/diffViewerPageView.js

  2. reviewboard/settings.py (Diff revision 1)
     
     
    Show all issues

    'from settings_local import *' used; unable to detect undefined names

  3. 
      
chipx86
  1. 
      
  2. Show all issues

    The <h1> shouldn't be part of the localized string.

  3. Show all issues

    Same.

  4. Show all issues

    It doesn't seem that all this should be localized. The "Diff revision XYZ" should, and the "This is not ..." should, and the "See what's changed" should, but not as one big string.

    The layout of this is going to change quite a lot soon anyway.

    1. I'll split the header and paragraph, but I disagree about splitting apart the sentences entirely or completely pulling tags out of the strings. I plan to re-do this all after making a new revision selector, though (it's crummy that it reflows the page).

    2. Completely pulling out tags isn't necessarily, but formatting and layout are different. I guess in this case, "See what's changed" is fine being part of the same sentence, but if we decided to change layout, we can affect the strings. No big deal for now though.

      Let's talk about the revision selector offline. I've spent some time thinking about it and making mockups, so I want to sync up on that.

  5. Show all issues

    This should also be two strings, and should not involve tags. That's a layout thing for a template to deal with.

  6. 
      
david
reviewbot
  1. This is a review from Review Bot.
    Tool: PEP8 Style Checker
    Processed Files:
    reviewboard/settings.py
    Ignored Files:
    reviewboard/templates/diffviewer/view_diff.html
    reviewboard/static/rb/js/diffviewer/views/diffRevisionLabelView.js
    reviewboard/static/rb/js/diffviewer/models/diffRevisionModel.js
    reviewboard/static/rb/js/pages/views/diffViewerPageView.js

  2. 
      
reviewbot
  1. This is a review from Review Bot.
    Tool: Pyflakes
    Processed Files:
    reviewboard/settings.py
    Ignored Files:
    reviewboard/templates/diffviewer/view_diff.html
    reviewboard/static/rb/js/diffviewer/views/diffRevisionLabelView.js
    reviewboard/static/rb/js/diffviewer/models/diffRevisionModel.js
    reviewboard/static/rb/js/pages/views/diffViewerPageView.js

  2. reviewboard/settings.py (Diff revision 2)
     
     
    Show all issues

    'from settings_local import *' used; unable to detect undefined names

  3. 
      
david
reviewbot
  1. This is a review from Review Bot.
    Tool: PEP8 Style Checker
    Processed Files:
    reviewboard/settings.py
    Ignored Files:
    reviewboard/templates/diffviewer/view_diff.html
    reviewboard/static/rb/js/diffviewer/views/diffRevisionLabelView.js
    reviewboard/static/rb/js/diffviewer/models/diffRevisionModel.js
    reviewboard/static/rb/js/pages/views/diffViewerPageView.js

  2. 
      
reviewbot
  1. This is a review from Review Bot.
    Tool: Pyflakes
    Processed Files:
    reviewboard/settings.py
    Ignored Files:
    reviewboard/templates/diffviewer/view_diff.html
    reviewboard/static/rb/js/diffviewer/views/diffRevisionLabelView.js
    reviewboard/static/rb/js/diffviewer/models/diffRevisionModel.js
    reviewboard/static/rb/js/pages/views/diffViewerPageView.js

  2. reviewboard/settings.py (Diff revision 3)
     
     
    Show all issues

    'from settings_local import *' used; unable to detect undefined names

  3. 
      
david
reviewbot
  1. This is a review from Review Bot.
    Tool: PEP8 Style Checker
    Processed Files:
    reviewboard/settings.py
    Ignored Files:
    reviewboard/templates/diffviewer/view_diff.html
    reviewboard/static/rb/js/diffviewer/views/diffRevisionLabelView.js
    reviewboard/static/rb/js/diffviewer/models/diffRevisionModel.js
    reviewboard/static/rb/js/pages/views/diffViewerPageView.js

  2. 
      
reviewbot
  1. This is a review from Review Bot.
    Tool: Pyflakes
    Processed Files:
    reviewboard/settings.py
    Ignored Files:
    reviewboard/templates/diffviewer/view_diff.html
    reviewboard/static/rb/js/diffviewer/views/diffRevisionLabelView.js
    reviewboard/static/rb/js/diffviewer/models/diffRevisionModel.js
    reviewboard/static/rb/js/pages/views/diffViewerPageView.js

  2. reviewboard/settings.py (Diff revision 4)
     
     
    Show all issues

    'from settings_local import *' used; unable to detect undefined names

  3. 
      
chipx86
  1. 
      
  2. reviewboard/static/rb/js/diffviewer/views/diffRevisionLabelView.js (Diff revision 4)
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

    So here's another issue to figure out involving localization and tags and such.

    In the main template, we're using <%= detail %>, so we won't get escaping. This is clearly done because the other templates contain tags, which is fine.

    Now, way we localize and get some characters in the strings that need to be escaped. We now have no mechanism to escape them, so the translated strings themselves will have to be escaped. That means we have to trust the strings to never be wrong.

    What are your thoughts on that?

    1. I'm going to add translator comments here to explain what to do.

    2. Also note that while I haven't thought too much about it, I do want to replace all of this later. For now I wanted to keep the same functionality while enabling reload-free revision switches.

    3. Sure, that's fine. It's more of a higher-level discussion I think.

  3. Any reason we don't just operate on this.$el instead?

    (I'm assuming it's for expansion, but just wanted to check.)

  4. Show all issues

    This is the only detail string without tags. Do we want to make sure we escape here?

  5. reviewboard/static/rb/js/pages/views/diffViewerPageView.js (Diff revision 4)
     
     
     
     
     
     
     
     
    Show all issues

    Maybe just have a string for the revision, and build the common parts after (or in the call to window.location). No sense in duplicating the diff/ and #index_header parts.

    1. This code is extremely temporary, and will be going away when I eliminate the reload. We'll have something similar for updating the history, but I'm doing to defer improving it until then.

    2. Sure.

  6. 
      
david
reviewbot
  1. This is a review from Review Bot.
    Tool: PEP8 Style Checker
    Processed Files:
    reviewboard/settings.py
    Ignored Files:
    reviewboard/templates/diffviewer/view_diff.html
    reviewboard/static/rb/js/diffviewer/views/diffRevisionLabelView.js
    reviewboard/static/rb/js/diffviewer/models/diffRevisionModel.js
    reviewboard/static/rb/js/pages/views/diffViewerPageView.js

  2. 
      
reviewbot
  1. This is a review from Review Bot.
    Tool: Pyflakes
    Processed Files:
    reviewboard/settings.py
    Ignored Files:
    reviewboard/templates/diffviewer/view_diff.html
    reviewboard/static/rb/js/diffviewer/views/diffRevisionLabelView.js
    reviewboard/static/rb/js/diffviewer/models/diffRevisionModel.js
    reviewboard/static/rb/js/pages/views/diffViewerPageView.js

  2. reviewboard/settings.py (Diff revision 5)
     
     
    Show all issues

    'from settings_local import *' used; unable to detect undefined names

  3. 
      
chipx86
  1. Ship It!

  2. 
      
david
Review request changed
Status:
Completed
Change Summary:

Pushed to master (f9f8751).