Separating USER_ADMIN_MENU and ADMIN_MENU template blocks Separating USER_ADMIN_MENU and ADMIN_MENU template blocks
 

News:

cpg1.5.48 Security release - upgrade mandatory!
The Coppermine development team is releasing a security update for Coppermine in order to counter a recently discovered vulnerability. It is important that all users who run version cpg1.5.46 or older update to this latest version as soon as possible.
[more]

Main Menu

Separating USER_ADMIN_MENU and ADMIN_MENU template blocks

Started by gelaskimgel, August 27, 2006, 01:41:26 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

gelaskimgel

hi,

on my theme's template.html i made room for 2 different admin menu sections (or blocks):



  • the first is the standard Admin ADMIN_MENU, nothing changed here,
  • the second is called USER_ADMIN_MENU, which of course is not in the standard template since it seems to be using the same block as ADMIN_MENU.


this would be ok (since they do not appear at once), but for the fact that i wish to present them differently and in different locations of the template.html page:

i need to separate the building blocks for these menus in the theme file and have different placeholders for them in the template file. Because they are to be presented differently, they are compiled separately in theme.php. They have different (html table) structures, sizes and styles. Having one placeholder for both menu types simply does not work for me.

Put simply, I want to have something like this in the template.html file:




<td>
  <!-- start of admin menu -->
{ADMIN_MENU}
  <!-- end of admin menu -->
</td> 


