Merge pull request #13729 from annando/frio-channel

Frio: Improved user defined channel page
This commit is contained in:
Hypolite Petovan 2023-12-17 21:12:37 -05:00 committed by GitHub
commit 02a76cfcfd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 77 additions and 5 deletions

View File

@ -101,8 +101,6 @@ class Channels extends BaseSettings
$saved = $this->channel->save($channel); $saved = $this->channel->save($channel);
$this->logger->debug('Save channel', ['id' => $id, 'saved' => $saved]); $this->logger->debug('Save channel', ['id' => $id, 'saved' => $saved]);
} }
$this->baseUrl->redirect('/settings/channels');
} }
protected function content(array $request = []): string protected function content(array $request = []): string
@ -125,9 +123,19 @@ class Channels extends BaseSettings
$circles[$circle['id']] = $circle['name']; $circles[$circle['id']] = $circle['name'];
} }
$blocklistform = []; $channels = [];
foreach ($this->channel->selectByUid($uid) as $channel) { foreach ($this->channel->selectByUid($uid) as $channel) {
$blocklistform[] = [ if (!empty($request['id'])) {
$open = $channel->code == $request['id'];
} elseif (!empty($request['new_label'])) {
$open = $channel->label == $request['new_label'];
} else {
$open = false;
}
$channels[] = [
'id' => $channel->code,
'open' => $open,
'label' => ["label[$channel->code]", $this->t('Label'), $channel->label, '', $this->t('Required')], 'label' => ["label[$channel->code]", $this->t('Label'), $channel->label, '', $this->t('Required')],
'description' => ["description[$channel->code]", $this->t("Description"), $channel->description], 'description' => ["description[$channel->code]", $this->t("Description"), $channel->description],
'access_key' => ["access_key[$channel->code]", $this->t("Access Key"), $channel->accessKey], 'access_key' => ["access_key[$channel->code]", $this->t("Access Key"), $channel->accessKey],
@ -144,6 +152,7 @@ class Channels extends BaseSettings
$t = Renderer::getMarkupTemplate('settings/channels.tpl'); $t = Renderer::getMarkupTemplate('settings/channels.tpl');
return Renderer::replaceMacros($t, [ return Renderer::replaceMacros($t, [
'open' => count($channels) == 0,
'label' => ["new_label", $this->t('Label'), '', $this->t('Short name for the channel. It is displayed on the channels widget.'), $this->t('Required')], 'label' => ["new_label", $this->t('Label'), '', $this->t('Short name for the channel. It is displayed on the channels widget.'), $this->t('Required')],
'description' => ["new_description", $this->t("Description"), '', $this->t('This should describe the content of the channel in a few word.')], 'description' => ["new_description", $this->t("Description"), '', $this->t('This should describe the content of the channel in a few word.')],
'access_key' => ["new_access_key", $this->t("Access Key"), '', $this->t('When you want to access this channel via an access key, you can define it here. Pay attention to not use an already used one.')], 'access_key' => ["new_access_key", $this->t("Access Key"), '', $this->t('When you want to access this channel via an access key, you can define it here. Pay attention to not use an already used one.')],
@ -166,7 +175,7 @@ class Channels extends BaseSettings
'delentry' => $this->t('Delete entry from the channel list'), 'delentry' => $this->t('Delete entry from the channel list'),
'confirm_delete' => $this->t('Delete entry from the channel list?'), 'confirm_delete' => $this->t('Delete entry from the channel list?'),
], ],
'$entries' => $blocklistform, '$entries' => $channels,
'$baseurl' => $this->baseUrl, '$baseurl' => $this->baseUrl,
'$form_security_token' => self::getFormSecurityToken('settings_channels'), '$form_security_token' => self::getFormSecurityToken('settings_channels'),

View File

@ -0,0 +1,63 @@
<div class="generic-page-wrapper">
<h1>{{$l10n.title}}</h1>
<p>{{$l10n.intro}}</p>
<div class="panel-group panel-group-settings" id="settings-channels" role="tablist" aria-multiselectable="true">
<form class="panel" action="{{$baseurl}}/settings/channels" method="post">
<div class="section-subtitle-wrapper panel-heading" role="tab" id="add-settings-title">
<h2>
<button class="btn-link accordion-toggle{{if !$open}} collapsed{{/if}}" data-toggle="collapse" data-parent="#settings-channels" href="#add-settings-content" aria-expanded="false" aria-controls="add-settings-content">
{{$l10n.addtitle}}
</button>
</h2>
</div>
<div id="add-settings-content" class="panel-collapse collapse{{if $open}} in{{/if}}" role="tabpanel" aria-labelledby="add-settings-title">
<input type="hidden" name="form_security_token" value="{{$form_security_token}}">
{{include file="field_input.tpl" field=$label}}
{{include file="field_input.tpl" field=$description}}
{{include file="field_input.tpl" field=$access_key}}
{{include file="field_select.tpl" field=$circle}}
{{include file="field_textarea.tpl" field=$include_tags}}
{{include file="field_textarea.tpl" field=$exclude_tags}}
{{include file="field_textarea.tpl" field=$text_search}}
{{include file="field_checkbox.tpl" field=$image}}
{{include file="field_checkbox.tpl" field=$video}}
{{include file="field_checkbox.tpl" field=$audio}}
<div class="submit">
<button type="submit" class="btn btn-primary" name="add_channel" value="{{$l10n.addsubmit}}">{{$l10n.addsubmit}}</button>
</div>
</div>
</form>
{{if $entries}}
{{foreach $entries as $e}}
<form class="panel" action="{{$baseurl}}/settings/channels" method="post">
<div class="section-subtitle-wrapper panel-heading" role="tab" id="{{$e.id}}-settings-title">
<h2>
<button class="btn-link accordion-toggle{{if !$e.open}} collapsed{{/if}}" data-toggle="collapse" data-parent="#settings-channels" href="#{{$e.id}}-settings-content" aria-expanded="false" aria-controls="{{$e.id}}-settings-content">
{{$e.label.2}}
</button>
</h2>
</div>
<div id="{{$e.id}}-settings-content" class="panel-collapse collapse{{if $e.open}} in{{/if}}" role="tabpanel" aria-labelledby="{{$e.id}}-settings-title">
<input type="hidden" name="form_security_token" value="{{$form_security_token}}">
<input type="hidden" name="id" value="{{$e.id}}">
{{include file="field_input.tpl" field=$e.label}}
{{include file="field_input.tpl" field=$e.description}}
{{include file="field_input.tpl" field=$e.access_key}}
{{include file="field_select.tpl" field=$e.circle}}
{{include file="field_textarea.tpl" field=$e.include_tags}}
{{include file="field_textarea.tpl" field=$e.exclude_tags}}
{{include file="field_textarea.tpl" field=$e.text_search}}
{{include file="field_checkbox.tpl" field=$e.image}}
{{include file="field_checkbox.tpl" field=$e.video}}
{{include file="field_checkbox.tpl" field=$e.audio}}
{{include file="field_checkbox.tpl" field=$e.delete}}
<div class="submit">
<button type="submit" class="btn btn-primary" name="edit_channel" value="{{$l10n.savechanges}}">{{$l10n.savechanges}}</button>
</div>
</div>
</form>
{{/foreach}}
{{/if}}
</div>
</div>