Format web code

This commit is contained in:
Travis Ralston 2019-07-10 22:17:16 -06:00
parent 2e19cec215
commit 2737850e6f
40 changed files with 159 additions and 105 deletions

View File

@ -6,8 +6,8 @@
<div class="my-ibox-content"> <div class="my-ibox-content">
<p> <p>
<a href="https://github.com/matrix-org/matrix-appservice-gitter" target="_blank">matrix-appservice-gitter</a> <a href="https://github.com/matrix-org/matrix-appservice-gitter" target="_blank">matrix-appservice-gitter</a>
is a Gitter bridge that supports bridging Gitter rooms to Matrix. Users on Matrix are represented as a single is a Gitter bridge that supports bridging Gitter rooms to Matrix. Users on Matrix are represented as a
bot user in Gitter, however Gitter users are represented as real-looking Matrix users in the room. single bot user in Gitter, however Gitter users are represented as real-looking Matrix users in the room.
</p> </p>
<table class="table table-striped table-condensed table-bordered"> <table class="table table-striped table-condensed table-bordered">
@ -24,7 +24,8 @@
<tr *ngFor="let bridge of configurations trackById"> <tr *ngFor="let bridge of configurations trackById">
<td> <td>
{{ bridge.upstreamId ? "matrix.org's bridge" : "Self-hosted bridge" }} {{ bridge.upstreamId ? "matrix.org's bridge" : "Self-hosted bridge" }}
<span class="text-muted" style="display: inline-block;" *ngIf="!bridge.upstreamId">({{ bridge.provisionUrl }})</span> <span class="text-muted" style="display: inline-block;"
*ngIf="!bridge.upstreamId">({{ bridge.provisionUrl }})</span>
</td> </td>
<td class="text-center"> <td class="text-center">
<span class="editButton" (click)="editBridge(bridge)" *ngIf="!bridge.upstreamId"> <span class="editButton" (click)="editBridge(bridge)" *ngIf="!bridge.upstreamId">
@ -34,10 +35,12 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
<button type="button" class="btn btn-success btn-sm" (click)="addModularHostedBridge()" [disabled]="(configurations && configurations.length > 0) || isUpdating"> <button type="button" class="btn btn-success btn-sm" (click)="addModularHostedBridge()"
[disabled]="(configurations && configurations.length > 0) || isUpdating">
<i class="fa fa-plus"></i> Add matrix.org's bridge <i class="fa fa-plus"></i> Add matrix.org's bridge
</button> </button>
<button type="button" class="btn btn-success btn-sm" (click)="addSelfHostedBridge()" [disabled]="(configurations && configurations.length > 0) || isUpdating"> <button type="button" class="btn btn-success btn-sm" (click)="addSelfHostedBridge()"
[disabled]="(configurations && configurations.length > 0) || isUpdating">
<i class="fa fa-plus"></i> Add self-hosted bridge <i class="fa fa-plus"></i> Add self-hosted bridge
</button> </button>
</div> </div>

View File

@ -3,7 +3,10 @@
<h4>{{ isAdding ? "Add a new" : "Edit" }} self-hosted Gitter bridge</h4> <h4>{{ isAdding ? "Add a new" : "Edit" }} self-hosted Gitter bridge</h4>
</div> </div>
<div class="dialog-content"> <div class="dialog-content">
<p>Self-hosted Gitter bridges already have provisioning enabled. Be careful not to expose the API to the public internet.</p> <p>
Self-hosted Gitter bridges already have provisioning enabled. Be careful not to expose the API to the public
internet.
</p>
<label class="label-block"> <label class="label-block">
Provisioning URL Provisioning URL

View File

@ -25,7 +25,8 @@
<tr *ngFor="let bridge of configurations trackById"> <tr *ngFor="let bridge of configurations trackById">
<td> <td>
{{ bridge.upstreamId ? "matrix.org's bridge" : "Self-hosted bridge" }} {{ bridge.upstreamId ? "matrix.org's bridge" : "Self-hosted bridge" }}
<span class="text-muted" style="display: inline-block;" *ngIf="!bridge.upstreamId">({{ bridge.provisionUrl }})</span> <span class="text-muted" style="display: inline-block;"
*ngIf="!bridge.upstreamId">({{ bridge.provisionUrl }})</span>
</td> </td>
<td *ngIf="bridge.isOnline"> <td *ngIf="bridge.isOnline">
{{ getEnabledNetworksString(bridge) }} {{ getEnabledNetworksString(bridge) }}
@ -42,7 +43,8 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
<button type="button" class="btn btn-success btn-sm" (click)="addModularHostedBridge()" *ngIf="!hasModularBridge"> <button type="button" class="btn btn-success btn-sm" (click)="addModularHostedBridge()"
*ngIf="!hasModularBridge">
<i class="fa fa-plus"></i> Add matrix.org's bridge <i class="fa fa-plus"></i> Add matrix.org's bridge
</button> </button>
<button type="button" class="btn btn-success btn-sm" (click)="addSelfHostedBridge()"> <button type="button" class="btn btn-success btn-sm" (click)="addSelfHostedBridge()">

View File

@ -3,7 +3,10 @@
<h4>{{ isAdding ? "Add a new" : "Edit" }} self-hosted Slack bridge</h4> <h4>{{ isAdding ? "Add a new" : "Edit" }} self-hosted Slack bridge</h4>
</div> </div>
<div class="dialog-content"> <div class="dialog-content">
<p>Self-hosted Slack bridges already have provisioning enabled. Be careful not to expose the API to the public internet.</p> <p>
Self-hosted Slack bridges already have provisioning enabled. Be careful not to expose the API to the public
internet.
</p>
<label class="label-block"> <label class="label-block">
Provisioning URL Provisioning URL

View File

