2009-07-07  David Kilzer  <ddkilzer@apple.com>

        Updated BugsSite with local changes on server

        The new files were created by checksetup.pl during the upgrade
        to Bugzilla 3.2.3.  The rest are self-explanatory.

        * data: Added "bugzilla-update.xml" to svn:ignore.
        * data/attachments: Added "groups.*" to svn:ignore.
        * data/params: Updated for a few changed parameters.

        * lib/.htaccess: Added.
        * skins/contrib/Dusk/IE-fixes.css: Added.
        * skins/contrib/Dusk/admin.css: Added.
        * skins/contrib/Dusk/create_attachment.css: Added.
        * skins/contrib/Dusk/dependency-tree.css: Added.
        * skins/contrib/Dusk/duplicates.css: Added.
        * skins/contrib/Dusk/editusers.css: Added.
        * skins/contrib/Dusk/help.css: Added.
        * skins/contrib/Dusk/index.css: Added.
        * skins/contrib/Dusk/panel.css: Added.
        * skins/contrib/Dusk/params.css: Added.
        * skins/contrib/Dusk/release-notes.css: Added.
        * skins/contrib/Dusk/show_bug.css: Added.
        * skins/contrib/Dusk/show_multiple.css: Added.
        * skins/contrib/Dusk/summarize-time.css: Added.
        * skins/contrib/Dusk/voting.css: Added.
        * skins/contrib/Dusk/yui: Added.
        * skins/contrib/Dusk/yui/calendar.css: Added.
        * skins/custom/IE-fixes.css: Added.
        * skins/custom/admin.css: Added.
        * skins/custom/buglist.css: Added.
        * skins/custom/create_attachment.css: Added.
        * skins/custom/dependency-tree.css: Added.
        * skins/custom/duplicates.css: Added.
        * skins/custom/editusers.css: Added.
        * skins/custom/help.css: Added.
        * skins/custom/panel.css: Added.
        * skins/custom/params.css: Added.
        * skins/custom/release-notes.css: Added.
        * skins/custom/show_bug.css: Added.
        * skins/custom/show_multiple.css: Added.
        * skins/custom/summarize-time.css: Added.
        * skins/custom/voting.css: Added.
        * skins/custom/yui: Added.
        * skins/custom/yui/calendar.css: Added.

2009-07-03  David Kilzer  <ddkilzer@apple.com>

        Bug 26958: Change edit link to review link in request messages

        <https://bugs.webkit.org/show_bug.cgi?id=26958>

        Reviewed by Dan Bernstein.

        * template/en/custom/request/email.txt.tmpl: Copied from BugsSite/template/en/default/request/email.txt.tmpl.
        Changed link from "action=edit" to "action=review".

2009-07-03  David Kilzer  <ddkilzer@apple.com>

        Bug 26950: Make the summary and alias fields support click-to-edit
        <https://bugs.webkit.org/show_bug.cgi?id=26950>

        Reviewed by Maciej Stachowiak.

        Original patch by Maciej Stachowiak.

        * js/field.js:
        (hideEditableField): Updated to add click event listeners to the
        alias and short description elements to make them easier to
        edit.  Renamed field_id parameter to field2_id (short
        description id) and added a field1_id parameter (alias id).
        (showEditableField): If a third parameter is passed in the
        ContainerInputArray parameter, use it to find the element to
        focus.  Otherwise, fall back to the original behavior of
        focusing the first input field.
        (hideAliasAndSummary): Changed to pass the id for the alias
        element to hideEditableField().

2009-07-02  David D. Kilzer  <ddkilzer@apple.com>

        Config file for contrib/recode.pl when upgrading bugs.webkit.org

        Current as of midday on Wednesday, July 1, 2009.

        * contrib/recode-overrides.txt: Added.

2009-07-02  David D. Kilzer  <ddkilzer@apple.com>

        Workaround for WebKit Bug 9630 when running contrib/recode.pl

        A number of WebKit nightly builds included Bug 9630 which caused
        non-breaking space characters (0xA0) to be submitted within the
        content of textarea elements.

        * contrib/recode.pl: To work around these 0xA0 characters, try
        an encoding of cp1252 and use it if it works.