(and later, in a completely different section of the template's HTML table)



<tr>
  <!-- start of user admin menu -->
{USER_ADMIN_MENU}
  <!-- start of user admin menu -->
</tr>



can anyone help me?


many thanks...

Stramm

copy this into your theme.php and use the placeholder {USER_ADMIN_MENU} whereever you want in your template.html but above the {GALLERY} placeholder. If you want the user admin menu to appeare below / after {GALLERY} then don't use the function pageheader(..) below but copy function pagefooter() from themes/sample/theme.php to your theme.php and paste         
'{USER_ADMIN_MENU}' => theme_user_admin_mode_menu(),
to the var template_vars (like in the function pageheader below)


function theme_admin_mode_menu()
{
    global $cat;
    global $lang_gallery_admin_menu, $lang_user_admin_menu;
    global $template_gallery_admin_menu, $template_user_admin_menu;
    global $CONFIG;

    $cat_l = isset($cat) ? "?cat=$cat" : '';

    static $admin_menu = '';

    // Populate the admin menu only if empty to avoid template errors
    if ($admin_menu == '') {

        if (GALLERY_ADMIN_MODE) {

        if ($CONFIG['log_ecards'] == 0) {
            template_extract_block($template_gallery_admin_menu, 'log_ecards');
        }

        if (cpg_get_pending_approvals() == 0) {
             template_extract_block($template_gallery_admin_menu, 'admin_approval');
        }

            // do the docs exist on the webserver?
            if (file_exists('docs/index.htm') == true) {
                $documentation_href = 'docs/index.htm';
            } else {
                $documentation_href = 'http://coppermine.sf.net/docs/cpg14/index.php';
            }
            $param = array('{CATL}' => $cat_l,
                '{UPL_APP_TITLE}' => $lang_gallery_admin_menu['upl_app_title'],
                '{UPL_APP_LNK}' => $lang_gallery_admin_menu['upl_app_lnk'],
                '{ADMIN_TITLE}' => $lang_gallery_admin_menu['admin_title'],
                '{ADMIN_LNK}' => $lang_gallery_admin_menu['admin_lnk'],
                '{ALBUMS_TITLE}' => $lang_gallery_admin_menu['albums_title'],
                '{ALBUMS_LNK}' => $lang_gallery_admin_menu['albums_lnk'],
                '{CATEGORIES_TITLE}' => $lang_gallery_admin_menu['categories_title'],
                '{CATEGORIES_LNK}' => $lang_gallery_admin_menu['categories_lnk'],
                '{USERS_TITLE}' => $lang_gallery_admin_menu['users_title'],
                '{USERS_LNK}' => $lang_gallery_admin_menu['users_lnk'],
                '{GROUPS_TITLE}' => $lang_gallery_admin_menu['groups_title'],
                '{GROUPS_LNK}' => $lang_gallery_admin_menu['groups_lnk'],
                '{COMMENTS_TITLE}' => $lang_gallery_admin_menu['comments_title'],
                '{COMMENTS_LNK}' => $lang_gallery_admin_menu['comments_lnk'],
                '{SEARCHNEW_TITLE}' => $lang_gallery_admin_menu['searchnew_title'],
                '{SEARCHNEW_LNK}' => $lang_gallery_admin_menu['searchnew_lnk'],
                '{MY_PROF_TITLE}' => $lang_user_admin_menu['my_prof_title'],
                '{MY_PROF_LNK}' => $lang_user_admin_menu['my_prof_lnk'],
                '{UTIL_TITLE}' => $lang_gallery_admin_menu['util_title'],
                '{UTIL_LNK}' => $lang_gallery_admin_menu['util_lnk'],
                '{BAN_TITLE}' => $lang_gallery_admin_menu['ban_title'],
                '{BAN_LNK}' => $lang_gallery_admin_menu['ban_lnk'],
                '{DB_ECARD_TITLE}' => $lang_gallery_admin_menu['db_ecard_title'],
                '{DB_ECARD_LNK}' => $lang_gallery_admin_menu['db_ecard_lnk'],
                '{PICTURES_TITLE}' => $lang_gallery_admin_menu['pictures_title'],
                '{PICTURES_LNK}' => $lang_gallery_admin_menu['pictures_lnk'],
                '{DOCUMENTATION_HREF}' => $documentation_href,
                '{DOCUMENTATION_TITLE}' => $lang_gallery_admin_menu['documentation_lnk'],
                '{DOCUMENTATION_LNK}' => $lang_gallery_admin_menu['documentation_lnk'],
                );

            $html = template_eval($template_gallery_admin_menu, $param);
            $html.= cpg_alert_dev_version();
        }  else {
            $html = '';
        }

        $admin_menu = $html;
    }

    return $admin_menu;
}

function theme_user_admin_mode_menu()
{
    global $cat;
    global $lang_gallery_admin_menu, $lang_user_admin_menu;
    global $template_gallery_admin_menu, $template_user_admin_menu;
    global $CONFIG;

    $cat_l = isset($cat) ? "?cat=$cat" : '';

    static $admin_menu = '';

    // Populate the admin menu only if empty to avoid template errors
    if ($admin_menu == '') {

if (USER_ADMIN_MODE) {
            $param = array('{ALBMGR_TITLE}' => $lang_user_admin_menu['albmgr_title'],
                '{ALBMGR_LNK}' => $lang_user_admin_menu['albmgr_lnk'],
                '{MODIFYALB_TITLE}' => $lang_user_admin_menu['modifyalb_title'],
                '{MODIFYALB_LNK}' => $lang_user_admin_menu['modifyalb_lnk'],
                '{MY_PROF_TITLE}' => $lang_user_admin_menu['my_prof_title'],
                '{MY_PROF_LNK}' => $lang_user_admin_menu['my_prof_lnk'],
                '{PICTURES_TITLE}' => $lang_gallery_admin_menu['pictures_title'],
                '{PICTURES_LNK}' => $lang_gallery_admin_menu['pictures_lnk'],
                );

            $html = template_eval($template_user_admin_menu, $param);
        } else {
            $html = '';
        }

        $admin_menu = $html;
    }

    return $admin_menu;
}
function pageheader($section, $meta = '')
{
    global $CONFIG, $THEME_DIR;
    global $template_header, $lang_charset, $lang_text_dir;

    $custom_header = cpg_get_custom_include($CONFIG['custom_header_path']);

        $charset = ($CONFIG['charset'] == 'language file') ? $lang_charset : $CONFIG['charset'];

    header('P3P: CP="CAO DSP COR CURa ADMa DEVa OUR IND PHY ONL UNI COM NAV INT DEM PRE"');
        header("Content-Type: text/html; charset=$charset");
    user_save_profile();

    $template_vars = array('{LANG_DIR}' => $lang_text_dir,
        '{TITLE}' => $CONFIG['gallery_name'] . ' - ' . strip_tags(bb_decode($section)),
        '{CHARSET}' => $charset,
        '{META}' => $meta,
        '{GAL_NAME}' => $CONFIG['gallery_name'],
        '{GAL_DESCRIPTION}' => $CONFIG['gallery_description'],
        '{SYS_MENU}' => theme_main_menu('sys_menu'),
        '{SUB_MENU}' => theme_main_menu('sub_menu'),
        '{USER_ADMIN_MENU}' => theme_user_admin_mode_menu(),
        '{ADMIN_MENU}' => theme_admin_mode_menu(),
        '{CUSTOM_HEADER}' => $custom_header,
        );

    echo template_eval($template_header, $template_vars);
}

gelaskimgel

okay Stramm I'm a little bit confused now.... Let say i like this... If I wan't the user_admin_menu to be under the menu section on my page, how is my theme.php file so going to look... Could you make a copy of mine theme.php and add the code, that you are talking about, and then write it to my?

My page: http://www.rdc.lir.dk/index.php?theme=neweb

My template.html contains:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0042)http://www.webpimp.1go.dk/mafiabamsen2.htm -->
<HTML><HEAD><title>{TITLE}</title>
<link rel="stylesheet" type="text/css" href="themes/neweb/style.css" />
{META}
<script type="text/javascript" src="scripts.js" ></script>
</HEAD>
<BODY bgColor=#cccccc topMargin=0>
<DIV align=center>
<CENTER>
<TABLE cellSpacing=0 cellPadding=0 width="1%" border=0 width="700">
 <TBODY>
 <TR>
   <TD vAlign=top width="33%" background=themes/neweb/images/left_bdr.jpg><IMG height=20
     alt="left_bdr.jpg (8448 bytes)" src="themes/neweb/images/left_bdr.jpg" width=20></TD>
   <TD vAlign=top width="33%">
     <TABLE cellSpacing=0 cellPadding=0 width="700" border=0>
       <TBODY>
       <TR>
         <TD style="BORDER-BOTTOM: rgb(0,0,0) 1px solid" width="100%"
         bgColor=#800000>
           <TABLE cellSpacing=5 cellPadding=0 width="100%" border=0>
             <TBODY>
             <TR>
               <TD width="100%"><FONT face=Verdana color=#cccccc
                 size=1>10.10.2003 . 18:59</FONT></TD></TR></TBODY></TABLE></TD></TR>
       <TR>
         <TD style="BORDER-BOTTOM: rgb(0,0,0) 1px solid" width="100%">
