diff --git a/assets/stylesheets/matrixchat.scss b/assets/stylesheets/matrixchat.scss index a3d2a33bb2264c0f1412fbb95e801421c72895fc..79f3b59ed208af1095e88d00f32cc2fdda1ccbb5 100644 --- a/assets/stylesheets/matrixchat.scss +++ b/assets/stylesheets/matrixchat.scss @@ -1,3 +1,7 @@ +div.matrix-chat-button { + text-align: center; +} + div.matrix-loading { height: 64px; text-align: center; diff --git a/controllers/matrix_chat.php b/controllers/matrix_chat.php index da0c589b281b125d8e19062f7fe124c5092ccfe9..4fa86ce47504f052a1f1e29b3b5dbe58e283530d 100644 --- a/controllers/matrix_chat.php +++ b/controllers/matrix_chat.php @@ -48,14 +48,7 @@ class MatrixChatController extends AuthenticatedController if ($member->visible == 'yes' || $member->visible == 'unknown' && Config::get()->USER_VISIBILITY_UNKNOWN) { if (!Config::get()->MATRIX_AUTO_CREATE_ACCOUNTS) { - PageLayout::postInfo( - sprintf( - dgettext('matrix', 'Sollten Sie sich noch nie beim Chat angemeldet haben, ' . - 'tun Sie dies bitte jetzt und %sladen danach die Seite neu%s.'), - '<a href="" title="' . dgettext('matrix', 'Seite neu laden') . '">', - '</a>' - ) - ); + $this->showAccountHint = true; } // Check if current user has a Matrix account. @@ -81,8 +74,10 @@ class MatrixChatController extends AuthenticatedController } else { $this->hasToCreate = false; - //$room->requireMembership($this->account->getLinkedAccount()); - $room->requireInvitation($this->account->getLinkedAccount()); + if ($this->account) { + //$room->requireMembership($this->account->getLinkedAccount()); + $invited = $room->requireInvitation($this->account->getLinkedAccount()); + } } } diff --git a/models/MatrixRoom.php b/models/MatrixRoom.php index 4df890f5c3307899c4e4d93e5948dd0c7af1ea93..8bb3df9d0cd73ab8370857d3dc691ebb96086f16 100644 --- a/models/MatrixRoom.php +++ b/models/MatrixRoom.php @@ -184,6 +184,8 @@ class MatrixRoom extends SimpleORMap // Set correct permission for current user. MatrixClient::get()->setRoomUserPermissionLevels($sysaccount, $this->getLinkedRoom(), $permissions); } + + return $invited; } } \ No newline at end of file diff --git a/views/matrix_chat/index.php b/views/matrix_chat/index.php index 22e333a3dd44592fc116692c9668a935d08375b4..6eef61a56e637b1ff6f471aae359151303e16e23 100644 --- a/views/matrix_chat/index.php +++ b/views/matrix_chat/index.php @@ -1,3 +1,27 @@ +<? if ($showAccountHint) : ?> + <div class="messagebox messagebox_warning"> + <p> + <?= dgettext('matrix', 'Sie müssen sich bereits erstmalig im Chat angemeldet haben, ' . + 'damit Ihre Kennung dort angelegt wurde und Sie in den Chatraum dieser Veranstaltung eingeladen ' . + 'werden können. Aus Datenschutzgründen ist es nicht möglich, Ihre Kennung dort automatisch zu ' . + 'ermitteln.') ?> + </p> + <p> + <?= dgettext('matrix', 'Wenn Sie also noch nie im Element-Chat eingeloggt waren:') ?> + <br> + <?= sprintf(dgettext('matrix', '%sBitte rufen Sie den Chat auf%s und ' . + 'klicken dort auf "Mit SAML fortfahren", um sich per WebSSO einzuloggen. Wenn Sie danach diese Seite ' . + 'neu laden oder später nochmals aufrufen, erhalten Sie eine Einladung in den Chatraum dieser ' . + 'Veranstaltung.'), + '<a href="' . Config::get()->MATRIX_CHATSERVER_URL . '" title="Chat" target="_blank">', + '</a>') ?> + </p> + <p> + <?= dgettext('matrix', 'Nach dem ersten Login können Sie problemlos beliebige ' . + 'Chatclients für Matrix verwenden.') ?> + </p> + </div> +<? endif ?> <? if (!$account && Config::get()->MATRIX_AUTO_CREATE_ACCOUNTS) : ?> <form class="default" action="<?= $controller->link_for('matrix_chat/create_account') ?>" method="post"> <? if ($no_account_wanted) : ?> @@ -21,5 +45,11 @@ <?= Assets::img('ajax-indicator-black.svg') ?> </div> <? elseif (!$noChat) : ?> - <iframe src="<?php echo htmlReady(Config::get()->MATRIX_CHATSERVER_URL) ?>" width="100%" height="100%"></iframe> + <div class="matrix-chat-button"> + <?= Studip\LinkButton::create( + dgettext('matrix', 'Chat öffnen'), + Config::get()->MATRIX_CHATSERVER_URL, + ['target' => '_blank'] + ) ?> + </div> <? endif;