Really the page is "Beautified"

Thanks @apmuthu and @notrinos

But unfortunately still not working sad

Can you please give a try. Maybe its my browser issue

Click to Login
id: admin
pass:Pakistan1947
company:Clearing

@apmuthu I have removed

$_POST['item']  = $myrow["item"];

and used

text_row(_("Item"). ":", 'item',@$myrow['item'], 25, 75);

@notrinos

I have applied

    $Ajax->activate('_page_body');

After add_dim() and update_dim() functions are called so that it applies to both Add or Update

But Unfortunately No Success

Below is the code of dimension_entry.php

<?php
/**********************************************************************
    Copyright (C) FrontAccounting, LLC.
    Released under the terms of the GNU General Public License, GPL,
    as published by the Free Software Foundation, either version 3
    of the License, or (at your option) any later version.
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
***********************************************************************/
$page_security = 'SA_DIMENSION';
$path_to_root = "../..";
include_once($path_to_root . "/includes/session.inc");

include_once($path_to_root . "/includes/date_functions.inc");
include_once($path_to_root . "/includes/data_checks.inc");

include_once($path_to_root . "/admin/db/tags_db.inc");
include_once($path_to_root . "/dimensions/includes/dimensions_db.inc");
include_once($path_to_root . "/modules/clearing/includes/dim_db.inc");
include_once($path_to_root . "/modules/clearing/includes/dimensions_ui.inc");

$js = "";
if (user_use_date_picker())
    $js .= get_js_date_picker();
page(_($help_context = "Dimension Entry"), false, false, "", $js);

//---------------------------------------------------------------------------------------

if (isset($_GET['trans_no']))
{
    $selected_id = $_GET['trans_no'];
}
elseif(isset($_POST['selected_id']))
{
    $selected_id = $_POST['selected_id'];
}
else
    $selected_id = -1;
//---------------------------------------------------------------------------------------

if (isset($_GET['AddedID']))
{
    $id = $_GET['AddedID'];

    display_notification_centered(_("The dimension has been entered."));

    safe_exit();
}

//---------------------------------------------------------------------------------------

if (isset($_GET['UpdatedID']))
{
    $id = $_GET['UpdatedID'];

    display_notification_centered(_("The dimension has been updated."));
    safe_exit();
}

//---------------------------------------------------------------------------------------

if (isset($_GET['DeletedID']))
{
    $id = $_GET['DeletedID'];

    display_notification_centered(_("The dimension has been deleted."));
    safe_exit();
}

//---------------------------------------------------------------------------------------

if (isset($_GET['ClosedID']))
{
    $id = $_GET['ClosedID'];

    display_notification_centered(_("The dimension has been closed. There can be no more changes to it.") . " #$id");
    safe_exit();
}

//---------------------------------------------------------------------------------------

if (isset($_GET['ReopenedID']))
{
    $id = $_GET['ReopenedID'];

    display_notification_centered(_("The dimension has been re-opened. ") . " #$id");
    safe_exit();
}

//-------------------------------------------------------------------------------------------------

function safe_exit()
{
    global $path_to_root;

    hyperlink_no_params("", _("Enter a &new dimension"));
    echo "<br>";
    hyperlink_no_params($path_to_root . "/modules/clearing/inquiry/search_dimensions.php", _("&Select an existing dimension"));

    display_footer_exit();
}

//-------------------------------------------------------------------------------------

function can_process()
{
    global $selected_id, $Refs;

    if ($selected_id == -1)
    {
        if (!check_reference($_POST['ref'], ST_DIMENSION))
        {
            set_focus('ref');
            return false;
        }
    }

    if (strlen($_POST['name']) == 0)
    {
        display_error( _("The dimension name must be entered."));
        set_focus('name');
        return false;
    }

    if (!is_date($_POST['date_']))
    {
        display_error( _("The date entered is in an invalid format."));
        set_focus('date_');
        return false;
    }

    if (!is_date($_POST['due_date']))
    {
        display_error( _("The required by date entered is in an invalid format."));
        set_focus('due_date');
        return false;
    }

    return true;
}