<table border="0" id="table1" width="100%">
<tr>
<td>
<IMG height=120 alt="demolort3.gif (64239 bytes)" src="themes/neweb/images/demolort.gif" width="525"></td>
<td width="1">
<td width="160">
<table border="0" cellPadding="0" cellSpacing="0" width="150">
<tr>
<td colSpan="3" width="150">
<font face="Verdana" size="1">
<img border="0" height="29" src="themes/neweb/images/menu_top.gif" width="150"></font></td>
</tr>
<tr>
<td background="themes/neweb/images/menu_venstre.gif" width="17">
</td>
<td bgColor="#EAEAEA" vAlign="top" align="left" width="114">
<font face="Verdana" size="1">
<img height="9" src="themes/neweb/images/pil.gif" width="9">
<font class="content" color="#363636"><b>Navigation</b><br>
</font></font>
<table border="0" width="100%" id="table1" cellspacing="0" cellpadding="0">
<tr>
<td>
<p align="left">
<font face="Verdana" size="1">
<font class="content" color="#363636">
</font></font></td>
</tr>
</table>
{LOGIN_FORM}</font></td>
<td background="themes/neweb/images/menu_hoejre.gif" width="19">
</td>
</tr>
<tr>
<td colSpan="3" width="150">
<font face="Verdana" size="1">
<img border="0" height="21" src="themes/neweb/images/menu_ned.gif" width="150"></font></td>
</tr>
</table></td>



</td>
</tr>
</table>
</TD></TR>
       <TR>
         <TD style="BORDER-BOTTOM: rgb(0,0,0) 1px solid" width="100%"
         bgColor=#800000>
           <TABLE cellSpacing=5 cellPadding=0 width="100%" border=0>
             <TBODY>
             <TR>
               <TD width="100%">
                 <P align=right><FONT face=Verdana color=#cccccc size=1>Guide
                 dig igennem siden, ved brug af neden stående
             menu</FONT></P></TD></TR></TBODY></TABLE></TD></TR>
       <TR>
         <TD style="BORDER-BOTTOM: rgb(0,0,0) 1px" width="100%"
