Add project settings option to override individual settings for any project, regardless of the project list method used. Also use settings as terminology instead of override
This moves all archiver functions into a class to wrap around a commit.
This makes it a lot easier to share code, so we don't have to repeatedly
test everywhere if the gzip and bzip2 functions exist, and the
controller doesn't have to worry about things like compressing data.
Plus it gives a central place to add additional archiving related
functions.
On the user's first visit, default language from HTTP_ACCEPT_LANGUAGE
On the very first visit when no language preference cookie is set,
attempt to guess what the user wants from their HTTP_ACCEPT_LANGUAGE
setting from their browser. (Their OS language)
This will attempt to match the preferences in the order they're
specified by the browser, which should be the user's order of
preference.
For full language + country code preferences (eg en_US) it
will attempt to match the whole thing. For just language preferences
(eg en) it will match the first locale with that same language code.
Allow user to change language without explicitly clicking "Set"
This uses javascript to submit the form as soon as the user changes the
language selection box, rather than having to also click "Set". It
removes the Set button also. Since this is done in the jQuery ready
event, there is a bit of time while the page is loading where the
onchange won't work and the set button will still be visible, then it'll
"disappear" when the page finishes loading. There's no good way around
that though if we want the page to degrade properly without javascript.
I want to present the language in the user's native language... however
there's no built-in way to translate, say, en_US to 'English', so I had
to provide a switch case mapping.
This only adds the GET variable to do the switch, the UI option isn't
there yet.
This parsing needs to be done really early because we need to do the
language switch/load before anything else happens... however I really
don't like parsing get variables so early in the index like this because
it's breaking the controller scheme that everything else uses. I may
not be able to get around that, but I'd at least like to clean it up and
maybe move this code out of the index into a function or something.
Allow setting owner, description, clone/push url metadata in the project array
This adds four new keys to the project array metadata:
'owner': overrides the owner of the project
'description': overrides the description of the project
'cloneurl': overrides the clone url of the project, can be an empty
string to explicitly remove the clone url
'pushurl': overrides the push url of the project, can be an empty string
to explicitly remove the push url
Add selection and diffing of arbitrary commits to shortlog
Currently this tries to minimize the footprint by only allowing
selection on the shortlog/log, and just uses an additional GET variable to
indicate the presence of a selection. The selection persists while
paging prev/next through the log/shortlog. The current selection is shown
abbreviated in the top link bar, with a commit link to allow the
javascript tooltip to show the full commit message. This keeps from
cluttering the text by each commit (so we can avoid repeating commit
messages or hashes in the UI over and over), and allows the user to
clear the selection from wherever they are - so they could select
something, page through a couple pages, then decide they don't want the
selection anymore and clear it, without having to page back to the
selected commit to deselect it.