@ -5,9 +5,10 @@
<my-ibox boxTitle="Slack Bridge Configurations"> <my-ibox boxTitle="Slack Bridge Configurations">
<div class="my-ibox-content"> <div class="my-ibox-content">
<p> <p>
<a href="https://github.com/matrix-org/matrix-appservice-slack" target="_blank">matrix-appservice-slack</a> <a href="https://github.com/matrix-org/matrix-appservice-slack"
is a Slack bridge that supports bridging Slack channels to Matrix. Users authorize the bridge to access their target="_blank">matrix-appservice-slack</a>
Slack workspaces and from there they can pick the channels they'd like to bridge. is a Slack bridge that supports bridging Slack channels to Matrix. Users authorize the bridge to access
their Slack workspaces and from there they can pick the channels they'd like to bridge.
</p> </p>
<table class="table table-striped table-condensed table-bordered"> <table class="table table-striped table-condensed table-bordered">
@ -24,7 +25,8 @@
<tr *ngFor="let bridge of configurations trackById"> <tr *ngFor="let bridge of configurations trackById">
<td> <td>
{{ bridge.upstreamId ? "matrix.org's bridge" : "Self-hosted bridge" }} {{ bridge.upstreamId ? "matrix.org's bridge" : "Self-hosted bridge" }}
<span class="text-muted" style="display: inline-block;" *ngIf="!bridge.upstreamId">({{ bridge.provisionUrl }})</span> <span class="text-muted" style="display: inline-block;"
*ngIf="!bridge.upstreamId">({{ bridge.provisionUrl }})</span>
</td> </td>
<td class="text-center"> <td class="text-center">
<span class="editButton" (click)="editBridge(bridge)" *ngIf="!bridge.upstreamId"> <span class="editButton" (click)="editBridge(bridge)" *ngIf="!bridge.upstreamId">
@ -34,10 +36,12 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
<button type="button" class="btn btn-success btn-sm" (click)="addModularHostedBridge()" [disabled]="(configurations && configurations.length > 0) || isUpdating"> <button type="button" class="btn btn-success btn-sm" (click)="addModularHostedBridge()"
[disabled]="(configurations && configurations.length > 0) || isUpdating">
<i class="fa fa-plus"></i> Add matrix.org's bridge <i class="fa fa-plus"></i> Add matrix.org's bridge
</button> </button>
<button type="button" class="btn btn-success btn-sm" (click)="addSelfHostedBridge()" [disabled]="(configurations && configurations.length > 0) || isUpdating"> <button type="button" class="btn btn-success btn-sm" (click)="addSelfHostedBridge()"
[disabled]="(configurations && configurations.length > 0) || isUpdating">
<i class="fa fa-plus"></i> Add self-hosted bridge <i class="fa fa-plus"></i> Add self-hosted bridge
</button> </button>
</div> </div>

View File

@ -27,7 +27,8 @@
<tr *ngFor="let bridge of configurations trackById"> <tr *ngFor="let bridge of configurations trackById">
<td> <td>
{{ bridge.upstreamId ? "matrix.org's bridge" : "Self-hosted bridge" }} {{ bridge.upstreamId ? "matrix.org's bridge" : "Self-hosted bridge" }}
<span class="text-muted" style="display: inline-block;" *ngIf="!bridge.upstreamId">({{ bridge.provisionUrl }})</span> <span class="text-muted" style="display: inline-block;"
*ngIf="!bridge.upstreamId">({{ bridge.provisionUrl }})</span>
</td> </td>
<td> <td>
{{ getEnabledFeaturesString(bridge) }} {{ getEnabledFeaturesString(bridge) }}
@ -40,7 +41,8 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
<button type="button" class="btn btn-success btn-sm" (click)="addSelfHostedBridge()" [disabled]="configurations && configurations.length > 0"> <button type="button" class="btn btn-success btn-sm" (click)="addSelfHostedBridge()"
[disabled]="configurations && configurations.length > 0">
<i class="fa fa-plus"></i> Add self-hosted bridge <i class="fa fa-plus"></i> Add self-hosted bridge
</button> </button>
</div> </div>

View File

@ -23,7 +23,8 @@
<tr *ngFor="let bridge of configurations trackById"> <tr *ngFor="let bridge of configurations trackById">
<td> <td>
{{ bridge.upstreamId ? "matrix.org's bridge" : "Self-hosted bridge" }} {{ bridge.upstreamId ? "matrix.org's bridge" : "Self-hosted bridge" }}
<span class="text-muted" style="display: inline-block;" *ngIf="!bridge.upstreamId">({{ bridge.provisionUrl }})</span> <span class="text-muted" style="display: inline-block;"
*ngIf="!bridge.upstreamId">({{ bridge.provisionUrl }})</span>
</td> </td>
<td class="text-center"> <td class="text-center">
<span class="editButton" (click)="editBridge(bridge)"> <span class="editButton" (click)="editBridge(bridge)">
@ -33,7 +34,8 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
<button type="button" class="btn btn-success btn-sm" (click)="addSelfHostedBridge()" [disabled]="configurations && configurations.length > 0"> <button type="button" class="btn btn-success btn-sm" (click)="addSelfHostedBridge()"
[disabled]="configurations && configurations.length > 0">
<i class="fa fa-plus"></i> Add self-hosted bridge <i class="fa fa-plus"></i> Add self-hosted bridge
</button> </button>
</div> </div>

View File

