widget_manager_sort_widgets($widgets); // sort alphabetically if (!empty($widgets)) { $list = "<table class='elgg-table'>"; $list .= "<tr>"; $list .= "<th>" . elgg_echo("widget") . "</th>"; $list .= "<th class='center'>" . elgg_echo("widget_manager:forms:settings:can_add") . "</th>"; $list .= "<th class='center'>" . elgg_echo("hide") . "</th>"; $list .= "</tr>"; foreach ($widgets as $handler => $widget) { $check_add = ""; $check_hide = ""; if (widget_manager_get_widget_setting($handler, "can_add", $widget_context)) { $check_add = "checked='checked'"; } if (widget_manager_get_widget_setting($handler, "hide", $widget_context)) { $check_hide = "checked='checked'"; } $list .= "<tr>"; $list .= "<td><span title='[" . $handler . "] " . $widget->description . "'>" . $widget->name . "</span></td>"; $list .= "<td class='center'><input type='checkbox' name='" . $widget_context . "_" . $handler . "_can_add' value='yes' " . $check_add . " /></td>"; $list .= "<td class='center'><input type='checkbox' name='" . $widget_context . "_" . $handler . "_hide' value='yes' " . $check_hide . "/></td>"; $list .= "</tr>"; } $list .= "</table>"; $form_body = $list; $form_body .= "<br />"; $form_body .= elgg_view("input/hidden", array("value" => $widget_context, "name" => "widget_context")); $form_body .= elgg_view("input/submit", array("value" => elgg_echo("save"))); $body = elgg_view("input/form", array("body" => $form_body, "action" => "action/widget_manager/manage", "id" => "widget_manager_manage_form")); } else {
* * @uses $vars['entity'] ElggWidget * @uses $vars['show_access'] Show the access control in edit area? (true) */ $widget = elgg_extract('entity', $vars); if (!elgg_instanceof($widget, 'object', 'widget')) { return true; } if (!$widget instanceof WidgetManagerWidget) { // need this for newly created widgets (elgg_create_widget returns ElggWidget) $widget = new \WidgetManagerWidget($widget->toObject()); } $show_access = elgg_extract('show_access', $vars, true); elgg_set_config('widget_show_access', $show_access); $handler = $widget->handler; if (widget_manager_get_widget_setting($handler, 'hide', $widget->context)) { return true; } $title = $widget->getTitle(); $widget_title_link = $widget->getURL(); if ($widget_title_link !== elgg_get_site_url()) { // only set usable widget titles $title = elgg_view('output/url', ['href' => $widget_title_link, 'text' => $title, 'is_trusted' => true, 'class' => 'widget-manager-widget-title-link']); } $can_edit = $widget->canEdit(); $widget_header = ''; if ($widget->widget_manager_hide_header !== 'yes' || $can_edit) { $controls = elgg_view('object/widget/elements/controls', ['widget' => $widget, 'show_edit' => $can_edit]); $widget_header = "<div class='elgg-widget-handle clearfix'><h3 class='elgg-widget-title'>{$title}</h3>{$controls}</div>"; } $widget_body_vars = ['id' => "elgg-widget-content-{$widget->guid}", 'class' => ['elgg-widget-content']];
/** * Applies the saved widgets config * * @param string $hook_name name of the hook * @param string $entity_type type of the hook * @param bool $return_value current return value * @param array $params hook parameters * * @return void */ public static function applyWidgetsConfig($hook_name, $entity_type, $return_value, $params) { foreach ($return_value as $id => $widget_definition) { $widget_config = widget_manager_get_widget_setting($widget_definition->id, 'all'); if (empty($widget_config)) { continue; } if (!isset($widget_definition->originals)) { $widget_definition->originals = ['multiple' => $widget_definition->multiple, 'context' => $widget_definition->context]; } // fix multiple if (isset($widget_config['multiple'])) { $widget_definition->multiple = (bool) elgg_extract('multiple', $widget_config); } // fix contexts $contexts = elgg_extract('contexts', $widget_config); if (!empty($contexts)) { foreach ($contexts as $context => $context_config) { if (!isset($context_config['enabled'])) { continue; } $enabled = elgg_extract('enabled', $context_config); $existing_key = array_search($context, $widget_definition->context); if ($existing_key !== false) { // already existing in default contexts if (!$enabled) { // remove if disabled in config unset($widget_definition->context[$existing_key]); } } elseif ($enabled) { // add if not existing $widget_definition->context[] = $context; } } $return_value[$id] = $widget_definition; } } return $return_value; }
$lan_key = 'widget_manager:widgets:lightbox:title:' . strtolower($context); if (!elgg_language_key_exists($lan_key)) { add_translation(get_current_language(), [$lan_key => $context]); } $title = elgg_format_element('div', ['id' => 'widget_manager_widgets_search'], $search_box); $title .= elgg_echo("widget_manager:widgets:lightbox:title:{$context}"); $module_type = elgg_in_context('admin') ? 'inline' : 'info'; if (empty($widgets)) { echo elgg_view_module($module_type, $title, elgg_echo('notfound'), ['id' => 'widget_manager_widgets_select']); return; } $body = ''; foreach ($widgets as $handler => $widget) { $can_add = widget_manager_get_widget_setting($handler, 'can_add', $widget_context); $allow_multiple = $widget->multiple; $hide = widget_manager_get_widget_setting($handler, 'hide', $widget_context); if (!$can_add || $hide) { // can not add or should be hidden continue; } $available = $allow_multiple || !in_array($handler, $current_handlers); $li_class = []; $li_class[] = $available ? 'elgg-state-available' : 'elgg-state-unavailable'; $li_class[] = $allow_multiple ? 'elgg-widget-multiple' : 'elgg-widget-single'; $li_content = ''; if (!$allow_multiple) { $li_content .= elgg_format_element('span', ['class' => 'elgg-quiet'], elgg_echo('widget:unavailable')); } $li_content .= elgg_view('input/button', ['class' => 'elgg-button-submit', 'value' => elgg_echo('widget_manager:button:add')]); $li = elgg_format_element('li', ['class' => $li_class, 'data-elgg-widget-type' => $handler], $li_content); $ul = elgg_format_element('ul', [], $li);
foreach ($contexts as $context) { $body .= '<tr><td>'; $options = ['name' => "widgets_config[{$widget_definition->id}][contexts][{$context}][enabled]", 'label' => $context, 'value' => 1, 'checked' => in_array($context, $widget_definition->context), 'label_class' => []]; if (!in_array($context, $originals['context'])) { $options['label_class'][] = 'widget-manager-unsupported-context'; } if (in_array($context, $widget_definition->context)) { if (!in_array($context, $originals['context'])) { $options['label_class'][] = 'widget-manager-manage-widgets-non-default'; $options['title'] = elgg_echo('widget_manager:forms:manage_widgets:non_default'); } } elseif (in_array($context, $originals['context'])) { $options['label_class'][] = 'widget-manager-manage-widgets-non-default'; $options['title'] = elgg_echo('widget_manager:forms:manage_widgets:non_default'); } $body .= elgg_view('input/checkbox', $options); $body .= '</td><td class="center">'; $body .= elgg_view('input/checkbox', ['name' => "widgets_config[{$widget_definition->id}][contexts][{$context}][can_add]", 'value' => 1, 'checked' => widget_manager_get_widget_setting($widget_definition->id, 'can_add', $context)]); $body .= '</td><td class="center">'; $body .= elgg_view('input/checkbox', ['name' => "widgets_config[{$widget_definition->id}][contexts][{$context}][hide]", 'value' => 1, 'checked' => widget_manager_get_widget_setting($widget_definition->id, 'hide', $context)]); $body .= '</td></tr>'; } $body .= '</table>'; // multiple $options = ['name' => "widgets_config[{$widget_definition->id}][multiple]", 'label' => elgg_echo('widget_manager:forms:manage_widgets:multiple'), 'value' => 1, 'checked' => $widget_definition->multiple]; if ($widget_definition->multiple !== $originals['multiple']) { $options['label_class'] = 'widget-manager-manage-widgets-non-default'; $options['title'] = elgg_echo('widget_manager:forms:manage_widgets:non_default'); } $body .= elgg_view_input('checkbox', $options); echo elgg_view_module('inline', $widget_definition->name . ' [' . $widget_definition->id . ']', $body, ['class' => 'man']);