<?php
/**
 * Copyright 2005-2017 de Solis Soluções Livres Ltda.
 *
 * Este arquivo é parte do programa Gnuteca.
 *
 * O Gnuteca é um software de propriedade da SOLIS, sendo desenvolvido
 * e mantido exclusivamente por esta empresa.
 *
 * A licença de uso está disponível mediante aquisição exclusiva junto à
 * SOLIS. A licença é concedida sem caráter de exclusividade ao licenciado.
 * Os direitos de uso são perpétuos.
 *
 * Embora os códigos fontes sejam fornecidos, o software é de propriedade
 * da SOLIS, não sendo permitido ao adquirente da licença a sua revenda,
 * empréstimo ou cessão (onerosa ou não) à terceiros. Também não é permitido,
 * a qualquer título e tempo, promover no software qualquer tipo de alienação,
 * reprodução, distribuição, divulgação, registro, licenciamento, transferência
 * ou qualquer outro ato que prejudique ou comprometa os direitos de propriedade
 * de software, o nome e a imagem da sua proprietária e do próprio software,
 * além de configurar concorrência à SOLIS.
 *
 * O licenciado, com o acesso ao código fonte do software, terá o direito de
 * promover mudanças no respectivo código. No entanto, nas situações em que ele
 * contar com o suporte oficial prestado pela SOLIS, não poderá promover mudanças
 * no código fonte, sob pena de perda do referido suporte.
 *
 * Para conhecer em detalhes o Termo de Licenciamento do Software Gnuteca
 * leia o arquivo “LICENCA.txt” disponível junto ao código deste software.
 *
 *
 * Class
 *
 *
 *
 *
 *
 **/

$MIOLO = MIOLO::getInstance();
$MIOLO->page->addScript("gresponsivemenu.js", "gnuteca3");

class GResponsiveMenu extends MDiv
{
    /**
     * Identificador do trigger do menu
     *
     * @final {String} Id da div que conterá o menu
     */
    const ID_MENU_RESPONSIVE = "gResponsiveMenu";

    public $orientation;