@ -4,7 +4,10 @@
<div *ngIf="!isLoading"> <div *ngIf="!isLoading">
<my-ibox boxTitle="Configuration"> <my-ibox boxTitle="Configuration">
<div class="my-ibox-content"> <div class="my-ibox-content">
<p>Parts of your configuration are displayed below. To change these values, edit your configuration and restart Dimension.</p> <p>
Parts of your configuration are displayed below. To change these values, edit your configuration and
restart Dimension.
</p>
<div class="row"> <div class="row">
<div class="col-md-4"> <div class="col-md-4">
@ -20,19 +23,19 @@
</ul> </ul>
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<strong>Homeserver</strong><br /> <strong>Homeserver</strong><br/>
Name: {{ config.homeserver.name }}<br /> Name: {{ config.homeserver.name }}<br/>
Federation URL: {{ config.homeserver.federationUrl }}<br /> Federation URL: {{ config.homeserver.federationUrl }}<br/>
Federation Hostname: {{ config.homeserver.federationHostname }}<br /> Federation Hostname: {{ config.homeserver.federationHostname }}<br/>
Client/Server URL: {{ config.homeserver.clientServerUrl }}<br /> Client/Server URL: {{ config.homeserver.clientServerUrl }}<br/>
Utility User ID: {{ config.homeserver.userId }} Utility User ID: {{ config.homeserver.userId }}
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-md-4"> <div class="col-md-4">
<strong>Sessions</strong><br /> <strong>Sessions</strong><br/>
Tokens registered: {{ config.sessionInfo.numTokens }}<br /> Tokens registered: {{ config.sessionInfo.numTokens }}<br/>
<button class="btn btn-danger btn-sm" type="button" (click)="logoutAll()"> <button class="btn btn-danger btn-sm" type="button" (click)="logoutAll()">
Logout Everyone Logout Everyone
</button> </button>

View File

@ -5,8 +5,8 @@
<div class="dialog-content"> <div class="dialog-content">
<p> <p>
Logging everyone out will disable all known login tokens for Dimension and upstream integration managers. Logging everyone out will disable all known login tokens for Dimension and upstream integration managers.
Most clients will automatically re-register for a login token behind the scenes, similar to how a login token Most clients will automatically re-register for a login token behind the scenes, similar to how a login
was first acquired. token was first acquired.
</p> </p>
</div> </div>
<div class="dialog-footer"> <div class="dialog-footer">

View File

@ -11,5 +11,6 @@ export class LogoutConfirmationDialogContext extends BSModalContext {
}) })
export class AdminLogoutConfirmationDialogComponent implements ModalComponent<LogoutConfirmationDialogContext> { export class AdminLogoutConfirmationDialogComponent implements ModalComponent<LogoutConfirmationDialogContext> {
constructor(public dialog: DialogRef<LogoutConfirmationDialogContext>) {} constructor(public dialog: DialogRef<LogoutConfirmationDialogContext>) {
}
} }

View File

@ -1,6 +1,9 @@
<my-ibox boxTitle="New self-hosted go-neb"> <my-ibox boxTitle="New self-hosted go-neb">
<div class="my-ibox-content"> <div class="my-ibox-content">
<p>Self-hosted go-neb instances are powered by application services installed on your homeserver. The application service is responsible for creating the bots dynamically.</p> <p>
Self-hosted go-neb instances are powered by application services installed on your homeserver. The
application service is responsible for creating the bots dynamically.
</p>
<label class="label-block"> <label class="label-block">
User Prefix User Prefix

View File

@ -17,7 +17,7 @@
Image Size Image Size
<span class="text-muted ">GIFs can be large, and sometimes it is more desirable to have them downsized.</span> <span class="text-muted ">GIFs can be large, and sometimes it is more desirable to have them downsized.</span>
<label class="checkbox"> <label class="checkbox">
<input type="checkbox" [(ngModel)]="config.use_downsized" [disabled]="isUpdating" /> <input type="checkbox" [(ngModel)]="config.use_downsized" [disabled]="isUpdating"/>
Use downsized images Use downsized images
</label> </label>
</label> </label>

View File

@ -24,7 +24,8 @@
<tr *ngFor="let neb of configurations trackById"> <tr *ngFor="let neb of configurations trackById">
<td> <td>
{{ neb.upstreamId ? "matrix.org's go-neb" : "Self-hosted go-neb" }} {{ neb.upstreamId ? "matrix.org's go-neb" : "Self-hosted go-neb" }}
<span class="text-muted" style="display: inline-block;" *ngIf="!neb.upstreamId">({{ neb.adminUrl }})</span> <span class="text-muted" style="display: inline-block;"
*ngIf="!neb.upstreamId">({{ neb.adminUrl }})</span>
</td> </td>
<td> <td>
{{ getEnabledBotsString(neb) }} {{ getEnabledBotsString(neb) }}

View File

@ -11,8 +11,9 @@
</p> </p>
<div class="input-group input-group-sm telegram-import"> <div class="input-group input-group-sm telegram-import">
<input type="text" class="form-control" [(ngModel)]="tgUrl" placeholder="https://t.me/addstickers/YourPackID" <input type="text" class="form-control" [(ngModel)]="tgUrl"
[disabled]="isImporting" /> placeholder="https://t.me/addstickers/YourPackID"
[disabled]="isImporting"/>
<span class="input-group-btn"> <span class="input-group-btn">
<button class="btn btn-primary" (click)="startTelegramImport()" [disabled]="!tgUrl || isImporting"> <button class="btn btn-primary" (click)="startTelegramImport()" [disabled]="!tgUrl || isImporting">
<i class="fa fa-download"></i> <i class="fa fa-download"></i>

View File

