10 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.

10 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

10 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.

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

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

10 years agoFrench translation
Zaran []
French translation

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

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

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

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

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

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

10 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

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

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

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

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

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

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

10 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

10 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.

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

10 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

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

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

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

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

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

10 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

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

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

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

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

10 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

10 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

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

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

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

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

10 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

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

10 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

10 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.

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

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

10 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.

10 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

10 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.

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

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

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

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

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

10 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

10 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

10 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

10 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

10 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.

10 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.

10 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

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

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

10 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

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

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

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

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

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

10 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

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

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

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

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

10 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.

10 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

10 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

10 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

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

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

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

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

10 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.

10 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

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

10 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

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

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

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

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

10 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

10 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

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

Only enabled on the blame page so far

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

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

10 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.

10 years agoFix blame line alignment issue in Firefox
Chris Han []
Fix blame line alignment issue in Firefox

10 years agoDon't use generic classes for blame hover
Chris Han []
Don't use generic classes for blame hover

10 years agoAdd geshi support to blame page
Chris Han []
Add geshi support to blame page

This uses a really nasty hack to take apart the HTML table that geshi
returns, in order to inject a table cell with the blame data.
Unfortunatly because geshi only returns a complete block of HTML,
there's no good way to do this.

10 years agoUse substr instead of str_replace when making category out of directory
Chris Han []
Use substr instead of str_replace when making category out of directory

Using str_replace can be a problem if your projectroot is the same as
one of the subdirectories of the project. For example:

If you projectroot is /git/, and your project is
/git/projects/php/git/gitphp.git, str_replace will remove both
appearances of '/git/' even though you only intended to remove the first
one

10 years agoFix blame when it returns filenames because of rename detection
Chris Han []
Fix blame when it returns filenames because of rename detection

comments