    public function __construct( $orientation = 'horizontal' )
    {
        $class = $orientation ==  'horizontal' ? 'gResponsiveMenu' : 'gResponsiveMenuVertical';
        parent::__construct('searchResposiveMenu', null, $class );
        $this->orientation = $orientation;

        $this->page->addJsCode("
            expandRetractContainer = function(ContainerID)
            {
                var st = dojo.byId(ContainerID).style.display;

                try
                {
                    dojo.byId(ContainerID).style.display  = (st == 'none') ? 'block' : 'none';
                }
                catch(e){}
            }
        ");
    }

    public function getUrl()
    {
        $MIOLO           = MIOLO::getInstance();
        $module          = MIOLO::getCurrentModule();
        $busAuthenticate = $MIOLO->getBusiness('gnuteca3', 'BusAuthenticate');

        //Se tiver um operador logado, pega a pesquisa simples configurada por ele
        if (GOperator::isLogged())
        {
            $location = 'main:search:simpleSearch&formContentId=1&formContentTypeId=1';
        }
        else
        {
            $location = 'main:search:simpleSearch';
        }

        $url = array();
        $txt = explode("\n", GNUTECA_USER_MENU_LIST );

        //cria o array com as urls
        foreach ( $txt as $line => $info )
        {
            if ( $info )
            {
		$explode = explode(';',$info);
                $url[ trim( $explode[ 0 ] ) ] = new stdClass();
                $url[ trim( $explode[ 0 ] ) ]->action = trim( $explode[1] ) ;

                if ( $explode[2])
                {
                    $url[ trim( $explode[ 0 ] ) ]->icon   = trim( $explode[2] );
                }
                
                // Target.
                if ( isset($explode[3]) )
                {
                    $url[ trim( $explode[ 0 ] ) ]->target = trim( $explode[3] );
                }
            }
        }

        return $url;
    }

    public function getSearchMenu()
    {
        $MIOLO  = MIOLO::getInstance();
        $module = MIOLO::getCurrentModule();

        $busFormContent = $MIOLO->getBusiness($module, 'BusFormContent');
        $busFormContent->formContentType = FORM_CONTENT_TYPE_ADMINISTRATOR;
        $search = $busFormContent->searchFormContent(TRUE);

        if ( is_array( $search ) )
        {
            foreach ( $search as $line => $info )
            {
                if ($info->name != 'materialMovement')
                {
                    $url = 'index.php?module='.$module.'&action=main:search:simpleSearch&formContentId='.$info->formContentId.'&formContentTypeId='.$info->formContentType;
                    $info->action = $url;
                    $inner[$info->name] = $info;
                }
            }
        }

        if ( MUtil::getBooleanValue(GB_INTEGRATION ) )
        {
            $infoG = new stdClass();
            $url = $url = 'index.php?module='.$module.'&action=main:search:simpleSearch&subForm=GoogleBook';
            $infoG->action = $url;
            $infoG->name = 'GoogleBook';
            $inner[$infoG->name] = $infoG;
        }

        if ( GPerms::checkAccess('gtcZ3950', null, false) )
        {
            $infoZ = new stdClass();
            $url = $url = 'index.php?module='.$module.'&action=main:search:simpleSearch&subForm=Z3950';
            $infoZ->action = $url;
            $infoZ->name = 'Z3950';
            $inner[$infoZ->name] = $infoZ;
        }

        if ( MUtil::getBooleanValue(FBN_INTEGRATION) )
        {
            $infoBN = new stdClass();
            $url = 'index.php?module='.$module.'&action=main:search:simpleSearch&subForm=FBN';
            $infoBN->action = $url;
            $infoBN->name = 'B. Nacional';
            $inner[$infoBN->name] = $infoBN;
        }

        return $inner;
    }


    public function generate()
    {
        $MIOLO  = MIOLO::getInstance();
        $module = MIOLO::getCurrentModule();
        $ui 	= $MIOLO->getUi();
        $url 	= self::getUrl();
        $search = $this->getSearchMenu();

        $menuButton = new MImage('buttonMenuResponsive', '', GUtil::getImageTheme('menuResponsivo.png'));

        //MENU PESQUISA
        if ( is_array($search) )
        {
            foreach ( $search as $linha => $inf )
            {
                $labelLine = new MLabel($linha);
                $labelLine->addStyle('width', '100% !important');
                $divLine = new MDiv('divLine' . $linha , $labelLine);
                $divLine->setClass('gResponsiveMenuOptions');
                $content    = null;
                $content[]  = $mLink = new MLink('linkResponsiveMenu' . $linha, $divLine, $inf->action);
                $class      = $this->orientation ==  'horizontal' ? 'gResponsiveMenuButton' : 'gResponsiveMenuButtonVertical';
                $classEx    = $this->orientation ==  'horizontal' ? 'gResponsiveMenuButtonEx' : 'gResponsiveMenuButtonExVertical';
                $inner      = new MDiv(null, $content, $classEx);
                $button     = new MDiv(null, $inner, $class);
                $buttons[]	= $button;
            }
        }

        //SEPARADOR
        $buttons[] = new MDiv('divHrMenuResponsivo', "<hr>");

        //MINHA BIBLIOTECA
        $labelLine = new MLabel('MINHA BIBLIOTECA');
        $labelLine->addStyle('width', '100% !important');
        $divLine = new MDiv('divLineMinhaBiblioteca' , $labelLine);
        $divLine->setClass('gResponsiveMenuOptions');
        $content = $mLink = new MLink('linkMyLibrary', $divLine, 'javascript:' . GUtil::getAjax('subForm', 'MyLibrary'));
        $class      = $this->orientation ==  'horizontal' ? 'gResponsiveMenuButton' : 'gResponsiveMenuButtonVertical';
        $classEx    = $this->orientation ==  'horizontal' ? 'gResponsiveMenuButtonEx' : 'gResponsiveMenuButtonExVertical';
        $inner      = new MDiv(null, $content, $classEx);
        $buttons[]     = new MDiv(null, $inner, $class);

        //MENU PERSONALIZADO
        if ( is_array( $url ) )
        {
            foreach ( $url as $line => $info )
            {
                $labelLine = new MLabel($line);
                $labelLine->addStyle('width', '100% !important');
                $divLine = new MDiv('divLine' . $line , $labelLine);
                $divLine->setClass('gResponsiveMenuOptions');
                $content    = null;
                
                if ( !isset($info->target) )
                {
                    $info->action .= ';';
                    $info->target = '_self';
                }
                
                $content[]  = $mLink = new MLink('linkResponsiveMenu' . $line, $divLine, $info->action, NULL, $info->target);
                $class      = $this->orientation ==  'horizontal' ? 'gResponsiveMenuButton' : 'gResponsiveMenuButtonVertical';
                $classEx    = $this->orientation ==  'horizontal' ? 'gResponsiveMenuButtonEx' : 'gResponsiveMenuButtonExVertical';
                $inner      = new MDiv(null, $content, $classEx);
                $button     = new MDiv(null, $inner, $class);
                $buttons[]	= $button;
            }
        }

        $divMenu[] = $contMenu = new GContainer('contMenuResponsive', array($menuButton));
        $contMenu->addAttribute('onclick', "expandRetractContainer('divButtonsResponsive')");
        $contMenu->addStyle('cursor', 'pointer');
        $contMenu->addStyle('float', 'left');

        $divMenu[] = $divButtons = new MDiv('divButtonsResponsive', $buttons);
        $divButtons->addStyle('display', 'none');

        $this->setInner( $divMenu );

        return parent::generate();
    }
}
?>
