From 15361db7bc087bd2d3202889ec07fc9f74bddff9 Mon Sep 17 00:00:00 2001 From: Jonathan Pirnay Date: Sat, 29 Jun 2013 22:07:19 +0200 Subject: [PATCH] portfolio detail enhanced --- app/app/main.coffee | 4 ++ app/app/main.js | 4 ++ app/app/modules/Portfolio.coffee | 30 ++++++++--- app/app/modules/Portfolio.js | 25 +++++++-- app/app/templates/portfolio-detail.html | 52 ++++++++++++------- nm/code/dataobjects/CalendarEntry.php | 3 +- nm/code/dataobjects/DocImage.php | 9 ++-- .../Markdown/ResponsiveImageFormatter.php | 2 +- 8 files changed, 93 insertions(+), 36 deletions(-) diff --git a/app/app/main.coffee b/app/app/main.coffee index 059c9dac..39203124 100644 --- a/app/app/main.coffee +++ b/app/app/main.coffee @@ -340,6 +340,10 @@ require [ else return block.inverse @ + Handlebars.registerHelper 'console', (what) -> + console.log what + 'logging...' + # ! KICK OFF diff --git a/app/app/main.js b/app/app/main.js index af426be2..62a9fbed 100644 --- a/app/app/main.js +++ b/app/app/main.js @@ -429,6 +429,10 @@ require(['app', 'router', 'modules/Auth', 'modules/Project', 'modules/Person', ' return block.inverse(this); } }); + Handlebars.registerHelper('console', function(what) { + console.log(what); + return 'logging...'; + }); $(function() { jQuery.event.props.push('dataTransfer'); $(document).on('dragenter dragover dragleave drop', function(e) { diff --git a/app/app/modules/Portfolio.coffee b/app/app/modules/Portfolio.coffee index 8aa7846c..942299e3 100644 --- a/app/app/modules/Portfolio.coffee +++ b/app/app/modules/Portfolio.coffee @@ -26,6 +26,9 @@ define [ template: 'packery-list-item' serialize: () -> data = if @.model then @.model.toJSON() else {} + data.Persons = _.sortBy json.Persons, (person) -> + return person.Surname + data.LinkTo = @.options.linkTo data @@ -42,13 +45,19 @@ define [ $doc.trigger(@._codeEv) $doc.trigger(@._afterRenderEv) serialize: -> + json = if @.model then @.model.toJSON() else {} types = ['Projects', 'ChildProjects', 'ParentProjects'] - # check for person group length - if json.Persons.length > Portfolio.Config.person_group_length + # sort persons + json.Persons = _.sortBy json.Persons, (person) -> + return person.Surname + + if parseInt(json.Persons.length) > parseInt(Portfolio.Config.person_group_length) + #json.IsGroupProjectTop = true json.IsGroup = true + console.log json # set up combined projects json.combinedProjects = [] _.each types, (type) => @@ -61,16 +70,15 @@ define [ Handlebars.registerHelper 'nameSummary', (persons) -> conf = Portfolio.Config - return conf.group_project_title unless persons.length < conf.person_group_length + return conf.group_project_title unless persons.length <= conf.person_group_length out = '' length = persons.length _.each persons, (person, i) -> - out += '' + person.FirstName + ' ' + person.Surname + '' + out += '' + person.FirstName + ' ' + (if person.Surname then person.Surname else '') + '' if i < (length - 2) out += ', ' else if i < (length - 1) out += ' & ' - out Handlebars.registerHelper 'niceDate', (model) -> @@ -100,7 +108,8 @@ define [ # build list _.each items, (item) -> - if item.IsPortfolio and item.IsPublished + + if item.IsPublished out += '
  • ' + item.Title + '
  • ' length++ out += '' @@ -109,6 +118,15 @@ define [ title += if length > 1 then 's' else '' return if length then "

    #{title}

    " + out else '' + + Handlebars.registerHelper 'personlist', (persons) -> + out = '' + + return "

    Contributors

    " + out Handlebars.registerHelper 'commaSeparatedWebsites', (websites) -> a = [] diff --git a/app/app/modules/Portfolio.js b/app/app/modules/Portfolio.js index 81cc868c..60f4921b 100644 --- a/app/app/modules/Portfolio.js +++ b/app/app/modules/Portfolio.js @@ -34,6 +34,9 @@ define(['app', 'modules/JJPackery'], function(app, JJPackery) { var data; data = this.model ? this.model.toJSON() : {}; + data.Persons = _.sortBy(json.Persons, function(person) { + return person.Surname; + }); data.LinkTo = this.options.linkTo; return data; } @@ -62,9 +65,13 @@ define(['app', 'modules/JJPackery'], function(app, JJPackery) { json = this.model ? this.model.toJSON() : {}; types = ['Projects', 'ChildProjects', 'ParentProjects']; - if (json.Persons.length > Portfolio.Config.person_group_length) { + json.Persons = _.sortBy(json.Persons, function(person) { + return person.Surname; + }); + if (parseInt(json.Persons.length) > parseInt(Portfolio.Config.person_group_length)) { json.IsGroup = true; } + console.log(json); json.combinedProjects = []; _.each(types, function(type) { if (_.isArray(json[type])) { @@ -78,13 +85,13 @@ define(['app', 'modules/JJPackery'], function(app, JJPackery) { var conf, length, out; conf = Portfolio.Config; - if (!(persons.length < conf.person_group_length)) { + if (!(persons.length <= conf.person_group_length)) { return conf.group_project_title; } out = ''; length = persons.length; _.each(persons, function(person, i) { - out += '' + person.FirstName + ' ' + person.Surname + ''; + out += '' + person.FirstName + ' ' + (person.Surname ? person.Surname : '') + ''; if (i < (length - 2)) { return out += ', '; } else if (i < (length - 1)) { @@ -128,7 +135,7 @@ define(['app', 'modules/JJPackery'], function(app, JJPackery) { length = 0; out = '