Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Form/Service/Widget/UserSelector.php
Строк: 150
<?php
namespace ConcreteCoreFormServiceWidget;
use 
UserInfo;
use 
URL;
use 
Loader;
class 
UserSelector {

    
/**
     * Creates form fields and JavaScript user chooser for choosing a user. For use with inclusion in blocks and addons.
     * <code>
     *     $dh->selectUser('userID', '1'); // prints out the admin user and makes it changeable.
     * </code>
     * @param int $uID
     */


    
public function selectUser($fieldName, $uID = false, $javascriptFunc = 'ccm_triggerSelectUser') {
        
$selectedUID = 0;
        if (isset(
$_REQUEST[$fieldName])) {
            
$val = Core::make('helper/validation/numbers');
            if (
$val->integer($_REQUEST[$fieldName])) {
                
$selectedUID = $_REQUEST[$fieldName];
            }
        } else if (
$uID > 0) {
            
$selectedUID = $uID;
        }

        
$html = '';
        
$html .= '<div class="ccm-summary-selected-item"><div class="ccm-summary-selected-item-inner"><strong class="ccm-summary-selected-item-label">';
        if (
$selectedUID > 0) {
            
$ui = UserInfo::getByID($selectedUID);
            
$html .= $ui->getUserName();
        }
        
$html .= '</strong></div>';
        
$identifier = new ConcreteCoreUtilityServiceIdentifier();
        
$selector = $identifier->getString(32);
        
$html .= '<a class="ccm-sitemap-select-item" data-form-user-selector="' . $selector . '" dialog-append-buttons="true" dialog-width="90%" dialog-height="70%" dialog-modal="false" dialog-title="' . t('Choose User') . '" href="' . URL::to('/ccm/system/dialogs/user/search') . '">' . t('Select User') . '</a>';
        
$html .= '<input type="hidden" data-form-user-selector-input="' . $selector . '" name="' . $fieldName . '" value="' . $selectedUID . '">';
        
$html .= '</div>';
        
$html .= <<<EOL
<script type="text/javascript">
$(function() {
    $("a[data-form-user-selector=
{$selector}]").dialog();
    $("a[data-form-user-selector=
{$selector}]").on('click', function() {
        var selector = $(this);
        ConcreteEvent.unsubscribe('UserSearchDialogSelectUser.core');
        ConcreteEvent.unsubscribe('UserSearchDialogAfterSelectUser.core');
        ConcreteEvent.subscribe('UserSearchDialogSelectUser.core', function(e, data) {
            var par = selector.parent().find('.ccm-summary-selected-item-label'),
                pari = selector.parent().find('[data-form-user-selector-input=
{$selector}]');
            par.html(data.uName);
            pari.val(data.uID);
            e.stopPropagation();
        });
        ConcreteEvent.subscribe('UserSearchDialogAfterSelectUser.core', function(e) {
            jQuery.fn.dialog.closeTop();
        });
    });
});
</script>
EOL;
        return 
$html;
    }

    public function 
quickSelect($key, $val = false, $args = array()) {
        
$form = Loader::helper('form');
        
$valt = Loader::helper('validation/token');
        
$token = $valt->generate('quick_user_select_' . $key);
        
$html = "
        <style type="
text/css">
        ul.ui-autocomplete {position:absolute; list-style:none; }
        ul.ui-autocomplete li.ui-menu-item { margin-left:0; padding:2px;}
        </style>
        <script type="
text/javascript">
        $(function () {
            $('.ccm-quick-user-selector input').unbind().autocomplete({source: '" 
. REL_DIR_FILES_TOOLS_REQUIRED . "/users/autocomplete?key=" . $key . "&token=" . $token . "',
            select: function(e, ui) { $(this).val(ui.item.label); return false;},
            focus: function(e, ui) { $(this).val(ui.item.label); return false;}
        });
        } );
        </script>"
;
        
$html .= '<span class="ccm-quick-user-selector">'.$form->text($key,$val, $args).'</span>';
        return 
$html;
    }

    public function 
selectMultipleUsers($fieldName, $users = array()) {

        
$html = '';
        
$html .= '<table id="ccmUserSelect' . $fieldName . '" class="table table-condensed" cellspacing="0" cellpadding="0" border="0">';
        
$html .= '<tr>';
        
$html .= '<th>' . t('Username') . '</th>';
        
$html .= '<th>' . t('Email Address') . '</th>';
        
$html .= '<th style="width: 1px"><a class="icon-link ccm-user-select-item dialog-launch" dialog-append-buttons="true" dialog-width="90%" dialog-height="70%" dialog-modal="false" dialog-title="' . t('Choose User') . '" href="'. URL::to('/ccm/system/dialogs/user/search') . '"><i class="fa fa-plus-circle" /></a></th>';
        
$html .= '</tr><tbody id="ccmUserSelect' . $fieldName . '_body" >';
        foreach(
$users as $ui) {
            
$html .= '<tr id="ccmUserSelect' . $fieldName . '_' . $ui->getUserID() . '" class="ccm-list-record">';
            
$html .= '<td><input type="hidden" name="' . $fieldName . '[]" value="' . $ui->getUserID() . '" />' . $ui->getUserName() . '</td>';
            
$html .= '<td>' . $ui->getUserEmail() . '</td>';
            
$html .= '<td><a href="javascript:void(0)" class="ccm-user-list-clear icon-link"><i class="fa fa-minus-circle ccm-user-list-clear-button"></i></a>';
            
$html .= '</tr>';
        }
        if (
count($users) == 0) {
            
$html .= '<tr class="ccm-user-selected-item-none"><td colspan="3">' . t('No users selected.') . '</td></tr>';
        }
        
$html .= '</tbody></table><script type="text/javascript">
        $(function() {
            $("#ccmUserSelect' 
. $fieldName . ' .ccm-user-select-item").dialog();
            $("a.ccm-user-list-clear").click(function() {
                $(this).parents('
tr').remove();
            });

            $("#ccmUserSelect' 
. $fieldName . ' .ccm-user-select-item").on('click', function() {
                ConcreteEvent.subscribe('
UserSearchDialogSelectUser', function(e, data) {
                    var uID = data.uID, uName = data.uName, uEmail = data.uEmail;
                    e.stopPropagation();
                    $("tr.ccm-user-selected-item-none").hide();
                    if ($("#ccmUserSelect' 
. $fieldName . '_" + uID).length < 1) {
                        var html = "";
                        html += "<tr id="ccmUserSelect' 
. $fieldName . '_" + uID + "" class="ccm-list-record"><td><input type="hidden" name="' . $fieldName . '[]" value="" + uID + "" />" + uName + "</td>";
                        html += "<td>" + uEmail + "</td>";
                        html += "<td><a href="javascript:void(0)" class="ccm-user-list-clear icon-link"><i class="fa fa-minus-circle ccm-user-list-clear-button" /></a>";
                        html += "</tr>";
                        $("#ccmUserSelect' 
. $fieldName . '_body").append(html);
                    }
                    $("a.ccm-user-list-clear").click(function() {
                        $(this).parents('
tr').remove();
                    });
                });
                ConcreteEvent.subscribe('
UserSearchDialogAfterSelectUser', function(e) {
                    jQuery.fn.dialog.closeTop();
                });
            });
        });

        </script>'
;
        return 
$html;
    }


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