@ -10,7 +10,8 @@
<label class="label-block"> <label class="label-block">
Name Name
<span class="text-muted ">The translated name of your policy</span> <span class="text-muted ">The translated name of your policy</span>
<input type="text" class="form-control" placeholder="My Policy" [(ngModel)]="languages[code].name" [disabled]="isUpdating"/> <input type="text" class="form-control" placeholder="My Policy" [(ngModel)]="languages[code].name"
[disabled]="isUpdating"/>
</label> </label>
<label class="label-block"> <label class="label-block">
Policy text Policy text
@ -19,16 +20,16 @@
<ckeditor [editor]="Editor" [(ngModel)]="languages[code].text" [disabled]="isUpdating"></ckeditor> <ckeditor [editor]="Editor" [(ngModel)]="languages[code].text" [disabled]="isUpdating"></ckeditor>
</div> </div>
</my-ibox> </my-ibox>
<!-- <my-ibox [hasTitle]="false">--> <!-- <my-ibox [hasTitle]="false">-->
<!-- <div class="my-ibox-content buttons">--> <!-- <div class="my-ibox-content buttons">-->
<!-- <select [(ngModel)]="chosenLanguage" [disabled]="isUpdating" class="form-control form-control-sm">--> <!-- <select [(ngModel)]="chosenLanguage" [disabled]="isUpdating" class="form-control form-control-sm">-->
<!-- <option *ngFor="let lang of availableLanguages" [ngValue]="lang.code">{{lang.name}}</option>--> <!-- <option *ngFor="let lang of availableLanguages" [ngValue]="lang.code">{{lang.name}}</option>-->
<!-- </select>--> <!-- </select>-->
<!-- <button type="button" (click)="addLanguage()" title="save" class="btn btn-outline-success btn-sm">--> <!-- <button type="button" (click)="addLanguage()" title="save" class="btn btn-outline-success btn-sm">-->
<!-- <i class="fa fa-plus"></i> Add language--> <!-- <i class="fa fa-plus"></i> Add language-->
<!-- </button>--> <!-- </button>-->
<!-- </div>--> <!-- </div>-->
<!-- </my-ibox>--> <!-- </my-ibox>-->
<my-ibox [hasTitle]="false"> <my-ibox [hasTitle]="false">
<div class="my-ibox-content buttons"> <div class="my-ibox-content buttons">
<button type="button" (click)="create()" title="save" class="btn btn-primary btn-sm" *ngIf="!isEditing"> <button type="button" (click)="create()" title="save" class="btn btn-primary btn-sm" *ngIf="!isEditing">

View File

@ -28,7 +28,8 @@
<td>{{ policy.version }}</td> <td>{{ policy.version }}</td>
<td class="text-center"> <td class="text-center">
<span class="editButton" [routerLink]="['edit', policy.shortcode]" title="edit draft" *ngIf="policy.version == 'draft'"> <span class="editButton" [routerLink]="['edit', policy.shortcode]" title="edit draft"
*ngIf="policy.version == 'draft'">
<i class="fa fa-pencil-alt"></i> <i class="fa fa-pencil-alt"></i>
</span> </span>
</td> </td>

View File

@ -20,7 +20,8 @@
<td>{{ widget.displayName }}</td> <td>{{ widget.displayName }}</td>
<td>{{ widget.description }}</td> <td>{{ widget.description }}</td>
<td class="text-right"> <td class="text-right">
<span class="editButton" (click)="editWidget(widget)" *ngIf="widget.isEnabled && hasConfiguration(widget)"> <span class="editButton" (click)="editWidget(widget)"
*ngIf="widget.isEnabled && hasConfiguration(widget)">
<i class="fa fa-pencil-alt"></i> <i class="fa fa-pencil-alt"></i>
</span> </span>
<ui-switch [checked]="widget.isEnabled" size="small" [disabled]="isUpdating" <ui-switch [checked]="widget.isEnabled" size="small" [disabled]="isUpdating"

View File

@ -15,7 +15,7 @@
<label class="label-block"> <label class="label-block">
Gitter Room Gitter Room
<input title="room name" type="text" class="form-control form-control-sm col-md-3" <input title="room name" type="text" class="form-control form-control-sm col-md-3"
[(ngModel)]="gitterRoomName" [disabled]="isBusy" placeholder="my-org/room" /> [(ngModel)]="gitterRoomName" [disabled]="isBusy" placeholder="my-org/room"/>
</label> </label>
<button type="button" class="btn btn-sm btn-primary" [disabled]="isBusy" (click)="bridgeRoom()"> <button type="button" class="btn btn-sm btn-primary" [disabled]="isBusy" (click)="bridgeRoom()">
Bridge Bridge

View File

@ -25,10 +25,12 @@
</label> </label>
<div class="input-group input-group-sm"> <div class="input-group input-group-sm">
<div class="input-group-addon">#</div> <div class="input-group-addon">#</div>
<input title="channel" type="text" class="form-control form-control-sm" [(ngModel)]="channel" [disabled]="loadingOps"> <input title="channel" type="text" class="form-control form-control-sm" [(ngModel)]="channel"
[disabled]="loadingOps">
</div> </div>
<div style="margin-top: 25px"> <div style="margin-top: 25px">
<button type="button" class="btn btn-sm btn-primary" [disabled]="loadingOps" (click)="loadOps()"> <button type="button" class="btn btn-sm btn-primary" [disabled]="loadingOps"
(click)="loadOps()">
Next Next
</button> </button>
</div> </div>
@ -43,7 +45,8 @@
</select> </select>
</label> </label>
<div style="margin-top: 25px"> <div style="margin-top: 25px">
<button type="button" class="btn btn-sm btn-primary" [disabled]="requestingBridge" (click)="requestBridge()"> <button type="button" class="btn btn-sm btn-primary" [disabled]="requestingBridge"
(click)="requestBridge()">
Request Bridge Request Bridge
</button> </button>
</div> </div>

View File

