Browse Source

Fix #1473 Fix and refactor the Pubsub services discovery form

feature/templater
Timothée Jaussoin 3 weeks ago
parent
commit
05a2e69385
  1. 1
      CHANGELOG.md
  2. 5
      app/User.php
  3. 7
      app/Views/explore.tpl
  4. 26
      app/Widgets/CommunitiesServers/CommunitiesServers.php
  5. 16
      app/Widgets/CommunitiesServers/_communitiesservers.tpl
  6. 29
      app/Widgets/CommunitiesServers/_communitiesservers_discover_server.tpl
  7. 4
      app/Widgets/CommunitiesServers/communitiesservers.js

1
CHANGELOG.md

@ -27,6 +27,7 @@ v0.32 (master)
* Fix user clear when unregistering from a Chatroom
* Implement XEP-0300: Use of Cryptographic Hash Functions in XMPP
* Implement XEP-0492: Chat notification settings
* Fix #1473 Fix and refactor the Pubsub services discovery form
v0.31
---------------------------

5
app/User.php

@ -228,6 +228,11 @@ class User extends Model
}
}
public function isRestricted(): bool
{
return \App\Configuration::get()->restrictsuggestions;
}
public function hasMAM(): bool
{
return ($this->capability && $this->capability->hasFeature('urn:xmpp:mam:2'));

7
app/Views/explore.tpl

@ -22,6 +22,13 @@
<span class="primary icon active" onclick="history.back()">
<i class="material-symbols">arrow_back</i>
</span>
<?php if (!me()->isRestricted()) { ?>
<span class="control icon active divided" onclick="CommunitiesServers_ajaxDiscoverServer()">
<i class="material-symbols">search</i>
</span>
<?php } ?>
<div>
<p class="center"><?php echo __('communities.servers'); ?></p>
<p class="center line"><?php echo __('communities.empty_text'); ?></p>

26
app/Widgets/CommunitiesServers/CommunitiesServers.php

@ -2,6 +2,7 @@
namespace App\Widgets\CommunitiesServers;
use App\Widgets\Dialog\Dialog;
use App\Widgets\Toast\Toast;
use Movim\Widget\Base;
@ -12,9 +13,10 @@ class CommunitiesServers extends Base
{
public function load()
{
$this->registerEvent('disco_items_manual', 'onDisco', 'community');
$this->registerEvent('disco_items_manual_error', 'onDiscoError', 'community');
$this->registerEvent('disco_request_handle', 'onDiscoInfo', 'community');
$this->registerEvent('disco_items_manual', 'onDisco', 'explore');
$this->registerEvent('disco_items_manual_error', 'onDiscoError', 'explore');
$this->registerEvent('disco_items_errorremoteservernotfound', 'onDiscoNotFound', 'explore');
$this->registerEvent('disco_request_handle', 'onDiscoInfo', 'explore');
$this->addjs('communitiesservers.js');
}
@ -22,6 +24,7 @@ class CommunitiesServers extends Base
{
Toast::send($this->__('communities.disco'));
$this->ajaxHttpGet();
$this->rpc('Dialog_ajaxClear');
}
public function onDiscoInfo($packet)
@ -36,8 +39,21 @@ class CommunitiesServers extends Base
Toast::send($this->__('communities.disco_error'));
}
public function ajaxDisco($origin)
public function onDiscoNotFound($packet)
{
Toast::send($this->__('page.not_found'));
}
public function ajaxDiscoverServer()
{
$view = $this->tpl();
Dialog::fill($view->draw('_communitiesservers_discover_server'));
}
public function ajaxDisco($form)
{
$origin = $form->server->value;
if (!validateServer($origin)) {
Toast::send($this->__('communities.disco_error'));
return;
@ -64,11 +80,9 @@ class CommunitiesServers extends Base
->restrictUserHost()
->orderBy('occupants', 'desc')
->get();
$configuration = \App\Configuration::get();
$view = $this->tpl();
$view->assign('servers', $servers);
$view->assign('restrict', $configuration->restrictsuggestions);
return $view->draw('_communitiesservers');
}

16
app/Widgets/CommunitiesServers/_communitiesservers.tpl

@ -32,19 +32,3 @@
{/loop}
</ul>
{/if}
{if="!$restrict"}
<ul class="list middle">
<li class="block large">
<span class="primary icon">
<i class="material-symbols">search</i>
</span>
<form>
<div>
<input placeholder="pubsub.server.com" onkeypress="
if (event.key == 'Enter') { CommunitiesServers_ajaxDisco(this.value); return false; }" >
<label>{$c->__('communities.search_server')}</label>
</div>
</form>
</li>
</ul>
{/if}

29
app/Widgets/CommunitiesServers/_communitiesservers_discover_server.tpl

@ -0,0 +1,29 @@
<section class="scroll">
<ul class="list thick">
<li class="block large">
<span class="primary icon">
<i class="material-symbols">search</i>
</span>
<form name="communitiesservers_discover_server">
<div>
<input placeholder="pubsub.server.com" name="server">
<label>{$c->__('communities.search_server')}</label>
</div>
</form>
</li>
</ul>
</section>
<footer>
<button onclick="Dialog_ajaxClear()" class="button flat">
{$c->__('button.close')}
</button>
<button
type="button"
onclick="CommunitiesServers_ajaxDisco(MovimUtils.formToJson('communitiesservers_discover_server'))"
class="button flat"
>
{$c->__('button.search')}
</button>
</footer>

4
app/Widgets/CommunitiesServers/communitiesservers.js

@ -1 +1,5 @@
MovimWebsocket.initiate(() => CommunitiesServers_ajaxHttpGet());
MovimWebsocket.attach(function () {
Notif.current('explore');
});
Loading…
Cancel
Save