//-------------------------------------------------------------------------------------

if (isset($_POST['ADD_ITEM']) || isset($_POST['UPDATE_ITEM']))
{
    if (!isset($_POST['dimension_tags']))
        $_POST['dimension_tags'] = array();

    if (can_process())
    {

        if ($selected_id == -1)
        {
            $id = add_dim($_POST['ref'], $_POST['name'], $_POST['type_'], $_POST['date_'], $_POST['due_date'], $_POST['memo_'],
            $_POST['client'],
        $_POST['item'],
        $_POST['POL'],
        $_POST['mode'],
        $_POST['volume'],
        $_POST['weight'],
        $_POST['cont_no'],
        $_POST['equip_no'],
        $_POST['bl_no'],
        $_POST['bl_date'],
        $_POST['ETA'],
        $_POST['doc_copy'],
        $_POST['doc_org'],
        $_POST['gd_date'],
        $_POST['po_duty'],
        $_POST['po_do'],
        $_POST['po_wfg'],
        $_POST['destuff'],
        $_POST['assessment'],
        $_POST['delivery'],
        $_POST['gd_no'],
        $_POST['igm_no'],
        $_POST['igm_date'],
         $_POST['index_no'],
        $_POST['cash_no'],
        $_POST['cash_date'],
        $_POST['value'],
        $_POST['no_of_pkg'],
        $_POST['POD'],
        $_POST['gross_weight']);
            add_tag_associations($id, $_POST['dimension_tags']);
            meta_forward($_SERVER['PHP_SELF'], "AddedID=$id");
        }
        else
        {

            update_dim($selected_id, $_POST['Dref'], $_POST['name'], $_POST['type_'], $_POST['date_'], $_POST['due_date'], $_POST['memo_'],
            $_POST['client'],
         $_POST['item'],
         $_POST['POL'],
         $_POST['mode'],
         $_POST['volume'],
         $_POST['weight'],
         $_POST['cont_no'],
         $_POST['equip_no'],
         $_POST['bl_no'],
         $_POST['bl_date'],
         $_POST['ETA'],
         $_POST['doc_copy'],
         $_POST['doc_org'],
         $_POST['gd_date'],
         $_POST['po_duty'],
         $_POST['po_do'],
         $_POST['po_wfg'],
         $_POST['destuff'],
         $_POST['assessment'],
         $_POST['delivery'],
         $_POST['gd_no'],
         $_POST['igm_no'],
         $_POST['igm_date'],
         $_POST['index_no'],
         $_POST['cash_no'],
         $_POST['cash_date'],
         $_POST['value'],
         $_POST['no_of_pkg'],
         $_POST['POD'],
         $_POST['gross_weight']);
            update_tag_associations(TAG_DIMENSION, $selected_id, $_POST['dimension_tags']);

            meta_forward($_SERVER['PHP_SELF'], "UpdatedID=$selected_id");
        }

        $Ajax->activate('_page_body');
    }

     }

//--------------------------------------------------------------------------------------

if (isset($_POST['delete']))
{

    $cancel_delete = false;

    // can't delete it there are productions or issues
    if (dimension_has_payments($selected_id) || dimension_has_deposits($selected_id))
    {
        display_error(_("This dimension cannot be deleted because it has already been processed."));
        set_focus('ref');
        $cancel_delete = true;
    }

    if ($cancel_delete == false)
    { //ie not cancelled the delete as a result of above tests

        // delete
        delete_dimension($selected_id);
        delete_tag_associations(TAG_DIMENSION,$selected_id, true);
        meta_forward($_SERVER['PHP_SELF'], "DeletedID=$selected_id");
    }
}

//-------------------------------------------------------------------------------------

if (isset($_POST['close']))
{

    // update the closed flag
    close_dimension($selected_id);
    meta_forward($_SERVER['PHP_SELF'], "ClosedID=$selected_id");
}

if (isset($_POST['reopen']))
{

    // update the closed flag
    reopen_dimension($selected_id);
    meta_forward($_SERVER['PHP_SELF'], "ReopenedID=$selected_id");
}
//-------------------------------------------------------------------------------------