@ -11,7 +11,7 @@
<div *ngIf="isBridged && bridge.config.link.isWebhook"> <div *ngIf="isBridged && bridge.config.link.isWebhook">
This room is bridged to Slack using webhooks. Webhook bridging is legacy and doesn't support as This room is bridged to Slack using webhooks. Webhook bridging is legacy and doesn't support as
rich bridging as the new approach. It is recommended to re-create the bridge with the new process. rich bridging as the new approach. It is recommended to re-create the bridge with the new process.
<br /> <br/>
<button type="button" class="btn btn-sm btn-danger" [disabled]="isBusy" (click)="unbridgeRoom()"> <button type="button" class="btn btn-sm btn-danger" [disabled]="isBusy" (click)="unbridgeRoom()">
Unbridge Unbridge
</button> </button>
@ -28,7 +28,7 @@
and channels. Please click the button below to do so. and channels. Please click the button below to do so.
</p> </p>
<a [href]="authUrl" rel="noopener" target="_blank"> <a [href]="authUrl" rel="noopener" target="_blank">
<img src="/img/slack_auth_button.png" class="slack-auth-button" alt="sign in with slack" /> <img src="/img/slack_auth_button.png" class="slack-auth-button" alt="sign in with slack"/>
</a> </a>
</div> </div>
<div *ngIf="!isBridged && !needsAuth"> <div *ngIf="!isBridged && !needsAuth">

View File

@ -7,7 +7,8 @@
the other room and instead bridge it here? the other room and instead bridge it here?
</div> </div>
<div class="dialog-footer"> <div class="dialog-footer">
<button type="button" (click)="unbridgeAndContinue()" title="unbridge and continue" class="btn btn-danger btn-sm"> <button type="button" (click)="unbridgeAndContinue()" title="unbridge and continue"
class="btn btn-danger btn-sm">
Unbridge and continue Unbridge and continue
</button> </button>
<button type="button" (click)="cancel()" title="cancel" class="btn btn-primary btn-sm"> <button type="button" (click)="cancel()" title="cancel" class="btn btn-primary btn-sm">

View File

@ -8,7 +8,8 @@
<div *ngIf="isBridged"> <div *ngIf="isBridged">
This room is bridged to "{{ chatName }}" (<code>{{ chatId }}</code>) on Telegram. This room is bridged to "{{ chatName }}" (<code>{{ chatId }}</code>) on Telegram.
<div *ngIf="canUnbridge"> <div *ngIf="canUnbridge">
<button type="button" class="btn btn-sm btn-danger" [disabled]="isUpdating" (click)="unbridgeRoom()"> <button type="button" class="btn btn-sm btn-danger" [disabled]="isUpdating"
(click)="unbridgeRoom()">
Unbridge Unbridge
</button> </button>
</div> </div>
@ -20,7 +21,8 @@
<label class="label-block"> <label class="label-block">
Chat ID Chat ID
<span class="text-muted">After inviting <a href="https://t.me/{{ botUsername }}" target="_blank">@{{ botUsername }}</a> to your Telegram chat, run the command <code>/id</code> in the Telegram room to get the chat ID.</span> <span class="text-muted">After inviting <a href="https://t.me/{{ botUsername }}" target="_blank">@{{ botUsername }}</a> to your Telegram chat, run the command <code>/id</code> in the Telegram room to get the chat ID.</span>
<input title="chat ID" type="text" class="form-control form-control-sm col-md-3" [(ngModel)]="chatId" [disabled]="isUpdating" /> <input title="chat ID" type="text" class="form-control form-control-sm col-md-3"
[(ngModel)]="chatId" [disabled]="isUpdating"/>
</label> </label>
<button type="button" class="btn btn-sm btn-primary" [disabled]="isUpdating" (click)="bridgeRoom()"> <button type="button" class="btn btn-sm btn-primary" [disabled]="isUpdating" (click)="bridgeRoom()">
Bridge Bridge

View File

@ -7,7 +7,8 @@
<div class="my-ibox-content"> <div class="my-ibox-content">
<label class="label-block"> <label class="label-block">
Webhook Name Webhook Name
<input title="webhook name" type="text" class="form-control form-control-sm" [(ngModel)]="webhookName" [disabled]="isBusy"> <input title="webhook name" type="text" class="form-control form-control-sm"
[(ngModel)]="webhookName" [disabled]="isBusy">
</label> </label>
<div style="margin-top: 25px"> <div style="margin-top: 25px">
<button type="button" class="btn btn-sm btn-primary" [disabled]="isBusy" (click)="newHook()"> <button type="button" class="btn btn-sm btn-primary" [disabled]="isBusy" (click)="newHook()">

View File

@ -19,11 +19,11 @@
<td>{{ feed.url }}</td> <td>{{ feed.url }}</td>
<td>{{ feed.addedByUserId }}</td> <td>{{ feed.addedByUserId }}</td>
<td class="actions-col"> <td class="actions-col">
<button type="button" class="btn btn-sm btn-outline-danger" <button type="button" class="btn btn-sm btn-outline-danger"
[disabled]="isUpdating || !feed.isSelf" [disabled]="isUpdating || !feed.isSelf"
(click)="removeFeed(feed)"> (click)="removeFeed(feed)">
<i class="far fa-trash-alt"></i> Remove <i class="far fa-trash-alt"></i> Remove
</button> </button>
</td> </td>
</tr> </tr>
<tr> <tr>
@ -33,7 +33,7 @@
[(ngModel)]="newFeedUrl" [(ngModel)]="newFeedUrl"
placeholder="https://example.org/feed.atom" placeholder="https://example.org/feed.atom"
name="newFeedUrl" name="newFeedUrl"
title="New feed URL" /> title="New feed URL"/>
<span class="input-group-btn"> <span class="input-group-btn">
<button type="button" class="btn btn-outline-success" <button type="button" class="btn btn-outline-success"
[disabled]="isUpdating" [disabled]="isUpdating"

View File

