11 years agoOn the user's first visit, default language from HTTP_ACCEPT_LANGUAGE
Chris Han []
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.

11 years agoHide gibberish locale if not in debug mode
Chris Han []
Hide gibberish locale if not in debug mode

11 years agoShow the locale with the language
Chris Han []
Show the locale with the language

11 years agoDon't send duplicate l= values
Chris Han []
Don't send duplicate l= values

11 years agoAllow user to change language without explicitly clicking "Set"
Chris Han []
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.

11 years agoAdd menu for users to switch their language
Chris Han []
Add menu for users to switch their language

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.

11 years agoSince the language can be independent of the config now, it needs to be a part of the cache key
Chris Han []
Since the language can be independent of the config now, it needs to be a part of the cache key

11 years agoAllow on the fly change of locale
Chris Han []
Allow on the fly change of locale

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.

11 years agoAdd a couple helpers to the resource class
Chris Han []
Add a couple helpers to the resource class

11 years agoregexp-ignore-case only appears in git 1.5.3
Chris Han []
regexp-ignore-case only appears in git 1.5.3

11 years agoFrench translation
Zaran []
French translation

11 years agoUpdate gibberish locale with unicode ellipsis
Chris Han []
Update gibberish locale with unicode ellipsis

11 years agoReextract with unicode ellipses
Chris Han []
Reextract with unicode ellipses

11 years agoSpecify from code when extracting strings
Chris Han []
Specify from code when extracting strings

11 years agoUse unicode ellipsis
Chris Han []
Use unicode ellipsis

11 years agoAdd plain blob link to tree view
Chris Han []
Add plain blob link to tree view

11 years agoLeave a pixel of space above the log links
Chris Han []
Leave a pixel of space above the log links

11 years agoAllow setting owner, description, clone/push url metadata in the project array
Chris Han []
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

11 years agoIgnore the hometext template
Chris Han []
Ignore the hometext template

11 years agoSome versions of PHP are more strict about function signatures
Chris Han []
Some versions of PHP are more strict about function signatures

11 years agoRemove gitignore files when packing
Chris Han []
Remove gitignore files when packing

11 years agoRemove debug locale when packing
Chris Han []
Remove debug locale when packing

11 years agoIgnore compiled MO files
Chris Han []
Ignore compiled MO files

11 years agoExtract strings used for select diff functionality, update gibberish
Chris Han []
Extract strings used for select diff functionality, update gibberish

11 years agoAllow selection to persist when jumping from log to shortlog and vice versa
Chris Han []
Allow selection to persist when jumping from log to shortlog and vice versa

11 years agoAdd selection and diffing of arbitrary commits to shortlog
Chris Han []
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.

11 years agoAllow customization of projects link
Chris Han []
Allow customization of projects link

11 years agoUpdate README since hometext.tpl needs to be created, not edited
Chris Han []
Update README since hometext.tpl needs to be created, not edited

11 years agoStop tracking hometext template
Chris Han []
Stop tracking hometext template

11 years agoAdd history link to blob page
Chris Han []
Add history link to blob page

11 years agoAdd tarball packing script
Chris Han []
Add tarball packing script

11 years agoAdd some of my utility scripts
Chris Han []
Add some of my utility scripts

11 years agoExtract POT file fresh using script
Chris Han []
Extract POT file fresh using script

11 years agoA file editor must have changed the modes on these files
Chris Han []
A file editor must have changed the modes on these files

11 years agoThe LC_MESSAGES dir isn't necessary
Chris Han []
The LC_MESSAGES dir isn't necessary

11 years agoThis in't a po file, it's a pot
Chris Han []
This in't a po file, it's a pot

11 years agoForgot to extract the RSS/OPML/TXT button captions
Chris Han []
Forgot to extract the RSS/OPML/TXT button captions

11 years agoFix escaping of moved file links in commit view
Chris Han []
Fix escaping of moved file links in commit view

11 years agoWindows php doesn't like the date format shortcuts for some reason
Chris Han []
Windows php doesn't like the date format shortcuts for some reason