start_form();

start_outer_table(TABLESTYLE2);

table_section(1);


if ($selected_id != -1)
{
    $myrow = get_dimension($selected_id);

    if (strlen($myrow[0]) == 0)
    {
        display_error(_("The dimension sent is not valid."));
        display_footer_exit();
    }

    // if it's a closed dimension can't edit it
    //if ($myrow["closed"] == 1)
    //{
    //    display_error(_("This dimension is closed and cannot be edited."));
    //    display_footer_exit();
    //}

    $_POST['ref'] = $myrow["reference"];
    $_POST['closed'] = $myrow["closed"];
    $_POST['name'] = $myrow["name"];
    $_POST['type_'] = $myrow["type_"];
    $_POST['date_'] = sql2date($myrow["date_"]);
    $_POST['due_date'] = sql2date($myrow["due_date"]);
    $_POST['memo_'] = get_comments_string(ST_DIMENSION, $selected_id);

    $tags_result = get_tags_associated_with_record(TAG_DIMENSION, $selected_id);
     $tagids = array();
     while ($tag = db_fetch($tags_result))
          $tagids[] = $tag['id'];
     $_POST['dimension_tags'] = $tagids;

    hidden('ref', $_POST['ref']);

    //label_row(_("Dimension Reference:"), $_POST['ref']); //Commented By Faisal

    ref_row(_("Dimension Reference:"), 'Dref', '', $_POST['ref']); //added by faisal

    hidden('selected_id', $selected_id);
}
else
{
    $_POST['dimension_tags'] = array();
    ref_row(_("Dimension Reference:"), 'ref', '', $Refs->get_next(ST_DIMENSION), false, ST_DIMENSION);
}

text_row_ex(_("Name") . ":", 'name', 25, 75);

$dim = get_company_pref('use_dimension');

number_list_row(_("Type"), 'type_', null, 1, $dim);

date_row(_("Start Date") . ":", 'date_');

date_row(_("Date Required By") . ":", 'due_date', '', null, $SysPrefs->default_dimension_required_by());

tag_list_row(_("Tags:"), 'dimension_tags', 5, TAG_DIMENSION, true);

textarea_row(_("Memo:"), 'memo_', null, 40, 5);


text_row(_("Client"). ":", 'client', @$myrow['client'], 25, 75);
text_row(_("Item"). ":", 'item',@$myrow['item'], 25, 75);
table_section(2);
text_row(_("POL"). ":", 'POL',@$myrow['POL'], 25, 75);
text_row(_("Mode"). ":", 'mode',@$myrow['mode'], 25, 75);
text_row(_("Volume"). ":", 'volume',@$myrow['volume'], 25, 75);
text_row(_("Weight"). ":", 'weight',@$myrow['weight'], 25, 75);
text_row(_("Container No"). ":", 'cont_no',@$myrow['cont_no'], 25, 75);


text_row(_("Equipment NO"). ":", 'equip_no',@$myrow['equip_no'], 25, 75);
text_row(_("BL No"). ":", 'bl_no',@$myrow['bl_no'], 25, 75);
text_row(_("BL Date"). ":", 'bl_date',@$myrow['bl_date'], 25, 75);
text_row(_("ETA"). ":", 'ETA',@$myrow['ETA'], 25, 75);
table_section(3);
text_row(_("Doc Copy"). ":", 'doc_copy',@$myrow['doc_copy'], 25, 75);
text_row(_("Doc Original"). ":", 'doc_org',@$myrow['doc_org'], 25, 75);
text_row(_("GD Date"). ":", 'gd_date',@$myrow['gd_date'], 25, 75);
text_row(_("Duty POrder"). ":", 'po_duty',@$myrow['po_duty'], 25, 75);

