From ec3afc1b33212d73b9d89c897e441274feb26f74 Mon Sep 17 00:00:00 2001 From: bgigon Date: Tue, 28 Sep 2004 12:01:20 +0000 Subject: [PATCH] adding files --- phpgwapi/templates/prisma/about.tpl | 33 ++ phpgwapi/templates/prisma/css.tpl | 21 + phpgwapi/templates/prisma/footer.tpl | 15 + phpgwapi/templates/prisma/head.inc.php | 103 +++++ phpgwapi/templates/prisma/head.tpl | 25 ++ .../templates/prisma/hook_settings.inc.php | 67 +++ phpgwapi/templates/prisma/login.tpl | 150 +++++++ phpgwapi/templates/prisma/login_denylogin.tpl | 14 + phpgwapi/templates/prisma/navbar.inc.php | 415 ++++++++++++++++++ phpgwapi/templates/prisma/navbar.tpl | 134 ++++++ phpgwapi/templates/prisma/navbar_app.tpl | 3 + phpgwapi/templates/prisma/nextmatchs.tpl | 93 ++++ phpgwapi/templates/prisma/portal.tpl | 70 +++ 13 files changed, 1143 insertions(+) create mode 100644 phpgwapi/templates/prisma/about.tpl create mode 100755 phpgwapi/templates/prisma/css.tpl create mode 100755 phpgwapi/templates/prisma/footer.tpl create mode 100644 phpgwapi/templates/prisma/head.inc.php create mode 100644 phpgwapi/templates/prisma/head.tpl create mode 100644 phpgwapi/templates/prisma/hook_settings.inc.php create mode 100755 phpgwapi/templates/prisma/login.tpl create mode 100644 phpgwapi/templates/prisma/login_denylogin.tpl create mode 100644 phpgwapi/templates/prisma/navbar.inc.php create mode 100644 phpgwapi/templates/prisma/navbar.tpl create mode 100644 phpgwapi/templates/prisma/navbar_app.tpl create mode 100755 phpgwapi/templates/prisma/nextmatchs.tpl create mode 100644 phpgwapi/templates/prisma/portal.tpl diff --git a/phpgwapi/templates/prisma/about.tpl b/phpgwapi/templates/prisma/about.tpl new file mode 100644 index 0000000000..88d876a0b1 --- /dev/null +++ b/phpgwapi/templates/prisma/about.tpl @@ -0,0 +1,33 @@ + + + + + + + + +
spacer
+ +{phpgw_app_about} + +
diff --git a/phpgwapi/templates/prisma/css.tpl b/phpgwapi/templates/prisma/css.tpl new file mode 100755 index 0000000000..d7af784be0 --- /dev/null +++ b/phpgwapi/templates/prisma/css.tpl @@ -0,0 +1,21 @@ + +{css_file} diff --git a/phpgwapi/templates/prisma/footer.tpl b/phpgwapi/templates/prisma/footer.tpl new file mode 100755 index 0000000000..102d55cfe9 --- /dev/null +++ b/phpgwapi/templates/prisma/footer.tpl @@ -0,0 +1,15 @@ + + + + + + + + +{page_generation_time} +

