* For files inside /apps/appname/id, the application's merge print placeholders are also available

This commit is contained in:
Nathan Gray 2012-06-26 14:35:53 +00:00
parent 93d83f319d
commit 8075cb9a9b
2 changed files with 49 additions and 0 deletions

View File

@ -138,6 +138,47 @@ class filemanager_merge extends bo_merge
$file["links/{$app}"] = $this->get_links('filemanager',$id, $app);
}
*/
// If in apps folder, try for app-specific placeholders
if($dirlist[1] == 'apps' && count($dirlist) > 1)
{
// Try this first - a normal path /apps/appname/id/file
list($app, $id) = explode('/', substr($file['path'], strpos($file['path'], 'apps/')+5));
// Symlink?
if(!$app || !$id || !array_key_exists($app, $GLOBALS['egw_info']['user']['apps'])) {
// Try resolving just app + ID - /apps/App Name/Record Title/file
$resolved = egw_vfs::resolve_url_symlinks(implode('/',array_slice($dirlist,0,4)));
list($app, $id) = explode('/', substr($resolved, strpos($resolved, 'apps/')+5));
if(!$app || !$id || !array_key_exists($app, $GLOBALS['egw_info']['user']['apps'])) {
// Get rid of any virtual folders (eg: All$) and symlinks
$resolved = egw_vfs::resolve_url_symlinks($file['path']);
list($app, $id) = explode('/', substr($resolved, strpos($resolved, 'apps/')+5));
}
}
if($app && $id)
{
if($app && $GLOBALS['egw_info']['user']['apps'][$app])
{
$app_merge = null;
try
{
$classname = $app .'_merge';
if(class_exists($classname))
{
$app_merge = new $classname();
if($app_merge && method_exists($app_merge, 'get_replacements'))
{
$app_placeholders = $app_merge->get_replacements($id, $content);
}
}
}
// Silently discard & continue
catch(Exception $e) {}
}
}
}
$link = egw_link::mime_open($file['url'], $file['mime']);
if(is_array($link))
{
@ -166,6 +207,10 @@ class filemanager_merge extends bo_merge
if(!$value) $value = '';
$info['$$'.($prefix ? $prefix.'/':'').$key.'$$'] = $value;
}
if($app_placeholders)
{
$info = array_merge($app_placeholders, $info);
}
return $info;
}
@ -212,6 +257,9 @@ class filemanager_merge extends bo_merge
echo '<tr><td>{{#'.$name.'}}</td><td colspan="3">'.$field['label']."</td></tr>\n";
}
echo '<tr><td colspan="4"><h3>'.lang('Application fields').":</h3></td></tr>";
echo '<tr><td colspan="4">'.lang('For files linked to an application entry (inside /apps/appname/id/) the placeholders for that application are also available. See the specific application for a list of available placeholders.').'</td></tr>';
echo '<tr><td colspan="4"><h3>'.lang('General fields:')."</h3></td></tr>";
foreach(array(
'date' => lang('Date'),

View File

@ -105,6 +105,7 @@ files in this directory filemanager en Files in this directory
filesystem check reported no problems. filemanager en Filesystem check reported no problems.
fix reported problems filemanager en Fix reported problems
folder up filemanager en Folder up
for files linked to an application entry (inside /apps/appname/id/) the placeholders for that application are also available. see the specific application for a list of placeholders filemanager en For files linked to an application entry (inside /apps/appname/id/) the placeholders for that application are also available. See the specific application for a list of placeholders
general filemanager en General
go home filemanager en Go home
go to filemanager en Go to