text_row(_("DO POrder"). ":", 'po_do',@$myrow['po_do'], 25, 75);
text_row(_("Wharfage POrder"). ":", 'po_wfg',@$myrow['po_wfg'], 25, 75);
text_row(_("Destuff Date"). ":", 'destuff',@$myrow['destuff'], 25, 75);
text_row(_("Assessment Date"). ":", 'assessment',@$myrow['assessment'], 25, 75);
text_row(_("Delivery Date"). ":", 'delivery',@$myrow['delivery'], 25, 75);
text_row(_("GD Number"). ":", 'gd_no',@$myrow['gd_no'], 25, 75);
table_section(4);
text_row(_("IGM Number"). ":", 'igm_no',@$myrow['igm_no'], 25, 75);
text_row(_("IGM Date"). ":", 'igm_date',@$myrow['igm_date'], 25, 75);
text_row(_("Index Number"). ":", 'index_no',@$myrow['index_no'], 25, 75);
text_row(_("Cash Number"). ":", 'cash_no',@$myrow['cash_no'], 25, 75);
text_row(_("Cash Date"). ":", 'cash_date',@$myrow['cash_date'], 25, 75);
text_row(_("Value"). ":", 'value',@$myrow['value'], 25, 75);
text_row(_("No Of Pkg"). ":", 'no_of_pkg',@$myrow['no_of_pkg'], 25, 75);
text_row(_("POD"). ":", 'POD',@$myrow['POD'], 25, 75);
text_row(_("Gross Weight"). ":", 'gross_weight',@$myrow['gross_weight'], 25, 75);

end_outer_table(1);

if (isset($_POST['closed']) && $_POST['closed'] == 1)
    display_note(_("This Dimension is closed."), 0, 0, "class='currentfg'");

if ($selected_id != -1)
{
    echo "<br>";
    submit_center_first('UPDATE_ITEM', _("Update"), _('Save changes to dimension'), 'default');
    if ($_POST['closed'] == 1)
        submit('reopen', _("Re-open This Dimension"), true, _('Mark this dimension as re-opened'), true);
    else
        submit('close', _("Close This Dimension"), true, _('Mark this dimension as closed'), true);
    submit_center_last('delete', _("Delete This Dimension"), _('Delete unused dimension'), true);
}
else
{
    submit_center('ADD_ITEM', _("Add"), true, '', 'default');
}
end_form();

//--------------------------------------------------------------------------------------------

end_page();

Your further help is highly needed.

I think autofill is already enable in browser settings that is why in Phone field the autofill values are shown and I don't think that in Customers Setup we have used $_SESSION variable for this input field.

Any suggestions

I am in a Fix. Trying to create a custom module and have added some more text based input fields in dimension_entry.php. When we enter any Value in Item Field (for e.g) the next time if entering the same item, then I have to type the whole value. Ideally the browser shall give me the list of previously feeded values in the same field. Just like it happens at other places of FA Forms like in customers.php any phone number once added is always made available by the browser to be selected in the same input filed.

Any special settings required for this? My clients are frustrated that they have to type in full the whole value again and again.

The code I have used for this is below

text_row(_("Item"). ":", 'item',null, 25, 75);

the screen shot of the page is here

Any guidance is highly appreciated.

Thanks

If customer is set to inactive, even then it is visible in Journal Entry Counter Party List.

Ok I did it. I downloaded from https://frontaccounting.com/wbt/pages/download/downloads-for-release-2.3fonts.php and followed the instructions

I downloaded the ae_tholoth.zip file but how to install it? I have linux shared hosting server

459

(21 replies, posted in Reporting)

you can try this small extension

Customer Balances

I think this is very crucial to have Line Item Discounts on Purchase Invoice. Any solution expected for this?

461