bgColor=#cccccc>
           <TABLE cellSpacing=10 cellPadding=0 width="100%" border=0>
             <TBODY>
             <TR>
               <TD width="24%"><IMG height=1 alt="165.gif (58 bytes)"
                 src="themes/neweb/images/165.gif" width=165></TD>
               <TD width="72%"><IMG height=1 alt="165.gif (58 bytes)"
                 src="themes/neweb/images/165.gif" width=165></TD></TR>
             <TR>
               <TD
               style="BORDER-RIGHT: rgb(0,0,0) 1px solid; BORDER-TOP: rgb(0,0,0) 1px solid; BORDER-LEFT: rgb(0,0,0) 1px solid; BORDER-BOTTOM: rgb(0,0,0) 1px solid"
               vAlign=top width="12%" bgColor=#ebebeb>
                 <TABLE cellSpacing=5 cellPadding=0 width="100%" border=0>
                   <TBODY>
                   <TR>
                     <TD width="100%" bgColor=#800000><FONT face=Verdana
                       color=#ebebeb size=2><STRONG>.Main Menu</STRONG></FONT></TD></TR>
                   <TR>
                     <TD width="100%">
                      <table border="0" cellPadding="0" cellSpacing="0" width="150">
<tr>
<td colSpan="3" width="150">
<font face="Verdana" size="1">
<img border="0" height="29" src="themes/neweb/images/menu_top.gif" width="150"></font></td>
</tr>
<tr>
<td background="themes/neweb/images/menu_venstre.gif" width="17">
</td>
<td bgColor="#EAEAEA" vAlign="top" align="left" width="114">
<font face="Verdana" size="1">
<img height="9" src="themes/neweb/images/pil.gif" width="9">
<font class="content" color="#363636"><b>Navigation</b><br>
</font></font>
<table border="0" width="100%" id="table1" cellspacing="0" cellpadding="0">
<tr>
<td>
<p align="left">
<font face="Verdana" size="1">
<font class="content" color="#363636">
</font></font></td>
</tr>
</table>
{SYS_MENU}</font></td>
<td background="themes/neweb/images/menu_hoejre.gif" width="19">
</td>
</tr>
<tr>
<td colSpan="3" width="150">
<font face="Verdana" size="1">
<img border="0" height="21" src="themes/neweb/images/menu_ned.gif" width="150"></font></td>
</tr>
</table>
      <table border="0" cellPadding="0" cellSpacing="0" width="138">
<tr>
<td colSpan="3" width="150">
<font face="Verdana" size="1">
<img border="0" height="29" src="themes/neweb/images/menu_top.gif" width="150"></font></td>
</tr>
<tr>
<td background="themes/neweb/images/menu_venstre.gif" width="17">
</td>
<td bgColor="#EAEAEA" vAlign="top" align="left" width="114">
<font face="Verdana" size="1">
<img height="9" src="themes/neweb/images/pil.gif" width="9">
<font class="content" color="#363636"><b>Navigation 2</b><br>
</font></font>
<table border="0" width="100%" id="table1" cellspacing="0" cellpadding="0">
<tr>
<td>
<p align="left">
<font face="Verdana" size="1">
<font class="content" color="#363636">
</font></font></td>
</tr>
</table>
{SUB_MENU}</font></td>
<td background="themes/neweb/images/menu_hoejre.gif" width="19">
</td>
</tr>
<tr>
<td colSpan="3" width="150">
<font face="Verdana" size="1">
<img border="0" height="21" src="themes/neweb/images/menu_ned.gif" width="150"></font></td>
</tr>
</table>
<table border="0" cellPadding="0" cellSpacing="0" width="147">
<tr>
<td colSpan="3" width="150">
<font face="Verdana" size="1">
<img border="0" height="29" src="themes/neweb/images/menu_top.gif" width="150"></font></td>
</tr>
<tr>
<td background="themes/neweb/images/menu_venstre.gif" width="17">
</td>
<td bgColor="#EAEAEA" vAlign="top" align="left" width="114">
<font face="Verdana" size="1">
<img height="9" src="themes/neweb/images/pil.gif" width="9">
<font class="content" color="#363636"><b>Ugens Billede</b><br>
</font></font>
<table border="0" width="100%" id="table1" cellspacing="0" cellpadding="0">
<tr>
<td>
<p align="left">
<font face="Verdana" size="1">
<font class="content" color="#363636">
{CUSTOM_HEADER}</font></font></td>
</tr>
</table>