11 years agoRemove unnecessary old resource classes, move resource class out of resource subpackage since it's the only resource file now
Chris Han []
Remove unnecessary old resource classes, move resource class out of resource subpackage since it's the only resource file now

11 years agoAdd gibberish locale
Chris Han []
Add gibberish locale

11 years agoAdd translator comments
Chris Han []
Add translator comments

11 years agoAdd extracted english po
Chris Han []
Add extracted english po

11 years agoSwitch to gettext for i18n
Chris Han []
Switch to gettext for i18n

11 years agoAdd copy of smarty-gettext modified to use gitphp resource provider
Chris Han []
Add copy of smarty-gettext modified to use gitphp resource provider

11 years agoAdd php-gettext and smarty-gettext
Chris Han []
Add php-gettext and smarty-gettext

11 years agoFix reading projects from file to support multi-word owners
Chris Han []
Fix reading projects from file to support multi-word owners

The previous version only took the first word of the owner specified in
the project list file, since it was tokenizing by spaces

11 years agoPrevent crashes with empty projects
Chris Han []
Prevent crashes with empty projects

This disables or hides pretty much all links - shortlog, log, commit,
commitdiff, tree, snapshot, etc - for an empty project with no commits.
None of those actions make any sense if the project is empty. There are
still outstanding crashes if the user crafts a url manually to directly
access a page for a project, but since that won't happen nearly as often
it's not quite as high a priority.

This also extracts the nav links at the top of each page into a shared
template, so we only need to check if a commit exists in one place.

11 years agoHave git ignore config files
Chris Han []
Have git ignore config files

11 years agoEnsure the resource manager exists when displaying an error message
Chris Han []
Ensure the resource manager exists when displaying an error message

11 years agoFix loading image urls on some browsers
Chris Han []
Fix loading image urls on some browsers

