diff options
author | Maxime Quandalle <maxime@quandalle.com> | 2015-05-12 19:20:58 +0200 |
---|---|---|
committer | Maxime Quandalle <maxime@quandalle.com> | 2015-05-12 19:33:50 +0200 |
commit | 2dbea30842ec63a68055245fe26633bb7913daf3 (patch) | |
tree | e9143893a3d3bf4ad34dd3a97d6f3466561c8756 /client/components/activities | |
download | wekan-2dbea30842ec63a68055245fe26633bb7913daf3.tar.gz wekan-2dbea30842ec63a68055245fe26633bb7913daf3.tar.bz2 wekan-2dbea30842ec63a68055245fe26633bb7913daf3.zip |
Renaissance
_,,ad8888888888bba,_
,ad88888I888888888888888ba,
,88888888I88888888888888888888a,
,d888888888I8888888888888888888888b,
d88888PP"""" ""YY88888888888888888888b,
,d88"'__,,--------,,,,.;ZZZY8888888888888,
,8IIl'" ;;l"ZZZIII8888888888,
,I88l;' ;lZZZZZ888III8888888,
,II88Zl;. ;llZZZZZ888888I888888,
,II888Zl;. .;;;;;lllZZZ888888I8888b
,II8888Z;; `;;;;;''llZZ8888888I8888,
II88888Z;' .;lZZZ8888888I888b
II88888Z; _,aaa, .,aaaaa,__.l;llZZZ88888888I888
II88888IZZZZZZZZZ, .ZZZZZZZZZZZZZZ;llZZ88888888I888,
II88888IZZ<'(@@>Z| |ZZZ<'(@@>ZZZZ;;llZZ888888888I88I
,II88888; `""" ;| |ZZ; `""" ;;llZ8888888888I888
II888888l `;; .;llZZ8888888888I888,
,II888888Z; ;;; .;;llZZZ8888888888I888I
III888888Zl; .., `;; ,;;lllZZZ88888888888I888
II88888888Z;;...;(_ _) ,;;;llZZZZ88888888888I888,
II88888888Zl;;;;;' `--'Z;. .,;;;;llZZZZ88888888888I888b
]I888888888Z;;;;' ";llllll;..;;;lllZZZZ88888888888I8888,
II888888888Zl.;;"Y88bd888P";;,..;lllZZZZZ88888888888I8888I
II8888888888Zl;.; `"PPP";;;,..;lllZZZZZZZ88888888888I88888
II888888888888Zl;;. `;;;l;;;;lllZZZZZZZZW88888888888I88888
`II8888888888888Zl;. ,;;lllZZZZZZZZWMZ88888888888I88888
II8888888888888888ZbaalllZZZZZZZZZWWMZZZ8888888888I888888,
`II88888888888888888b"WWZZZZZWWWMMZZZZZZI888888888I888888b
`II88888888888888888;ZZMMMMMMZZZZZZZZllI888888888I8888888
`II8888888888888888 `;lZZZZZZZZZZZlllll888888888I8888888,
II8888888888888888, `;lllZZZZllllll;;.Y88888888I8888888b,
,II8888888888888888b .;;lllllll;;;.;..88888888I88888888b,
II888888888888888PZI;. .`;;;.;;;..; ...88888888I8888888888,
II888888888888PZ;;';;. ;. .;. .;. .. Y8888888I88888888888b,
,II888888888PZ;;' `8888888I8888888888888b,
II888888888' 888888I8888888888888888
,II888888888 ,888888I8888888888888888
,d88888888888 d888888I8888888888ZZZZZZ
,ad888888888888I 8888888I8888ZZZZZZZZZZZZ
888888888888888' 888888IZZZZZZZZZZZZZZZZZ
8888888888P'8P' Y888ZZZZZZZZZZZZZZZZZZZZ
888888888, " ,ZZZZZZZZZZZZZZZZZZZZZZZ
8888888888, ,ZZZZZZZZZZZZZZZZZZZZZZZZZZ
888888888888a, _ ,ZZZZZZZZZZZZZZZZZZZZ88888888
888888888888888ba,_d' ,ZZZZZZZZZZZZZZZZZ8888888888888
8888888888888888888888bbbaaa,,,______,ZZZZZZZZZZZZZZZ88888888888888888
88888888888888888888888888888888888ZZZZZZZZZZZZZZZ88888888888888888888
8888888888888888888888888888888888ZZZZZZZZZZZZZZ8888888888888888888888
888888888888888888888888888888888ZZZZZZZZZZZZZZ88888888888888888888888
8888888888888888888888888888888ZZZZZZZZZZZZZZ8888888888888888888888888
88888888888888888888888888888ZZZZZZZZZZZZZZ888888888888888888888888888
8888888888888888888888888888ZZZZZZZZZZZZZZ88888888888888888 Normand 8
88888888888888888888888888ZZZZZZZZZZZZZZ8888888888888888888 Veilleux 8
8888888888888888888888888ZZZZZZZZZZZZZZ8888888888888888888888888888888
Diffstat (limited to 'client/components/activities')
-rw-r--r-- | client/components/activities/activities.jade | 8 | ||||
-rw-r--r-- | client/components/activities/activities.js | 77 | ||||
-rw-r--r-- | client/components/activities/comments.jade | 0 | ||||
-rw-r--r-- | client/components/activities/comments.js | 0 | ||||
-rw-r--r-- | client/components/activities/events.js | 30 | ||||
-rw-r--r-- | client/components/activities/templates.html | 154 |
6 files changed, 269 insertions, 0 deletions
diff --git a/client/components/activities/activities.jade b/client/components/activities/activities.jade new file mode 100644 index 00000000..1c6b9faf --- /dev/null +++ b/client/components/activities/activities.jade @@ -0,0 +1,8 @@ +template(name="activities") + .js-sidebar-activities + //- We should use Template.dynamic here but there is a bug with + //- blaze-components: https://github.com/peerlibrary/meteor-blaze-components/issues/30 + if $eq mode "board" + +boardActivities + else + +cardActivities diff --git a/client/components/activities/activities.js b/client/components/activities/activities.js new file mode 100644 index 00000000..c806e87b --- /dev/null +++ b/client/components/activities/activities.js @@ -0,0 +1,77 @@ +var activitiesPerPage = 20; + +BlazeComponent.extendComponent({ + template: function() { + return 'activities'; + }, + + onCreated: function() { + var self = this; + // XXX Should we use ReactiveNumber? + self.page = new ReactiveVar(1); + self.loadNextPageLocked = false; + var sidebar = self.componentParent(); // XXX for some reason not working + sidebar.callFirstWith(null, 'resetNextPeak'); + self.autorun(function() { + var mode = self.data().mode; + var capitalizedMode = Utils.capitalize(mode); + var id = Session.get('current' + capitalizedMode); + var limit = self.page.get() * activitiesPerPage; + if (id === null) + return; + + self.subscribe('activities', mode, id, limit, function() { + self.loadNextPageLocked = false; + + // If the sibear peak hasn't increased, that mean that there are no more + // activities, and we can stop calling new subscriptions. + // XXX This is hacky! We need to know excatly and reactively how many + // activities there are, we probably want to denormalize this number + // dirrectly into card and board documents. + var a = sidebar.callFirstWith(null, 'getNextPeak'); + sidebar.calculateNextPeak(); + var b = sidebar.callFirstWith(null, 'getNextPeak'); + if (a === b) { + sidebar.callFirstWith(null, 'resetNextPeak'); + } + }); + }); + }, + + loadNextPage: function() { + if (this.loadNextPageLocked === false) { + this.page.set(this.page.get() + 1); + this.loadNextPageLocked = true; + } + }, + + boardLabel: function() { + return TAPi18n.__('this-board'); + }, + + cardLabel: function() { + return TAPi18n.__('this-card'); + }, + + cardLink: function() { + var card = this.currentData().card(); + return Blaze.toHTML(HTML.A({ + href: card.absoluteUrl(), + 'class': 'action-card' + }, card.title)); + }, + + memberLink: function() { + return Blaze.toHTMLWithData(Template.memberName, { + user: this.currentData().member() + }); + }, + + attachmentLink: function() { + var attachment = this.currentData().attachment(); + return Blaze.toHTML(HTML.A({ + href: attachment.url(), + 'class': 'js-open-attachment-viewer' + }, attachment.name())); + } +}).register('activities'); diff --git a/client/components/activities/comments.jade b/client/components/activities/comments.jade new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/client/components/activities/comments.jade diff --git a/client/components/activities/comments.js b/client/components/activities/comments.js new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/client/components/activities/comments.js diff --git a/client/components/activities/events.js b/client/components/activities/events.js new file mode 100644 index 00000000..ea98e65f --- /dev/null +++ b/client/components/activities/events.js @@ -0,0 +1,30 @@ +Template.cardActivities.events({ + 'click .js-edit-action': function(evt) { + var $this = $(evt.currentTarget); + var container = $this.parents('.phenom-comment'); + + // open and focus + container.addClass('editing'); + container.find('textarea').focus(); + }, + 'click .js-confirm-delete-action': function() { + CardComments.remove(this._id); + }, + 'submit form': function(evt) { + var $this = $(evt.currentTarget); + var container = $this.parents('.phenom-comment'); + var text = container.find('textarea'); + + if ($.trim(text.val())) { + CardComments.update(this._id, { + $set: { + text: text.val() + } + }); + + // reset editing class + $('.editing').removeClass('editing'); + } + evt.preventDefault(); + } +}); diff --git a/client/components/activities/templates.html b/client/components/activities/templates.html new file mode 100644 index 00000000..8d3ff763 --- /dev/null +++ b/client/components/activities/templates.html @@ -0,0 +1,154 @@ +<template name="boardActivities"> + {{# each currentBoard.activities }} + <div class="phenom phenom-action clearfix phenom-other"> + {{> userAvatar user=user size="extra-small" class="creator js-show-mem-menu" }} + <div class="phenom-desc"> + {{ > memberName user=user }} + + {{# if $eq activityType 'createBoard' }} + {{_ 'activity-created' boardLabel}}. + {{ /if }} + + {{# if $eq activityType 'createList' }} + {{_ 'activity-added' list.title boardLabel}}. + {{ /if }} + + {{# if $eq activityType 'archivedList' }} + {{_ 'activity-archived' list.title}}. + {{ /if }} + + {{# if $eq activityType 'createCard' }} + {{{_ 'activity-added' cardLink boardLabel}}}. + {{ /if }} + + {{# if $eq activityType 'archivedCard' }} + {{{_ 'activity-archived' cardLink}}}. + {{ /if }} + + {{# if $eq activityType 'restoredCard' }} + {{{_ 'activity-sent' cardLink boardLabel}}}. + {{ /if }} + + {{# if $eq activityType 'moveCard' }} + {{{_ 'activity-moved' cardLink oldList.title list.title}}}. + {{ /if }} + + {{# if $eq activityType 'addBoardMember' }} + {{{_ 'activity-added' memberLink boardLabel}}}. + {{ /if }} + + {{# if $eq activityType 'removeBoardMember' }} + {{{_ 'activity-excluded' memberLink boardLabel}}}. + {{ /if }} + + {{# if $eq activityType 'joinMember' }} + {{# if $eq currentUser._id member._id }} + {{{_ 'activity-joined' cardLink}}}. + {{ else }} + {{{_ 'activity-added' memberLink cardLink}}}. + {{/if}} + {{ /if }} + + {{# if $eq activityType 'unjoinMember' }} + {{# if $eq currentUser._id member._id }} + {{{_ 'activity-unjoined' cardLink}}}. + {{ else }} + {{{_ 'activity-removed' memberLink cardLink}}}. + {{/if}} + {{ /if }} + + {{# if $eq activityType 'addComment' }} + <div class="phenom-desc"> + {{{_ 'activity-on' cardLink}}} + <div class="action-comment markeddown"> + <a href="{{ card.absoluteUrl }}" class="current-comment show tdn"> + <p>{{#viewer}}{{ comment.text }}{{/viewer}}</p> + </a> + </div> + </div> + {{ /if }} + + {{# if $eq activityType 'addAttachment' }} + <div class="phenom-desc"> + {{{_ 'activity-attached' attachmentLink cardLink}}}. + </div> + {{ /if }} + </div> + <p class="phenom-meta quiet"> + <span class="date js-hide-on-sending"> + {{ moment createdAt }} + </span> + </p> + </div> + {{ /each }} +</template> + +<template name="cardActivities"> + {{# each currentCard.comments }} + <div class="phenom phenom-action clearfix phenom-comment"> + {{> userAvatar user=user size="small" class="creator js-show-mem-menu" }} + <form> + <div class="phenom-desc"> + {{ > memberName user=user }} + <div class="action-comment markeddown"> + <div class="current-comment"> + {{#viewer}}{{ text }}{{/viewer}} + </div> + <textarea class="js-text" tabindex="1">{{ text }}</textarea> + </div> + </div> + <div class="edit-controls clearfix"> + <input type="submit" class="primary confirm js-save-edit" value="{{_ 'save'}}" tabindex="2"> + </div> + </form> + <p class="phenom-meta quiet"> + <span class="date js-hide-on-sending">{{ moment createdAt }}</span> + {{# if currentUser }} + <span class="js-hide-on-sending"> + - <a href="#" class="js-edit-action">{{_ "edit"}}</a> + - <a href="#" class="js-confirm-delete-action">{{_ "delete"}}</a> + </span> + {{/ if }} + </p> + </div> + {{/each}} + + {{# each currentCard.activities }} + <div class="phenom phenom-action clearfix phenom-other"> + {{> userAvatar user=user size="extra-small" class="creator js-show-mem-menu" }} + {{ > memberName user=user }} + {{# if $eq activityType 'createCard' }} + {{_ 'activity-added' cardLabel list.title}}. + {{ /if }} + {{# if $eq activityType 'joinMember' }} + {{# if $eq currentUser._id member._id }} + {{_ 'activity-joined' cardLabel}}. + {{ else }} + {{{_ 'activity-added' cardLabel memberLink}}}. + {{/if}} + {{/if}} + {{# if $eq activityType 'unjoinMember' }} + {{# if $eq currentUser._id member._id }} + {{_ 'activity-unjoined' cardLabel}}. + {{ else }} + {{{_ 'activity-removed' cardLabel memberLink}}}. + {{/if}} + {{ /if }} + {{# if $eq activityType 'archivedCard' }} + {{_ 'activity-archived' cardLabel}}. + {{ /if }} + {{# if $eq activityType 'restoredCard' }} + {{_ 'activity-sent' cardLabel boardLabel}}. + {{/ if }} + {{# if $eq activityType 'moveCard' }} + {{_ 'activity-moved' cardLabel oldList.title list.title}}. + {{/ if }} + {{# if $eq activityType 'addAttachment' }} + {{{_ 'activity-attached' attachmentLink cardLabel}}}. + {{# if attachment.isImage }} + <img src="{{ attachment.url }}" class="attachment-image-preview"> + {{/if}} + {{/ if}} + </div> + {{/each}} +</template> |