When installing is successful, redirect the user to that Rocketlet's settings page so they can enable it

pull/9666/head
Bradley Hilton 9 years ago
parent 90bf21f273
commit f4482f0dd6
No known key found for this signature in database
GPG Key ID: 0666B2C24C43C358
  1. 32
      packages/rocketchat-rocketlets/client/admin/rocketletInstall.html
  2. 11
      packages/rocketchat-rocketlets/client/admin/rocketletInstall.js
  3. 2
      packages/rocketchat-rocketlets/server/communication/rest.js

@ -9,23 +9,27 @@
<h2>{{_ "Rocketlet_Installation"}}</h2>
</header>
<div class="preferences-page__content">
<div class="rc-form-group rc-grid">
<div class="rc-input rc-w50 padded">
<div class="rc-select-avatar__list-item rc-tooltip js-select-rocketlet-upload" aria-label="{{_ "Upload_file" }}">
<label class="rc-select-avatar__upload-label rocketlet" for="upload-rocketlet">
{{> icon block="rc-select-avatar__upload-icon" icon="upload"}}
{{#if isInstalling}}
{{> loading}}
{{else}}
<div class="rc-form-group rc-grid">
<div class="rc-input rc-w50 padded">
<div class="rc-select-avatar__list-item rc-tooltip js-select-rocketlet-upload" aria-label="{{_ "Upload_file" }}">
<label class="rc-select-avatar__upload-label rocketlet" for="upload-rocketlet">
{{> icon block="rc-select-avatar__upload-icon" icon="upload"}}
</label>
<input type="file" name="" value="" id="upload-rocketlet" style="display:none;">
</div>
<label class="rc-input__label">
<div class="rc-input__title">{{_ "Rocketlet_Url_to_Install_From"}}</div>
<div class="rc-input__wrapper">
<input type="text" class="rc-input__element" name="rocketletPackageUrl" id="rocketletPackage" placeholder="https://rocket.chat/rocketlets/package.zip" value="{{rocketletUrl}}" >
</div>
</label>
<input type="file" name="" value="" id="upload-rocketlet" style="display:none;">
<button class="rc-button install">{{ _ "Install" }}</button>
</div>
<label class="rc-input__label">
<div class="rc-input__title">{{_ "Rocketlet_Url_to_Install_From"}}</div>
<div class="rc-input__wrapper">
<input type="text" class="rc-input__element" name="rocketletPackageUrl" id="rocketletPackage" placeholder="https://rocket.chat/rocketlets/package.zip" value="{{rocketletUrl}}" >
</div>
</label>
<button class="rc-button install">{{ _ "Install" }}</button>
</div>
</div>
{{/if}}
</div>
</section>
</template>

@ -9,6 +9,9 @@
// over the passed in body, so if both are found it will only use the url.
Template.rocketletInstall.helpers({
isInstalling() {
return Template.instance().isInstalling.get();
},
rocketletUrl() {
return Template.instance().rocketletUrl.get();
}
@ -16,7 +19,7 @@ Template.rocketletInstall.helpers({
Template.rocketletInstall.onCreated(function() {
const instance = this;
instance.status = new ReactiveVar(false);
instance.isInstalling = new ReactiveVar(false);
instance.rocketletUrl = new ReactiveVar('');
// Allow passing in a url as a query param to show installation of
@ -28,16 +31,20 @@ Template.rocketletInstall.onCreated(function() {
});
Template.rocketletInstall.events({
'click .install'() {
'click .install'(e, t) {
const url = $('#rocketletPackage').val().trim();
// Handle url installations
if (url) {
console.log('Installing via url.');
t.isInstalling.set(true);
RocketChat.API.post('rocketlets', { url }).then((result) => {
console.log('result', result);
FlowRouter.go(`/admin/rocketlets/${ result.rocketlet.id }`);
}).catch((err) => {
console.warn('err', err);
t.isInstalling.set(false);
});
return;

@ -4,7 +4,7 @@ export class RocketletsRestApi {
this.api = new RocketChat.API.ApiClass({
version: 'rocketlets',
useDefaultAuth: true,
prettyJson: true,
prettyJson: false,
enableCors: false,
auth: RocketChat.API.getUserAuth()
});

Loading…
Cancel
Save