refactor detail.php to template.php

- refactor detail en mediamanager link creation
- refactor metadata listing
This commit is contained in:
Gerrit Uitslag 2014-02-25 15:45:00 +01:00
parent 5d873dd4ce
commit becfa414b5
5 changed files with 105 additions and 54 deletions

View File

@ -5,7 +5,7 @@
* following contents:
* fieldname - Where data will be saved (EXIF or IPTC field)
* label - key to lookup in the $lang var, if not found printed as is
* htmltype - 'text' or 'textarea'
* htmltype - 'text', 'textarea' or 'date'
* lookups - array additional fields to lookup the data (EXIF or IPTC fields)
*
* The fields are not ordered continously to make inserting additional items

View File

@ -52,6 +52,8 @@ $lang['btn_register'] = 'Register';
$lang['btn_apply'] = 'Apply';
$lang['btn_media'] = 'Media Manager';
$lang['btn_deleteuser'] = 'Remove My Account';
$lang['btn_img_backto'] = 'Back to %s';
$lang['btn_mediaManager'] = 'View in media manager';
$lang['loggedinas'] = 'Logged in as';
$lang['user'] = 'Username';
@ -253,7 +255,6 @@ $lang['admin_register'] = 'Add new user';
$lang['metaedit'] = 'Edit Metadata';
$lang['metasaveerr'] = 'Writing metadata failed';
$lang['metasaveok'] = 'Metadata saved';
$lang['img_backto'] = 'Back to';
$lang['img_title'] = 'Title';
$lang['img_caption'] = 'Caption';
$lang['img_date'] = 'Date';
@ -266,7 +267,6 @@ $lang['img_camera'] = 'Camera';
$lang['img_keywords'] = 'Keywords';
$lang['img_width'] = 'Width';
$lang['img_height'] = 'Height';
$lang['img_manager'] = 'View in media manager';
$lang['subscr_subscribe_success'] = 'Added %s to subscription list for %s';
$lang['subscr_subscribe_error'] = 'Error adding %s to subscription list for %s';

View File

