diff --git a/app/core/Router.coffee b/app/core/Router.coffee index 5dee4e159..21a002e79 100644 --- a/app/core/Router.coffee +++ b/app/core/Router.coffee @@ -44,6 +44,10 @@ module.exports = class CocoRouter extends Backbone.Router 'beta': go('HomeView') 'cla': go('CLAView') + + 'clans': go('clans/ClansView') + 'clans/:clanID': go('clans/ClanDetailsView') + 'community': go('CommunityView') 'contribute': go('contribute/MainContributeView') diff --git a/app/styles/clans/clan-details.sass b/app/styles/clans/clan-details.sass new file mode 100644 index 000000000..175754b11 --- /dev/null +++ b/app/styles/clans/clan-details.sass @@ -0,0 +1 @@ +// #clan-details-view diff --git a/app/styles/clans/clans.sass b/app/styles/clans/clans.sass new file mode 100644 index 000000000..83e2cf2fb --- /dev/null +++ b/app/styles/clans/clans.sass @@ -0,0 +1,5 @@ +#clans-view + color: black + + .clan-title + cursor: pointer diff --git a/app/templates/clans/clan-details.jade b/app/templates/clans/clan-details.jade new file mode 100644 index 000000000..2ab26af33 --- /dev/null +++ b/app/templates/clans/clan-details.jade @@ -0,0 +1,42 @@ +extends /templates/base + +block content + + ol.breadcrumb + li + a(href="/") + span.glyphicon.glyphicon-home + li + a(href="/clans") Clans + + li.active= clan.title + + h1= clan.title + div + span Owner: + a(href="/user/#{clan.ownerID}")= clan.owner + div Members: #{clan.memberCount} + if clan.owner === 'mrsmith' + div + button.btn.btn-sm.btn-warning Delete Clan + + h3 Clan Members + table.table.table-striped.table-condensed + thead + tr + th Name + th Level + th + tbody + each member in members + tr + td + a(href="/user/#{member.id}")= member.name + td= member.level + if member.name !== clan.owner && clan.owner === 'mrsmith' + td + button.btn.btn-sm.btn-warning Remove Member + else + td + + button.btn.btn-sm Load More diff --git a/app/templates/clans/clans.jade b/app/templates/clans/clans.jade new file mode 100644 index 000000000..1f73d23df --- /dev/null +++ b/app/templates/clans/clans.jade @@ -0,0 +1,74 @@ +extends /templates/base + +block content + + ol.breadcrumb + li + a(href="/") + span.glyphicon.glyphicon-home + li.active Clans + + div + button.btn.btn-sm.btn-success Create New Clan + span.spr.spl + input(type='text' placeholder='New clan name') + br + + div(role='tabpanel') + ul.nav.nav-tabs(role='tablist') + li.active(role='presentation') + a(href='#public-clans' aria-controls='public-clans', role='tab', data-toggle='tab') Public Clans + li(role='presentation') + a(href='#my-clans' aria-controls='my-clans', role='tab', data-toggle='tab') My Clans + + .tab-content + .tab-pane.active#public-clans(role='tabpanel') + table.table.table-striped.table-condensed + thead + tr + th Clan Name + th Members + th Owner + th + tbody + each clan in publicClans + tr + td + if clan.owner === 'mrsmith' + a(href="/clans/#{clan.id}", style='font-weight:bold')= clan.title + else + a(href="/clans/#{clan.id}")= clan.title + td= clan.memberCount + td + a(href="/user/#{clan.ownerID}")= clan.owner + td + if !clan.member + button.btn.btn-sm.btn-success Join Clan + else if clan.owner !== 'mrsmith' + button.btn.btn-sm.btn-warning Leave Clan + button.btn.btn-sm Load More + + .tab-pane#my-clans(role='tabpanel') + table.table.table-striped.table-condensed + thead + tr + th Clan Name + th Members + th Owner + th + tbody + each clan in myClans + tr + td + if clan.owner === 'mrsmith' + a(href="/clans/#{clan.id}", style='font-weight:bold')= clan.title + else + a(href="/clans/#{clan.id}")= clan.title + td= clan.memberCount + td + a(href="/user/#{clan.ownerID}")= clan.owner + td + if clan.owner !== 'mrsmith' + button.btn.btn-sm.btn-warning Leave Clan + + button.btn.btn-sm Load More diff --git a/app/views/clans/ClanDetailsView.coffee b/app/views/clans/ClanDetailsView.coffee new file mode 100644 index 000000000..65337c341 --- /dev/null +++ b/app/views/clans/ClanDetailsView.coffee @@ -0,0 +1,30 @@ +RootView = require 'views/core/RootView' +template = require 'templates/clans/clan-details' + +module.exports = class ClanDetailsView extends RootView + id: 'clan-details-view' + template: template + + constructor: (options, @clanID) -> + super options + @initMockData() + + getRenderData: => + context = super() + context.clan = @clan + context.members = @members + context + + initMockData: -> + @clan = + title: 'Slay more munchkins' + owner: 'mrsmith' + memberCount: 8 + ownerID: me.get('_id') + + @members = [ + {id: me.get('_id'), name: 'mrsmith', level: 24} + {id: me.get('_id'), name: 'Superman', level: 2} + {id: me.get('_id'), name: 'batman', level: 1} + {id: me.get('_id'), name: 'Bruce', level: 4} + ] diff --git a/app/views/clans/ClansView.coffee b/app/views/clans/ClansView.coffee new file mode 100644 index 000000000..d587a370d --- /dev/null +++ b/app/views/clans/ClansView.coffee @@ -0,0 +1,41 @@ +app = require 'core/application' +RootView = require 'views/core/RootView' +template = require 'templates/clans/clans' + +module.exports = class MainAdminView extends RootView + id: 'clans-view' + template: template + + events: + 'click .clan-title': 'onClickClanTitle' + + constructor: (options) -> + super options + @initMockData() + + getRenderData: -> + context = super() + context.myClans = @myClans + context.publicClans = @publicClans + context + + onClickClanTitle: (e) -> + if clanID = $(e.target).data('id') + app.router.navigate "/clans/#{clanID}" + else + console.error "No clan ID found for public clan row." + + initMockData: -> + @myClans = [ + {id: 1, title: 'FC Dallas', owner: 'soccerfan', memberCount: 4, member: true, ownerID: me.get('_id')} + {id: 2, title: 'Mr. Smith 4th period', owner: 'mrsmith', memberCount: 23, member: true, ownerID: me.get('_id')} + {id: 3, title: 'Test Title 21', owner: 'matt', memberCount: 12, member: true, ownerID: me.get('_id')} + {id: 4, title: 'Slay more munchkins', owner: 'mrsmith', memberCount: 8, member: true, ownerID: me.get('_id')} + ] + + @publicClans = [ + {id: 1, title: 'FC Dallas', owner: 'soccerfan', memberCount: 4, member: true, ownerID: me.get('_id')} + {id: 2, title: 'Mr. Smith 4th period', owner: 'mrsmith', memberCount: 23, member: true, ownerID: me.get('_id')} + {id: 5, title: 'tourney tanks', owner: 'jkl324', memberCount: 7, member: false, ownerID: me.get('_id')} + {id: 6, title: 'Pythonistas', owner: 'bob219', memberCount: 50, member: false, ownerID: me.get('_id')} + ]