{powered_by}
+ +{activate_tooltips} + + + diff --git a/phpgwapi/templates/prisma/head.inc.php b/phpgwapi/templates/prisma/head.inc.php new file mode 100644 index 0000000000..0f78f790e5 --- /dev/null +++ b/phpgwapi/templates/prisma/head.inc.php @@ -0,0 +1,103 @@ + + '; + } + + if(!$GLOBALS['phpgw_info']['user']['preferences']['common']['disable_slider_effects']) + { + $slider_effects_src = $GLOBALS['phpgw_info']['server']['webserver_url'] . '/phpgwapi/templates/idots/js/slidereffects.js'; + $slider_effects = ''; + } + else + { + $simple_show_hide_src = $GLOBALS['phpgw_info']['server']['webserver_url'] . '/phpgwapi/templates/idots/js/simple_show_hide.js'; + $simple_show_hide = ''; + } + + $tpl = CreateObject('phpgwapi.Template',PHPGW_TEMPLATE_DIR); + $tpl->set_unknowns('remove'); + $tpl->set_file(array('_head' => 'head.tpl')); + $tpl->set_block('_head','head'); + + if ($GLOBALS['phpgw_info']['flags']['app_header']) + { + $app = $GLOBALS['phpgw_info']['flags']['app_header']; + } + else + { + $app = $GLOBALS['phpgw_info']['flags']['currentapp']; + $app = isset($GLOBALS['phpgw_info']['apps'][$app]) ? $GLOBALS['phpgw_info']['apps'][$app]['title'] : lang($app); + } + + + if($app!='wiki') $robots =''; + + $var = Array( + 'img_icon' => PHPGW_IMAGES_DIR . '/favicon.ico', + 'img_shortcut' => PHPGW_IMAGES_DIR . '/favicon.ico', + 'pngfix' => $pngfix, + 'slider_effects' => $slider_effects, + 'simple_show_hide' => $simple_show_hide, + 'lang_code' => $lang_code, + 'charset' => $GLOBALS['phpgw']->translation->charset(), + 'font_family' => $GLOBALS['phpgw_info']['theme']['font'], + 'website_title' => strip_tags($GLOBALS['phpgw_info']['server']['site_title']. ($app ? " [$app]" : '')), + 'body_tags' => $bodyheader .' '. $GLOBALS['phpgw']->common->get_body_attribs(), + 'theme_css' => $theme_css, + 'css' => $GLOBALS['phpgw']->common->get_css(), + 'java_script' => $GLOBALS['phpgw']->common->get_java_script(), + 'meta_robots' => $robots + ); + $tpl->set_var($var); + $tpl->pfp('out','head'); + unset($tpl); +?> diff --git a/phpgwapi/templates/prisma/head.tpl b/phpgwapi/templates/prisma/head.tpl new file mode 100644 index 0000000000..e8fd76bac1 --- /dev/null +++ b/phpgwapi/templates/prisma/head.tpl @@ -0,0 +1,25 @@ + + + + + {website_title} + + + + + + + + {meta_robots} + + + + {slider_effects} + {simple_show_hide} + {pngfix} + {css} + {java_script} + + + + diff --git a/phpgwapi/templates/prisma/hook_settings.inc.php b/phpgwapi/templates/prisma/hook_settings.inc.php new file mode 100644 index 0000000000..e2ca6d8d49 --- /dev/null +++ b/phpgwapi/templates/prisma/hook_settings.inc.php @@ -0,0 +1,67 @@ + lang('yes'), + 'no' => lang('no') + ); + + create_select_box( + 'Show home and logout button in main application bar?', + 'start_and_logout_icons', + $start_and_logout_icons, + 'When you say yes the home and logout buttons are presented as applications in the main top applcation bar.' + ); + + create_input_box( + 'Max number of icons in navbar', + 'max_icons', + 'How many icons should be shown in the navbar (top of the page). Additional icons go into a kind of pulldown menu, callable by the icon on the far right side of the navbar.','',3 + ); + + create_check_box( + 'Autohide Sidebox menu\'s', + 'auto_hide_sidebox', + 'Automatically hide the Sidebox menu\'s?' + ); + + $click_or_onmouseover = array( + 'click' => lang('Click'), + 'onmouseover' => lang('On Mouse Over') + ); + + create_select_box( + 'Click or Mouse Over to show menus', + 'click_or_onmouseover', + $click_or_onmouseover, + 'Click or Mouse Over to show menus?' + ); + + create_check_box( + 'Disable slider effects', + 'disable_slider_effects', + 'Disable the animated slider effects when showing or hiding menus in the page? Opera and Konqueror users will probably must want this.' + ); + + create_check_box( + 'Disable Internet Explorer png-image-bugfix', + 'disable_pngfix', + 'Disable the execution a bugfixscript for Internet Explorer 5.5 and higher to show transparency in PNG-images?' + ); + + create_check_box( + 'Show page generation time', + 'show_generation_time', + 'Show page generation time on the bottom of the page?' + ); diff --git a/phpgwapi/templates/prisma/login.tpl b/phpgwapi/templates/prisma/login.tpl new file mode 100755 index 0000000000..204a60bc2b --- /dev/null +++ b/phpgwapi/templates/prisma/login.tpl @@ -0,0 +1,150 @@ + + + + + + + + + + + +{website_title} - Login + + + + + + + + + +
+
+ + + + + + +
spacer + + + + + +
spacer
+ +
spacer
+
+
+ +
+
+
{lang_message}
+
{cd}
+

 

