コード例 #1
0
 *
 * @uses $vars['context']     The context for this widget layout
 * @uses $vars['exact_match'] Only use widgets that match the context
 * @uses $vars['container']   Container to optional limit widgets for. Defaults to page_owner_entity
 */
if (!elgg_is_xhr()) {
    return;
}
$context = elgg_extract('context', $vars);
$widget_context = elgg_extract('widget_context', $vars, $context);
$show_access = (int) elgg_extract('show_access', $vars);
$exact = elgg_extract('exact_match', $vars, false);
$owner_guid = (int) elgg_extract('owner_guid', $vars);
$context_stack = elgg_extract('context_stack', $vars);
if (!empty($context_stack)) {
    elgg_set_context_stack($context_stack);
}
elgg_set_page_owner_guid($owner_guid);
$owner = elgg_get_page_owner_entity();
$container = elgg_extract('container', $vars, elgg_get_page_owner_entity());
echo elgg_view('input/hidden', ['name' => 'widget_context', 'value' => $widget_context]);
echo elgg_view('input/hidden', ['name' => 'show_access', 'value' => $show_access]);
$widget_context = str_replace('default_', '', $context);
$available_widgets_context = elgg_trigger_plugin_hook('available_widgets_context', 'widget_manager', [], $widget_context);
$widgets = elgg_get_widget_types($available_widgets_context, $exact);
$widgets = elgg_get_widget_types(['context' => $available_widgets_context, 'exact' => $exact, 'container' => $container]);
widget_manager_sort_widgets($widgets);
$user_widgets = elgg_extract('user_widgets', $vars);
if (!isset($vars['user_widgets'])) {
    $user_widgets = elgg_get_widgets($owner->guid, $context);
}
コード例 #2
0
ファイル: contents.php プロジェクト: epsylon/Hydra-dev
 <?php 
// capture global state necessary for menus
$state = ['contexts' => elgg_get_context_stack(), 'input' => elgg_get_config("input"), 'page_owner_guid' => elgg_get_page_owner_guid()];
// g = guid, pog = page_owner_guid, c = contexts, m = mac
$guid = (int) get_input("g", 0, false);
$page_owner_guid = (int) get_input("pog", 0, false);
$contexts = (array) get_input("c", [], false);
$mac = get_input("m", "", false);
$input = (array) get_input("i", [], false);
// verify MAC
$data = serialize([$guid, $page_owner_guid, $contexts, $input]);
if (!elgg_build_hmac($data)->matchesToken($mac)) {
    return;
}
$user = get_user($guid);
if (!$user) {
    return;
}
// render view using state as it was in the placeholder view
elgg_set_context_stack($contexts);
elgg_set_config("input", $input);
elgg_set_page_owner_guid($page_owner_guid);
$params = ["entity" => $user, "username" => $user->username, "name" => $user->name];
echo elgg_view_menu("user_hover", $params);
// revert global state
elgg_set_context_stack($state['contexts']);
elgg_set_config("input", $state['input']);
elgg_set_page_owner_guid($state['page_owner_guid']);
コード例 #3
0
ファイル: widgets.php プロジェクト: elgg/elgg
/**
 * Handle widgets pages.
 *
 * @param array $page Array of pages
 *
 * @return bool
 * @access private
 */
function _elgg_widgets_page_handler($page)
{
    $segment = elgg_extract(0, $page);
    if ($segment !== 'add_panel') {
        return;
    }
    elgg_ajax_gatekeeper();
    $owner_guid = (int) get_input('owner_guid');
    elgg_set_page_owner_guid($owner_guid);
    // restoring context stack
    $context_stack = get_input('context_stack');
    if (!empty($context_stack)) {
        elgg_set_context_stack($context_stack);
    }
    echo elgg_view_resource('widgets/add_panel', ['owner_guid' => $owner_guid, 'context' => get_input('context')]);
    return true;
}