</font></td>
<td background="themes/neweb/images/menu_hoejre.gif" width="19">
</td>
</tr>
<tr>
<td colSpan="3" width="150">
<font face="Verdana" size="1">
<img border="0" height="21" src="themes/neweb/images/menu_ned.gif" width="150"></font></td>
</tr>
{ADMIN_MENU}
{USER_ADMIN_MENU}

</table>  
                   
                     </TD></TR>
                   <TR>
                     <TD width="100%" bgColor=#800000>
                       <P align=right><FONT face=Verdana color=#ebebeb
                       size=2><STRONG>.End</STRONG></FONT></P></TD></TR></TBODY></TABLE></TD>
               <TD
               style="BORDER-RIGHT: rgb(0,0,0) 1px solid; BORDER-TOP: rgb(0,0,0) 1px solid; BORDER-LEFT: rgb(0,0,0) 1px solid; BORDER-BOTTOM: rgb(0,0,0) 1px solid"
               vAlign=top width="88%" bgColor=#ebebeb>
                 <TABLE cellSpacing=5 cellPadding=0 width="100%" border=0>
                   <TBODY>
                   <TR>
                     <TD width="100%" bgColor=#800000><FONT face=Verdana
                       color=#ebebeb size=2><STRONG>.Main</STRONG></FONT></TD></TR>
                   <TR>
                     <TD vAlign=top width="100%" height="100%">{GALLERY}
</TD></TR>
                   <TR>
                     <TD width="100%" bgColor=#800000><FONT face=Verdana
                       size=1>
                       <P align=right></FONT><FONT face=Verdana color=#ebebeb
                       size=2><STRONG>.End</STRONG></FONT></P></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR>
       <TR>
         <TD style="BORDER-BOTTOM: rgb(0,0,0) 1px" width="100%"
