Вход Регистрация
Файл: 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;
    }


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