+
+ + + + + + + + + + +
{website_title}
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ {register_link}
+ spacer +
+ + + + +
{lang_language}: {select_language}
{lang_username}: {select_domain}
{lang_password}:  
 
+ +
+   +
+ +
+

 

+

 

+

 

+
+ + + +
+
+
+
+Valid HTML 4.01 +Valid CSS +
+
+
+eGroupWare {version}
+ + diff --git a/phpgwapi/templates/prisma/login_denylogin.tpl b/phpgwapi/templates/prisma/login_denylogin.tpl new file mode 100644 index 0000000000..22f2d2e154 --- /dev/null +++ b/phpgwapi/templates/prisma/login_denylogin.tpl @@ -0,0 +1,14 @@ + + + +eGroupWare + + + + + +
+ {deny_msg} +
+ + diff --git a/phpgwapi/templates/prisma/navbar.inc.php b/phpgwapi/templates/prisma/navbar.inc.php new file mode 100644 index 0000000000..0957fbd469 --- /dev/null +++ b/phpgwapi/templates/prisma/navbar.inc.php @@ -0,0 +1,415 @@ +set_file( + array( + 'navbar' => 'navbar.tpl' + ) + ); + + $GLOBALS['idots_tpl']->set_block('navbar','navbar_header','navbar_header'); + $GLOBALS['idots_tpl']->set_block('navbar','extra_blocks_header','extra_block_header'); + $GLOBALS['idots_tpl']->set_block('navbar','extra_block_row','extra_block_row'); + $GLOBALS['idots_tpl']->set_block('navbar','extra_block_row_raw','extra_block_row_raw'); + $GLOBALS['idots_tpl']->set_block('navbar','extra_block_row_no_link','extra_block_row_no_link'); + $GLOBALS['idots_tpl']->set_block('navbar','extra_block_spacer','extra_block_spacer'); + $GLOBALS['idots_tpl']->set_block('navbar','extra_blocks_footer','extra_blocks_footer'); + $GLOBALS['idots_tpl']->set_block('navbar','sidebox_hide_header','sidebox_hide_header'); + $GLOBALS['idots_tpl']->set_block('navbar','sidebox_hide_footer','sidebox_hide_footer'); + $GLOBALS['idots_tpl']->set_block('navbar','appbox','appbox'); + $GLOBALS['idots_tpl']->set_block('navbar','navbar_footer','navbar_footer'); + + $var['img_root'] = $GLOBALS['phpgw_info']['server']['webserver_url'] . '/phpgwapi/templates/idots/images'; + $var['table_bg_color'] = $GLOBALS['phpgw_info']['theme']['navbar_bg']; + + if($GLOBALS['phpgw_info']['user']['preferences']['common']['click_or_onmouseover']=='onmouseover') + { + $show_menu_event = 'onMouseOver'; + } + else + { + $show_menu_event = 'onClick'; + } + + + $applications = ''; + + // == 'icons_and_text') + + $max_icons=$GLOBALS['phpgw_info']['user']['preferences']['common']['max_icons']; + if(!$max_icons) + { + $max_icons=200; + } + + foreach($GLOBALS['phpgw_info']['navbar'] as $app => $app_data) + { + if($app != 'preferences' && $app != 'about' && $app != 'logout') + { + $title = $GLOBALS['phpgw_info']['apps'][$app]['title']; + $icon = '' . $title . ''; + + + if($app=='home') + { + $title = lang('home'); + $icon = '' . lang('home') . ''; + } + + if($i<$max_icons) + { + if($GLOBALS['phpgw_info']['user']['preferences']['common']['start_and_logout_icons']=='no') + { + $tdwidth = 100/($max_icons); + } + else + { + $tdwidth = 100/($max_icons+2); + } + $tdwidth=round($tdwidth); + + $app_icons .= '' . $icon . ''; + + $app_titles .= '' . $title . ''; + } + // else // generate extra icon layer | always shows icons and text + else // generate extra icon layer shows icons and/or text + { + // check for small icon version else use default and let the browser resize + $icon = '' . $title . ''; + + $app_extra_icons .= ''; + + if($GLOBALS['phpgw_info']['user']['preferences']['common']['navbar_format']!='text') + { + $app_extra_icons .= ''; + } + + + + // $app_extra_icons .= ''; + + $app_extra_icons .= ''; + } + + unset($icon); + unset($title); + $i++; + } + } + + if($GLOBALS['phpgw_info']['user']['preferences']['common']['start_and_logout_icons']!='no') + { + $app_icons .= ''.$GLOBALS['phpgw_info']['navbar']['logout']['title'].''; + $app_titles .= ''.$GLOBALS['phpgw_info']['navbar']['logout']['title'].''; + + } +// $var['app_icons'] = $app_icons; + if($GLOBALS['phpgw_info']['user']['preferences']['common']['navbar_format']!='text') + { + $var['app_icons'] = $app_icons; + } + + if($i > $max_icons) + { +// table width=100% fixed layout bug (ndee130204) + $app_extra_icons_div = ' + + + '; + + $var['app_extra_icons_div']= $app_extra_icons_div; + // $var['app_extra_icons_icon']= ''; + $var['app_extra_icons_icon']= ''; + } + + if($GLOBALS['phpgw_info']['user']['preferences']['common']['navbar_format']!='icons') + { + $var['app_titles'] = $app_titles; + } + else + { + $var['app_titles'] = ' '; + } + if(isset($GLOBALS['phpgw_info']['flags']['app_header'])) + { + $var['current_app_title'] = $GLOBALS['phpgw_info']['flags']['app_header']; + } + else + { + $var['current_app_title']=$GLOBALS['phpgw_info']['navbar'][$GLOBALS['phpgw_info']['flags']['currentapp']]['title']; + } + + if(isset($GLOBALS['phpgw_info']['navbar']['admin']) && $GLOBALS['phpgw_info']['user']['preferences']['common']['show_currentusers']) + { + $var['current_users'] = '' + . lang('Current users') . ': ' . $GLOBALS['phpgw']->session->total() . ''; + } + $now = time(); + $var['user_info'] = ''.$GLOBALS['phpgw']->common->display_fullname() .''. ' - ' + . lang($GLOBALS['phpgw']->common->show_date($now,'l')) . ' ' + . $GLOBALS['phpgw']->common->show_date($now,$GLOBALS['phpgw_info']['user']['preferences']['common']['dateformat']); + + if($GLOBALS['phpgw_info']['user']['lastpasswd_change'] == 0) + { + $api_messages = lang('You are required to change your password during your first login') + . '
Click this image on the navbar: '; + } + elseif($GLOBALS['phpgw_info']['user']['lastpasswd_change'] < time() - (86400*30)) + { + $api_messages = lang('it has been more then %1 days since you changed your password',30); + } + + // This is gonna change + if(isset($cd)) + { + $var['messages'] = $api_messages . '
' . checkcode($cd); + } + + if (substr($GLOBALS['phpgw_info']['server']['login_logo_file'],0,4) == 'http') + { + $var['logo_file'] = $GLOBALS['phpgw_info']['server']['login_logo_file']; + } + else + { + $var['logo_file'] = $GLOBALS['phpgw']->common->image('phpgwapi',$GLOBALS['phpgw_info']['server']['login_logo_file']?$GLOBALS['phpgw_info']['server']['login_logo_file']:'logo'); + } + $var['logo_url'] = $GLOBALS['phpgw_info']['server']['login_logo_url']?$GLOBALS['phpgw_info']['server']['login_logo_url']:'http://www.eGroupWare.org'; + if (substr($var['logo_url'],0,4) != 'http') + { + $var['logo_url'] = 'http://'.$var['logo_url']; + } + $var['logo_title'] = $GLOBALS['phpgw_info']['server']['login_logo_title']?$GLOBALS['phpgw_info']['server']['login_logo_title']:'www.eGroupWare.org'; + + $GLOBALS['idots_tpl']->set_var($var); + $GLOBALS['idots_tpl']->pfp('out','navbar_header'); + + /******************************************************\ + * The sidebox menu's * + \******************************************************/ + + $menu_title = lang('General Menu'); + + $file['Home'] = $GLOBALS['phpgw_info']['navbar']['home']['url']; + if($GLOBALS['phpgw_info']['user']['apps']['preferences']) + { + $file['Preferences'] = $GLOBALS['phpgw_info']['navbar']['preferences']['url']; + } + $file += array( + array( + 'text' => lang('About %1',$GLOBALS['phpgw_info']['apps'][$GLOBALS['phpgw_info']['flags']['currentapp']]['title']), + 'no_lang' => True, + 'link' => $GLOBALS['phpgw_info']['navbar']['about']['url'] + ), + 'Logout'=>$GLOBALS['phpgw_info']['navbar']['logout']['url'] + ); + + if($GLOBALS['phpgw_info']['user']['preferences']['common']['auto_hide_sidebox']==1) + { + $GLOBALS['idots_tpl']->set_var('show_menu_event',$show_menu_event); + $GLOBALS['idots_tpl']->set_var('lang_show_menu',lang('show menu')); + $GLOBALS['idots_tpl']->pparse('out','sidebox_hide_header'); + + display_sidebox('',$menu_title,$file); + $GLOBALS['phpgw']->hooks->single('sidebox_menu',$GLOBALS['phpgw_info']['flags']['currentapp']); + + $GLOBALS['idots_tpl']->pparse('out','sidebox_hide_footer'); + + $var['sideboxcolstart']=''; + + $GLOBALS['idots_tpl']->set_var($var); + $GLOBALS['idots_tpl']->pparse('out','appbox'); + $var['remove_padding'] = 'style="padding-left:0px;"'; + $var['sideboxcolend'] = ''; + } + else + { + $var['menu_link'] = ''; + $var['sideboxcolstart'] = ''; + $var['remove_padding'] = ''; + $GLOBALS['idots_tpl']->set_var($var); + $GLOBALS['idots_tpl']->pparse('out','appbox'); + + display_sidebox('',$menu_title,$file); + $GLOBALS['phpgw']->hooks->single('sidebox_menu',$GLOBALS['phpgw_info']['flags']['currentapp']); + + $var['sideboxcolend'] = ''; + } + + $GLOBALS['idots_tpl']->set_var($var); + $GLOBALS['idots_tpl']->pparse('out','navbar_footer'); + + // If the application has a header include, we now include it + if(!@$GLOBALS['phpgw_info']['flags']['noappheader'] && @isset($_GET['menuaction'])) + { + list($app,$class,$method) = explode('.',$_GET['menuaction']); + if(is_array($GLOBALS[$class]->public_functions) && $GLOBALS[$class]->public_functions['header']) + { + $GLOBALS[$class]->header(); + } + } + $GLOBALS['phpgw']->hooks->process('after_navbar'); + return; + } + + function display_sidebox($appname,$menu_title,$file) + { + if(!$appname || ($appname==$GLOBALS['phpgw_info']['flags']['currentapp'] && $file)) + { + $var['lang_title']=$menu_title;//$appname.' '.lang('Menu'); + $GLOBALS['idots_tpl']->set_var($var); + $GLOBALS['idots_tpl']->pfp('out','extra_blocks_header'); + + foreach($file as $text => $url) + { + sidebox_menu_item($url,$text); + } + + $GLOBALS['idots_tpl']->pparse('out','extra_blocks_footer'); + } + } + + function sidebox_menu_item($item_link='',$item_text='') + { + if($item_text === '_NewLine_' || $item_link === '_NewLine_') + { + $GLOBALS['idots_tpl']->pparse('out','extra_block_spacer'); + } + else + { + $var['icon_or_star']='ball'; + $var['target'] = ''; + if(is_array($item_link)) + { + if(isset($item_link['icon'])) + { + $app = isset($item_link['app']) ? $item_link['app'] : $GLOBALS['phpgw_info']['flags']['currentapp']; + $var['icon_or_star'] = $item_link['icon'] ? '' : False; + } + $var['lang_item'] = isset($item_link['no_lang']) && $item_link['no_lang'] ? $item_link['text'] : lang($item_link['text']); + $var['item_link'] = $item_link['link']; + if ($item_link['target']) + { + $var['target'] = ' target="' . $item_link['target'] . '"'; + } + } + else + { + $var['lang_item'] = ucfirst(lang($item_text)); + + $buffer_begin = substr($var['lang_item'], 0, 1); + $buffer_end = substr($var['lang_item'], 1); + + $var['lang_item'] = "" . $buffer_begin . "" . $buffer_end; + + $var['item_link'] = $item_link; + } + $GLOBALS['idots_tpl']->set_var($var); + + $block = 'extra_block_row'; + if ($var['item_link'] === False) + { + $block .= $var['icon_or_star'] === False ? '_raw' : '_no_link'; + } + $GLOBALS['idots_tpl']->pparse('out',$block); + } + } + + function parse_navbar_end() + { + $GLOBALS['idots_tpl'] = createobject('phpgwapi.Template',PHPGW_TEMPLATE_DIR); + + $GLOBALS['idots_tpl']->set_file( + array( + 'footer' => 'footer.tpl' + ) + ); + $var = Array( + 'img_root' => $GLOBALS['phpgw_info']['server']['webserver_url'] . '/phpgwapi/templates/idots/images', + 'table_bg_color' => $GLOBALS['phpgw_info']['theme']['navbar_bg'], + 'version' => $GLOBALS['phpgw_info']['server']['versions']['phpgwapi'] + ); + $GLOBALS['phpgw']->hooks->process('navbar_end'); + + if($GLOBALS['phpgw_info']['user']['preferences']['common']['show_generation_time']) + { + $mtime = microtime(); + $mtime = explode(' ',$mtime); + $mtime = $mtime[1] + $mtime[0]; + $tend = $mtime; + $totaltime = ($tend - $GLOBALS['page_start_time']); + + $var['page_generation_time'] = '

