/** * Get folder selection options for widgets * * @param array $folder the folder to create for * @param string $internalname the name of the input field * @param array $selected the current selected values * * @return string */ function file_tools_build_widget_options($folder, $internalname = "", $selected = []) { $result = ''; if (is_array($folder) && !array_key_exists('children', $folder)) { foreach ($folder as $folder_item) { $content = file_tools_build_widget_options($folder_item, $internalname, $selected); $result .= elgg_format_element('ul', [], $content); } } else { $folder_item = $folder['folder']; $content = elgg_view('input/checkbox', ['default' => false, 'name' => $internalname, 'label' => $folder_item->title, 'label_tag' => 'span', 'value' => $folder_item->getGUID(), 'checked' => in_array($folder_item->getGUID(), $selected)]); if (!empty($folder['children'])) { $content .= file_tools_build_widget_options($folder['children'], $internalname, $selected); } $result .= elgg_format_element('li', [], $content); } return $result; }
/** * Get folder selection options for widgets * * @param array $folder the folder to create for * @param string $internalname the name of the input field * @param array $selected the current selected values * * @return string */ function file_tools_build_widget_options($folder, $internalname = "", $selected = array()) { $result = ""; if (is_array($folder) && !array_key_exists("children", $folder)) { foreach ($folder as $folder_item) { $result .= "<ul>"; $result .= file_tools_build_widget_options($folder_item, $internalname, $selected); $result .= "</ul>"; } } else { $folder_item = $folder["folder"]; $result .= "<li>"; if (in_array($folder_item->getGUID(), $selected)) { $result .= "<input type='checkbox' name='" . $internalname . "' value='" . $folder_item->getGUID() . "' checked='checked'> " . $folder_item->title; } else { $result .= "<input type='checkbox' name='" . $internalname . "' value='" . $folder_item->getGUID() . "'> " . $folder_item->title; } if (!empty($folder["children"])) { $result .= file_tools_build_widget_options($folder["children"], $internalname, $selected); } $result .= "</li>"; } return $result; }
<?php $widget = elgg_extract("entity", $vars); if ($folders = file_tools_get_folders($widget->owner_guid)) { $selected_folders = $widget->folder_guids; if (!empty($selected_folders) && !is_array($selected_folders)) { $selected_folders = array($selected_folders); } elseif (empty($selected_folders)) { $selected_folders = array(); } // select folder(s) to display echo elgg_echo("widgets:file_tree:edit:select"); echo "<div>"; echo elgg_view("input/hidden", array("name" => "params[folder_guids][]", "value" => "")); // needed to be able to empty the list echo file_tools_build_widget_options($folders, "params[folder_guids][]", $selected_folders); echo "</div>"; // display folder or folder content $checkbox_options = array("name" => "params[show_content]", "value" => "1"); if (!empty($widget->show_content)) { $checkbox_options["checked"] = "checked"; } echo "<div>"; echo elgg_view("input/checkbox", $checkbox_options); echo elgg_echo("widgets:file_tree:edit:show_content"); echo "</div>"; }