@ -5,7 +5,9 @@
.travis.yml configuration and template information .travis.yml configuration and template information
</h5> </h5>
<div class="my-ibox-content"> <div class="my-ibox-content">
<p>The following section needs to be added to your <code>.travis.yml</code> file in your repositories:</p> <p>
The following section needs to be added to your <code>.travis.yml</code> file in your repositories:
</p>
<pre>{{ travisYaml }}</pre> <pre>{{ travisYaml }}</pre>
<p> <p>
@ -50,15 +52,17 @@
<tr *ngFor="let repo of getRepos()"> <tr *ngFor="let repo of getRepos()">
<td>{{ repo.repoKey }}</td> <td>{{ repo.repoKey }}</td>
<td> <td>
<textarea title="Repository Template" class="repo-template form-control" rows="3" (change)="repo.template = $event.target.value" [disabled]="isUpdating || !repo.isSelf">{{ repo.template }}</textarea> <textarea title="Repository Template" class="repo-template form-control" rows="3"
(change)="repo.template = $event.target.value"
[disabled]="isUpdating || !repo.isSelf">{{ repo.template }}</textarea>
</td> </td>
<td>{{ repo.addedByUserId }}</td> <td>{{ repo.addedByUserId }}</td>
<td class="actions-col"> <td class="actions-col">
<button type="button" class="btn btn-sm btn-outline-danger" <button type="button" class="btn btn-sm btn-outline-danger"
[disabled]="isUpdating || !repo.isSelf" [disabled]="isUpdating || !repo.isSelf"
(click)="removeRepo(repo)"> (click)="removeRepo(repo)">
<i class="far fa-trash-alt"></i> Remove <i class="far fa-trash-alt"></i> Remove
</button> </button>
</td> </td>
</tr> </tr>
<tr> <tr>
@ -68,7 +72,7 @@
[(ngModel)]="newRepoKey" [(ngModel)]="newRepoKey"
placeholder="matrix-org/synapse" placeholder="matrix-org/synapse"
name="newRepoKey" name="newRepoKey"
title="New repository name" /> title="New repository name"/>
<span class="input-group-btn"> <span class="input-group-btn">
<button type="button" class="btn btn-outline-success" <button type="button" class="btn btn-outline-success"
[disabled]="isUpdating" [disabled]="isUpdating"

View File

@ -57,9 +57,9 @@ export class TravisCiComplexBotConfigComponent extends ComplexBotComponent<Travi
this.newConfig.repos[this.newRepoKey] = { this.newConfig.repos[this.newRepoKey] = {
addedByUserId: SessionStorage.userId, addedByUserId: SessionStorage.userId,
template: "" + template: "" +
"%{repository_slug}#%{build_number} (%{branch} - %{commit} : %{author}): %{message}\n" + "%{repository_slug}#%{build_number} (%{branch} - %{commit} : %{author}): %{message}\n" +
" Change view : %{compare_url}\n" + " Change view : %{compare_url}\n" +
" Build details : %{build_url}\n" " Build details : %{build_url}\n"
}; };
this.newRepoKey = ""; this.newRepoKey = "";
} }

View File

@ -36,7 +36,8 @@
<span class="name">{{ pack.displayName }}</span> <span class="name">{{ pack.displayName }}</span>
<span class="description">{{ pack.description }}</span> <span class="description">{{ pack.description }}</span>
<span class="author" *ngIf="pack.author.type !== 'none'">Created by <a [href]="pack.author.reference">{{ pack.author.name }}</a> under </span> <span class="author" *ngIf="pack.author.type !== 'none'">Created by <a
[href]="pack.author.reference">{{ pack.author.name }}</a> under </span>
<span class="license"><a [href]="pack.license.urlPath">{{ pack.license.name }}</a></span> <span class="license"><a [href]="pack.license.urlPath">{{ pack.license.name }}</a></span>
</div> </div>
</div> </div>

View File

@ -8,7 +8,8 @@
</h5> </h5>
<div class="my-ibox-content"> <div class="my-ibox-content">
<form (submit)="widgetComponent.addWidget()" novalidate name="addForm"> <form (submit)="widgetComponent.addWidget()" novalidate name="addForm">
<ng-container *ngTemplateOutlet="widgetParamsTemplate;context:{widget:widgetComponent.newWidget}"></ng-container> <ng-container
*ngTemplateOutlet="widgetParamsTemplate;context:{widget:widgetComponent.newWidget}"></ng-container>
<div style="margin-top: 25px"> <div style="margin-top: 25px">
<button type="submit" class="btn btn-sm btn-success" [disabled]="widgetComponent.isUpdating"> <button type="submit" class="btn btn-sm btn-success" [disabled]="widgetComponent.isUpdating">
@ -19,7 +20,8 @@
</div> </div>
</my-ibox> </my-ibox>
<my-ibox *ngFor="let widget of widgetComponent.widgets trackById" [isCollapsible]="true" [defaultCollapsed]="widget.id !== widgetComponent.defaultExpandedWidgetId"> <my-ibox *ngFor="let widget of widgetComponent.widgets trackById" [isCollapsible]="true"
[defaultCollapsed]="widget.id !== widgetComponent.defaultExpandedWidgetId">
<h5 class="my-ibox-title"> <h5 class="my-ibox-title">
<i class="fa fa-pencil-alt"></i> {{ widget.name || widget.url || widgetComponent.defaultName }} <i class="fa fa-pencil-alt"></i> {{ widget.name || widget.url || widgetComponent.defaultName }}
<span *ngIf="widget.data.title">- {{ widget.data.title }}</span> <span *ngIf="widget.data.title">- {{ widget.data.title }}</span>
@ -32,7 +34,8 @@
<button type="submit" class="btn btn-sm btn-primary" [disabled]="widgetComponent.isUpdating"> <button type="submit" class="btn btn-sm btn-primary" [disabled]="widgetComponent.isUpdating">
<i class="far fa-save"></i> Save Widget <i class="far fa-save"></i> Save Widget
</button> </button>
<button type="button" class="btn btn-sm btn-outline-danger" [disabled]="widgetComponent.isUpdating" (click)="widgetComponent.removeWidget(widget)"> <button type="button" class="btn btn-sm btn-outline-danger" [disabled]="widgetComponent.isUpdating"
(click)="widgetComponent.removeWidget(widget)">
<i class="far fa-trash-alt"></i> Remove Widget <i class="far fa-trash-alt"></i> Remove Widget
</button> </button>
</div> </div>

