diff --git a/filemanager/inc/class.filemanager_merge.inc.php b/filemanager/inc/class.filemanager_merge.inc.php index 0c39cf4592..8411b87cbf 100644 --- a/filemanager/inc/class.filemanager_merge.inc.php +++ b/filemanager/inc/class.filemanager_merge.inc.php @@ -138,6 +138,35 @@ 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) + { + // Get rid of any virtual folders (eg: All$) + $resolved = egw_vfs::resolve_url_symlinks($file['path']); + if($resolved) + { + list($app, $id) = explode('/', substr($resolved, strpos($resolved, 'apps/')+5)); + 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 +195,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 +245,9 @@ class filemanager_merge extends bo_merge echo '{{#'.$name.'}}'.$field['label']."\n"; } + echo '

'.lang('Application fields').":

"; + echo ''.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.').''; + echo '

'.lang('General fields:')."

"; foreach(array( 'date' => lang('Date'), diff --git a/filemanager/lang/egw_en.lang b/filemanager/lang/egw_en.lang index 2b19f82537..b343eb54fb 100644 --- a/filemanager/lang/egw_en.lang +++ b/filemanager/lang/egw_en.lang @@ -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