bgColor=#cccccc>
           <TABLE cellSpacing=10 cellPadding=0 width="100%" border=0>
             <TBODY>
             <TR>
               <TD
               style="BORDER-RIGHT: rgb(0,0,0) 1px solid; BORDER-TOP: rgb(0,0,0) 1px solid; BORDER-LEFT: rgb(0,0,0) 1px solid; BORDER-BOTTOM: rgb(0,0,0) 1px solid"
               vAlign=top width="33%" bgColor=#ebebeb>
                 <TABLE cellSpacing=5 cellPadding=0 width="100%" border=0>
                   <TBODY>
                   <TR>
                     <TD width="100%" bgColor=#800000><FONT face=Verdana
                       color=#ebebeb size=2><STRONG>.Main</STRONG></FONT></TD></TR>
                   <TR>
                     <TD width="100%"><FONT face=Verdana
                       size=1>Teamrieger<BR>Casual<BR>Blueeye<BR>Penzo<BR>Jb.euroloser<BR>Brokenface</FONT></TD></TR>
                   <TR>
                     <TD width="100%" bgColor=#800000><FONT face=Verdana
                       size=1>
                       <P align=right></FONT><FONT face=Verdana color=#ebebeb
                       size=2><STRONG>.Alle
                   links</STRONG></FONT></P></TD></TR></TBODY></TABLE></TD>
               <TD
               style="BORDER-RIGHT: rgb(0,0,0) 1px solid; BORDER-TOP: rgb(0,0,0) 1px solid; BORDER-LEFT: rgb(0,0,0) 1px solid; BORDER-BOTTOM: rgb(0,0,0) 1px solid"
               vAlign=top width="33%" bgColor=#ebebeb height=0>
                 <TABLE cellSpacing=5 cellPadding=0 width="100%" border=0>
                   <TBODY>
                   <TR>
                     <TD width="100%" bgColor=#800000><FONT face=Verdana
                       color=#ebebeb size=2><STRONG>.info</STRONG></FONT></TD></TR>
                   <TR>
                     <TD width="100%"><FONT face=Verdana
                       size=1><STRONG>Alder:</STRONG> 17<BR><STRONG>Køn:
                       </STRONG>Dreng<BR><STRONG>Bilmærke: </STRONG>Toyota
                       Corolla xli 91<BR><STRONG>Seng i bilen:</STRONG> Nej,
                       har ingen.<BR><STRONG>Ynglings side pt:
                       </STRONG>Teamrieger.dk<BR><STRONG>Yngling sang:
                       </STRONG>Det er svært.. mege...</FONT></TD></TR>
                   <TR>
                     <TD width="100%" bgColor=#800000>
                       <P align=right><FONT face=Verdana color=#ebebeb
                       size=2><STRONG>.Profil</STRONG></FONT></P></TD></TR></TBODY></TABLE></TD>
               <TD
               style="BORDER-RIGHT: rgb(0,0,0) 1px solid; BORDER-TOP: rgb(0,0,0) 1px solid; BORDER-LEFT: rgb(0,0,0) 1px solid; BORDER-BOTTOM: rgb(0,0,0) 1px solid"
               vAlign=top width="34%" bgColor=#ebebeb>
                 <TABLE cellSpacing=5 cellPadding=0 width="100%" border=0>
                   <TBODY>
                   <TR>
                     <TD width="100%" bgColor=#800000><FONT face=Verdana
                       color=#ebebeb size=2><STRONG>.Seneste
                       nyhed</STRONG></FONT></TD></TR>
                   <TR>
                     <TD style="TEXT-ALIGN: justify" width="100%"><FONT
                       face=Verdana size=1>ja, nu har jeg så fået mit .dk
                       domain op på benene... Så hvad der mangled var "bare" et
                       design. og det har vi så her. Håber at folket kan lide
                       det. For jeg har fandme haft mange problemmer med det.
                       Ikke nok m...</FONT></TD></TR>
                   <TR>
                     <TD width="100%" bgColor=#800000>
                       <P align=right><FONT face=Verdana color=#ebebeb
                       size=2><STRONG>.Resten</STRONG></FONT></P></TD></TR></TBODY></TABLE></TD></TR>
             <TR>
               <TD
               style="BORDER-RIGHT: rgb(0,0,0) 1px; BORDER-TOP: rgb(0,0,0) 1px; BORDER-LEFT: rgb(0,0,0) 1px; BORDER-BOTTOM: rgb(0,0,0) 1px"
               width="33%"></TD>
               <TD
               style="BORDER-RIGHT: rgb(0,0,0) 1px; BORDER-TOP: rgb(0,0,0) 1px; BORDER-LEFT: rgb(0,0,0) 1px; BORDER-BOTTOM: rgb(0,0,0) 1px"
               width="33%"></TD>
               <TD
               style="BORDER-RIGHT: rgb(0,0,0) 1px; BORDER-TOP: rgb(0,0,0) 1px; BORDER-LEFT: rgb(0,0,0) 1px; BORDER-BOTTOM: rgb(0,0,0) 1px"
               width="34%"></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD>
   <TD vAlign=top width="34%" background=themes/neweb/images/right_bdr.jpg><IMG
     height=20 alt="right_bdr.jpg (8459 bytes)" src="themes/neweb/images/right_bdr.jpg"
     width=20></TD></TR></TBODY></TABLE></CENTER></DIV></BODY></HTML>
{LANGUAGE_SELECT_LIST}{THEME_SELECT_LIST}




I have attached my theme.php file...

Stramm

you just copy the above code into your theme.php right before the final ?>
then you paste {USER_ADMIN_MENU} in your template.html where you want the user admin menu to appeare. As said this has to be before {GALLERY}. Otherwise the code needs some modifications

gelaskimgel

ok, Stramm... Many thanks, it did work.... You can close the question :) Can you help me with this problem: http://forum.coppermine-gallery.net/index.php?topic=35485.0

Joachim Müller

Quote from: gelaskimgel on August 27, 2006, 10:17:42 PM
Can you help me with this problem: http://forum.coppermine-gallery.net/index.php?topic=35485.0
Don't try to advertize your other thread! Supporters will look into your issues if they want to. You mustn't cross-post! Locking.