View File

@ -11,7 +11,7 @@ export class GoogleCalendarWidgetConfigComponent extends WidgetComponent {
super(WIDGET_GOOGLE_CALENDAR, "Google Calendar", DISABLE_AUTOMATIC_WRAPPING, "googleCalendar"); super(WIDGET_GOOGLE_CALENDAR, "Google Calendar", DISABLE_AUTOMATIC_WRAPPING, "googleCalendar");
} }
protected OnNewWidgetPrepared(widget: EditableWidget) { protected OnNewWidgetPrepared(widget: EditableWidget) {
widget.dimension.newData.shareId = ""; widget.dimension.newData.shareId = "";
} }

View File

@ -2,7 +2,8 @@
<ng-template #widgetParamsTemplate let-widget="widget"> <ng-template #widgetParamsTemplate let-widget="widget">
<label class="label-block"> <label class="label-block">
Trading Pair Trading Pair
<select class="form-control form-control-sm" [(ngModel)]="widget.dimension.newData.pair" [disabled]="isUpdating" name="widget-pair-{{widget.id}}"> <select class="form-control form-control-sm" [(ngModel)]="widget.dimension.newData.pair"
[disabled]="isUpdating" name="widget-pair-{{widget.id}}">
<option *ngFor="let pair of pairs" [ngValue]="pair.value"> <option *ngFor="let pair of pairs" [ngValue]="pair.value">
{{ pair.label }} {{ pair.label }}
</option> </option>
@ -11,7 +12,8 @@
<label class="label-block"> <label class="label-block">
Interval Interval
<select class="form-control form-control-sm" [(ngModel)]="widget.dimension.newData.interval" [disabled]="isUpdating" name="widget-interval-{{widget.id}}"> <select class="form-control form-control-sm" [(ngModel)]="widget.dimension.newData.interval"
[disabled]="isUpdating" name="widget-interval-{{widget.id}}">
<option *ngFor="let interval of intervals" [ngValue]="interval.value"> <option *ngFor="let interval of intervals" [ngValue]="interval.value">
{{ interval.label }} {{ interval.label }}
</option> </option>

View File

@ -37,7 +37,8 @@
<div *ngFor="let category of getCategories()"> <div *ngFor="let category of getCategories()">
<my-ibox *ngIf="getIntegrationsIn(category).length > 0" boxTitle="{{category}}" [isCollapsible]="true"> <my-ibox *ngIf="getIntegrationsIn(category).length > 0" boxTitle="{{category}}" [isCollapsible]="true">
<div class="my-ibox-content"> <div class="my-ibox-content">
<my-integration-bag [integrations]="getIntegrationsIn(category)" (integrationClicked)="modifyIntegration($event)"></my-integration-bag> <my-integration-bag [integrations]="getIntegrationsIn(category)"
(integrationClicked)="modifyIntegration($event)"></my-integration-bag>
</div> </div>
</my-ibox> </my-ibox>
</div> </div>

View File

