standard HTML select code
This commit is contained in:
parent
2b26908624
commit
8db0086d7a
5 changed files with 62 additions and 42 deletions
|
@ -191,4 +191,32 @@ class BaseThemelet
|
||||||
' >>'
|
' >>'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates a <select> HTML template and sets up the given options.
|
||||||
|
*
|
||||||
|
* @param string $name The name attribute of <select>.
|
||||||
|
* @param array $options A pair of parameters for <option> tags. First one is value, second one is text. Example: ('optionA', 'Choose Option A').
|
||||||
|
* @param string $attributes Flags for <select>. Example: 'multiple required' becomes <select multiple required>
|
||||||
|
* @param bool $empty_option Whether the first option should be an empty one.
|
||||||
|
* @param array $selected_options The values of options that should be pre-selected.
|
||||||
|
*/
|
||||||
|
protected function build_selector(string $name, array $options, string $attributes, bool $empty_option=false, array $selected_options=[]): string
|
||||||
|
{
|
||||||
|
$output = "<select name='" . $name . "' " . $attributes . ">";
|
||||||
|
|
||||||
|
if ($empty_option) {
|
||||||
|
$output .= "<option></option>";
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($options as $value => $op) {
|
||||||
|
if (isset($selected_options) && in_array($value, $selected_options)) {
|
||||||
|
$output .= "<option value='" . $value . "' selected>" . $op . "</option>";
|
||||||
|
} else {
|
||||||
|
$output .= "<option value='" . $value . "' >" . $op . "</option>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $output . "</select>";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -553,12 +553,9 @@ class Pools extends Extension
|
||||||
{
|
{
|
||||||
global $database;
|
global $database;
|
||||||
|
|
||||||
$pools = array_map(
|
$options = $database->get_pairs("SELECT id,title FROM pools ORDER BY title");
|
||||||
[Pool::class, "makePool"],
|
|
||||||
$database->get_all("SELECT * FROM pools ORDER BY title ")
|
|
||||||
);
|
|
||||||
|
|
||||||
$event->add_action("bulk_pool_add_existing", "Add To (P)ool", "p", "", $this->theme->get_bulk_pool_selector($pools));
|
$event->add_action("bulk_pool_add_existing", "Add To (P)ool", "p", "", $this->theme->get_bulk_pool_selector($options));
|
||||||
$event->add_action("bulk_pool_add_new", "Create Pool", "", "", $this->theme->get_bulk_pool_input($event->search_terms));
|
$event->add_action("bulk_pool_add_new", "Create Pool", "", "", $this->theme->get_bulk_pool_input($event->search_terms));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -391,13 +391,9 @@ class PoolsTheme extends Themelet
|
||||||
$this->display_paginator($page, "pool/updated", null, $pageNumber, $totalPages);
|
$this->display_paginator($page, "pool/updated", null, $pageNumber, $totalPages);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function get_bulk_pool_selector(array $pools): string
|
public function get_bulk_pool_selector(array $options): string
|
||||||
{
|
{
|
||||||
$output = "<select name='bulk_pool_select' required='required'><option></option>";
|
return $this->build_selector("bulk_pool_select", $options, "required", true);
|
||||||
foreach ($pools as $pool) {
|
|
||||||
$output .= "<option value='" . $pool->id . "' >" . $pool->title . "</option>";
|
|
||||||
}
|
|
||||||
return $output . "</select>";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function get_bulk_pool_input(array $search_terms): string
|
public function get_bulk_pool_input(array $search_terms): string
|
||||||
|
|
|
@ -313,7 +313,7 @@ class Ratings extends Extension
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->theme->display_form($original_values, self::get_sorted_ratings());
|
$this->theme->display_form($original_values);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onAdminAction(AdminActionEvent $event)
|
public function onAdminAction(AdminActionEvent $event)
|
||||||
|
@ -415,6 +415,21 @@ class Ratings extends Extension
|
||||||
return $ratings;
|
return $ratings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function get_ratings_dict(array $ratings=null): array
|
||||||
|
{
|
||||||
|
if (!isset($ratings)) {
|
||||||
|
$ratings = self::get_sorted_ratings();
|
||||||
|
}
|
||||||
|
return array_combine(
|
||||||
|
array_map(function ($o) {
|
||||||
|
return $o->code;
|
||||||
|
}, $ratings),
|
||||||
|
array_map(function ($o) {
|
||||||
|
return $o->name;
|
||||||
|
}, $ratings)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public static function get_user_class_privs(User $user): array
|
public static function get_user_class_privs(User $user): array
|
||||||
{
|
{
|
||||||
global $config;
|
global $config;
|
||||||
|
|
|
@ -27,42 +27,24 @@ class RatingsTheme extends Themelet
|
||||||
return $html;
|
return $html;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function display_form(array $current_ratings, array $available_ratings)
|
public function display_form(array $current_ratings)
|
||||||
{
|
{
|
||||||
global $page;
|
global $page;
|
||||||
|
|
||||||
$html = make_form(make_link("admin/update_ratings"))."<table class='form'><tr>
|
$html = make_form(make_link("admin/update_ratings"))."<table class='form'>";
|
||||||
<th>Change</th><td><select name='rating_old' required='required'><option></option>";
|
|
||||||
foreach ($current_ratings as $key=>$value) {
|
$html .= "<tr><th>Change</th><td>".$this->build_selector("rating_old", $current_ratings, "required", true)."</td></tr>";
|
||||||
$html .= "<option value='$key'>$value</option>";
|
$html .= "<tr><th>To</th><td>".$this->build_selector("rating_new", Ratings::get_ratings_dict(), "required", true)."</td></tr>";
|
||||||
}
|
|
||||||
$html .= "</select></td></tr>
|
$html .= "<tr><td colspan='2'><input type='submit' value='Update'></td></tr></table>
|
||||||
<tr><th>To</th><td><select name='rating_new' required='required'><option></option>";
|
|
||||||
foreach ($available_ratings as $value) {
|
|
||||||
$html .= "<option value='$value->code'>$value->name</option>";
|
|
||||||
}
|
|
||||||
$html .= "</select></td></tr>
|
|
||||||
<tr><td colspan='2'><input type='submit' value='Update'></td></tr></table>
|
|
||||||
</form>\n";
|
</form>\n";
|
||||||
|
|
||||||
$page->add_block(new Block("Update Ratings", $html));
|
$page->add_block(new Block("Update Ratings", $html));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function get_selection_rater_html(array $selected_options, bool $multiple = false, array $available_options = null): string
|
public function get_selection_rater_html(array $selected_options, bool $multiple = false): string
|
||||||
{
|
{
|
||||||
$output = "<select name='rating".($multiple ? "[]' multiple='multiple'" : "' ")." >";
|
return $this->build_selector($multiple ? "rating[]" : "rating", Ratings::get_ratings_dict(), ($multiple ? "multiple" : ""), false, $selected_options);
|
||||||
|
|
||||||
$options = Ratings::get_sorted_ratings();
|
|
||||||
|
|
||||||
foreach ($options as $option) {
|
|
||||||
if ($available_options!=null && !in_array($option->code, $available_options)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
$output .= "<option value='".$option->code."' ".
|
|
||||||
(in_array($option->code, $selected_options) ? "selected='selected'" : "")
|
|
||||||
.">".$option->name."</option>";
|
|
||||||
}
|
|
||||||
return $output."</select>";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function get_help_html(array $ratings): string
|
public function get_help_html(array $ratings): string
|
||||||
|
@ -93,7 +75,9 @@ class RatingsTheme extends Themelet
|
||||||
return $output;
|
return $output;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function get_user_options(User $user, array $selected_ratings, array $available_ratings): string
|
// This wasn't being used at all
|
||||||
|
|
||||||
|
/* public function get_user_options(User $user, array $selected_ratings, array $available_ratings): string
|
||||||
{
|
{
|
||||||
$html = "
|
$html = "
|
||||||
<p>".make_form(make_link("user_admin/default_ratings"))."
|
<p>".make_form(make_link("user_admin/default_ratings"))."
|
||||||
|
@ -115,5 +99,5 @@ class RatingsTheme extends Themelet
|
||||||
</form>
|
</form>
|
||||||
";
|
";
|
||||||
return $html;
|
return $html;
|
||||||
}
|
} */
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue