do actual language negotiation for help docs

This commit is contained in:
Evan Prodromou 2010-01-22 14:13:28 -05:00
parent 9f815c968f
commit 104d300799

View File

@ -51,6 +51,8 @@ class DocAction extends Action
function prepare($args) function prepare($args)
{ {
parent::prepare($args);
$this->title = $this->trimmed('title'); $this->title = $this->trimmed('title');
$this->output = null; $this->output = null;
@ -163,25 +165,41 @@ class DocAction extends Action
function getFilename() function getFilename()
{ {
$local = array_merge(glob(INSTALLDIR.'/local/doc-src/'.$this->title), if (file_exists(INSTALLDIR.'/local/doc-src/'.$this->title)) {
glob(INSTALLDIR.'/local/doc-src/'.$this->title.'.*')); $localDef = INSTALLDIR.'/local/doc-src/'.$this->title;
if (count($local)) {
return $this->negotiateLanguage($local);
} }
$dist = array_merge(glob(INSTALLDIR.'/doc-src/'.$this->title), $local = glob(INSTALLDIR.'/local/doc-src/'.$this->title.'.*');
glob(INSTALLDIR.'/doc-src/'.$this->title.'.*'));
if (count($dist)) { if (count($local) || isset($localDef)) {
return $this->negotiateLanguage($dist); return $this->negotiateLanguage($local, $localDef);
}
if (file_exists(INSTALLDIR.'/doc-src/'.$this->title)) {
$distDef = INSTALLDIR.'/doc-src/'.$this->title;
}
$dist = glob(INSTALLDIR.'/doc-src/'.$this->title.'.*');
if (count($dist) || isset($distDef)) {
return $this->negotiateLanguage($dist, $distDef);
} }
return null; return null;
} }
function negotiateLanguage($files) function negotiateLanguage($filenames, $defaultFilename=null)
{ {
// FIXME: write this // XXX: do this better
$langcode = common_language();
foreach ($filenames as $filename) {
if (preg_match('/\.'.$langcode.'$/', $filename)) {
return $filename;
}
}
return $defaultFilename;
} }
} }