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
This commit is contained in:
Maxime Quandalle 2015-05-12 19:20:58 +02:00
commit 2dbea30842
128 changed files with 10521 additions and 0 deletions

View file

@ -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

View file

@ -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');

View file

View file

@ -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();
}
});

View file

@ -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>