Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Form/Service/Widget/PageSelector.php
Строк: 144
<?php
namespace ConcreteCoreFormServiceWidget;

use 
Core;
use 
Page;
use 
Permissions;

class 
PageSelector
{

    
/**
     * Creates form fields and JavaScript page chooser for choosing a page. For use with inclusion in blocks.
     * <code>
     *     $dh->selectPage('pageID', '1'); // prints out the home page and makes it selectable.
     * </code>
     *
     * @param $fieldName
     * @param bool|int $cID
     * @return string
     */
    
public function selectPage($fieldName, $cID = false)
    {
        
$v = View::getInstance();
        
$v->requireAsset('core/sitemap');

        
$selectedCID = 0;
        if (isset(
$_REQUEST[$fieldName])) {
            
$selectedCID = intval($_REQUEST[$fieldName]);
        } else {
            if (
$cID > 0) {
                
$selectedCID = $cID;
            }
        }

        if (
$selectedCID) {
            
$args = "{'inputName': '{$fieldName}', 'cID': {$selectedCID}}";
        } else {
            
$args = "{'inputName': '{$fieldName}'}";
        }

        
$identifier = new ConcreteCoreUtilityServiceIdentifier();
        
$identifier = $identifier->getString(32);
        
$html = <<<EOL
        <div data-page-selector="{$identifier}"></div>
        <script type="text/javascript">
        $(function() {
            $('[data-page-selector=
{$identifier}]').concretePageSelector({$args});
        });
        </script>
EOL;
        return 
$html;
    }

    public function 
quickSelect($key, $cID = false, $args = array())
    {
        
$selectedCID = 0;
        if (isset(
$_REQUEST[$key])) {
            
$selectedCID = $_REQUEST[$key];
        } else {
            if (
$cID > 0) {
                
$selectedCID = $cID;
            }
        }

        
$cName = '';
        if (
$selectedCID > 0) {
            
$oc = Page::getByID($selectedCID);
            
$cp = new Permissions($oc);
            if (
$cp->canViewPage()) {
                
$cName = $oc->getCollectionName();
            }
        }

        
$valt = Core::make('helper/validation/token');
        
$token = $valt->generate('quick_page_select_' . $key);
        
$html = "
        <script type="
text/javascript">
        $(function () {
            $('#ccm-quick-page-selector-label-" 
. $key . "').autocomplete({
                select: function(e, ui) {
                    $('#ccm-quick-page-selector-label-" 
. $key . "').val(ui.item.label);
                    $('#ccm-quick-page-selector-value-" 
. $key . "').val(ui.item.value);
                    return false;
                },
                open: function(e, ui) {
                    //$('#ccm-quick-page-selector-label-" 
. $key . "').val('');
                    $('#ccm-quick-page-selector-value-" 
. $key . "').val('');
                },
                focus: function(e, ui) {
                    $('#ccm-quick-page-selector-label-" 
. $key . "').val(ui.item.label);
                    return false;
                },
                source: '" 
. REL_DIR_FILES_TOOLS_REQUIRED . "/pages/autocomplete?key=" . $key . "&token=" . $token . "'
            });
            $('#ccm-quick-page-selector-label-" 
. $key . "').keydown(function(e) {
                if (e.keyCode == 13) {
                    e.preventDefault();
                }
            }).change(function(e) {
                if ($('#ccm-quick-page-selector-label-" 
. $key . "').val() == '') {
                    $('#ccm-quick-page-selector-value-" 
. $key . "').val('');
                }
            });
            $('#ccm-quick-page-selector-label-" 
. $key . "').autocomplete('widget').addClass('ccm-page-selector-autocomplete');
        } );
        </script>"
;
        
$html .= '<input type="hidden" id="ccm-quick-page-selector-value-' . $key . '" name="' . $key . '" value="' . $selectedCID . '" /><span class="ccm-quick-page-selector">
        <input type="text" class="ccm-input-text" name="ccm-quick-page-selector-label-' 
. $key . '" id="ccm-quick-page-selector-label-' . $key . '" value="' . $cName . '" /></span>';
        return 
$html;
    }

    public function 
selectMultipleFromSitemap($field, $pages = array(), $startingPoint = HOME_CID, $filters = array())
    {
        
$v = View::getInstance();
        
$v->requireAsset('core/sitemap');

        
$identifier = new ConcreteCoreUtilityServiceIdentifier();
        
$identifier = $identifier->getString(32);

        
$args = new stdClass;
        
$selected = array();
        if (
$_SERVER['REQUEST_METHOD'] == 'POST') {
            if (isset(
$_POST[$field]) && is_array($_POST[$field])) {
                foreach(
$_POST[$field] as $value) {
                    
$selected[] = intval($value);
                }
            }
        } else {
            foreach(
$pages as $cID) {
                
$selected[] = is_object($cID) ? $cID->getCollectionID() : $cID;
            }
        }

        
$args->identifier = $identifier;
        
$args->selected = $selected;
        
$args->mode = 'multiple';
        
$args->token = Core::make('token')->generate('select_sitemap');
        
$args->inputName = $field;
        
$args->startingPoint = $startingPoint;
        if (
count($filters)) {
            
$args->filters = $filters;
        }
        
$args = json_encode($args);

        
$html = <<<EOL
        <div data-page-sitemap-selector="{$identifier}"></div>
        <script type="text/javascript">
        $(function() {
            $('[data-page-sitemap-selector=
{$identifier}]').concretePageSitemapSelector({$args});
        });
        </script>
EOL;
        return 
$html;
    }

    public function 
selectFromSitemap($field, $page = null, $startingPoint = HOME_CID, $filters = array())
    {
        
$v = View::getInstance();
        
$v->requireAsset('core/sitemap');

        
$identifier = new ConcreteCoreUtilityServiceIdentifier();
        
$identifier = $identifier->getString(32);

        
$args = new stdClass;
        
$selected = 0;

        if (
$_SERVER['REQUEST_METHOD'] == 'POST') {
            if (isset(
$_POST[$field])) {
                
$selected = intval($_POST[$field]);
            }
        } else if (
$page) {
            
$selected = is_object($page) ? $page->getCollectionID() : $page;
        }
        
$args->identifier = $identifier;
        
$args->selected = $selected;
        
$args->inputName = $field;
        
$args->startingPoint = $startingPoint;
        
$args->token = Core::make('token')->generate('select_sitemap');
        if (
count($filters)) {
            
$args->filters = $filters;
        }
        
$args = json_encode($args);

        
$html = <<<EOL
        <div data-page-sitemap-selector="{$identifier}"></div>
        <script type="text/javascript">
        $(function() {
            $('[data-page-sitemap-selector=
{$identifier}]').concretePageSitemapSelector({$args});
        });
        </script>
EOL;
        return 
$html;
    }


}
Онлайн: 3
Реклама