@ -548,6 +548,7 @@ function tpl_actionlink($type, $pre = '', $suf = '', $inner = '', $return = fals
* @var string $method
* @var bool $nofollow
* @var array $params
* @var string $replacement
*/
extract($data);
if(strpos($id, '#') === 0) {
@ -556,6 +557,9 @@ function tpl_actionlink($type, $pre = '', $suf = '', $inner = '', $return = fals
$linktarget = wl($id, $params);
}
$caption = $lang['btn_'.$type];
if(strpos($caption, '%s')){
$caption = sprintf($caption, $replacement);
}
$akey = $addTitle = '';
if($accesskey) {
$akey = 'accesskey="'.$accesskey.'" ';
@ -609,11 +613,12 @@ function tpl_get_action($type) {
if ($type == 'subscription') $type = 'subscribe';
if(!actionOK($type)) return false;
$accesskey = null;
$id = $ID;
$method = 'get';
$params = array('do' => $type);
$nofollow = true;
$accesskey = null;
$id = $ID;
$method = 'get';
$params = array('do' => $type);
$nofollow = true;
$replacement = '';
switch($type) {
case 'edit':
// most complicated type - we need to decide on current action
@ -670,6 +675,11 @@ function tpl_get_action($type) {
$params = array();
$accesskey = 'b';
break;
case 'img_backto':
$params = array();
$accesskey = 'b';
$replacement = $ID;
break;
case 'login':
$params['sectok'] = getSecurityToken();
if(isset($_SERVER['REMOTE_USER'])) {
@ -717,11 +727,26 @@ function tpl_get_action($type) {
case 'media':
$params['ns'] = getNS($ID);
break;
case 'mediaManager':
// View image in media manager
global $IMG;
$imgNS = getNS($IMG);
$authNS = auth_quickaclcheck("$imgNS:*");
if ($authNS < AUTH_UPLOAD) {
return false;
}
$params = array(
'ns' => $imgNS,
'image' => $IMG,
'do' => 'media'
);
//$type = 'media';
break;
default:
return '[unknown %s type]';
break;
}
return compact('accesskey', 'type', 'id', 'method', 'params', 'nofollow');
return compact('accesskey', 'type', 'id', 'method', 'params', 'nofollow', 'replacement');
}
/**
@ -1016,6 +1041,67 @@ function tpl_img_getTag($tags, $alt = '', $src = null) {
return $info;
}
/**
* Returns a description list of the metatags of the current image
*
* @return string html of description list
*/
function tpl_img_meta() {
global $lang;
$tags = tpl_get_img_meta();
echo '<dl>';
foreach($tags as $tag) {
$label = $lang[$tag['langkey']];
if(!$label) $label = $tag['langkey'];
echo '<dt>'.$label.':</dt><dd>';
if ($tag['type'] == 'date') {
echo dformat($tag['value']);
} else {
echo hsc($tag['value']);
}
echo '</dd>';
}
echo '</dl>';
}
/**
* Returns metadata as configured in mediameta config file, ready for creating html
*
* @return array with arrays containing the entries:
* - string langkey key to lookup in the $lang var, if not found printed as is
* - string type type of value
* - string value tag value (unescaped)
*/
function tpl_get_img_meta() {
$config_files = getConfigFiles('mediameta');
foreach ($config_files as $config_file) {
if(@file_exists($config_file)) {
include($config_file);
}
}
/** @var array $fields the included array with metadata */
$tags = array();
foreach($fields as $tag){
$t = array();
if (!empty($tag[0])) {
$t = array($tag[0]);
}
if(is_array($tag[3])) {
$t = array_merge($t,$tag[3]);
}
$value = tpl_img_getTag($t);
if ($value) {
$tags[] = array('langkey' => $tag[1], 'type' => $tag[2], 'value' => $value);
}
}
return $tags;
}
/**
* Prints the image with a link to the full sized version
*

View File

@ -231,3 +231,4 @@
.pagetools-item(subscribe, 9, subscribe);
.pagetools-item(mediaManager, 11);
.pagetools-item(back, 12);
.pagetools-item(img_backto, 12);

View File

@ -55,37 +55,7 @@ header('X-UA-Compatible: IE=edge,chrome=1');
<?php tpl_img(900,700); /* parameters: maximum width, maximum height (and more) */ ?>
<div class="img_detail">
<dl>
<?php
// @todo: logic should be transferred to backend
$config_files = getConfigFiles('mediameta');
foreach ($config_files as $config_file) {
if(@file_exists($config_file)) {
include($config_file);
}
}
foreach($fields as $key => $tag){
$t = array();
if (!empty($tag[0])) {
$t = array($tag[0]);
}
if(is_array($tag[3])) {
$t = array_merge($t,$tag[3]);
}
$value = tpl_img_getTag($t);
if ($value) {
echo '<dt>'.$lang[$tag[1]].':</dt><dd>';
if ($tag[2] == 'date') {
echo dformat($value);
} else {
echo hsc($value);
}
echo '</dd>';
}
}
?>
</dl>
<?php tpl_img_meta(); ?>
</div>
<?php //Comment in for Debug// dbg(tpl_img_getTag('Simple.Raw'));?>
<?php endif; ?>
@ -109,23 +79,17 @@ header('X-UA-Compatible: IE=edge,chrome=1');
<div class="tools">
<ul>
<?php
$data = array();
$data['view'] = 'detail';
// View in media manager; @todo: transfer logic to backend
$imgNS = getNS($IMG);
$authNS = auth_quickaclcheck("$imgNS:*");
if (($authNS >= AUTH_UPLOAD) && function_exists('media_managerURL')) {
$mmURL = media_managerURL(array('ns' => $imgNS, 'image' => $IMG));
$data['items']['mediaManager'] = '<li><a href="'.$mmURL.'" class="mediaManager"><span>'.$lang['img_manager'].'</span></a></li>';
}
// Back to [ID]; @todo: transfer logic to backend
$data['items']['img_backto'] = '<li><a href="'.wl($ID).'" class="back"><span>'.$lang['img_backto'].' '.$ID.'</span></a></li>';
$data = array(
'view' => 'detail',
'items' => array(
'mediaManager' => tpl_action('mediaManager', 1, 'li', 1, '<span>', '</span>'),
'img_backto' => tpl_action('img_backto', 1, 'li', 1, '<span>', '</span>'),
)
);
// the page tools can be amended through a custom plugin hook
$evt = new Doku_Event('TEMPLATE_PAGETOOLS_DISPLAY', $data);
if($evt->advise_before()){
if($evt->advise_before()) {
foreach($evt->data['items'] as $k => $html) echo $html;
}
$evt->advise_after();