(24 replies, posted in Modules Add-on's)

Great work @notrinos. What is the difference between Ready Tasks and Done Tasks?

Secondly  if tasks list go longer then there shall be filter option based on dates I think

Try choosing a different preference may be DD/MM/YYYY and then logout clear cache and login and see if it works. If yes then again do the same process to go back to your own preference.

463

(19 replies, posted in Accounts Payable)

I would add to @Alaa concern. This problem also occurs in Imports. In Imports we are importing in USD but paying Custom Duty and other charges in Local Currency.

Since the supplier ledger needs to be updated with USD so the Item Cost is updated with only Purchase Price Converted in Local currency. and the other charges are not added to the item Cost.

@apmuthu how to print barcodes. I have updated the patch but can't find any option in rep303 for barcodes print.

Great work

Superb. It worked. Thanks

I want a modification to repeat the column headings in Dimension Inquiry page after every 10 records.

How to do this?

I have other modules too. I will check in isolation then revert to you.

469

(9 replies, posted in Setup)

I think thats too low. Because one of my clients one year data has gone up to 55 Mb without zip and 8 mb with zip. We shall do more research on it.

@joe how can we use tags to filter in reports?

471

(9 replies, posted in Setup)

There is a higher probability of large databases getting corrupt more frequently than smaller ones that are properly indexed.

What size of database can generally be classified as large database in FA perspective.

Have you tested this extension with dropdown theme also? I would be surprised if that is working without any fix.

You must get this error without any fix

screenshot

You may check it live here
id: admin
pass: Pakistan1947

I hope you will not get irritate due my repetitive posts. I am just trying to realize you the problem. And it matters to the community because Dropdown theme is now one of the official themes.

This is not required as the add_access_extensions(); is available at the top of the file import_items.php itself.

You may be right as default FA theme is working perfectly without add_access_extensions(); in renderer.php file but Dropdown theme has an issue unless we add this function. I have checked it 3 times.

@kvvaradha & @boxygen: There is no use of solutions where none are needed. Ambiguous statements will only confuse the end user.
The standard FA 2.4.2+ works with the standard import_items PKG from the official PKG repo. Minor updates to it are available from the FA24extensions repo which I maintain independent of the official FA repos..
Users are best advised to update their install to the latest release / master before seeking assistance in the forum and state the versions of all pertinent applications used and any dated / specific versions assistance can be taken offline so as not to confuse other users.

I needed the solution because I am using this Dropdown theme in Production. I never intended to confuse anyone. The problem still persist. I have just donwloaded the latest repo from Github and tested it. Please give it a try.

My post # 29 fixes the issue.

Secondly I just used item_imorts as an example to show the bug. But this problem exists (Unless we apply the Fix) with all extensions that have user defined Security Areas.

Regards.

Sorry to enter the discussion very late.

I have just given a new look to the whole issue.

I took the dropdown theme that is shipped with the download package.

Found that adding just one line at Line 103:

add_access_extensions();

is resolving the problem

@notrinos pointed the solution in post #12 but things got confused due to different instances of theme.

Thanks for all of you for taking your time.

Below would be the correct code after fixing

<?php
/**********************************************************************
    Copyright (C) FrontAccounting, LLC.
    Released under the terms of the GNU General Public License, GPL,
    as published by the Free Software Foundation, either version 3
    of the License, or (at your option) any later version.
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
***********************************************************************/
// Author: Joe Hunt, 17/11/2015. Upgraded to release 2.4. 10/11/2015.

    class renderer
    {
        function wa_get_apps($title, $applications, $sel_app)
        {
            foreach($applications as $app)
            {
                foreach ($app->modules as $module)
                {
                    $apps = array();
                    foreach ($module->lappfunctions as $appfunction)
                        $apps[] = $appfunction;
                    foreach ($module->rappfunctions as $appfunction)
                        $apps[] = $appfunction;
                    $application = array();
                    foreach ($apps as $application)
                    {
                        $url = explode('?', $application->link);
                        $app_lnk = $url[0];
                        $pos = strrpos($app_lnk, "/");
                        if ($pos > 0)
                        {
                            $app_lnk = substr($app_lnk, $pos + 1);
                            $lnk = $_SERVER['REQUEST_URI'];
                            $url = explode('?', $lnk);
                            $asset = false;
                            if (isset($url[1]))
                                $asset = strstr($url[1], "FixedAsset");
                            $lnk = $url[0];
                            $pos = strrpos($lnk, "/");
                            $lnk = substr($lnk, $pos + 1);
                            if ($app_lnk == $lnk)
                            {
                                $acc = access_string($app->name);
                                $app_id = ($asset != false ? "assets" : $app->id);
                                return array($acc[0], $module->name, $application->label, $app_id);
                            }
                        }
                    }
                }
            }
            return array("", "", "", $sel_app);
        }

        function wa_header()
        {
            page(_($help_context = "Main Menu"), false, true);
        }

        function wa_footer()
        {
            end_page(false, true);
        }
        function shortcut($url, $label)
        {
            echo "<li>";
            echo menu_link($url, $label);
            echo "</li>";
        }
        function menu_header($title, $no_menu, $is_index)
        {
            global $path_to_root, $SysPrefs, $version;

            $sel_app = $_SESSION['sel_app'];
            echo "<div class='fa-main'>\n";
            if (!$no_menu)
            {
                $applications = $_SESSION['App']->applications;
                $local_path_to_root = $path_to_root;
                $pimg = "<img src='$local_path_to_root/themes/".user_theme()."/images/preferences.gif' style='width:14px;height:14px;border:0;vertical-align:middle;padding-bottom:3px;' alt='"._('Preferences')."'>&nbsp;&nbsp;";
                $limg = "<img src='$local_path_to_root/themes/".user_theme()."/images/lock.gif' style='width:14px;height:14px;border:0;vertical-align:middle;padding-bottom:3px;' alt='"._('Change Password')."'>&nbsp;&nbsp;";
                $img = "<img src='$local_path_to_root/themes/".user_theme()."/images/on_off.png' style='width:14px;height:14px;border:0;vertical-align:middle;padding-bottom:3px;' alt='"._('Logout')."'>&nbsp;&nbsp;";
                $himg = "<img src='$local_path_to_root/themes/".user_theme()."/images/help.gif' style='width:14px;height:14px;border:0;vertical-align:middle;padding-bottom:3px;' alt='"._('Help')."'>&nbsp;&nbsp;";
                echo "<div id='header'>\n";
                echo "<ul>\n";
                echo "  <li><a href='$local_path_to_root/admin/display_prefs.php?'>$pimg" . _("Preferences") . "</a></li>\n";
                echo "  <li><a href='$local_path_to_root/admin/change_current_user_password.php?selected_id=" . $_SESSION["wa_current_user"]->username . "'>$limg" . _("Change password") . "</a></li>\n";
                if ($SysPrefs->help_base_url != null)
                    echo "  <li><a target = '_blank' onclick=" .'"'."javascript:openWindow(this.href,this.target); return false;".'" '. "href='".
                        help_url()."'>$himg" . _("Help") . "</a></li>";
                echo "  <li><a href='$path_to_root/access/logout.php?'>$img" . _("Logout") . "</a></li>";
                echo "</ul>\n";
                $indicator = "$path_to_root/themes/".user_theme(). "/images/ajax-loader.gif";
                echo "<h1>$SysPrefs->power_by $version<span style='padding-left:300px;'><img id='ajaxmark' src='$indicator' align='center' style='visibility:hidden;'></span></h1>\n";
                echo "</div>\n"; // header

                echo "<div id='cssmenu'>\n";
                echo "<ul>\n";
                $i = 0;
                $account = $this->wa_get_apps($title, $applications, $sel_app);
                add_access_extensions();
                foreach($applications as $app)
                {
                    if ($_SESSION["wa_current_user"]->check_application_access($app))
                    {
                        $acc = access_string($app->name);
                        $class = ($account[3] == $app->id ? "active" : "");
                        $n = count($app->modules);
                        if ($n)
                            $class .= " has-sub";
                        $dashboard = "";
                        $u_agent = $_SERVER['HTTP_USER_AGENT'];
                        if (preg_match('/android/i', $u_agent) && preg_match('/mobile/i', $u_agent)) {
                            $link = "#'";
                            $dashboard = "$local_path_to_root/index.php?application=$app->id";
                        }
                        else
                            $link = "$local_path_to_root/index.php?application=$app->id '$acc[1]";
                        echo "  <li class ='$class'><a href='$link><span>" . $acc[0] . "</span></a>\n";
                        if (!$n)
                        {
                            echo "  </li>\n";
                            continue;
                        }
                        echo "    <ul>\n";
                           if ($dashboard !="")
                            echo "      <li><a href='$dashboard'><span><font color='red'>"._("Dashboard")."</font></span></a></li>\n";
                        foreach ($app->modules as $module)
                        {
                            if (!$_SESSION["wa_current_user"]->check_module_access($module))
                                continue;
                             echo "      <li class='has-sub'><a href='#'><span>$module->name</span></a>\n";
                             $apps2 = array();
                             foreach ($module->lappfunctions as $appfunction)
                                $apps2[] = $appfunction;
                            foreach ($module->rappfunctions as $appfunction)
                                $apps2[] = $appfunction;
                            $application = array();
                               $n = count($apps2);
                               $class = "";
                               if ($i > 5)
                                   $class = "class='align_right'";
                            if ($n)
                                echo "        <ul $class>\n";
                            else
                            {
                                echo "      </li>\n";
                                continue;
                            }
                            foreach ($apps2 as $application)
                            {
                                $lnk = access_string($application->label);
                                if ($_SESSION["wa_current_user"]->can_access_page($application->access))
                                {
                                    if ($application->label != "")
                                    {
                                        echo "          <li><a href='$path_to_root/$application->link'><span>$lnk[0]</span></a></li>\n";
                                    }
                                }
                                elseif (!$_SESSION["wa_current_user"]->hide_inaccessible_menu_items())
                                    echo "          <li><a href='#'><span><font color='gray'>$lnk[0]</font></span></a></li>\n";
                            }
                            if ($n)
                                echo "        </ul>\n";
                            echo "      </li>\n";
                        }
                        echo "    </ul>\n"; // menu
                    }
                    echo"  </li>\n";
                    $i++;
                }
                echo "</ul>\n";
                echo "</div>\n"; // menu
            }
            echo "<div class='fa-body'>\n";
            if ($no_menu)
                echo "<br>";
            elseif ($title && !$no_menu && !$is_index)
            {
                echo "<div class='fa-content'>\n";
                echo "<center><table id='title'><tr><td width='100%' class='titletext'>$title</td>"
                ."<td align=right>"
                .(user_hints() ? "<span id='hints'></span>" : '')
                ."</td>"
                ."</tr></table></center>";
            }
        }

        function menu_footer($no_menu, $is_index)
        {
            global $path_to_root, $SysPrefs, $version, $db_connections;
            include_once($path_to_root . "/includes/date_functions.inc");

            if (!$no_menu && !$is_index)
                echo "</div>\n"; // fa-content
            echo "</div>\n"; // fa-body
            if (!$no_menu)
            {
                   echo "<script type='text/javascript'>if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent))
                          {document.getElementById('cssmenu').style.position = 'fixed';}</script>\n";
                echo "<div class='fa-footer'>\n";
                if (isset($_SESSION['wa_current_user']))
                {
                    echo "<span class='power'><a target='_blank' href='$SysPrefs->power_url'>$SysPrefs->power_by $version</a></span>\n";
                    echo "<span class='date'>".Today() . "&nbsp;" . Now()."</span>\n";
                    echo "<span class='date'>" . $db_connections[$_SESSION["wa_current_user"]->company]["name"] . "</span>\n";
                    echo "<span class='date'>" . $_SERVER['SERVER_NAME'] . "</span>\n";
                    echo "<span class='date'>" . $_SESSION["wa_current_user"]->name . "</span>\n";
                    echo "<span class='date'>" . _("Theme:") . " " . user_theme() . "</span>\n";
                    echo "<span class='date'>".show_users_online()."</span>\n";
                }
                echo "</div>\n"; // footer
            }
            echo "</div>\n"; // fa-main
        }

        function display_applications(&$waapp)
        {
            global $path_to_root;

            $sel = $waapp->get_selected_application();
            meta_forward("$path_to_root/admin/dashboard.php", "sel_app=$sel->id");
            end_page();
            exit;
        }
    }

Great Thanks