Вход Регистрация
Файл: base-sys/base/components/context_action.php
Строк: 167
<?php

class BASE_CMP_ContextAction extends PEEP_Component
{
    const 
POSITION_LEFT = 'peep_tooltip_top_left';
    const 
POSITION_RIGHT = 'peep_tooltip_top_right';

    private 
$position;

    private 
$actions = array();

    public function 
__construct( $position = self::POSITION_RIGHT )
    {
        
parent::__construct();

        
$this->position = $position;

        
$script = '$(document).on("hover", ".peep_context_action",function(e) {
                        if (e.type == "mouseenter") {
                            $(this).find(".peep_tooltip").css({opacity: 0, top: 10}).show().stop(true, true).animate({top: 18, opacity: 1}, "fast"); 
                        }
                        else { // mouseleave
                            $(this).find(".peep_tooltip").hide();  
                        }     
                    }
                );'
;

        
PEEP::getDocument()->addOnloadScript($script);
    }

    public function 
addAction( BASE_ContextAction $action )
    {
        if ( 
$action->getParentKey() == null )
        {
            
$this->actions[$action->getKey()]['action'] = $action;
        }
        else
        {
            if ( !empty(
$this->actions[$action->getParentKey()]) )
            {
                
$this->actions[$action->getParentKey()]['subactions'][$action->getKey()] = $action;
            }
        }

        if ( 
$action->getOrder() === null )
        {
            
$order = $action->getParentKey() === null
                
? count($this->actions)
                : 
count($this->actions[$action->getParentKey()]['subactions']);

            
$action->setOrder($order);
        }
    }

    public function 
sortActionsCallback( $a1, $a2 )
    {
        
$o1 = $a1->getOrder();
        
$o2 = $a2->getOrder();

        
$o1 = $o1 === null ? 0 : $o1;
        
$o2 = $o2 === null ? 0 : $o2;

        if (
$o1 == $o2)
        {
            return 
0;
        }

        if ( 
$o1 === -1 )
        {
            return 
1;
        }

        if ( 
$o2 === -1 )
        {
            return -
1;
        }

        return (
$o1 < $o2) ? -1 : 1;
    }

    public function 
setClass( $class )
    {
        
$this->assign("class", $class);
    }
    
    public function 
sortParentActionsCallback( $a1, $a2 )
    {
        return 
$this->sortActionsCallback($a1['action'], $a2['action']);
    }

    public function 
render()
    {
        if ( !
count($this->actions) )
        {
            
$this->setVisible(false);
        }
        else
        {
            
$visible = true;
            foreach ( 
$this->actions as & $action )
            {
                if ( empty(
$action['subactions']) && !$action['action']->getLabel() )
                {
                    
$visible = false;
                    break;
                }

                if ( !empty(
$action['subactions']) )
                {
                    
usort($action['subactions'], array($this, 'sortActionsCallback'));
                }
            }

            
$this->setVisible($visible);
        }

        
usort($this->actions, array($this, 'sortParentActionsCallback'));

        
$this->assign('actions', $this->actions);

        
$this->assign('position', $this->position);

        return 
parent::render();
    }
}

class 
BASE_ContextAction
{
    private 
$key;

    private 
$label;

    private 
$url;

    private 
$id;

    private 
$class;

    private 
$order;

    private 
$parentKey;

    private 
$attributes = array();

    public function 
__construct() { }

    public function 
setKey( $key )
    {
        
$this->key = $key;
    }

    public function 
getKey()
    {
        return 
$this->key;
    }

    public function 
setLabel( $label )
    {
        
$this->label = $label;
    }

    public function 
getLabel()
    {
        return 
$this->label;
    }

    public function 
setUrl( $url )
    {
        
$this->url = $url;
    }

    public function 
getUrl()
    {
        return 
$this->url;
    }

    public function 
setId( $id )
    {
        
$this->id = $id;
    }

    public function 
getId()
    {
        return 
$this->id;
    }

    public function 
setClass( $class )
    {
        
$this->class = $class;
    }

    public function 
getClass()
    {
        return 
$this->class;
    }

    public function 
setOrder( $order )
    {
        
$this->order = $order;
    }

    public function 
getOrder()
    {
        return 
$this->order;
    }

    public function 
setParentKey( $parentKey )
    {
        
$this->parentKey = $parentKey;
    }

    public function 
getParentKey()
    {
        return 
$this->parentKey;
    }

    public function 
addAttribute( $name, $value )
    {
        
$this->attributes[$name] = $value;
    }

    public function 
getAttributes()
    {
        return 
$this->attributes;
    }
}
Онлайн: 0
Реклама