Some browsers don't properly determine the base url, when you use a
relative path in an href/src (eg "images/tooltip-loader.gif") - they
will treat slashes in a GET variable as a part of the actual path. So
when you have a URL like
(http://server/gitphp/index.php?p=php/gitphp.git), despite the slash in
the GET variable being escaped in the url, trying to load the images
path above resolves as
http://server/gitphp/index.php?p=php/images/tooltip-loader.gif, which
isn't right. This uses a regex in the javascript to extract only the
actual dirname of the instance, to give the loading img tags a full url.

11 years agoNot sure how a redundant end head tag ended up in here
Chris Han []
Not sure how a redundant end head tag ended up in here

11 years agoBump version to 0.2.0
Chris Han []
Bump version to 0.2.0

I think the rewrite is enough justification to bump the minor version.
Since behaviorally it's mostly the same I don't think the major version
should be bumped.

11 years agoUpdate README with slightly different config file method
Chris Han []
Update README with slightly different config file method

11 years agoAdd shadows to tooltips
Chris Han []
Add shadows to tooltips

11 years agoUpgrade GeSHi to 1.0.8.8
Chris Han []
Upgrade GeSHi to 1.0.8.8

11 years agoAdd ajax tag tooltips
Chris Han []
Add ajax tag tooltips

11 years agoSplit out ref badges into their own template
Chris Han []
Split out ref badges into their own template

11 years agoTurn off debugging for RSS and OPML/txt, it's screwing things up
Chris Han []
Turn off debugging for RSS and OPML/txt, it's screwing things up

11 years agoGit name-rev to find the tag on a commit is a whole lot faster than walking the tree ourselves
Chris Han []
Git name-rev to find the tag on a commit is a whole lot faster than walking the tree ourselves

11 years agoSplit out revision list on shortlog page and project summary into shared template fragment
Chris Han []
Split out revision list on shortlog page and project summary into shared template fragment

11 years agoSplit out head list on heads page and project summary into shared template fragment
Chris Han []
Split out head list on heads page and project summary into shared template fragment

11 years agoAdd support for tags pointing to other tag objects
Chris Han []
Add support for tags pointing to other tag objects

Tags now store the object they point to and the commit separately. (For
tags pointing right to commits, the object and the commit are the same)
This keeps the object link working correctly by pointing to the direct
object (as opposed to dereferencing all the way down to the commit), so
you can use the object link to trace tagged tags all the way down to the
base commit.

Also, the project and the tag list page now use the same tag listing
template fragment to make things easier.

11 years agoFix tree link for heads
Chris Han []
Fix tree link for heads

The tree link by heads was passing the old style h=refs/heads/[head]
piece of the url, from the old version. It actually wasn't worth it to
implement the translation of the ref path to the tree object in the tree
controller, because we were already passing the hash of the head's HEAD
commit as the hashbase parameter (hb=) - in that case the tree
controller is already automatically looking up the tree for that
hashbase commit.

11 years agoMake sure message controller actually works when telling the user no projectroot is set
Chris Han []
Make sure message controller actually works when telling the user no projectroot is set

11 years agoI18N new javascript strings
Chris Han []
I18N new javascript strings

11 years agoUsing a different editor screwed up the file modes
Chris Han []
Using a different editor screwed up the file modes

11 years agoAdd locale option documentation in default config, change minimum search length error message to take length as a parameter, add defaults in US locale for easier copy and translate
Chris Han []
Add locale option documentation in default config, change minimum search length error message to take length as a parameter, add defaults in US locale for easier copy and translate

11 years agoI18N commit tooltip template
Chris Han []
I18N commit tooltip template

11 years agoI18N error messages
Chris Han []
I18N error messages

11 years agoFix paths on blobdiff from commit page
Chris Han []
Fix paths on blobdiff from commit page

11 years agoTokenize commitdiff strings
Chris Han []
Tokenize commitdiff strings

11 years agoTokenize various other header links
Chris Han []
Tokenize various other header links

11 years agoAdd auto-gibberize code to debug locale, tokenize rest of commit page
Chris Han []
Add auto-gibberize code to debug locale, tokenize rest of commit page

11 years agoAdd i18n framework and start tokenizing some strings
Chris Han []
Add i18n framework and start tokenizing some strings

11 years agoMissed setting the path on blobdiff and history view
Chris Han []
Missed setting the path on blobdiff and history view

11 years agoTurn off logging output for plaintext commitdiff
Chris Han []
Turn off logging output for plaintext commitdiff

11 years agoTurn off logging output for plaintext blob
Chris Han []
Turn off logging output for plaintext blob

11 years agoFix trees with multiple names getting mixed up
Chris Han []
Fix trees with multiple names getting mixed up

This addresses three issues:
1. Git stores trees as a hash of their content, which has nothing to do
with their name. Therefore, two different directories with the exact
same content but different names could end up pointing to the exact same
tree hash. This caused problems on the tree view, when it attempted to
look up the tree name by its hash - this is actually something you just
can't do reliably in git because of this system.
2. Previously, the tree view used the object cache when enumerating
items in the tree. However, because of the problem above, you could
have two copies of the same tree under two different names. Because the
object cache stores by reference, fetching and populating the tree with
data during its second appearance in the tree actually affected and
overwrote what was populated during its first appearance in the tree.
This happened during the model load, before the template was rendered,
so instead of showing the first instance and then the second instance,
it looked like the second instance appeared twice.
3. Previously the FilesystemObject class used a system where you would
assign the name to an object. This was a leftover from before it was
split out of the Tree object. Doing it this way meant there were
inconsistencies all over the place as far as what was being set for the
name - sometimes it was just the base file name, sometimes it was the
full file path, and every now and then it would have to be converted
back and forth.

Now, these are fixed:
1. Now, the f= parameter is taken as the source of truth and used to set
up the path for the tree/blob.
2. Now, the tree enumeration doesn't use the cache in order to prevent
this situation.
3. Now, for consistency, the ability to set a name for a filesystem
object is removed. You can only set the full path now using SetPath,
SetName is removed. The name can still be fetched but it is
automatically derived as the base file name of the path.

11 years agoFix subdirectory snapshots of old commits
Chris Han []
Fix subdirectory snapshots of old commits

The snapshot url was passing the tree as the hash parameter to the
snapshot command - the commit should be the parameter

11 years agoFix getting snapshots of old commits
Chris Han []
Fix getting snapshots of old commits

I used the wrong variable in the commit controller, so it never actually
read the hash parameter for the commit properly

11 years agoRe-enable exception catch for messages
Chris Han []
Re-enable exception catch for messages

Setting the debug flag will rethrow the exception so you can see the
full stack trace

11 years agoFix extraneous data corrupting snapshots, and caching of subtree snapshots
Chris Han []
Fix extraneous data corrupting snapshots, and caching of subtree snapshots

11 years agoRemove unnecessary DOM walking
Chris Han []
Remove unnecessary DOM walking

11 years agoAdjust blame loading message a bit, add slight fading effect
Chris Han []
Adjust blame loading message a bit, add slight fading effect

11 years agoRemove some redundant local variables
Chris Han []
Remove some redundant local variables

11 years agoFix ajax blame with non-geshi blobs
Chris Han []
Fix ajax blame with non-geshi blobs

The non-geshi blob output has a row for each line, which is even harder
to inject blame data into. It just made more sense to change the
non-geshi blob output to the same table structure as geshi, so one
javascript blame solution worked for both.

Plus, it had the advantage of fixing the bug that made geshi introduce
this format in the first place - if you highlight code with your mouse,
the line numbers are no longer selected along with it in non-geshi view.

11 years agoMake sure to reinitialize tooltips after injecting blame data into DOM
Chris Han []
Make sure to reinitialize tooltips after injecting blame data into DOM

11 years agoStart working on ajax blame load
Chris Han []
Start working on ajax blame load

11 years agoNo need to include the extra css style block if it's empty
Chris Han []
No need to include the extra css style block if it's empty

11 years agoAdd a config to turn off javascript
Chris Han []
Add a config to turn off javascript

11 years agoAdd commit tooltips to more places
Chris Han []
Add commit tooltips to more places

11 years agoAdd a little more info to the commit tip
Chris Han []
Add a little more info to the commit tip

11 years agoUse a more fitting tooltip theme by default
Chris Han []
Use a more fitting tooltip theme by default

11 years agoUnescape projects read in javascript, so it doesn't get double escaped
Chris Han []
Unescape projects read in javascript, so it doesn't get double escaped

11 years agoTurn off logging when sending back tooltips, it's screwing up the tip content
Chris Han []
Turn off logging when sending back tooltips, it's screwing up the tip content

11 years agoStart working on commit message tooltips
Chris Han []
Start working on commit message tooltips

Only enabled on the blame page so far

11 years agoFix a couple warnings in commitdiff
Chris Han []
Fix a couple warnings in commitdiff

11 years agoGet rid of some php warnings
Chris Han []
Get rid of some php warnings

11 years agoNew way of specifying projects and categories
Chris Han []
New way of specifying projects and categories

This changes the way projects are specified with categories in an array.
There is a new config file in the config directory, projects.conf.php,
where the projects are listed using the git_projects array. In order to
make the transition easier for upgrading users without breaking
everything when they upgrade, this will allow a fallback to the legacy
method. If the file projects.conf.php exists, it will read that using
the new array format. If it doesn't exist, it will continue to use the
legacy array format that was specified in the main gitphp.conf.php.

This change was necessary because the previous format was limited to
only a single piece of metadata for a project - one category as a
string. Now, with this format, an arbitrary amount of metadata can be
specified for any project - so future enhancements can take advantage of
this and it will be very easy to add extra metadata.

This uses PHP's standard syntax for specifying multidimensional arrays.
It is admittedly more complicated than the old method because you have
to get all the syntax with commas and array() declarations correct,
which may be difficult for non-PHP programmers. I considered doing an
actual config file parser; however since this file is loaded every
single time you load any page, I wanted it to be as lightweight as
possible, and nothing is more lightweight than PHP's native syntax.

comments