summaryrefslogtreecommitdiffstats
path: root/client/components/sidebar
diff options
context:
space:
mode:
author蔡仲明 (Romulus Urakagi Tsai) <urakagi@gmail.com>2019-11-21 11:25:56 +0800
committerGitHub <noreply@github.com>2019-11-21 11:25:56 +0800
commit3e0bedd8c7a6dec97352212adb1cbde1ade44190 (patch)
tree651ff30d25ddb0416444370368d699e597c142d7 /client/components/sidebar
parent9bbeb73db1cd0ce1caaaca8dfb14ea92131bbf9d (diff)
parent4f5de87cc4c2281bd576548693de7c94e6a988c6 (diff)
downloadwekan-3e0bedd8c7a6dec97352212adb1cbde1ade44190.tar.gz
wekan-3e0bedd8c7a6dec97352212adb1cbde1ade44190.tar.bz2
wekan-3e0bedd8c7a6dec97352212adb1cbde1ade44190.zip
Merge pull request #1 from wekan/master
Update master
Diffstat (limited to 'client/components/sidebar')
-rw-r--r--client/components/sidebar/sidebar.jade36
-rw-r--r--client/components/sidebar/sidebar.js112
-rw-r--r--client/components/sidebar/sidebarFilters.jade4
-rw-r--r--client/components/sidebar/sidebarFilters.js4
-rw-r--r--client/components/sidebar/sidebarSearches.jade4
-rw-r--r--client/components/sidebar/sidebarSearches.js5
6 files changed, 119 insertions, 46 deletions
diff --git a/client/components/sidebar/sidebar.jade b/client/components/sidebar/sidebar.jade
index 2dfe41b3..ccfadc0c 100644
--- a/client/components/sidebar/sidebar.jade
+++ b/client/components/sidebar/sidebar.jade
@@ -135,22 +135,30 @@ template(name="archiveBoardPopup")
template(name="outgoingWebhooksPopup")
each integrations
form.integration-form
- if title
- h4 {{title}}
- else
- h4 {{_ 'no-name'}}
- label
- | URL
- input.js-outgoing-webhooks-url(type="text" name="url" value=url)
- input(type="hidden" value=_id name="id")
+ a.flex
+ span {{_ 'disable-webhook'}}
+ b &nbsp;
+ .materialCheckBox(class="{{#unless enabled}}is-checked{{/unless}}")
+ input.js-outgoing-webhooks-title(placeholder="{{_ 'webhook-title'}}" type="text" name="title" value=title)
+ input.js-outgoing-webhooks-url(type="text" name="url" value=url autofocus)
+ input.js-outgoing-webhooks-token(placeholder="{{_ 'webhook-token' }}" type="text" value=token name="token")
+ select.js-outgoing-webhooks-type(name="type")
+ each _type in types
+ if($eq _type this.type)
+ option(value=_type selected="selected") {{_ _type}}
+ else
+ option(value=_type) {{_ _type}}
+ input(type="hidden" value=this.type name="_type")
+ input(type="hidden" value=_id name="id")
input.primary.wide(type="submit" value="{{_ 'save'}}")
form.integration-form
- h4
- | {{_ 'new-outgoing-webhook'}}
- label
- | URL
- input.js-outgoing-webhooks-url(type="text" name="url" autofocus)
- input.primary.wide(type="submit" value="{{_ 'save'}}")
+ input.js-outgoing-webhooks-title(placeholder="{{_ 'webhook-title'}}" type="text" name="title" autofocus)
+ input.js-outgoing-webhooks-url(placeholder="{{_ 'URL' }}" type="text" name="url")
+ input.js-outgoing-webhooks-token(placeholder="{{_ 'webhook-token' }}" type="text" name="token")
+ select.js-outgoing-webhooks-type(name="type")
+ each _type in types
+ option(value=_type) {{_ _type}}
+ input.primary.wide(type="submit" value="{{_ 'create'}}")
template(name="boardMenuPopup")
ul.pop-over-list
diff --git a/client/components/sidebar/sidebar.js b/client/components/sidebar/sidebar.js
index f7efb1e8..6bb22f39 100644
--- a/client/components/sidebar/sidebar.js
+++ b/client/components/sidebar/sidebar.js
@@ -1,6 +1,8 @@
Sidebar = null;
const defaultView = 'home';
+const MCB = '.materialCheckBox';
+const CKCLS = 'is-checked';
const viewTitles = {
filter: 'filter-cards',
@@ -105,7 +107,18 @@ BlazeComponent.extendComponent({
'click .js-toggle-sidebar': this.toggle,
'click .js-back-home': this.setView,
'click .js-toggle-minicard-label-text'() {
- Meteor.call('toggleMinicardLabelText');
+ currentUser = Meteor.user();
+ if (currentUser) {
+ Meteor.call('toggleMinicardLabelText');
+ } else {
+ import { Cookies } from 'meteor/ostrio:cookies';
+ const cookies = new Cookies();
+ if (cookies.has('hiddenMinicardLabelText')) {
+ cookies.remove('hiddenMinicardLabelText');
+ } else {
+ cookies.set('hiddenMinicardLabelText', 'true');
+ }
+ }
},
'click .js-shortcuts'() {
FlowRouter.go('shortcuts');
@@ -119,7 +132,18 @@ Blaze.registerHelper('Sidebar', () => Sidebar);
Template.homeSidebar.helpers({
hiddenMinicardLabelText() {
- return Meteor.user().hasHiddenMinicardLabelText();
+ currentUser = Meteor.user();
+ if (currentUser) {
+ return (currentUser.profile || {}).hiddenMinicardLabelText;
+ } else {
+ import { Cookies } from 'meteor/ostrio:cookies';
+ const cookies = new Cookies();
+ if (cookies.has('hiddenMinicardLabelText')) {
+ return true;
+ } else {
+ return false;
+ }
+ }
},
});
@@ -280,44 +304,71 @@ Template.membersWidget.events({
});
BlazeComponent.extendComponent({
+ boardId() {
+ return Session.get('currentBoard') || Integrations.Const.GLOBAL_WEBHOOK_ID;
+ },
integrations() {
- const boardId = Session.get('currentBoard');
+ const boardId = this.boardId();
return Integrations.find({ boardId: `${boardId}` }).fetch();
},
-
- integration(id) {
- const boardId = Session.get('currentBoard');
- return Integrations.findOne({ _id: id, boardId: `${boardId}` });
+ types() {
+ return Integrations.Const.WEBHOOK_TYPES;
+ },
+ integration(cond) {
+ const boardId = this.boardId();
+ const condition = { boardId, ...cond };
+ for (const k in condition) {
+ if (!condition[k]) delete condition[k];
+ }
+ return Integrations.findOne(condition);
+ },
+ onCreated() {
+ this.disabled = new ReactiveVar(false);
},
-
events() {
return [
{
+ 'click a.flex'(evt) {
+ this.disabled.set(!this.disabled.get());
+ $(evt.target).toggleClass(CKCLS, this.disabled.get());
+ },
submit(evt) {
evt.preventDefault();
const url = evt.target.url.value;
- const boardId = Session.get('currentBoard');
+ const boardId = this.boardId();
let id = null;
let integration = null;
+ const title = evt.target.title.value;
+ const token = evt.target.token.value;
+ const type = evt.target.type.value;
+ const enabled = !this.disabled.get();
+ let remove = false;
+ const values = {
+ url,
+ type,
+ token,
+ title,
+ enabled,
+ };
if (evt.target.id) {
id = evt.target.id.value;
- integration = this.integration(id);
- if (url) {
- Integrations.update(integration._id, {
- $set: {
- url: `${url}`,
- },
- });
- } else {
- Integrations.remove(integration._id);
- }
+ integration = this.integration({ _id: id });
+ remove = !url;
+ } else if (url) {
+ integration = this.integration({ url, token });
+ }
+ if (remove) {
+ Integrations.remove(integration._id);
+ } else if (integration && integration._id) {
+ Integrations.update(integration._id, {
+ $set: values,
+ });
} else if (url) {
Integrations.insert({
+ ...values,
userId: Meteor.userId(),
enabled: true,
- type: 'outgoing-webhooks',
- url: `${url}`,
- boardId: `${boardId}`,
+ boardId,
activities: ['all'],
});
}
@@ -474,12 +525,12 @@ BlazeComponent.extendComponent({
evt.preventDefault();
this.currentBoard.allowsSubtasks = !this.currentBoard.allowsSubtasks;
this.currentBoard.setAllowsSubtasks(this.currentBoard.allowsSubtasks);
- $('.js-field-has-subtasks .materialCheckBox').toggleClass(
- 'is-checked',
+ $(`.js-field-has-subtasks ${MCB}`).toggleClass(
+ CKCLS,
this.currentBoard.allowsSubtasks,
);
$('.js-field-has-subtasks').toggleClass(
- 'is-checked',
+ CKCLS,
this.currentBoard.allowsSubtasks,
);
$('.js-field-deposit-board').prop(
@@ -515,15 +566,12 @@ BlazeComponent.extendComponent({
];
options.forEach(function(element) {
if (element !== value) {
- $(`#${element} .materialCheckBox`).toggleClass(
- 'is-checked',
- false,
- );
- $(`#${element}`).toggleClass('is-checked', false);
+ $(`#${element} ${MCB}`).toggleClass(CKCLS, false);
+ $(`#${element}`).toggleClass(CKCLS, false);
}
});
- $(`#${value} .materialCheckBox`).toggleClass('is-checked', true);
- $(`#${value}`).toggleClass('is-checked', true);
+ $(`#${value} ${MCB}`).toggleClass(CKCLS, true);
+ $(`#${value}`).toggleClass(CKCLS, true);
this.currentBoard.setPresentParentTask(value);
evt.preventDefault();
},
diff --git a/client/components/sidebar/sidebarFilters.jade b/client/components/sidebar/sidebarFilters.jade
index 55ab213a..5f929cb9 100644
--- a/client/components/sidebar/sidebarFilters.jade
+++ b/client/components/sidebar/sidebarFilters.jade
@@ -5,6 +5,10 @@
template(name="filterSidebar")
ul.sidebar-list
+ span {{_ 'list-filter-label'}}
+ form.js-list-filter
+ input(type="text")
+ ul.sidebar-list
li(class="{{#if Filter.labelIds.isSelected undefined}}active{{/if}}")
a.name.js-toggle-label-filter
span.sidebar-list-item-description
diff --git a/client/components/sidebar/sidebarFilters.js b/client/components/sidebar/sidebarFilters.js
index 3483d00c..ee0176b9 100644
--- a/client/components/sidebar/sidebarFilters.js
+++ b/client/components/sidebar/sidebarFilters.js
@@ -4,6 +4,10 @@ BlazeComponent.extendComponent({
events() {
return [
{
+ 'submit .js-list-filter'(evt) {
+ evt.preventDefault();
+ Filter.lists.set(this.find('.js-list-filter input').value.trim());
+ },
'click .js-toggle-label-filter'(evt) {
evt.preventDefault();
Filter.labelIds.toggle(this.currentData()._id);
diff --git a/client/components/sidebar/sidebarSearches.jade b/client/components/sidebar/sidebarSearches.jade
index 96877c50..4ee7fc9c 100644
--- a/client/components/sidebar/sidebarSearches.jade
+++ b/client/components/sidebar/sidebarSearches.jade
@@ -2,6 +2,10 @@ template(name="searchSidebar")
form.js-search-term-form
input(type="text" name="searchTerm" placeholder="{{_ 'search-example'}}" autofocus dir="auto")
.list-body.js-perfect-scrollbar
+ .minilists.clearfix.js-minilists
+ each (lists)
+ a.minilist-wrapper.js-minilist(href=absoluteUrl)
+ +minilist(this)
.minicards.clearfix.js-minicards
each (results)
a.minicard-wrapper.js-minicard(href=absoluteUrl)
diff --git a/client/components/sidebar/sidebarSearches.js b/client/components/sidebar/sidebarSearches.js
index 8944c04e..02677260 100644
--- a/client/components/sidebar/sidebarSearches.js
+++ b/client/components/sidebar/sidebarSearches.js
@@ -8,6 +8,11 @@ BlazeComponent.extendComponent({
return currentBoard.searchCards(this.term.get());
},
+ lists() {
+ const currentBoard = Boards.findOne(Session.get('currentBoard'));
+ return currentBoard.searchLists(this.term.get());
+ },
+
events() {
return [
{