2009-07-02  David D. Kilzer  <ddkilzer@apple.com>

        Don't print "Failed to guess" warning if an override is available

        * contrib/recode.pl: Check that %overrides does NOT contain a
        key matching the current digest before printing out the warning
        about a failed charset guess.

2009-07-02  David D. Kilzer  <ddkilzer@apple.com>

        Added --[no-]truncate switch to contrib/recode.pl

        * contrib/recode.pl: Added --[no-]truncate switch to make
        debugging of failed charset guessing easier.  Often times the
        illegal character was truncated in the output.

2009-07-02  David D. Kilzer  <ddkilzer@apple.com>

        Changed Perl scripts to use #!/usr/bin/env perl

        perl -pi -e 's@#\!/usr/bin/perl@#\!/usr/bin/env perl@' *.cgi *.pl */*.pl

2009-07-02  David D. Kilzer  <ddkilzer@apple.com>

        Replace Bugzilla favicon with webkit.org favicon

        * favicon.ico: Removed.
        * images/favicon.ico: Replaced.  Copied from favicon.ico.

2009-07-02  David Kilzer  <ddkilzer@webkit.org>

        Merged BugsSite to Bugzilla-3.2.3

        Updated to the latest-and-greatest stable version.

2009-07-02  David Kilzer  <ddkilzer@webkit.org>

        Merged BugsSite to Bugzilla-3.0.3

        Nothing to see here.  Move along.

2009-06-09  Eric Seidel  <eric@webkit.org>

        Reviewed by Adam Roben.

        Add support for displaying added png files in PrettyPatch diffs
        https://bugs.webkit.org/show_bug.cgi?id=26210

        Currently this is SVN only (git-send-bugzilla patches exclude binary data)
        and only works for PNG files but could easily be made to work for other images as needed.

        * PrettyPatch/PrettyPatch.rb:

2009-05-19  Eric Seidel  <eric@webkit.org>

        Reviewed by Adam Roben.

        Make PrettyPatch understand quoted filenames in git diffs.
        https://bugs.webkit.org/show_bug.cgi?id=25881

        * PrettyPatch/PrettyPatch.rb:

2009-05-15  Simon Fraser  <simon.fraser@apple.com>

        Carrying forwards Darin Adler's rubber stamp
        
        Make the comment field wider too.

        * skins/custom/global.css:

2009-05-14  Simon Fraser  <simon.fraser@apple.com>

        Reviewed by Darin Adler
        
        Make the URL, Summary and Keyword fields wider to mitigate the
        effects of https://bugs.webkit.org/show_bug.cgi?id=25566 and make
        things generally better.

        * skins/custom/global.css:
        * template/en/custom/bug/edit.html.tmpl:

2008-11-10  Darin Adler  <darin@apple.com>

        - fix more of https://bugs.webkit.org/show_bug.cgi?id=21400
          "Edit" links for patches in comments, review queue, review emails
          should be replaced by "Review Patch" links

        * globals.pl: Fix cases that are automatically generated, such as links
        in comments in bugs.

        * template/en/custom/attachment/created.html.tmpl: Fix the link on the
        "I just created an attachment" page.

        * template/en/custom/request/queue.html.tmpl: Fix the link in the queue
        page.

2008-11-10  Darin Adler  <darin@apple.com>

        * template/en/default/request/queue.html.tmpl: Use review links instead
        of edit links in the review queue.

2008-11-10  Darin Adler  <darin@apple.com>

        * template/en/custom/request/email.txt.tmpl: Send review links instead
        of edit links when flags are set on a bug.

2008-10-27  Darin Adler  <darin@apple.com>

        * template/en/custom/attachment/reviewform.html.tmpl: Leave out the
        comment if it's untouched.

2008-10-23  Adam Roben  <aroben@apple.com>

        Fix Bug 21401: Comments field on "Review Patch" page should be
        initially filled with quoted patch

        <https://bugs.webkit.org/show_bug.cgi?id=21401>

        Reviewed by Dave Hyatt.

        * attachment.cgi:
        (edit): Retrieve the attachment data from the database instead of just
        its length. When the attachment is a patch, create a quotedpatch
        template variable that contains the patch data with each line
        prepended with "> ".
        * template/en/custom/attachment/reviewform.html.tmpl:
          - Changed the comments field to have a monospace font
          - Added an "Enter comments below:" caption above the comments field
            to make it clearer that this is where comments should go, now that
            the comments field is not initially empty
          - Fill the comments field with the quoted patch

2008-10-14  Adam Roben  <aroben@apple.com>

        Fix Bug 21602: Bugzilla times out trying to display formatted diff for
        attachment 24345
        
        https://bugs.webkit.org/show_bug.cgi?id=21602

        Reviewed by Dave Kilzer.

        * PrettyPatch/PrettyPatch.rb:
        (PrettyPatch.BINARY_FILE_MARKER_FORMAT): Added.
        (PrettyPatch.FileDiff.initialize): If any of the lines in the diff
        are a binary file marker, mark this FileDiff as binary and stop trying
        to process the lines.
        (PrettyDiff.FileDiff.to_html): If we're binary, just print a string
        saying so.

2008-10-02  Adam Roben  <aroben@apple.com>

        * template/en/custom/attachment/reviewform.html.tmpl: Fix typo.

2008-10-02  Adam Roben  <aroben@apple.com>

        * template/en/custom/attachment/review.html.tmpl: Fix URLs

2008-10-02  Adam Roben  <aroben@apple.com>

        Fix Bug 21315: bugs.webkit.org should have a nicer patch review
        interface

        https://bugs.webkit.org/show_bug.cgi?id=21315

        Reviewed by Tim Hatcher.

        * attachment.cgi:
        (top level): Added support for the "review" and "reviewform" actions.
        (sub edit): Accept the template name as a parameter. If no name is
        give, use "edit" as before.
        * template/en/custom/attachment/list.html.tmpl: Added a "Review Patch"
        link for all patch attachments.
        * template/en/custom/attachment/review.html.tmpl: Added. Simple
        <frameset> page to show the patch on the top and a comment form on the
        bottom.
        * template/en/custom/attachment/reviewform.html.tmpl: Added. Simple
        comment form for reviewing patches.

2008-10-02  Adam Roben  <aroben@apple.com>

        Remove references to some backup files I created when implementing
        PrettyPatch in Bugzilla

        Reviewed by Tim Hatcher.

        * attachment-aroben.cgi: Removed.
        * template/en/default/attachment/edit-aroben.html.tmpl: Removed.

        * template/en/custom/attachment/edit.html.tmpl: Removed an erroneous
        reference to attachment-aroben.cgi. attachment.cgi will work just
        fine.

2008-06-25  David Kilzer  <ddkilzer@apple.com>

        Make PrettyPatch handle diffs with no Index or diff headers

        Part of Bug 19290: More patches not handled by PrettyPatch.rb
        <https://bugs.webkit.org/show_bug.cgi?id=19290>

        Reviewed by Adam.

        * PrettyPatch/PrettyPatch.rb:
        (PrettyPatch.DIFF_HEADER_FORMATS): Added regular expression to
        match on "+++ " lines for patches with no "Index" or "diff" header.
        (PrettyPatch.FileDiff.initialize): Look for filename on "+++ " line
        when the first line of a patch has no "Index" or "diff" header.
        (PrettyPatch.FileDiff.parse): Added haveSeenDiffHeader state
        variable to determine when no "Index" or "diff" header has been
        found, but a new patch has started with a "--- " line.

2008-06-08  Dan Bernstein  <mitz@apple.com>

        Reviewed by Adam Roben.

        - update trac URL in PrettyPatch

        * PrettyPatch/PrettyPatch.rb:

2008-05-29  Adam Roben  <aroben@apple.com>

        Update PrettyPatch directory list

        * PrettyPatch/PrettyPatch.rb:

2008-05-28  Adam Roben  <aroben@apple.com>

        Make PrettyPatch able to handle diffs taken from outside the WebKit
        source tree

        Part of Bug 19290: More patches not handled by PrettyPatch.rb
        <https://bugs.webkit.org/show_bug.cgi?id=19290>

        Reviewed by David Kilzer.

        * PrettyPatch/PrettyPatch.rb:
        (PrettyPatch.find_url_and_path): Added. Searches the file path from
        the bottom up looking for a directory that exists in the source tree.
        (PrettyPatch.linkifyFilename): Changed to call find_url_and_path.

2008-05-28  Adam Roben  <aroben@apple.com>

        Print exceptions from PrettyPatch to stdout

        This will make it much easier to debug problems with PrettyPatch,
        since we'll be able to see the exceptions in the browser.

        Reviewed by Sam Weinig.

        * PrettyPatch/prettify.rb: Added a --html-exceptions option, which
        will print exceptions to stdout as HTML.
        * attachment.cgi: Changed to pass --html-exceptions to prettify.rb.

2008-04-26  David Kilzer  <ddkilzer@apple.com>

        Removed temp files and added appropriate svn:ignore properties.

        Rubber-stamped by Mark Rowe.

        * data: Added svn:ignore property for "versioncache" and "versioncache.*" files.

        * data/template: Added svn:ignore property for "template" subdirectory.
        * data/template/template: Removed precompiled template subdirectory.

        * data/versioncache: Removed.
        * data/versioncache.*: Removed backup versioncache files.

        * data/webdot: Added svn:ignore property for "*.dot" files.
        * data/webdot/*.dot: Removed cached webdot files.

2008-04-08  Adam Roben  <aroben@apple.com>

        Combine :equal operations with the following operation if they are
        fewer than 3 characters long

        This keeps us from showing lots of small changes on long lines, just
        because some letters happened to be the same.

        Inspired by
        http://code.google.com/p/reviewboard/source/browse/trunk/reviewboard/diffviewer/diffutils.py?r=1264#147

        * PrettyPatch/PrettyPatch.rb:
        (PrettyPatch::DiffSection.initialize): Remove :equal operations fewer
        than 3 characters long. The characters from the removed operations
        become part of the subsequent operation.
        (PrettyPatch::CodeLine.text_as_html): Don't wrap 0-length strings in
        <ins>/<del> tags. Also removed the @fromLineNumber.nil? and
        @toLineNumber.nil? checks as they are no longer reliable now that
        we're removing operations.

2008-04-08  Adam Roben  <aroben@apple.com>

        Change PrettyPatch to use DiffBuilder for intra-line diffs

        This gives us much prettier intra-line diffs, largely because it can
        distinguish multiple changes on the same line. e.g., if a line changes
        from:

        const int myConstant = 0;

        to

        static const unsigned myConstant;

        You will see that "static " was inserted, "int" changed to "unsigned",
        and " = 0" was deleted.

        This seems to have also gotten rid of some spurious instances of
        "<ins></ins>" and "<del></del>" at the end of a line.

        * PrettyPatch/PrettyPatch.rb:
        (PrettyPatch::DiffSection.initialize): Use DiffBuilder instead of
        setChangeExtentFromLine (which had been copied from Trac's diffing
        code).
        (PrettyPatch::CodeLine):
         - Removed the changeExtent attribute
         - Added the operations attribute
         - Removed the setChangeExtentFromLine method
        (PrettyPatch::CodeLine.text_as_html): Uses @operations to determine
        what text to wrap in <ins> and <del> tags.
        * PrettyPatch/diff.rb: Deleted a bunch of code we don't use.
        (HTMLDiff::DiffBuilder.initialize): Moved code here from the old build
        method, but left out the calls to perform_operation, since we build
        the diff HTML outside of this class.
        (HTMLDiff::DiffBuilder.split_inputs_to_words): Removed calls to
        convert_html_to_list_of_words, since we're not diffing HTML.

2008-04-08  Adam Roben  <aroben@apple.com>

        Check in diff.rb

        This came from
        http://instiki.rubyforge.org/svn/instiki/trunk/lib/diff.rb
        revision 28521

        * PrettyPatch/diff.rb: Added.

2008-03-04  Adam Roben  <aroben@apple.com>

        * PrettyPatch/PrettyPatch.rb: Allow the extent of the previous file to
        be omitted from the hunk header.