'.lang('Page was generated in %1 seconds',$totaltime).'
'; + } + + $var['powered_by'] = lang('Powered by eGroupWare version %1',$GLOBALS['phpgw_info']['server']['versions']['phpgwapi']); + $var['activate_tooltips'] = ''; + $GLOBALS['idots_tpl']->set_var($var); + $GLOBALS['idots_tpl']->pfp('out','footer'); + } diff --git a/phpgwapi/templates/prisma/navbar.tpl b/phpgwapi/templates/prisma/navbar.tpl new file mode 100644 index 0000000000..04c308919f --- /dev/null +++ b/phpgwapi/templates/prisma/navbar.tpl @@ -0,0 +1,134 @@ + + + +{app_extra_icons_div} + + +
+
+ + + + + + {app_extra_icons_icon} + + + +
spacer + + + {app_icons} + + + {app_titles} + +
+ +
spacer
+
+
{user_info}{current_users}
+ + + + + + + +
+ + + + {sideboxcolstart} + + + + + + + + +
+ +
+ +
+
+ +
+ + + + + +
+
+ +
+
+
+ + + + + + + + + {sideboxcolend} + + + + +
{current_app_title}
+
+ + + + + + + + + + + + + + + + + + + + + + + diff --git a/phpgwapi/templates/prisma/navbar_app.tpl b/phpgwapi/templates/prisma/navbar_app.tpl new file mode 100644 index 0000000000..d6169e4fa7 --- /dev/null +++ b/phpgwapi/templates/prisma/navbar_app.tpl @@ -0,0 +1,3 @@ + + + diff --git a/phpgwapi/templates/prisma/nextmatchs.tpl b/phpgwapi/templates/prisma/nextmatchs.tpl new file mode 100755 index 0000000000..3471d28455 --- /dev/null +++ b/phpgwapi/templates/prisma/nextmatchs.tpl @@ -0,0 +1,93 @@ + +
+ + + + +
+
{lang_title}
+
+ + + + + +
+
+
+ +
+ + + + + +
  {lang_item}
{lang_item}
{lang_item}
 
+ {left} + {right} + +
{cats_search_filter_data}
+
+ + + + + +{select} + + + + + + +
+ {hidden} + + + + +
+ +
+
+ + + + + + {_link} + + + + + + + + + +
+ + + + + +  {searchby} + + + + + {lang_category}   + + + + + + + + {hidden} + + + + + + +
{search} {filter}
+ + + + + + {hidden} + + {cats} + + + + + + +
 {search}  {filter}
+ + diff --git a/phpgwapi/templates/prisma/portal.tpl b/phpgwapi/templates/prisma/portal.tpl new file mode 100644 index 0000000000..dcc39152f1 --- /dev/null +++ b/phpgwapi/templates/prisma/portal.tpl @@ -0,0 +1,70 @@ + +

+

+ + + + + + + +
+
+ + + {portal_controls} + +
 {title}
+
+
+ + {row} +
+
+
+

+ + + + + + + +{output} + + + + + + + + + + + + + + + + + + {control_link} + + + + + + {link_field_data} +