This repository has been archived on 2024-09-05. You can view files and clone it, but cannot push or open issues or pull requests.
shimmie2/ext/rating/theme.php

107 lines
3.9 KiB
PHP
Raw Normal View History

2021-12-14 18:32:47 +00:00
<?php
declare(strict_types=1);
namespace Shimmie2;
2023-06-29 05:50:32 +00:00
use MicroHTML\HTMLElement;
2023-06-29 17:44:57 +00:00
use function MicroHTML\emptyHTML;
use function MicroHTML\{DIV,INPUT,P,PRE,SPAN,TABLE,TD,TH,TR};
2023-06-29 05:50:32 +00:00
class RatingsTheme extends Themelet
{
2023-06-29 05:50:32 +00:00
public function get_selection_rater_html(string $name = "rating", array $ratings = [], array $selected_options = []): HTMLElement
{
return SHM_SELECT($name, !empty($ratings) ? $ratings : Ratings::get_ratings_dict(), required: true, selected_options: $selected_options);
2023-06-29 05:50:32 +00:00
}
public function get_rater_html(int $image_id, string $rating, bool $can_rate): HTMLElement
{
$human_rating = Ratings::rating_to_human($rating);
2023-06-29 05:50:32 +00:00
$html = TR(TH("Rating"));
if ($can_rate) {
$selector = $this->get_selection_rater_html(selected_options: [$rating]);
$html->appendChild(TD(
SPAN(["class"=>"view"], $human_rating),
SPAN(["class"=>"edit"], $selector)
));
} else {
$html->appendChild(TD($human_rating));
}
return $html;
}
2023-06-25 23:05:38 +00:00
public function display_form(array $current_ratings)
{
global $page;
$table = TABLE(
2023-06-29 17:44:57 +00:00
["class"=>"form"],
TR(TH("Change"), TD($this->get_selection_rater_html("rating_old", $current_ratings))),
TR(TH("To"), TD($this->get_selection_rater_html("rating_new"))),
TR(TD(["colspan"=>"2"], SHM_SUBMIT("Update")))
);
2023-06-25 23:05:38 +00:00
$page->add_block(new Block("Update Ratings", SHM_SIMPLE_FORM("admin/update_ratings", $table)));
}
2023-06-29 17:44:57 +00:00
public function get_help_html(array $ratings): HTMLElement
{
$rating_rows = [TR(TH("Name"), TH("Search Term"), TH("Abbreviation"))];
foreach ($ratings as $rating) {
$rating_rows[] = TR(TD($rating->name), TD($rating->search_term), TD($rating->code));
}
return emptyHTML(
2023-06-29 17:44:57 +00:00
P("Search for posts with one or more possible ratings."),
SHM_COMMAND_EXAMPLE(
"rating:" . $ratings[0]->search_term,
"Returns posts with the " . $ratings[0]->name . " rating."
2023-06-29 17:44:57 +00:00
),
P("Ratings can be abbreviated to a single letter as well."),
SHM_COMMAND_EXAMPLE(
"rating:" . $ratings[0]->code,
"Returns posts with the " . $ratings[0]->name . " rating."
2023-06-29 17:44:57 +00:00
),
P("If abbreviations are used, multiple ratings can be searched for."),
SHM_COMMAND_EXAMPLE(
"rating:" . $ratings[0]->code . $ratings[1]->code,
"Returns posts with the " . $ratings[0]->name . " or " . $ratings[1]->name . " rating."
2023-06-29 17:44:57 +00:00
),
P("Available ratings:"),
TABLE(...$rating_rows)
2023-06-29 17:44:57 +00:00
);
2019-08-14 14:07:45 +00:00
}
2023-06-25 23:05:38 +00:00
// This wasn't being used at all
/* public function get_user_options(User $user, array $selected_ratings, array $available_ratings): string
{
$html = "
<p>".make_form(make_link("user_admin/default_ratings"))."
<input type='hidden' name='id' value='$user->id'>
<table style='width: 300px;'>
<thead>
<tr><th colspan='2'></th></tr>
</thead>
<tbody>
<tr><td>This controls the default rating search results will be filtered by, and nothing else. To override in your search results, add rating:* to your search.</td></tr>
<tr><td>
".SHM_SELECT("ratings", selected_options: $selected_ratings, multiple: true, options: $available_ratings)."
</td></tr>
</tbody>
<tfoot>
<tr><td><input type='submit' value='Save'></td></tr>
</tfoot>
</table>
</form>
";
return $html;
2023-06-25 23:05:38 +00:00
} */
}