Вход Регистрация
Файл: 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 
addActionBASE_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 $o1;
        
$o2 $o2 === null $o2;

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

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

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

        return (
$o1 $o2) ? -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
Реклама