@ -5,7 +5,9 @@ import {
WIDGET_GOOGLE_CALENDAR, WIDGET_GOOGLE_CALENDAR,
WIDGET_GOOGLE_DOCS, WIDGET_GOOGLE_DOCS,
WIDGET_GRAFANA, WIDGET_GRAFANA,
WIDGET_JITSI, WIDGET_SPOTIFY, WIDGET_STICKER_PICKER, WIDGET_JITSI,
WIDGET_SPOTIFY,
WIDGET_STICKER_PICKER,
WIDGET_TRADINGVIEW, WIDGET_TRADINGVIEW,
WIDGET_TWITCH, WIDGET_TWITCH,
WIDGET_YOUTUBE WIDGET_YOUTUBE

View File

@ -5,7 +5,8 @@ import {
JoinRuleStateResponse, JoinRuleStateResponse,
MembershipStateResponse, MembershipStateResponse,
RoomEncryptionStatusResponse, RoomEncryptionStatusResponse,
ScalarSuccessResponse, ScalarWidget, ScalarSuccessResponse,
ScalarWidget,
SetPowerLevelResponse, SetPowerLevelResponse,
WidgetsResponse WidgetsResponse
} from "../../models/server-client-responses"; } from "../../models/server-client-responses";
@ -73,7 +74,7 @@ export class ScalarClientApiService {
}); });
} }
public deleteWidget(roomId: string, widget: EditableWidget|ScalarWidget): Promise<ScalarSuccessResponse> { public deleteWidget(roomId: string, widget: EditableWidget | ScalarWidget): Promise<ScalarSuccessResponse> {
const anyWidget: any = widget; const anyWidget: any = widget;
return this.callAction("set_widget", { return this.callAction("set_widget", {
room_id: roomId, room_id: roomId,
@ -83,7 +84,7 @@ export class ScalarClientApiService {
}); });
} }
public deleteUserWidget(widget: EditableWidget|ScalarWidget): Promise<ScalarSuccessResponse> { public deleteUserWidget(widget: EditableWidget | ScalarWidget): Promise<ScalarSuccessResponse> {
const anyWidget: any = widget; const anyWidget: any = widget;
return this.callAction("set_widget", { return this.callAction("set_widget", {
userWidget: true, userWidget: true,

View File

@ -9,7 +9,7 @@
</div> </div>
</div> </div>
<div class="no-stickers" *ngIf="!isLoading && !authError && (!packs || packs.length === 0)"> <div class="no-stickers" *ngIf="!isLoading && !authError && (!packs || packs.length === 0)">
<img src="/img/no_stickers.png" /> <img src="/img/no_stickers.png"/>
<span class="message">You have no sticker packs.</span> <span class="message">You have no sticker packs.</span>
<button class="btn btn-link btn-sm" (click)="openIntegrationManager()">Add some stickers</button> <button class="btn btn-link btn-sm" (click)="openIntegrationManager()">Add some stickers</button>
</div> </div>
@ -17,16 +17,18 @@
<div class="sticker-pack" *ngFor="let pack of packs trackById"> <div class="sticker-pack" *ngFor="let pack of packs trackById">
<div class="header"> <div class="header">
<span class="title">{{ pack.displayName }}</span> <span class="title">{{ pack.displayName }}</span>
<span class="license"><a [href]="pack.license.urlPath" target="_blank">{{ pack.license.name }}</a></span> <span class="license"><a [href]="pack.license.urlPath"
target="_blank">{{ pack.license.name }}</a></span>
<span class="author" *ngIf="pack.author.type !== 'none'"> <span class="author" *ngIf="pack.author.type !== 'none'">
<a [href]="pack.author.reference" target="_blank">{{ pack.author.name }}</a> <a [href]="pack.author.reference" target="_blank">{{ pack.author.name }}</a>
</span> </span>
</div> </div>
<div class="stickers"> <div class="stickers">
<div class="sticker" *ngFor="let sticker of pack.stickers trackById" (click)="sendSticker(sticker, pack)"> <div class="sticker" *ngFor="let sticker of pack.stickers trackById"
(click)="sendSticker(sticker, pack)">
<img [src]="getThumbnailUrl(sticker.thumbnail.mxc, 48, 48)" width="48" height="48" class="image" <img [src]="getThumbnailUrl(sticker.thumbnail.mxc, 48, 48)" width="48" height="48" class="image"
[alt]="sticker.name" [ngbTooltip]="sticker.name" placement="bottom" /> [alt]="sticker.name" [ngbTooltip]="sticker.name" placement="bottom"/>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,5 +1,6 @@
import "reflect-metadata"; import "reflect-metadata";
import "ts-helpers"; import "ts-helpers";
require("zone.js/dist/zone"); require("zone.js/dist/zone");
//noinspection TypeScriptUnresolvedVariable //noinspection TypeScriptUnresolvedVariable

View File

@ -1,15 +1,15 @@
<?xml version="1.0" standalone="no"?> <?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" <svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="513.000000pt" height="513.000000pt" viewBox="0 0 513.000000 513.000000" width="513.000000pt" height="513.000000pt" viewBox="0 0 513.000000 513.000000"
preserveAspectRatio="xMidYMid meet"> preserveAspectRatio="xMidYMid meet">
<metadata> <metadata>
Created by potrace 1.11, written by Peter Selinger 2001-2013 Created by potrace 1.11, written by Peter Selinger 2001-2013
</metadata> </metadata>
<g transform="translate(0.000000,513.000000) scale(0.100000,-0.100000)" <g transform="translate(0.000000,513.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none"> fill="#000000" stroke="none">
<path d="M0 2565 l0 -2565 2565 0 2565 0 0 2565 0 2565 -2565 0 -2565 0 0 <path d="M0 2565 l0 -2565 2565 0 2565 0 0 2565 0 2565 -2565 0 -2565 0 0
-2565z"/> -2565z"/>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 603 B

After

Width:  |  Height:  |  Size: 657 B

View File

@ -1,7 +1,6 @@
// The CSS for the Riot breadcrumb is specified here to ensure that it's style can be overridden. // The CSS for the Riot breadcrumb is specified here to ensure that it's style can be overridden.
// In it's current position (as a component), the component-level stylesheet cannot access the // In it's current position (as a component), the component-level stylesheet cannot access the
// elements, so we specify it in a more generic location. // elements, so we specify it in a more generic location.
@import "themes/themes"; @import "themes/themes";
.main-app { .main-app {

View File

@ -14,7 +14,7 @@ body {
font-family: 'Roboto', 'Open Sans', Arial, sans-serif; font-family: 'Roboto', 'Open Sans', Arial, sans-serif;
} }
@include themifyRoot(){ @include themifyRoot() {
color: themed(defaultFgColor); color: themed(defaultFgColor);
// HACK: We specify the spinner color here because we can't use the mixin // HACK: We specify the spinner color here because we can't use the mixin

View File

@ -64,7 +64,7 @@ $theme_dark: (
integrationDescriptionColor: #bcc0c1, integrationDescriptionColor: #bcc0c1,
promoSpacerColor: rgba(206, 222, 235, 0.85), promoSpacerColor: rgba(206, 222, 235, 0.85),
promoShadowColor: rgba(206, 222, 235, 0.34), promoShadowColor: rgba(206, 222, 235, 0.34),
promoInfoBgColor: #fff, promoInfoBgColor: #fff,
promoInfoBorderColor: rgba(143, 45, 86, 0.2), promoInfoBorderColor: rgba(143, 45, 86, 0.2),
promoPreBorderColor: rgba(143, 45, 86, 0.7), promoPreBorderColor: rgba(143, 45, 86, 0.7),

View File

@ -64,7 +64,7 @@ $theme_light: (
integrationDescriptionColor: #999, integrationDescriptionColor: #999,
promoSpacerColor: rgba(206, 222, 235, 0.85), promoSpacerColor: rgba(206, 222, 235, 0.85),
promoShadowColor: rgba(206, 222, 235, 0.34), promoShadowColor: rgba(206, 222, 235, 0.34),
promoInfoBgColor: #fff, promoInfoBgColor: #fff,
promoInfoBorderColor: rgba(143, 45, 86, 0.2), promoInfoBorderColor: rgba(143, 45, 86, 0.2),
promoPreBorderColor: rgba(143, 45, 86, 0.7), promoPreBorderColor: rgba(143, 45, 86, 0.7),