From 5d4d82ad51ab1d416fe78cf60e83b48c27e22e71 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Wed, 5 Feb 2014 19:05:42 +0100 Subject: [PATCH] refactor(bs3): port options (profile, inventory, social (groups and hall)) and misc --- public/css/game-pane.styl | 15 +- public/css/index.styl | 16 +- public/css/tasks.styl | 6 - public/js/services/notificationServices.js | 4 +- views/options/index.jade | 57 ++-- views/options/inventory/inventory.jade | 264 ++++++++--------- views/options/inventory/stable.jade | 158 +++++----- views/options/profile.jade | 206 ++++++------- views/options/social/chat-box.jade | 28 +- views/options/social/chat-message.jade | 6 +- views/options/social/create-group.jade | 48 ++-- views/options/social/group.jade | 317 +++++++++++---------- views/options/social/hall.jade | 116 ++++---- views/options/social/index.jade | 5 +- views/options/social/tavern.jade | 244 ++++++++-------- views/shared/profiles/achievements.jade | 245 ++++++++-------- views/shared/tasks/task.jade | 4 +- 17 files changed, 865 insertions(+), 874 deletions(-) diff --git a/public/css/game-pane.styl b/public/css/game-pane.styl index 346e86f44c..b345f20a99 100644 --- a/public/css/game-pane.styl +++ b/public/css/game-pane.styl @@ -8,21 +8,22 @@ color #fff background-color #51a351 -.tavern-pane - position relative - height 250px - .chat-form - position: relative - z-index: 10 + margin-bottom: 10px + + textarea + margin-bottom: 5px .chat-message .chat-plus-one opacity: 0 + background-color: #eee + padding: 3px 3px 0px 3px .chat-message:hover .chat-plus-one opacity: 1 + color: #999 .tavern-chat, .party-chat - + li padding-top:15px padding-bottom:15px diff --git a/public/css/index.styl b/public/css/index.styl index 4cc2e94b8d..f0ae049a29 100644 --- a/public/css/index.styl +++ b/public/css/index.styl @@ -67,10 +67,6 @@ hr display: inline margin-right: 10px -/* Bootstrap overrides */ -div.tooltip-inner - max-width: 300px - /* Customizations to make footer sticky */ /*html, body {height: 100%;}*/ #wrap @@ -151,6 +147,9 @@ a a span.glyphicon color: #333 // Takes base color from bootstrap +a.label + color: #fff + .muted color: #999 @@ -165,15 +164,6 @@ a span.glyphicon margin-left: 10px; padding-left: 10px; -.inline-modal - position: relative - top: auto; - left: auto - right: auto - margin: 0 auto 20px - z-index: 1 - max-width: 100% - .buy-gems .nav-tabs margin-top: 0.5em diff --git a/public/css/tasks.styl b/public/css/tasks.styl index 35daa3e10a..5175732a56 100644 --- a/public/css/tasks.styl +++ b/public/css/tasks.styl @@ -33,8 +33,6 @@ for $stage in $stages .reward background-color: white - - // 2. Columns & Tasks // =================== @@ -145,10 +143,6 @@ for $stage in $stages height:1.5em background-size:1.5em -// task due date (for to-dos) -.task-date - font-size: 70% - .habit-wide .task-text padding-left: 7em diff --git a/public/js/services/notificationServices.js b/public/js/services/notificationServices.js index 991145f971..3b6cb82284 100644 --- a/public/js/services/notificationServices.js +++ b/public/js/services/notificationServices.js @@ -6,7 +6,7 @@ angular.module("notificationServices", []) function growl(html, type) { $.bootstrapGrowl(html, { ele: '#notification-area', - type: type || 'warning', //('info', 'text', 'error', 'success', 'gp', 'xp', 'hp', 'lvl', 'death', 'mp', 'crit') + type: type || 'warning', //('info', 'text', 'warning', 'success', 'gp', 'xp', 'hp', 'lvl', 'death', 'mp', 'crit') top_offset: 20, align: 'right', //('left', 'right', or 'center') width: 250, //(integer, or 'auto') @@ -64,7 +64,7 @@ angular.module("notificationServices", []) growl("  Respawn!", "death"); }, error: function(error){ - growl("  " + error, "error"); + growl("  " + error, "danger"); }, mp: function(val) { growl("  " + sign(val) + " " + round(val) + " MP", 'mp'); diff --git a/views/options/index.jade b/views/options/index.jade index 9ea9ad4fe2..421f0adfe9 100644 --- a/views/options/index.jade +++ b/views/options/index.jade @@ -4,33 +4,34 @@ include ./inventory/index include ./settings script(id='partials/options.html', type="text/ng-template") - .grid - .module.full-width - span.option-box.pull-right.wallet - include ../shared/gems + .container-fluid + .row + .col-md-12 + span.option-box.pull-right.wallet + include ../shared/gems - ul.nav.nav-tabs - li(ng-class="{ active: $state.includes('options.profile') }") - a(ui-sref='options.profile') - span.glyphicon.glyphicon-user - |   - =env.t('profile') - li(ng-class="{ active: $state.includes('options.social') }") - a(ui-sref='options.social') - span.glyphicon.glyphicon-heart - |   - =env.t('social') - li(ng-class="{ active: $state.includes('options.inventory') }", ng-if='user.flags.dropsEnabled') - a(ui-sref='options.inventory') - span.glyphicon.glyphicon-gift - |   - =env.t('inventory') - li(ng-class="{ active: $state.includes('options.settings') }") - a(ui-sref='options.settings') - span.glyphicon.glyphicon-wrench - |   - =env.t('settings') + ul.nav.nav-tabs + li(ng-class="{ active: $state.includes('options.profile') }") + a(ui-sref='options.profile') + span.glyphicon.glyphicon-user + |   + =env.t('profile') + li(ng-class="{ active: $state.includes('options.social') }") + a(ui-sref='options.social') + span.glyphicon.glyphicon-heart + |   + =env.t('social') + li(ng-class="{ active: $state.includes('options.inventory') }", ng-if='user.flags.dropsEnabled') + a(ui-sref='options.inventory') + span.glyphicon.glyphicon-gift + |   + =env.t('inventory') + li(ng-class="{ active: $state.includes('options.settings') }") + a(ui-sref='options.settings') + span.glyphicon.glyphicon-wrench + |   + =env.t('settings') - .tab-content - .tab-pane.active - div(ui-view) + .tab-content + .tab-pane.active + div(ui-view) diff --git a/views/options/inventory/inventory.jade b/views/options/inventory/inventory.jade index 3c22068dc2..8e2237857f 100644 --- a/views/options/inventory/inventory.jade +++ b/views/options/inventory/inventory.jade @@ -1,146 +1,148 @@ script(type='text/ng-template', id='partials/options.inventory.equipment.html') - .row-fluid - .span6.border-right - h3.equipment-title=env.t('battleGear') -   - .glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('battleGearText')) - li.customize-menu.inventory-gear - menu.pets-menu(label='{{label}}', ng-repeat='(klass,label) in {base:"Base", warrior:"Warrior", wizard:"Mage", rogue:"Rogue", healer:"Healer", special:"Special"}', ng-show='gear[klass]') - div(ng-repeat='item in gear[klass]') - button.customize-option(popover='{{item.notes}}', popover-title='{{item.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='user.ops.equip({params:{key:item.key}})', class='shop_{{item.key}}', ng-class='{selectableInventory: user.items.gear.equipped[item.type] == item.key}') - .span6 - h3.equipment-title=env.t('costume') -   - i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('costumeText')) - label.checkbox.inline(style="margin-left: 20px;") - input(type="checkbox", ng-model="user.preferences.costume", ng-click='set({"preferences.costume":!user.preferences.costume})') - =env.t('useCostume') - li.customize-menu(ng-if='user.preferences.costume') - menu.pets-menu(label='{{label}}', ng-repeat='(klass,label) in {base:"Base", warrior:"Warrior", wizard:"Mage", rogue:"Rogue", healer:"Healer", special:"Special"}', ng-show='gear[klass]') - div(ng-repeat='item in gear[klass]') - button.customize-option(popover='{{item.notes}}', popover-title='{{item.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='user.ops.equip({params:{type:"costume", key:item.key}})', class='shop_{{item.key}}', ng-class='{selectableInventory: user.items.gear.costume[item.type] == item.key}') + .container-fluid + .row + .col-md-6.border-right + h3.equipment-title=env.t('battleGear') +   + .glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('battleGearText')) + li.customize-menu.inventory-gear + menu.pets-menu(label='{{label}}', ng-repeat='(klass,label) in {base:"Base", warrior:"Warrior", wizard:"Mage", rogue:"Rogue", healer:"Healer", special:"Special"}', ng-show='gear[klass]') + div(ng-repeat='item in gear[klass]') + button.customize-option(popover='{{item.notes}}', popover-title='{{item.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='user.ops.equip({params:{key:item.key}})', class='shop_{{item.key}}', ng-class='{selectableInventory: user.items.gear.equipped[item.type] == item.key}') + .col-md-6 + h3.equipment-title=env.t('costume') +   + i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('costumeText')) + label.checkbox.inline(style="margin-left: 20px;") + input(type="checkbox", ng-model="user.preferences.costume", ng-click='set({"preferences.costume":!user.preferences.costume})') + =env.t('useCostume') + li.customize-menu(ng-if='user.preferences.costume') + menu.pets-menu(label='{{label}}', ng-repeat='(klass,label) in {base:"Base", warrior:"Warrior", wizard:"Mage", rogue:"Rogue", healer:"Healer", special:"Special"}', ng-show='gear[klass]') + div(ng-repeat='item in gear[klass]') + button.customize-option(popover='{{item.notes}}', popover-title='{{item.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='user.ops.equip({params:{type:"costume", key:item.key}})', class='shop_{{item.key}}', ng-class='{selectableInventory: user.items.gear.costume[item.type] == item.key}') script(type='text/ng-template', id='partials/options.inventory.drops.html') - .row-fluid - .span6.border-right - h2=env.t('inventory') - p.well=env.t('inventoryText') - menu.inventory-list(type='list') - - li.customize-menu - menu.pets-menu(label=(env.t('eggs') + ' ({{eggCount}})')) - p.muted(ng-show='eggCount < 1')=env.t('noEggs') - div(ng-repeat='(egg,points) in ownedItems(user.items.eggs)') - //TODO move positioning this styling to css - button.customize-option(popover='{{Content.eggs[egg].notes}}', popover-title='{{Content.eggs[egg].text}} Egg', popover-trigger='mouseenter', popover-placement='right', ng-click='chooseEgg(egg)', class='Pet_Egg_{{egg}}', ng-class='{selectableInventory: selectedPotion && !(user.items.pets[egg+"-"+selectedPotion.key]>0)}') - .badge.badge-info.stack-count {{points}} - //-p {{Content.eggs[egg].text}} - - li.customize-menu - menu.hatchingPotion-menu(label=(env.t('hatchingPotions') + ' ({{potCount}})')) - p.muted(ng-show='potCount < 1')=env.t('noHatchingPotions') - div(ng-repeat='(pot,points) in ownedItems(user.items.hatchingPotions)') - button.customize-option(popover='{{Content.hatchingPotions[pot].notes}}', popover-title='{{Content.hatchingPotions[pot].text}} Potion', popover-trigger='mouseenter', popover-placement='right', ng-click='choosePotion(pot)', class='Pet_HatchingPotion_{{pot}}', ng-class='{selectableInventory: selectedEgg && !(user.items.pets[selectedEgg.key+"-"+pot]>0)}') - .badge.badge-info.stack-count {{points}} - - li.customize-menu - menu.pets-menu(label=(env.t('scrolls') + ' ({{questCount}})')) - p.muted(ng-show='questCount < 1')=env.t('noScrolls') - p.muted!=env.t('scrollsText1') + ' ' + env.t('scrollsText2') + '' - div(ng-repeat='(quest_key,points) in ownedItems(user.items.quests)', ng-init='quest = Content.quests[quest_key]') - button.customize-option(popover="{{quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : quest.notes | htmlDecode}}", popover-title='{{quest.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='showQuest(quest_key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}') - .badge.badge-info.stack-count {{points}} - - li.customize-menu - menu.pets-menu(label=env.t('food') + ' ({{foodCount}})') - p(ng-show='foodCount < 1')=env.t('noFood') - div(ng-repeat='(food,points) in ownedItems(user.items.food)') - button.customize-option(popover='{{Content.food[food].notes}}', popover-title='{{Content.food[food].text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='chooseFood(food)', class='Pet_Food_{{food}}') - .badge.badge-info.stack-count {{points}} - - li.customize-menu(ng-if='user.items.special.snowball') - menu.pets-menu(label=env.t('special')) - div - button.customize-option(popover='{{Content.special.snowball.notes}}', popover-title='{{Content.special.snowball.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='castStart(Content.special.snowball)', class='inventory_special_snowball') - .badge.badge-info.stack-count {{user.items.special.snowball}} - - .span6 - h2=env.t('market') - .row-fluid - table.npc_alex_container - tr - td - .npc_alex.pull-left - td - .popover.static-popover.fade.right.in - .arrow - h3.popover-title - a(target='_blank', href='http://www.kickstarter.com/profile/523661924')=env.t('alexander') - .popover-content - p=env.t('welcomeMarket') - p - button.btn.btn-primary(ng-show='selectedEgg', ng-click='sellInventory()')=env.t('sellForGold', {item: "{{selectedEgg.text}}", gold: "{{selectedEgg.value}}"}) - button.btn.btn-primary(ng-show='selectedPotion', ng-click='sellInventory()')=env.t('sellForGold', {item: "{{selectedPotion.text}}", gold: "{{selectedPotion.value}}"}) - button.btn.btn-primary(ng-show='selectedFood', ng-click='sellInventory()')=env.t('sellForGold', {item: "{{selectedFood.text}}", gold: "{{selectedFood.value}}"}) + .container-fluid + .row + .col-md-6.border-right + h2=env.t('inventory') + p.well=env.t('inventoryText') menu.inventory-list(type='list') - li.customize-menu - menu.pets-menu(label=env.t('eggs')) - div(ng-repeat='egg in Content.eggs', ng-if='egg.canBuy') - button.customize-option(popover='{{egg.notes}}', popover-title='{{egg.text}} Egg', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("eggs", egg)', class='Pet_Egg_{{egg.key}}') - p - | {{egg.value}} - span.Pet_Currency_Gem1x.inline-gems li.customize-menu - menu.pets-menu(label=env.t('hatchingPotions')) - div(ng-repeat='pot in Content.hatchingPotions') - button.customize-option(popover='{{pot.notes}}', popover-title='{{pot.text}} Potion', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("hatchingPotions", pot)', class='Pet_HatchingPotion_{{pot.key}}') - p - | {{pot.value}} - span.Pet_Currency_Gem1x.inline-gems + menu.pets-menu(label=(env.t('eggs') + ' ({{eggCount}})')) + p.muted(ng-show='eggCount < 1')=env.t('noEggs') + div(ng-repeat='(egg,points) in ownedItems(user.items.eggs)') + //TODO move positioning this styling to css + button.customize-option(popover='{{Content.eggs[egg].notes}}', popover-title='{{Content.eggs[egg].text}} Egg', popover-trigger='mouseenter', popover-placement='right', ng-click='chooseEgg(egg)', class='Pet_Egg_{{egg}}', ng-class='{selectableInventory: selectedPotion && !(user.items.pets[egg+"-"+selectedPotion.key]>0)}') + .badge.badge-info.stack-count {{points}} + //-p {{Content.eggs[egg].text}} li.customize-menu - menu.pets-menu(label=env.t('food')) - div(ng-repeat='food in Content.food', ng-if='food.key !== "Saddle" && food.canBuy') - button.customize-option(popover='{{food.notes}}', popover-title='{{food.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("food", food)', class='Pet_Food_{{food.key}}') - p - | {{food.value}} - span.Pet_Currency_Gem1x.inline-gems + menu.hatchingPotion-menu(label=(env.t('hatchingPotions') + ' ({{potCount}})')) + p.muted(ng-show='potCount < 1')=env.t('noHatchingPotions') + div(ng-repeat='(pot,points) in ownedItems(user.items.hatchingPotions)') + button.customize-option(popover='{{Content.hatchingPotions[pot].notes}}', popover-title='{{Content.hatchingPotions[pot].text}} Potion', popover-trigger='mouseenter', popover-placement='right', ng-click='choosePotion(pot)', class='Pet_HatchingPotion_{{pot}}', ng-class='{selectableInventory: selectedEgg && !(user.items.pets[selectedEgg.key+"-"+pot]>0)}') + .badge.badge-info.stack-count {{points}} li.customize-menu - menu.pets-menu(label=env.t('quests')) + menu.pets-menu(label=(env.t('scrolls') + ' ({{questCount}})')) + p.muted(ng-show='questCount < 1')=env.t('noScrolls') p.muted!=env.t('scrollsText1') + ' ' + env.t('scrollsText2') + '' - div(ng-repeat='quest in Content.quests', ng-if='quest.canBuy') - button.customize-option(popover="{{quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : quest.notes | htmlDecode}}", popover-title='{{quest.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='buyQuest(quest.key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}') - p - | {{quest.value}} - span.Pet_Currency_Gem1x.inline-gems + div(ng-repeat='(quest_key,points) in ownedItems(user.items.quests)', ng-init='quest = Content.quests[quest_key]') + button.customize-option(popover="{{quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : quest.notes | htmlDecode}}", popover-title='{{quest.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='showQuest(quest_key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}') + .badge.badge-info.stack-count {{points}} li.customize-menu + menu.pets-menu(label=env.t('food') + ' ({{foodCount}})') + p(ng-show='foodCount < 1')=env.t('noFood') + div(ng-repeat='(food,points) in ownedItems(user.items.food)') + button.customize-option(popover='{{Content.food[food].notes}}', popover-title='{{Content.food[food].text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='chooseFood(food)', class='Pet_Food_{{food}}') + .badge.badge-info.stack-count {{points}} + + li.customize-menu(ng-if='user.items.special.snowball') menu.pets-menu(label=env.t('special')) div - button.customize-option(popover='{{Content.food.Saddle.notes}}', popover-title='{{Content.food.Saddle.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("food", Content.food.Saddle)', class='Pet_Food_{{Content.food.Saddle.key}}') - p - | {{Content.food.Saddle.value}} - span.Pet_Currency_Gem1x.inline-gems - div - button.customize-option(popover=env.t('fortifyPop'), popover-title=env.t('fortifyName'), popover-trigger='mouseenter', popover-placement='left', ng-click='openModal("reroll")', class='inventory_special_fortify') - p - | 4 - span.Pet_Currency_Gem1x.inline-gems - //-div - button.customize-option(popover='{{Content.spells.special.snowball.notes}}', popover-title='{{Content.spells.special.snowball.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("special", Content.spells.special.snowball)', class='inventory_special_snowball') - p - | {{Content.spells.special.snowball.value}} - span.Pet_Currency_Gem1x.inline-gems - div(ng-show='user.flags.rebirthEnabled') - button.customize-option(popover=env.t('rebirthPop'), popover-title=env.t('rebirthName'), popover-trigger='mouseenter', popover-placement='left', ng-click='openModal("rebirth")', class='rebirth_orb') - p - | 8 - span.Pet_Currency_Gem1x.inline-gems - div(ng-if='user.purchased.plan.planId') - button.customize-option(ng-click='user.ops.purchase({params:{type:"gems",key:"gem"}})') - span.Pet_Currency_Gem.inline-gems - p - | 20 - span.shop_gold + button.customize-option(popover='{{Content.special.snowball.notes}}', popover-title='{{Content.special.snowball.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='castStart(Content.special.snowball)', class='inventory_special_snowball') + .badge.badge-info.stack-count {{user.items.special.snowball}} + + .col-md-6 + h2=env.t('market') + .row-fluid + table.npc_alex_container + tr + td + .npc_alex.pull-left + td + .popover.static-popover.fade.right.in + .arrow + h3.popover-title + a(target='_blank', href='http://www.kickstarter.com/profile/523661924')=env.t('alexander') + .popover-content + p=env.t('welcomeMarket') + p + button.btn.btn-primary(ng-show='selectedEgg', ng-click='sellInventory()')=env.t('sellForGold', {item: "{{selectedEgg.text}}", gold: "{{selectedEgg.value}}"}) + button.btn.btn-primary(ng-show='selectedPotion', ng-click='sellInventory()')=env.t('sellForGold', {item: "{{selectedPotion.text}}", gold: "{{selectedPotion.value}}"}) + button.btn.btn-primary(ng-show='selectedFood', ng-click='sellInventory()')=env.t('sellForGold', {item: "{{selectedFood.text}}", gold: "{{selectedFood.value}}"}) + menu.inventory-list(type='list') + li.customize-menu + menu.pets-menu(label=env.t('eggs')) + div(ng-repeat='egg in Content.eggs', ng-if='egg.canBuy') + button.customize-option(popover='{{egg.notes}}', popover-title='{{egg.text}} Egg', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("eggs", egg)', class='Pet_Egg_{{egg.key}}') + p + | {{egg.value}} + span.Pet_Currency_Gem1x.inline-gems + + li.customize-menu + menu.pets-menu(label=env.t('hatchingPotions')) + div(ng-repeat='pot in Content.hatchingPotions') + button.customize-option(popover='{{pot.notes}}', popover-title='{{pot.text}} Potion', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("hatchingPotions", pot)', class='Pet_HatchingPotion_{{pot.key}}') + p + | {{pot.value}} + span.Pet_Currency_Gem1x.inline-gems + + li.customize-menu + menu.pets-menu(label=env.t('food')) + div(ng-repeat='food in Content.food', ng-if='food.key !== "Saddle" && food.canBuy') + button.customize-option(popover='{{food.notes}}', popover-title='{{food.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("food", food)', class='Pet_Food_{{food.key}}') + p + | {{food.value}} + span.Pet_Currency_Gem1x.inline-gems + + li.customize-menu + menu.pets-menu(label=env.t('quests')) + p.muted!=env.t('scrollsText1') + ' ' + env.t('scrollsText2') + '' + div(ng-repeat='quest in Content.quests', ng-if='quest.canBuy') + button.customize-option(popover="{{quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : quest.notes | htmlDecode}}", popover-title='{{quest.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='buyQuest(quest.key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}') + p + | {{quest.value}} + span.Pet_Currency_Gem1x.inline-gems + + li.customize-menu + menu.pets-menu(label=env.t('special')) + div + button.customize-option(popover='{{Content.food.Saddle.notes}}', popover-title='{{Content.food.Saddle.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("food", Content.food.Saddle)', class='Pet_Food_{{Content.food.Saddle.key}}') + p + | {{Content.food.Saddle.value}} + span.Pet_Currency_Gem1x.inline-gems + div + button.customize-option(popover=env.t('fortifyPop'), popover-title=env.t('fortifyName'), popover-trigger='mouseenter', popover-placement='left', ng-click='openModal("reroll")', class='inventory_special_fortify') + p + | 4 + span.Pet_Currency_Gem1x.inline-gems + //-div + button.customize-option(popover='{{Content.spells.special.snowball.notes}}', popover-title='{{Content.spells.special.snowball.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("special", Content.spells.special.snowball)', class='inventory_special_snowball') + p + | {{Content.spells.special.snowball.value}} + span.Pet_Currency_Gem1x.inline-gems + div(ng-show='user.flags.rebirthEnabled') + button.customize-option(popover=env.t('rebirthPop'), popover-title=env.t('rebirthName'), popover-trigger='mouseenter', popover-placement='left', ng-click='openModal("rebirth")', class='rebirth_orb') + p + | 8 + span.Pet_Currency_Gem1x.inline-gems + div(ng-if='user.purchased.plan.planId') + button.customize-option(ng-click='user.ops.purchase({params:{type:"gems",key:"gem"}})') + span.Pet_Currency_Gem.inline-gems + p + | 20 + span.shop_gold diff --git a/views/options/inventory/stable.jade b/views/options/inventory/stable.jade index d85fc484fc..d9e1ce8130 100644 --- a/views/options/inventory/stable.jade +++ b/views/options/inventory/stable.jade @@ -1,85 +1,87 @@ script(type='text/ng-template', id='partials/options.inventory.mounts.html') - .stable - table(style='width:100%') - tr - td(style='width:144px') - .npc_matt - td - .popover.static-popover.fade.right.in(style='max-width: 550px; margin-left: 10px;') - .arrow - h3.popover-title - a(target='_blank', href='http://www.kickstarter.com/profile/mattboch')=env.t('mattBoch') - .popover-content - p=env.t('mattShall', {name: "{{user.profile.name}}"}) - h4= '{{mountCount}} / {{totalPets}} ' + env.t('mountsTamed') - menu.pets(type='list') - li.customize-menu(ng-repeat='egg in Content.eggs') - menu - div(ng-repeat='potion in Content.hatchingPotions', popover-trigger='mouseenter', popover='{{potion.text}} {{egg.mountText}}', popover-placement='bottom', ng-init='mount = egg.key+"-"+potion.key') - button(class="pet-button Mount_Head_{{mount}}", ng-show='user.items.mounts[mount]', ng-class='{active: user.items.currentMount == mount}', ng-click='chooseMount(egg.key, potion.key)') - //div(class='Mount_Head_{{mount}}') - button(class="pet-button pet-not-owned", ng-hide='user.items.mounts[mount]') - .PixelPaw + .container-fluid + .stable.row + table + tr + td(style='width:144px') + .npc_matt + td + .popover.static-popover.fade.right.in(style='max-width: 550px; margin-left: 10px;') + .arrow + h3.popover-title + a(target='_blank', href='http://www.kickstarter.com/profile/mattboch')=env.t('mattBoch') + .popover-content + p=env.t('mattShall', {name: "{{user.profile.name}}"}) + h4= '{{mountCount}} / {{totalPets}} ' + env.t('mountsTamed') + menu.pets(type='list') + li.customize-menu(ng-repeat='egg in Content.eggs') + menu + div(ng-repeat='potion in Content.hatchingPotions', popover-trigger='mouseenter', popover='{{potion.text}} {{egg.mountText}}', popover-placement='bottom', ng-init='mount = egg.key+"-"+potion.key') + button(class="pet-button Mount_Head_{{mount}}", ng-show='user.items.mounts[mount]', ng-class='{active: user.items.currentMount == mount}', ng-click='chooseMount(egg.key, potion.key)') + //div(class='Mount_Head_{{mount}}') + button(class="pet-button pet-not-owned", ng-hide='user.items.mounts[mount]') + .PixelPaw - h4=env.t('rareMounts') - menu - div - button(ng-if='user.items.mounts["BearCub-Polar"]', class="pet-button Mount_Head_BearCub-Polar", ng-class='{active: user.items.currentMount == "BearCub-Polar"}', ng-click='chooseMount("BearCub", "Polar")', popover=env.t('polarBear'), popover-trigger='mouseenter', popover-placement='bottom') - //.Mount_Head_BearCub-Polar - button(ng-if='user.items.mounts["LionCub-Ethereal"]', class="pet-button Mount_Head_LionCub-Ethereal", ng-class='{active: user.items.currentMount == "LionCub-Ethereal"}', ng-click='chooseMount("LionCub", "Ethereal")', popover=env.t('etherealLion'), popover-trigger='mouseenter', popover-placement='bottom') - //.Mount_Head_LionCub-Ethereal + h4=env.t('rareMounts') + menu + div + button(ng-if='user.items.mounts["BearCub-Polar"]', class="pet-button Mount_Head_BearCub-Polar", ng-class='{active: user.items.currentMount == "BearCub-Polar"}', ng-click='chooseMount("BearCub", "Polar")', popover=env.t('polarBear'), popover-trigger='mouseenter', popover-placement='bottom') + //.Mount_Head_BearCub-Polar + button(ng-if='user.items.mounts["LionCub-Ethereal"]', class="pet-button Mount_Head_LionCub-Ethereal", ng-class='{active: user.items.currentMount == "LionCub-Ethereal"}', ng-click='chooseMount("LionCub", "Ethereal")', popover=env.t('etherealLion'), popover-trigger='mouseenter', popover-placement='bottom') + //.Mount_Head_LionCub-Ethereal script(type='text/ng-template', id='partials/options.inventory.pets.html') - .stable - table(style='width:100%') - tr - td(style='width:144px') - .npc_matt - td - .popover.static-popover.fade.right.in(style='max-width: 550px; margin-left: 10px;') - .arrow - h3.popover-title - a(target='_blank', href='http://www.kickstarter.com/profile/mattboch')=env.t('mattBoch') - .popover-content - p - =env.t('mattBochText1') + ' ' - | - =env.t('mattBochText2') - | - = ' ' + env.t('mattBochText3') - h4= '{{petCount}} / {{totalPets}} ' + env.t('petsFound') + .container-fluid + .stable.row + table + tr + td(style='width:144px') + .npc_matt + td + .popover.static-popover.fade.right.in(style='max-width: 550px; margin-left: 10px;') + .arrow + h3.popover-title + a(target='_blank', href='http://www.kickstarter.com/profile/mattboch')=env.t('mattBoch') + .popover-content + p + =env.t('mattBochText1') + ' ' + | + =env.t('mattBochText2') + | + = ' ' + env.t('mattBochText3') + h4= '{{petCount}} / {{totalPets}} ' + env.t('petsFound') - menu.pets(type='list') - li.customize-menu(ng-repeat='egg in Content.eggs') - menu - div(ng-repeat='potion in Content.hatchingPotions', popover-trigger='mouseenter', popover='{{potion.text}} {{egg.text}}', popover-placement='bottom', ng-init='pet = egg.key+"-"+potion.key') - button(class="pet-button Pet-{{pet}}", ng-if='user.items.pets[pet]>0', ng-class='{active: user.items.currentPet == pet, selectableInventory: selectedFood}', ng-click='choosePet(egg.key, potion.key)') - .progress(ng-show='!user.items.mounts[pet]', ng-class='{"progress-success": user.items.pets[pet]<50}') - .bar(style="width: {{user.items.pets[pet]/.5}}%;") - button(class="pet-button pet-not-owned", ng-if='!user.items.pets[pet]') - .PixelPaw - button(class="pet-button Pet-{{pet}}" ng-if='user.items.pets[pet]<0',style='opacity:0.1;filter:alpha(opacity=10)') - //if this could be changed to the opacity talked about? can't figure it out + menu.pets(type='list') + li.customize-menu(ng-repeat='egg in Content.eggs') + menu + div(ng-repeat='potion in Content.hatchingPotions', popover-trigger='mouseenter', popover='{{potion.text}} {{egg.text}}', popover-placement='bottom', ng-init='pet = egg.key+"-"+potion.key') + button(class="pet-button Pet-{{pet}}", ng-if='user.items.pets[pet]>0', ng-class='{active: user.items.currentPet == pet, selectableInventory: selectedFood}', ng-click='choosePet(egg.key, potion.key)') + .progress(ng-show='!user.items.mounts[pet]', ng-class='{"progress-success": user.items.pets[pet]<50}') + .bar(style="width: {{user.items.pets[pet]/.5}}%;") + button(class="pet-button pet-not-owned", ng-if='!user.items.pets[pet]') + .PixelPaw + button(class="pet-button Pet-{{pet}}" ng-if='user.items.pets[pet]<0',style='opacity:0.1;filter:alpha(opacity=10)') + //if this could be changed to the opacity talked about? can't figure it out - h4=env.t('rarePets') - menu - div - button(ng-if='user.items.pets["Wolf-Veteran"]', class="pet-button Pet-Wolf-Veteran", ng-class='{active: user.items.currentPet == "Wolf-Veteran"}', ng-click='choosePet("Wolf", "Veteran")', popover=env.t('veteranWolf'), popover-trigger='mouseenter', popover-placement='bottom') - button(ng-if='user.items.pets["Wolf-Cerberus"]', class="pet-button Pet-Wolf-Cerberus", ng-class='{active: user.items.currentPet == "Wolf-Cerberus"}', ng-click='choosePet("Wolf", "Cerberus")', popover=env.t('cerberusPup'), popover-trigger='mouseenter', popover-placement='bottom') - button(ng-if='user.items.pets["Turkey-Base"]', class="pet-button Pet-Turkey-Base", ng-class='{active: user.items.currentPet == "Turkey-Base"}', ng-click='choosePet("Turkey", "Base")', popover=env.t('turkey'), popover-trigger='mouseenter', popover-placement='bottom') - button(ng-if='user.items.pets["BearCub-Polar"]', class="pet-button Pet-BearCub-Polar", ng-class='{active: user.items.currentPet == "BearCub-Polar"}', ng-click='choosePet("BearCub", "Polar")', popover=env.t('polarBearPup'), popover-trigger='mouseenter', popover-placement='bottom') - button(ng-if='user.items.pets["Dragon-Hydra"]', class="pet-button Pet-Dragon-Hydra", ng-class='{active: user.items.currentPet == "Dragon-Hydra"}', ng-click='choosePet("Dragon", "Hydra")', popover=env.t('hydra'), popover-trigger='mouseenter', popover-placement='bottom') - a(target='_blank', href='http://habitrpg.wikia.com/wiki/Contributing_to_HabitRPG') - button(ng-if='!user.items.pets["Dragon-Hydra"]', class="pet-button pet-not-owned", popover-trigger='mouseenter', popover-placement='right', popover=env.t('rarePetPop1'), popover-title=env.t('rarePetPop2')) - .PixelPaw-Gold + h4=env.t('rarePets') + menu + div + button(ng-if='user.items.pets["Wolf-Veteran"]', class="pet-button Pet-Wolf-Veteran", ng-class='{active: user.items.currentPet == "Wolf-Veteran"}', ng-click='choosePet("Wolf", "Veteran")', popover=env.t('veteranWolf'), popover-trigger='mouseenter', popover-placement='bottom') + button(ng-if='user.items.pets["Wolf-Cerberus"]', class="pet-button Pet-Wolf-Cerberus", ng-class='{active: user.items.currentPet == "Wolf-Cerberus"}', ng-click='choosePet("Wolf", "Cerberus")', popover=env.t('cerberusPup'), popover-trigger='mouseenter', popover-placement='bottom') + button(ng-if='user.items.pets["Turkey-Base"]', class="pet-button Pet-Turkey-Base", ng-class='{active: user.items.currentPet == "Turkey-Base"}', ng-click='choosePet("Turkey", "Base")', popover=env.t('turkey'), popover-trigger='mouseenter', popover-placement='bottom') + button(ng-if='user.items.pets["BearCub-Polar"]', class="pet-button Pet-BearCub-Polar", ng-class='{active: user.items.currentPet == "BearCub-Polar"}', ng-click='choosePet("BearCub", "Polar")', popover=env.t('polarBearPup'), popover-trigger='mouseenter', popover-placement='bottom') + button(ng-if='user.items.pets["Dragon-Hydra"]', class="pet-button Pet-Dragon-Hydra", ng-class='{active: user.items.currentPet == "Dragon-Hydra"}', ng-click='choosePet("Dragon", "Hydra")', popover=env.t('hydra'), popover-trigger='mouseenter', popover-placement='bottom') + a(target='_blank', href='http://habitrpg.wikia.com/wiki/Contributing_to_HabitRPG') + button(ng-if='!user.items.pets["Dragon-Hydra"]', class="pet-button pet-not-owned", popover-trigger='mouseenter', popover-placement='right', popover=env.t('rarePetPop1'), popover-title=env.t('rarePetPop2')) + .PixelPaw-Gold - .well.food-tray - p(ng-show='foodCount < 1')=env.t('noFood') - menu.inventory-list(type='list', ng-if='foodCount > 0') - li.customize-menu - menu.pets-menu(label=env.t('food')) - div(ng-repeat='(food,points) in ownedItems(user.items.food)') - button.customize-option(popover-append-to-body='true', popover='{{Content.food[food].notes}}', popover-title='{{Content.food[food].text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='chooseFood(food)', class='Pet_Food_{{food}}') - .badge.badge-info.stack-count {{points}} - // Remove this once we have images in - p {{Content.food[food].text}} + .well.food-tray + p(ng-show='foodCount < 1')=env.t('noFood') + menu.inventory-list(type='list', ng-if='foodCount > 0') + li.customize-menu + menu.pets-menu(label=env.t('food')) + div(ng-repeat='(food,points) in ownedItems(user.items.food)') + button.customize-option(popover-append-to-body='true', popover='{{Content.food[food].notes}}', popover-title='{{Content.food[food].text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='chooseFood(food)', class='Pet_Food_{{food}}') + .badge.badge-info.stack-count {{points}} + // Remove this once we have images in + p {{Content.food[food].text}} diff --git a/views/options/profile.jade b/views/options/profile.jade index e72ef230a9..831796b3f5 100644 --- a/views/options/profile.jade +++ b/views/options/profile.jade @@ -1,6 +1,6 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template') - .row-fluid - .span4 + .row + .col-md-4 h3=env.t('bodyBody') small | 2 / @@ -24,7 +24,7 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template') button.btn.btn-small.btn-primary(ng-hide="user.purchased.shirt.convict && user.purchased.shirt.cross && user.purchased.shirt.fire && user.purchased.shirt.horizon && user.purchased.shirt.ocean && user.purchased.shirt.purple && user.purchased.shirt.rainbow && user.purchased.shirt.redblue && user.purchased.shirt.thunder && user.purchased.shirt.tropical && user.purchased.shirt.zombie", ng-click='unlock("shirt.convict,shirt.cross,shirt.fire,shirt.horizon,shirt.ocean,shirt.purple,shirt.rainbow,shirt.redblue,shirt.thunder,shirt.tropical,shirt.zombie")')!= env.t('unlockSet5') + ' ' - .span4 + .col-md-4 h3=env.t('bodyHead') small | 2 / @@ -77,7 +77,7 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template') button.btn.btn-small.btn-primary(ng-hide='user.purchased.hair.mustache.1 && user.purchased.hair.mustache.2 && user.purchased.hair.beard.1 && user.purchased.hair.beard.2 && user.purchased.hair.beard.3', ng-click='unlock("hair.mustache.1,hair.mustache.2,hair.beard.1,hair.beard.2,hair.beard.3")')!= env.t('unlockSet5') + ' ' - .span4 + .col-md-4 h3=env.t('bodySkin') small | 2 / @@ -105,109 +105,113 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template') button.customize-option(type='button', class='skin_#{color}', ng-if='user.purchased.skin.#{color}', ng-click='unlock("skin.#{color}")') script(id='partials/options.profile.stats.html', type='text/ng-template') - .row-fluid - .border-right(ng-class='user.flags.classSelected && !user.preferences.disableClasses ? "span4" : "span6"') - include ../shared/profiles/stats - .span4.border-right.allocate-stats(ng-if='user.flags.classSelected && !user.preferences.disableClasses') - h3=env.t('characterBuild') - h4 - =env.t('class') + ': ' - span {{ {warrior:'Warrior',wizard:'Mage',healer:'Healer',rogue:'Rogue'}[user.stats.class] }}  - a.btn.btn-danger.btn-mini(ng-click='changeClass(null)')=env.t('changeClass') - small 3 - table.table.table-striped - tr - td - strong - {{user.stats.points}}  - =env.t('unallocated') -   - span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('levelPopover')) - td - tr - td(colspan=2) - fieldset.auto-allocate - label.checkbox - input(type='checkbox', ng-model='user.preferences.automaticAllocation', ng-change='set({"preferences.automaticAllocation": user.preferences.automaticAllocation?true: false})', ng-click='set({"preferences.allocationMode":"taskbased"})') - =env.t('autoAllocation') -   - span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('autoAllocationPop')) - form(ng-show='user.preferences.automaticAllocation',style='margin-left:1em') - label.radio - input(type='radio', name='allocationMode', value='flat', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "flat"})') - =env.t('evenAllocation') + .container-fluid + .row + .border-right(ng-class='user.flags.classSelected && !user.preferences.disableClasses ? "col-md-4" : "col-md-6"') + include ../shared/profiles/stats + .col-md-4.border-right.allocate-stats(ng-if='user.flags.classSelected && !user.preferences.disableClasses') + h3=env.t('characterBuild') + h4 + =env.t('class') + ': ' + span {{ {warrior:'Warrior',wizard:'Mage',healer:'Healer',rogue:'Rogue'}[user.stats.class] }}  + a.btn.btn-danger.btn-mini(ng-click='changeClass(null)')=env.t('changeClass') + small 3 + table.table.table-striped + tr + td + strong + {{user.stats.points}}  + =env.t('unallocated') +   + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('levelPopover')) + td + tr + td(colspan=2) + fieldset.auto-allocate + label.checkbox + input(type='checkbox', ng-model='user.preferences.automaticAllocation', ng-change='set({"preferences.automaticAllocation": user.preferences.automaticAllocation?true: false})', ng-click='set({"preferences.allocationMode":"taskbased"})') + =env.t('autoAllocation')   - span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('evenAllocationPop')) - label.radio - input(type='radio', name='allocationMode', value='classbased', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "classbased"})') - =env.t('classAllocation') -   - span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('classAllocationPop')) - label.radio - input(type='radio', name='allocationMode', value='taskbased', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "taskbased"})') - =env.t('taskAllocation') -   - span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('taskAllocationPop')) - div(ng-show='user.preferences.automaticAllocation && !(user.preferences.allocationMode === "taskbased") && (user.stats.points > 0)') - a.btn.btn-primary.btn-mini(ng-click='user.ops.allocateNow({})', popover-trigger='mouseenter', popover-placement='right', popover=env.t('distributePointsPop')) - span.glyphicon.glyphicon-download -   - =env.t('distributePoints') - tr - td= env.t('allocateCon') + ' {{user.stats.con}}' - td - a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("con")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocateConPop')) + - tr - td= env.t('allocateInt') + ' {{user.stats.int}}' - td - a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("int")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocateIntPop')) + - tr - td= env.t('allocatePer') + ' {{user.stats.per}}' - td - a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("per")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocatePerPop')) + - tr - td= env.t('allocateStr') + ' {{user.stats.str}}' - td - a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("str")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocateStrPop')) + - - div(ng-class='user.flags.classSelected && !user.preferences.disableClasses ? "span4" : "span6"') - include ../shared/profiles/achievements + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('autoAllocationPop')) + form(ng-show='user.preferences.automaticAllocation',style='margin-left:1em') + label.radio + input(type='radio', name='allocationMode', value='flat', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "flat"})') + =env.t('evenAllocation') +   + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('evenAllocationPop')) + label.radio + input(type='radio', name='allocationMode', value='classbased', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "classbased"})') + =env.t('classAllocation') +   + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('classAllocationPop')) + label.radio + input(type='radio', name='allocationMode', value='taskbased', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "taskbased"})') + =env.t('taskAllocation') +   + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('taskAllocationPop')) + div(ng-show='user.preferences.automaticAllocation && !(user.preferences.allocationMode === "taskbased") && (user.stats.points > 0)') + a.btn.btn-primary.btn-mini(ng-click='user.ops.allocateNow({})', popover-trigger='mouseenter', popover-placement='right', popover=env.t('distributePointsPop')) + span.glyphicon.glyphicon-download +   + =env.t('distributePoints') + tr + td= env.t('allocateCon') + ' {{user.stats.con}}' + td + a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("con")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocateConPop')) + + tr + td= env.t('allocateInt') + ' {{user.stats.int}}' + td + a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("int")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocateIntPop')) + + tr + td= env.t('allocatePer') + ' {{user.stats.per}}' + td + a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("per")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocatePerPop')) + + tr + td= env.t('allocateStr') + ' {{user.stats.str}}' + td + a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("str")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocateStrPop')) + + + div(ng-class='user.flags.classSelected && !user.preferences.disableClasses ? "col-md-4" : "col-md-6"') + include ../shared/profiles/achievements script(id='partials/options.profile.profile.html', type='text/ng-template') - button.btn.btn-default(ng-click='_editing.profile = true', ng-show='!_editing.profile')= env.t('edit') - button.btn.btn-primary(ng-click='save()', ng-show='_editing.profile')= env.t('save') - div(ng-show='!_editing.profile') - h4=env.t('displayName') - span(ng-show='profile.profile.name') {{profile.profile.name}} - span.muted(ng-hide='profile.profile.name') -  - =env.t('none') - |  - + .container-fluid + .row + .col-md-12(ng-show='!_editing.profile') + button.btn.btn-default(ng-click='_editing.profile = true', ng-show='!_editing.profile')= env.t('edit') + h4=env.t('displayName') + span(ng-show='profile.profile.name') {{profile.profile.name}} + span.muted(ng-hide='profile.profile.name') -  + =env.t('none') + |  - - h4=env.t('displayPhoto') - img(ng-show='profile.profile.imageUrl', ng-src='{{profile.profile.imageUrl}}') - span.muted(ng-hide='profile.profile.imageUrl') -  - =env.t('none') - |  - + h4=env.t('displayPhoto') + img(ng-show='profile.profile.imageUrl', ng-src='{{profile.profile.imageUrl}}') + span.muted(ng-hide='profile.profile.imageUrl') -  + =env.t('none') + |  - - h4=env.t('displayBlurb') - markdown(ng-show='profile.profile.blurb', ng-model='profile.profile.blurb') - span.muted(ng-hide='profile.profile.blurb') -  - =env.t('none') - |  - - //{{profile.profile.blurb | linky:'_blank'}} + h4=env.t('displayBlurb') + markdown(ng-show='profile.profile.blurb', ng-model='profile.profile.blurb') + span.muted(ng-hide='profile.profile.blurb') -  + =env.t('none') + |  - + //{{profile.profile.blurb | linky:'_blank'}} - div.whatever-options(ng-show='_editing.profile') - // TODO use photo-upload instead: https://groups.google.com/forum/?fromgroups=#!topic/derbyjs/xMmADvxBOak - .control-group.option-large - label.control-label=env.t('displayName') - input.option-content(type='text', placeholder=env.t('fullName'), ng-model='editingProfile.name') - .control-group.option-large - label.control-label=env.t('photoUrl') - input.option-content(type='url', ng-model='editingProfile.imageUrl', placeholder=env.t('imageUrl')) - .control-group.option-large - label.control-label=env.t('displayBlurb') - textarea.option-content(style='height:15em;', placeholder=env.t('displayBlurb'), ng-model='editingProfile.blurb') - include ../shared/formatting-help + form.col-md-4(ng-show='_editing.profile', ng-submit='save()') + input.btn.btn-primary(type='submit', value=env.t('save')) + + // TODO use photo-upload instead: https://groups.google.com/forum/?fromgroups=#!topic/derbyjs/xMmADvxBOak + .form-group + label=env.t('displayName') + input.form-control(type='text', placeholder=env.t('fullName'), ng-model='editingProfile.name') + .form-group + label=env.t('photoUrl') + input.form-control(type='url', ng-model='editingProfile.imageUrl', placeholder=env.t('imageUrl')) + .form-group + label=env.t('displayBlurb') + textarea.form-control(rows=5, placeholder=env.t('displayBlurb'), ng-model='editingProfile.blurb') + include ../shared/formatting-help script(id='partials/options.profile.html', type="text/ng-template") ul.nav.nav-tabs diff --git a/views/options/social/chat-box.jade b/views/options/social/chat-box.jade index 3a135fc502..77e8f5470d 100644 --- a/views/options/social/chat-box.jade +++ b/views/options/social/chat-box.jade @@ -1,16 +1,14 @@ form.chat-form(ng-submit='postChat(group,message.content)') - .-options - //FIXME ng-model makes this painfully slow! using jquery for now, which is really non-angular-like - .control-group.option-large(ng-controller='AutocompleteCtrl') - textarea.chat-textarea.option-content(style='height:6em;', ui-keypress='{13:"postChat(group,message.content)"}', ng-model='message.content', updateinterval='250', flag='@', at-user, auto-complete) - span.user-list(ng-show='!isAtListHidden') - ul.list-at-user - li(bindonce='response', ng-repeat='user in response | filter:query.text | limitTo: 5', ng-click='autoComplete(user)') - span.username.label(class='label-contributor-{{user.contributor.level}}', ng-class='{"label-npc": user.backer.npc}') {{user.user}} - table.pull-right - tr - td - input.btn.chat-btn(type='submit', value=env.t('sendChat'), ng-class='{disabled: _sending == true}') - td - button.btn(type="button", ng-click='sync(group)', tooltip=env.t('toolTipMsg')) - span.glyphicon.glyphicon-refresh.pull-right + div(ng-controller='AutocompleteCtrl') + textarea.form-control(rows=4, ui-keypress='{13:"postChat(group,message.content)"}', ng-model='message.content', updateinterval='250', flag='@', at-user, auto-complete) + span.user-list(ng-show='!isAtListHidden') + ul.list-at-user + li(bindonce='response', ng-repeat='user in response | filter:query.text | limitTo: 5', ng-click='autoComplete(user)') + span.username.label(class='label-contributor-{{user.contributor.level}}', ng-class='{"label-npc": user.backer.npc}') {{user.user}} + .row + .col-md-9 + include ../../shared/formatting-help + .col-md-3 + input.btn.btn-default.chat-btn(type='submit', value=env.t('sendChat'), ng-class='{disabled: _sending == true}') + button.btn.btn-default(type="button", ng-click='sync(group)', tooltip=env.t('toolTipMsg')) + span.glyphicon.glyphicon-refresh.pull-right \ No newline at end of file diff --git a/views/options/social/chat-message.jade b/views/options/social/chat-message.jade index bf8e731a66..5d48818b8c 100644 --- a/views/options/social/chat-message.jade +++ b/views/options/social/chat-message.jade @@ -1,14 +1,14 @@ li.chat-message(bindonce='group.chat', ng-repeat='message in group.chat', bo-class='{highlight: isUserMentioned(user,message), "own-message": user._id == message.uuid}') div(class='scrollable-message') - a.label.chat-message(class='hidden-label') + a.label.label-default.chat-message(class='hidden-label') span {{message.user}}  markdown(ng-model='message.text', style='padding:0px 3px') | - span.muted.time(from-now='message.timestamp',style='padding:0px 3px') span(style='padding:0px 3px') a.label(ng-show='countExists(message.likes)',ng-class='{"label-success":message.likes[user._id]}',ng-click='likeChatMessage(group,message)') +{{countExists(message.likes)}} - a.chat-plus-one.muted(ng-show='!countExists(message.likes)',ng-click='likeChatMessage(group,message)',style='background-color:#eee;padding:3px 3px 0px 3px') +1 + a.chat-plus-one.muted(ng-show='!countExists(message.likes)',ng-click='likeChatMessage(group,message)') +1 a(bo-show='user.contributor.admin || message.uuid == user.id', ng-click='deleteChatMessage(group, message)',style='padding: 0px 3px') span.glyphicon.glyphicon-trash(tooltip=env.t('delete')) - a.label.chat-message(bo-show='message.user', class='float-label', bo-class='{"label-npc": message.backer.npc, "label-contributor-{{message.contributor.level}}":message.contributor.level}', ng-click='clickMember(message.uuid, true)') + a.label.label-default.chat-message(bo-show='message.user', class='float-label', bo-class='{"label-npc": message.backer.npc, "label-contributor-{{message.contributor.level}}":message.contributor.level}', ng-click='clickMember(message.uuid, true)') span(tooltip='{{contribText(message.contributor, message.backer)}}') {{message.user}}  diff --git a/views/options/social/create-group.jade b/views/options/social/create-group.jade index edf985d1a4..53c8879a02 100644 --- a/views/options/social/create-group.jade +++ b/views/options/social/create-group.jade @@ -1,27 +1,27 @@ -form.form-horizontal(ng-submit='create(newGroup)') - .control-group.whatever-options - .control-group - label.control-label(for='new-group-name') - | {{text}}  - =env.t('name') - .controls - input#new-group-name.input-medium.option-content(required, type='text', placeholder='{{text}} Name', ng-model='newGroup.name') - .control-group - label.control-label(for='new-group-description')=env.t('description') - .controls - textarea#new-group-description.option-content(cols='3', placeholder=env.t('description'), ng-model='newGroup.description') - .control-group(ng-show='type=="guild"') - .controls - label.radio - input(type='radio', name='new-group-privacy', value='public', ng-model='newGroup.privacy') - =env.t('public') - label.radio - input(type='radio', name='new-group-privacy', value='private', ng-model='newGroup.privacy') - =env.t('inviteOnly') - input.btn(type='submit', ng-disabled='!newGroup.privacy && !newGroup.name', value=env.t('create')) +.container-fluid + .row + form.col-md-12.form-horizontal(ng-submit='create(newGroup)') + .form-group + label.control-label(for='new-group-name') + | {{text}}  + =env.t('name') + input.form-control#new-group-name.input-medium.option-content(required, type='text', placeholder='{{text}} Name', ng-model='newGroup.name') + .form-group + label(for='new-group-description')=env.t('description') + textarea.form-control#new-group-description.option-content(cols='3', placeholder=env.t('description'), ng-model='newGroup.description') + .form-group(ng-show='type=="guild"') + .radio + label + input(type='radio', name='new-group-privacy', value='public', ng-model='newGroup.privacy') + =env.t('public') + .radio + label + input(type='radio', name='new-group-privacy', value='private', ng-model='newGroup.privacy') + =env.t('inviteOnly') + br + input.btn.btn-default(type='submit', ng-disabled='!newGroup.privacy && !newGroup.name', value=env.t('create')) span.gem-cost= '4 ' + env.t('gems') p small=env.t('gemCost') - .control-group(ng-show='type=="party"') - .controls - input.btn(type='submit', value=env.t('create')) + .form-group(ng-show='type=="party"') + input.btn.btn-default.form-control(type='submit', value=env.t('create')) diff --git a/views/options/social/group.jade b/views/options/social/group.jade index caa9d3469e..44c33c4da9 100644 --- a/views/options/social/group.jade +++ b/views/options/social/group.jade @@ -4,174 +4,177 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title=env.t('guild .Pet_Currency_Gem2x.Gems | {{group.balance * 4 | number:0 }} =env.t('guildGems') -.row-fluid - .span4 +.container-fluid + .row + .col-md-4 - // ------ Bosses ------- - .modal.inline-modal(bindonce='group', ng-if='group.type==="party" && group.quest.key') - .modal-header - h3(ng-if='group.quest.active==false')=env.t('questInvitation') + '{{Content.quests[group.quest.key].text}}' - h3(ng-if='group.quest.active==true') {{Content.quests[group.quest.key].text}} - .modal-body - div(ng-if='group.quest.active==false') - table.table.table-striped - tr(ng-repeat='member in group.members') - td {{member.profile.name}} - td {{group.quest.members[member._id] === true ? env.t('accepted') : group.quest.members[member._id] === false ? env.t('rejected') : env.t('pending')}} - hr - .npc_ian.pull-left - p=env.t('questStart') - button.btn.btn-small.btn-warning(ng-if='!group.quest.leader || group.quest.leader==user._id', ng-click='party.$questAccept({"force":true})')=env.t('begin') - //-TODO Cancel button - //-TODO Both force-start & cancel should only be available to quest-initiator + // ------ Bosses ------- + .panle.panel-default(bindonce='group', ng-if='group.type==="party" && group.quest.key') + .panel-heading + h3.panel-title(ng-if='group.quest.active==false')=env.t('questInvitation') + '{{Content.quests[group.quest.key].text}}' + h3.panel-title(ng-if='group.quest.active==true') {{Content.quests[group.quest.key].text}} + .panel-body + div(ng-if='group.quest.active==false') + table.table.table-striped + tr(ng-repeat='member in group.members') + td {{member.profile.name}} + td {{group.quest.members[member._id] === true ? env.t('accepted') : group.quest.members[member._id] === false ? env.t('rejected') : env.t('pending')}} + hr + .npc_ian.pull-left + p=env.t('questStart') + button.btn.btn-small.btn-warning(ng-if='!group.quest.leader || group.quest.leader==user._id', ng-click='party.$questAccept({"force":true})')=env.t('begin') + //-TODO Cancel button + //-TODO Both force-start & cancel should only be available to quest-initiator - div(ng-if='group.quest.active==true') - div(ng-if='Content.quests[group.quest.key].boss') - div(class="quest_{{group.quest.key}}") - //- - .progress(style="height:10px") - .bar(style='width: {{Shared.percent(group.quest.hp, Content.quests[group.quest.key].hp)}}%;') - span.meter-text - span.glyphicon.glyphicon-heart - | {{group.quest.hp | number:0}} / {{Content.quests[group.quest.key].hp}} - .hero-stats - .meter.health(title=env.t('bossHP')) - .bar(style='width: {{Shared.percent(group.quest.progress.hp, Content.quests[group.quest.key].boss.hp)}}%;') + div(ng-if='group.quest.active==true') + div(ng-if='Content.quests[group.quest.key].boss') + div(class="quest_{{group.quest.key}}") + //- + .progress(style="height:10px") + .bar(style='width: {{Shared.percent(group.quest.hp, Content.quests[group.quest.key].hp)}}%;') span.meter-text span.glyphicon.glyphicon-heart - | {{group.quest.progress.hp | number:0}} / {{Content.quests[group.quest.key].boss.hp}} + | {{group.quest.hp | number:0}} / {{Content.quests[group.quest.key].hp}} + .hero-stats + .meter.health(title=env.t('bossHP')) + .bar(style='width: {{Shared.percent(group.quest.progress.hp, Content.quests[group.quest.key].boss.hp)}}%;') + span.meter-text + span.glyphicon.glyphicon-heart + | {{group.quest.progress.hp | number:0}} / {{Content.quests[group.quest.key].boss.hp}} - div(ng-if='Content.quests[group.quest.key].collect') - h4=env.t('collected') + ':' + div(ng-if='Content.quests[group.quest.key].collect') + h4=env.t('collected') + ':' + table.table.table-striped + tr(ng-repeat='(k,v) in group.quest.progress.collect', class='quest_collected_{{v >= Content.quests[group.quest.key].collect[k].count}}') + td + div.pull-left(class='quest_{{group.quest.key}}_{{k}}') + | {{Content.quests[group.quest.key].collect[k].text}} + td + {{v}} / {{Content.quests[group.quest.key].collect[k].count}} + + div(ng-bind-html='Content.quests[group.quest.key].notes') + hr + h5=env.t('participants') table.table.table-striped - tr(ng-repeat='(k,v) in group.quest.progress.collect', class='quest_collected_{{v >= Content.quests[group.quest.key].collect[k].count}}') - td - div.pull-left(class='quest_{{group.quest.key}}_{{k}}') - | {{Content.quests[group.quest.key].collect[k].text}} - td - {{v}} / {{Content.quests[group.quest.key].collect[k].count}} + tr(ng-repeat='(k,v) in group.members', ng-show='group.quest.members[v._id]') + td {{v.profile.name}} + quest-rewards(key='{{group.quest.key}}') - div(ng-bind-html='Content.quests[group.quest.key].notes') + div(ng-if='Content.quests[group.quest.key].boss') + .npc_ian.pull-left + p!=env.t('bossDmg1') + br + p=env.t('bossDmg2') + + div(ng-if='Content.quests[group.quest.key].collect') + .npc_ian.pull-left + p=env.t('bossColl1') + br + p=env.t('bossColl2') + + + button.btn.btn-mini.btn-danger(ng-if='!group.quest.leader || group.quest.leader==user._id', ng-click='questAbort()')=env.t('abort') + + // ------ Information ------- + .panel.panel-default + .panel-heading(bindonce='group') + h3.panel-title + | {{group.name}} + span(ng-if='group.leader == user.id') + button.btn.btn-primary.pull-right(ng-click='save(group)', ng-show='group._editing')=env.t('save') + button.btn.btn-default.pull-right(ng-click='group._editing = true', ng-hide='group._editing')=env.t('editGroup') + + .panel-body + form(ng-show='group._editing') + .form-group + label=env.t('groupName') + input.form-control(type='text', ng-model='group.name', placeholder=env.t('groupName')) + .form-group + label=env.t('description') + textarea.form-control(rows=6, ng-model='group.description') + include ../../shared/formatting-help + .form-group + label=env.t('logoUrl') + input.form-control(type='url', placeholder=env.t('logoUrl'), ng-model='group.logo') + + h4=env.t('assignLeader') + select#group-leader-selection(ng-model='group._newLeader', ng-options='member.profile.name for member in group.members') + + div(ng-show='!group._editing') + img.pull-right(ng-show='group.logo', style='max-width:150px', ng-src='{{group.logo}}') + markdown(ng-model='group.description') hr - h5=env.t('participants') + small.muted Group ID: {{group._id}} + + include ./challenge-box + + // ------ Members ------- + .panel.panel-default + .panel-heading + h3.panel-title=env.t('members') + .panel-body + span + =env.t('partyList') + select#partyOrder( + style='width:140px', + ng-model='user.party.order', + ng-controller='ChatCtrl', + ng-options='k as v for (k , v) in partyOrderChoices', + ng-change='set({"party.order": user.party.order})' + ) + table.table.table-striped(bindonce='group') + tr(ng-repeat='member in group.members') + td + // allow leaders to ban members + div(ng-show='group.leader == user.id && user.id!=member._id') + a(ng-click='removeMember(group, member, true)') + span.glyphicon.glyphicon-ban-circle(tooltip=env.t('banTip')) + a + span(ng-class='{"badge badge-info": group.leader==member._id}', ng-click='clickMember(member._id, true)') + | {{member.profile.name}} + tr(ng-if='group.memberCount > group.members.length') + td + |{{group.memberCount - group.members.length}} + = ' ' + env.t('moreMembers') + | + + h4(ng-show='group.invites.length > 0')=env.t('invited') table.table.table-striped - tr(ng-repeat='(k,v) in group.members', ng-show='group.quest.members[v._id]') - td {{v.profile.name}} - quest-rewards(key='{{group.quest.key}}') - - div(ng-if='Content.quests[group.quest.key].boss') - .npc_ian.pull-left - p!=env.t('bossDmg1') - br - p=env.t('bossDmg2') - - div(ng-if='Content.quests[group.quest.key].collect') - .npc_ian.pull-left - p=env.t('bossColl1') - br - p=env.t('bossColl2') + tr(ng-repeat='invite in group.invites') + td + // allow leaders to ban members + div(ng-show='group.leader == user.id') + a(ng-click='removeMember(group, invite, false)') + span.glyphicon.glyphicon-ban-circle(tooltip=env.t('banTip')) + a + span(ng-click='clickMember(invite._id, true)') + | {{invite.profile.name}} + .panel-footer + form.form-inline(ng-submit='invite(group)') + //.alert.alert-danger(ng-show='_groupError') {{_groupError}} + .form-group + input.form-control(type='text', placeholder=env.t('userId'), ng-model='group.invitee') +   + input.btn.btn-default(type='submit', value=env.t('invite')) - button.btn.btn-mini.btn-danger(ng-if='!group.quest.leader || group.quest.leader==user._id', ng-click='questAbort()')=env.t('abort') + a.btn.btn-danger(data-id='{{group.id}}', ng-click='clickLeave(group, $event)')=env.t('leave') - // ------ Information ------- - .modal.inline-modal - .modal-header(bindonce='group') - span(ng-if='group.leader == user.id') - button.btn.btn-primary.pull-right(ng-click='save(group)', ng-show='group._editing')=env.t('save') - button.btn.btn-default.pull-right(ng-click='group._editing = true', ng-hide='group._editing')=env.t('editGroup') - h3 {{group.name}} - .modal-body - div.whatever-options(ng-show='group._editing') - .control-group.option-large - label.control-labe=env.t('groupName') - input.option-content(type='text', ng-model='group.name', placeholder=env.t('groupName')) - .control-group.option-large - label.control-label=env.t('description') - textarea.option-content(style='height:15em;', placeholder=env.t('groupDescr'), ng-model='group.description') - .control-group.option-large - label.control-label=env.t('logoUrl') - input.option-content(type='url', placeholder=env.t('logoUrl'), ng-model='group.logo') + .col-md-8 + div() + textarea.form-control(ng-show='group._editing', rows=6, placeholder=env.t('leaderMsg'), ng-model='group.leaderMessage') + table(ng-show='group.leaderMessage') + tr + td + .popover.static-popover.fade.right.in.wide-popover + .arrow + h3.popover-title {{Members.members[group.leader].profile.name}} + .popover-content + markdown(ng-model='group.leaderMessage') + div(ng-controller='ChatCtrl') + h3=env.t('chat') + include ./chat-box - h4=env.t('assignLeader') - select#group-leader-selection(ng-model='group._newLeader', ng-options='member.profile.name for member in group.members') - - div(ng-show='!group._editing') - img.pull-right(ng-show='group.logo', style='max-width:150px', ng-src='{{group.logo}}') - markdown(ng-model='group.description') - hr - small.muted Group ID: {{group._id}} - - include ./challenge-box - - // ------ Members ------- - .modal.inline-modal - .modal-header - h3=env.t('members') - .modal-body - span - =env.t('partyList') - select#partyOrder( - style='width:140px', - ng-model='user.party.order', - ng-controller='ChatCtrl', - ng-options='k as v for (k , v) in partyOrderChoices', - ng-change='set({"party.order": user.party.order})' - ) - table.table.table-striped(bindonce='group') - tr(ng-repeat='member in group.members') - td - // allow leaders to ban members - div(ng-show='group.leader == user.id && user.id!=member._id') - a(ng-click='removeMember(group, member, true)') - span.glyphicon.glyphicon-ban-circle(tooltip=env.t('banTip')) - a - span(ng-class='{"badge badge-info": group.leader==member._id}', ng-click='clickMember(member._id, true)') - | {{member.profile.name}} - tr(ng-if='group.memberCount > group.members.length') - td - |{{group.memberCount - group.members.length}} - = ' ' + env.t('moreMembers') - | - - h4(ng-show='group.invites.length > 0')=env.t('invited') - table.table.table-striped - tr(ng-repeat='invite in group.invites') - td - // allow leaders to ban members - div(ng-show='group.leader == user.id') - a(ng-click='removeMember(group, invite, false)') - span.glyphicon.glyphicon-ban-circle(tooltip=env.t('banTip')) - a - span(ng-click='clickMember(invite._id, true)') - | {{invite.profile.name}} - .modal-footer.whatever-options - form.form-inline(ng-submit='invite(group)') - //.alert.alert-danger(ng-show='_groupError') {{_groupError}} - .control-group.option-large - input.option-content(type='text', placeholder=env.t('userId'), ng-model='group.invitee') - input.btn(type='submit', value=env.t('invite')) - - - a.btn.btn-danger(data-id='{{group.id}}', ng-click='clickLeave(group, $event)')=env.t('leave') - - .span8 - div.blah-options(ng-show='group._editing') - .option-large - textarea.option-content(style='height:15em;', placeholder=env.t('leaderMsg'), ng-model='group.leaderMessage') - table(ng-show='group.leaderMessage') - tr - td - .popover.static-popover.fade.right.in.wide-popover - .arrow - h3.popover-title {{Members.members[group.leader].profile.name}} - .popover-content - markdown(ng-model='group.leaderMessage') - div(ng-controller='ChatCtrl') - h3=env.t('chat') - include ./chat-box - include ../../shared/formatting-help - - ul.unstyled.tavern-chat - include ./chat-message + ul.list-unstyled.tavern-chat + include ./chat-message diff --git a/views/options/social/hall.jade b/views/options/social/hall.jade index f494892d2c..2a648ee94c 100644 --- a/views/options/social/hall.jade +++ b/views/options/social/hall.jade @@ -12,83 +12,83 @@ script(type='text/ng-template', id='partials/options.social.hall.html') div(ui-view) script(type='text/ng-template', id='partials/options.social.hall.heroes.html') - div.well(ng-if='user.contributor.admin') + .well(ng-if='user.contributor.admin') h2=env.t('rewardUser') form.form-horizontal(ng-submit='loadHero(_heroID)') - .-options - .option-group.option-large - input.option-content(type='text', ng-model='_heroID', placeholder=env.t('UUID')) - button.btn(type='submit')=env.t('loadUser') + .form-group + input.form-control(type='text', ng-model='_heroID', placeholder=env.t('UUID')) + input.btn.btn-default(type='submit')=env.t('loadUser') form.form-horizontal(ng-show='hero', ng-submit='saveHero(hero)') h3 {{hero.profile.name}} - .-options - .control-group.option-large - input.option-content(type='text', ng-model='hero.contributor.text', placeholder=env.t('contribTitle')) - .control-group.option-medium - input.option-content(type='number', step="any", ng-model='hero.contributor.level') - span.input-suffix=env.t('contribLevel') - br - small=env.t('contribHallText') - a(target='_blank', href='https://trello.com/c/wkFzONhE/277-contributor-gear')=env.t('moreDetails') - .control-group.option-large - textarea.option-content(style='height:15em;', placeholder=env.t('contributions'), ng-model='hero.contributor.contributions') - //-include ../../shared/formatting-help - .control-group.option-medium - label.checkbox + .form-group + input.form-control(type='text', ng-model='hero.contributor.text', placeholder=env.t('contribTitle')) + .form-group + input.form-control(type='number', step="any", ng-model='hero.contributor.level') + span.input-suffix=env.t('contribLevel') + br + small=env.t('contribHallText') + a(target='_blank', href='https://trello.com/c/wkFzONhE/277-contributor-gear')=env.t('moreDetails') + .form-group + textarea.form-control(style='height:15em;', placeholder=env.t('contributions'), ng-model='hero.contributor.contributions') + //-include ../../shared/formatting-help + .form-group + .checkbox + label input(type='checkbox', ng-model='hero.contributor.admin') =env.t('admin') hr - .control-group.option-medium - input.option-content(type='number', step="any", ng-model='hero.balance') + .form-group + input.form-control(type='number', step="any", ng-model='hero.balance') span.input-suffix=env.t('balance') p small!= '`user.balance`' + env.t('notGems') - .control-group.option-medium - label.checkbox - input(type='checkbox', ng-model='hero.purchased.ads') - =env.t('hideAds') + .form-group + .checkbox + label + input(type='checkbox', ng-model='hero.purchased.ads') + =env.t('hideAds') // h4 Backer Status // Add backer stuff like tier, disable adds, etcs - button.btn-primary(type='submit')=env.t('save') + input.btn.btn-primary(type='submit')=env.t('save') table.table.table-striped - tr - thead - tr - th=env.t('name') - th(ng-if='user.contributor.admin')=env.t('UUID') - th=env.t('contribLevel') - th=env.t('title') - th=env.t('contributions') - tr(ng-repeat='hero in heroes') - td - span(ng-if='hero.contributor.admin',popover=env.t('gamemaster'),popover-trigger='mouseenter',popover-placement='right') - a.label(class='label-contributor-{{hero.contributor.level}}', ng-class='{"label-npc": hero.backer.npc}', ng-click='clickMember(hero._id, true)') - | {{hero.profile.name}}  - span.glyphicon.glyphicon-star - span(ng-if='!hero.contributor.admin') - a.label(class='label-contributor-{{hero.contributor.level}}', ng-class='{"label-npc": hero.backer.npc}', ng-click='clickMember(hero._id, true)') {{hero.profile.name}} - td(ng-if='user.contributor.admin') {{hero._id}} - td {{hero.contributor.level}} - td {{hero.contributor.text}} - td - markdown(ng-model='hero.contributor.contributions', target='_blank') + thead + tr + th=env.t('name') + th(ng-if='user.contributor.admin')=env.t('UUID') + th=env.t('contribLevel') + th=env.t('title') + th=env.t('contributions') + tbody + tr(ng-repeat='hero in heroes') + td + span(ng-if='hero.contributor.admin',popover=env.t('gamemaster'),popover-trigger='mouseenter',popover-placement='right') + a.label(class='label-contributor-{{hero.contributor.level}}', ng-class='{"label-npc": hero.backer.npc}', ng-click='clickMember(hero._id, true)') + | {{hero.profile.name}}  + span.glyphicon.glyphicon-star + span(ng-if='!hero.contributor.admin') + a.label(class='label-contributor-{{hero.contributor.level}}', ng-class='{"label-npc": hero.backer.npc}', ng-click='clickMember(hero._id, true)') {{hero.profile.name}} + td(ng-if='user.contributor.admin') {{hero._id}} + td {{hero.contributor.level}} + td {{hero.contributor.text}} + td + markdown(ng-model='hero.contributor.contributions', target='_blank') script(type='text/ng-template', id='partials/options.social.hall.patrons.html') table.table.table-striped(infinite-scroll="loadMore()") - tr - thead - tr - th=env.t('name') - th(ng-if='user.contributor.admin')=env.t('UUID') - th=env.t('backerTier') - tr(ng-repeat='patron in patrons') - td - a.label(class='label-contributor-{{patron.contributor.level}}', ng-class='{"label-npc": patron.backer.npc}', ng-click='clickMember(patron._id, true)') {{patron.profile.name}} - td(ng-if='user.contributor.admin') {{patron._id}} - td {{patron.backer.tier}} + thead + tr + th=env.t('name') + th(ng-if='user.contributor.admin')=env.t('UUID') + th=env.t('backerTier') + tbody + tr(ng-repeat='patron in patrons') + td + a.label(class='label-contributor-{{patron.contributor.level}}', ng-class='{"label-npc": patron.backer.npc}', ng-click='clickMember(patron._id, true)') {{patron.profile.name}} + td(ng-if='user.contributor.admin') {{patron._id}} + td {{patron.backer.tier}} diff --git a/views/options/social/index.jade b/views/options/social/index.jade index 4fbb2a03b0..3f3303b0d3 100644 --- a/views/options/social/index.jade +++ b/views/options/social/index.jade @@ -7,7 +7,6 @@ include ./hall.jade script(type='text/ng-template', id='partials/options.social.tavern.html') include ./tavern - script(type='text/ng-template', id='partials/options.social.party.html') div(ng-show='group._id') include ./group @@ -30,8 +29,8 @@ script(type='text/ng-template', id='partials/options.social.guilds.public.html') a.btn.btn-success(data-type='guild', ng-click='join(invitation)')=env.t('accept') a.btn.btn-danger(ng-click='reject(invitation)')=env.t('reject') // Public Groups - .options-group.option-large.whatever-options - input.option-content(type='text',ng-model='guildSearch', placeholder=env.t('search')) + .col-md-3 + input.form-control(type='text',ng-model='guildSearch', placeholder=env.t('search')) table.table.table-striped tr(ng-repeat='group in groups.public | filter:guildSearch') td diff --git a/views/options/social/tavern.jade b/views/options/social/tavern.jade index 349065f739..13d67e04a9 100644 --- a/views/options/social/tavern.jade +++ b/views/options/social/tavern.jade @@ -1,127 +1,125 @@ -.row-fluid - .span4 - .tavern-pane - table - tr - td - .npc_daniel - td - .popover.static-popover.fade.right.in - .arrow - h3.popover-title - a(target='_blank', href='http://www.kickstarter.com/profile/2014640723')=env.t('daniel') - .popover-content - =env.t('danielText') - div - button.btn.btn-large.btn-success(ng-class='{active: user.preferences.sleep}', ng-click='User.user.ops.sleep({})') - span(ng-show='user.preferences.sleep')=env.t('innCheckOut') - span(ng-hide='user.preferences.sleep')=env.t('innCheckIn') - .alert.alert-info(ng-show='user.preferences.sleep') - =env.t('innText') +.container-fluid + .row + .col-md-4 + .tavern-pane + table + tr + td + .npc_daniel + td + .popover.static-popover.fade.right.in + .arrow + h3.popover-title + a(target='_blank', href='http://www.kickstarter.com/profile/2014640723')=env.t('daniel') + .popover-content + =env.t('danielText') + div + button.btn.btn-large.btn-success(ng-class='{active: user.preferences.sleep}', ng-click='User.user.ops.sleep({})') + span(ng-show='user.preferences.sleep')=env.t('innCheckOut') + span(ng-hide='user.preferences.sleep')=env.t('innCheckIn') + .alert.alert-info(ng-show='user.preferences.sleep') + =env.t('innText') - // Resources - .modal(style='position: relative;top: auto;left: auto;right: auto;margin: 0 auto 20px;z-index: 1;max-width: 100%;') - .modal-header - h3=env.t('resources') - .modal-body - table.table.table-striped - tr - td - a(target='_blank', href='http://habitrpg.wikia.com/wiki/Board:Looking_for_a_Group_(LFG)')=env.t('lfgPosts') - tr - td - a(target='_blank', href='https://vimeo.com/57654086')=env.t('tutorial') - tr - td - a(target='_blank', href='http://habitrpg.wikia.com/wiki/FAQ')=env.t('FAQ') - tr - td - a(target='_blank', href='http://habitrpg.wikia.com/wiki/Glossary')=env.t('glossary') - tr - td - a(target='_blank', href='https://github.com/HabitRPG/habitrpg/issues')=env.t('reportAP') - tr - td - a(target='_blank', href='https://trello.com/c/8gzGlle8')=env.t('requestAF') - tr - td - a(target='_blank', href='http://habitrpg.wikia.com/wiki/Special:Forum')=env.t('community') + // Resources + .panel.panel-default + .panel-heading + h3.panel-title=env.t('resources') + .panel-body + table.table.table-striped + tr + td + a(target='_blank', href='http://habitrpg.wikia.com/wiki/Board:Looking_for_a_Group_(LFG)')=env.t('lfgPosts') + tr + td + a(target='_blank', href='https://vimeo.com/57654086')=env.t('tutorial') + tr + td + a(target='_blank', href='http://habitrpg.wikia.com/wiki/FAQ')=env.t('FAQ') + tr + td + a(target='_blank', href='http://habitrpg.wikia.com/wiki/Glossary')=env.t('glossary') + tr + td + a(target='_blank', href='https://github.com/HabitRPG/habitrpg/issues')=env.t('reportAP') + tr + td + a(target='_blank', href='https://trello.com/c/8gzGlle8')=env.t('requestAF') + tr + td + a(target='_blank', href='http://habitrpg.wikia.com/wiki/Special:Forum')=env.t('community') - // Player Tiers - .modal(style='position: relative;top: auto;left: auto;right: auto;margin: 0 auto 20px;z-index: 1;max-width: 100%;', popover=env.t('tierPop'), popover-trigger="mouseenter", popover-placement="right") - .modal-header - h3=env.t('playerTiers') - .modal-body - small - | - =env.t('visitHeroes') - |
- | - =env.t('conLearn') - |
- | - =env.t('conLearnHow') - | - table.table.table-striped - tr - td - a.label.label-contributor-1(ng-click='toggleUserTier($event)')=env.t('friendBadge') - div(style='display:none;') - p - span.achievement.achievement-firefox - !=env.t('friendFirst') - hr - p - span.shop-sprite.item-img(class='shop_armor_special_1') - !=env.t('friendSecond') - tr - td - a.label.label-contributor-3(ng-click='toggleUserTier($event)')=env.t('eliteBadge') - div(style='display:none;') - p - span.shop-sprite.item-img(class='shop_head_special_1') - !=env.t('eliteThird') - hr - p - span.shop-sprite.item-img(class='shop_weapon_special_1') - !=env.t('eliteFourth') - tr - td - a.label.label-contributor-5(ng-click='toggleUserTier($event)')=env.t('championBadge') - div(style='display:none;') - p - span.shop-sprite.item-img(class='shop_shield_special_1') - !=env.t('championFifth') - hr - p - div(class='Pet-Dragon-Hydra pull-left') - !=env.t('championSixth') - tr - td - a.label.label-contributor-7(ng-click='toggleUserTier($event)')=env.t('legendaryBadge') - div(style='display:none;') - p - !=env.t('legSeventh') - tr - td - a.label.label-contributor-8(ng-click='toggleUserTier($event)')=env.t('heroicBadge') - div(style='display:none;') - p=env.t('heroicText') - tr - td - a.label.label-npc(ng-click='toggleUserTier($event)')=env.t('npc') - div(style='display:none;') - p=env.t('npcText') + // Player Tiers + .panel.panel-default(popover=env.t('tierPop'), popover-trigger="mouseenter", popover-placement="right") + .panel-heading + h3.panel-title=env.t('playerTiers') + .panel-body + small + | + =env.t('visitHeroes') + |
+ | + =env.t('conLearn') + |
+ | + =env.t('conLearnHow') + | + table.table.table-striped + tr + td + a.label.label-contributor-1(ng-click='toggleUserTier($event)')=env.t('friendBadge') + div(style='display:none;') + p + span.achievement.achievement-firefox + !=env.t('friendFirst') + hr + p + span.shop-sprite.item-img(class='shop_armor_special_1') + !=env.t('friendSecond') + tr + td + a.label.label-contributor-3(ng-click='toggleUserTier($event)')=env.t('eliteBadge') + div(style='display:none;') + p + span.shop-sprite.item-img(class='shop_head_special_1') + !=env.t('eliteThird') + hr + p + span.shop-sprite.item-img(class='shop_weapon_special_1') + !=env.t('eliteFourth') + tr + td + a.label.label-contributor-5(ng-click='toggleUserTier($event)')=env.t('championBadge') + div(style='display:none;') + p + span.shop-sprite.item-img(class='shop_shield_special_1') + !=env.t('championFifth') + hr + p + div(class='Pet-Dragon-Hydra pull-left') + !=env.t('championSixth') + tr + td + a.label.label-contributor-7(ng-click='toggleUserTier($event)')=env.t('legendaryBadge') + div(style='display:none;') + p + !=env.t('legSeventh') + tr + td + a.label.label-contributor-8(ng-click='toggleUserTier($event)')=env.t('heroicBadge') + div(style='display:none;') + p=env.t('heroicText') + tr + td + a.label.label-npc(ng-click='toggleUserTier($event)')=env.t('npc') + div(style='display:none;') + p=env.t('npcText') - include ./challenge-box + include ./challenge-box - .span8(ng-controller='ChatCtrl') - h3=env.t('tavernTalk') - include ./chat-box - small(style='position: relative; top: -20px; left: 25px;') - include ../../shared/formatting-help - small(style='position: relative; top: 18px; left: 0px') - alert.alert-info - !=env.t('tavernAlert1') + ' ' + env.t('tavernAlert2') + '.' - ul.unstyled.tavern-chat - include ./chat-message + .col-md-8.tavern(ng-controller='ChatCtrl') + h3=env.t('tavernTalk') + include ./chat-box + .alert.alert-info + !=env.t('tavernAlert1') + ' ' + env.t('tavernAlert2') + '.' + ul.list-unstyled.tavern-chat + include ./chat-message diff --git a/views/shared/profiles/achievements.jade b/views/shared/profiles/achievements.jade index 2ef6789a86..64cb816b10 100644 --- a/views/shared/profiles/achievements.jade +++ b/views/shared/profiles/achievements.jade @@ -1,133 +1,132 @@ -.achievements-container - //
- //
- //
- //
- //
- //
- //
- //
- //
- //
- //
- //
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
- div(ng-if='profile.backer.npc') - .achievement.achievement-helm +div(ng-if='profile.backer.npc') + .achievement.achievement-helm + h5 + span.label.label-npc + | {{profile.backer.npc}} + =env.t('npc') + small=env.t('npcText') + hr + +div(ng-if='profile.contributor.level || user._id == profile._id') + .achievement.achievement-firefox(ng-if='profile.contributor.level') + div(ng-class='{muted: !profile.contributor.level}') h5 - span.label.label-npc - | {{profile.backer.npc}} - =env.t('npc') - small=env.t('npcText') - hr - - div(ng-if='profile.contributor.level || user._id == profile._id') - .achievement.achievement-firefox(ng-if='profile.contributor.level') - div(ng-class='{muted: !profile.contributor.level}') - h5 - span.label(ng-if='profile.contributor.level', class='label-contributor-{{profile.contributor.level}}') {{contribText(profile.contributor, profile.backer)}} - span.label(ng-if='!profile.contributor.level')=env.t('contribName') - small - =env.t('contribText') - a(href='http://habitrpg.wikia.com/wiki/Contributing_to_HabitRPG', target='_blank')=env.t('readMore') - | . - hr - - div(ng-if='profile.backer.tier') - .achievement.achievement-heart - h5=env.t('kickstartName', {tier: "{{profile.backer.tier}}"}) - small=env.t('kickstartText') - hr - - div(ng-if='profile.achievements.streak || user._id == profile._id') - .achievement.achievement-thermometer(ng-show='profile.achievements.streak') - div(ng-class='{muted: !profile.achievements.streak}') - h5 {{profile.achievements.streak || 0 }} - =env.t('streakName') - small=env.t('streakText', {streaks: "{{profile.achievements.streak || 0 }}"}) - hr - - div(ng-if='profile.achievements.perfect || user._id == profile._id') - .achievement.achievement-perfect(ng-show='profile.achievements.perfect') - div(ng-class='{muted: !profile.achievements.perfect}') - h5 {{profile.achievements.perfect || 0 }} - =env.t('perfectName') - small=env.t('perfectText', {perfects: "{{profile.achievements.perfect || 0 }}"}) - hr - - div(ng-if='profile.achievements.ultimateGear || user._id == profile._id') - .achievement.achievement-armor(ng-show='profile.achievements.ultimateGear') - div(ng-class='{muted: !profile.achievements.ultimateGear}') - h5=env.t('ultimGearName') - small=env.t('ultimGearText') - hr - - div(ng-if='profile.achievements.beastMaster || user._id == profile._id') - .achievement.achievement-rat(ng-show='profile.achievements.beastMaster') - div(ng-class='{muted: !profile.achievements.beastMaster}') - h5=env.t('beastMastName') - small=env.t('beastMastText') - hr - - div(ng-if='profile.achievements.rebirths') - .achievement.achievement-sun - h5(ng-if='profile.achievements.rebirths == 1')=env.t('rebirthBegan') - h5(ng-if='profile.achievements.rebirths > 1') - =env.t('rebirthText', {rebirths: "{{profile.achievements.rebirths}}"}) + span.label(ng-if='profile.contributor.level', class='label-contributor-{{profile.contributor.level}}') {{contribText(profile.contributor, profile.backer)}} + span.label(ng-if='!profile.contributor.level')=env.t('contribName') small - =env.t('rebirthOrb') - | {{profile.achievements.rebirthLevel}}. - hr + =env.t('contribText') + a(href='http://habitrpg.wikia.com/wiki/Contributing_to_HabitRPG', target='_blank')=env.t('readMore') + | . + hr - div(ng-if='profile.achievements.helpedHabit') - .achievement.achievement-tree - h5=env.t('helped') - small - =env.t('helpedText1') - a(href='http://community.habitrpg.com/node/290', target='_blank')=env.t('helpedText2') - hr +div(ng-if='profile.backer.tier') + .achievement.achievement-heart + h5=env.t('kickstartName', {tier: "{{profile.backer.tier}}"}) + small=env.t('kickstartText') + hr - div(ng-if='profile.achievements.originalUser || profile.achievements.veteran') - .achievement.achievement-cake - div(ng-if='profile.achievements.veteran') - h5=env.t('veteran') - small=env.t('veteranText') - div(ng-if='profile.achievements.originalUser') - h5=env.t('originalUser') - small!=env.t('originalUserText') - hr +div(ng-if='profile.achievements.streak || user._id == profile._id') + .achievement.achievement-thermometer(ng-show='profile.achievements.streak') + div(ng-class='{muted: !profile.achievements.streak}') + h5 {{profile.achievements.streak || 0 }} + =env.t('streakName') + small=env.t('streakText', {streaks: "{{profile.achievements.streak || 0 }}"}) + hr - div(ng-if='profile.achievements.challenges || user._id == profile._id') - // This is a very strange icon to use. revisit - .achievement.achievement-karaoke(ng-show='profile.achievements.challenges') - div(ng-class='{muted: !profile.achievements.challenges}') - h5=env.t('challengeWinner') - table.table.table-striped - tr(ng-repeat='chal in profile.achievements.challenges') - td {{chal}} - hr +div(ng-if='profile.achievements.perfect || user._id == profile._id') + .achievement.achievement-perfect(ng-show='profile.achievements.perfect') + div(ng-class='{muted: !profile.achievements.perfect}') + h5 {{profile.achievements.perfect || 0 }} + =env.t('perfectName') + small=env.t('perfectText', {perfects: "{{profile.achievements.perfect || 0 }}"}) + hr - div(ng-if='profile.achievements.quests || user._id == profile._id') - .achievement.achievement-alien(ng-show='profile.achievements.quests') - div(ng-class='{muted: !profile.achievements.quests}') - h5=env.t('completedQuests') - table.table.table-striped - tr(ng-repeat='(k,v) in profile.achievements.quests') - td {{Content.quests[k].text}} - td x{{v}} - hr +div(ng-if='profile.achievements.ultimateGear || user._id == profile._id') + .achievement.achievement-armor(ng-show='profile.achievements.ultimateGear') + div(ng-class='{muted: !profile.achievements.ultimateGear}') + h5=env.t('ultimGearName') + small=env.t('ultimGearText') + hr - div(ng-if='profile.achievements.snowball') - .achievement.achievement-snowball - h5=env.t('annoyingFriends') - small - =env.t('annoyingFriendsText', {snowballs: "{{profile.achievements.snowball}}"}) - hr +div(ng-if='profile.achievements.beastMaster || user._id == profile._id') + .achievement.achievement-rat(ng-show='profile.achievements.beastMaster') + div(ng-class='{muted: !profile.achievements.beastMaster}') + h5=env.t('beastMastName') + small=env.t('beastMastText') + hr - div(ng-if='profile.achievements.habitBirthday') - .achievement.achievement-habitBirthday - h5=env.t('habitBirthday') - small - =env.t('habitBirthdayText') - hr +div(ng-if='profile.achievements.rebirths') + .achievement.achievement-sun + h5(ng-if='profile.achievements.rebirths == 1')=env.t('rebirthBegan') + h5(ng-if='profile.achievements.rebirths > 1') + =env.t('rebirthText', {rebirths: "{{profile.achievements.rebirths}}"}) + small + =env.t('rebirthOrb') + | {{profile.achievements.rebirthLevel}}. + hr + +div(ng-if='profile.achievements.helpedHabit') + .achievement.achievement-tree + h5=env.t('helped') + small + =env.t('helpedText1') + a(href='http://community.habitrpg.com/node/290', target='_blank')=env.t('helpedText2') + hr + +div(ng-if='profile.achievements.originalUser || profile.achievements.veteran') + .achievement.achievement-cake + div(ng-if='profile.achievements.veteran') + h5=env.t('veteran') + small=env.t('veteranText') + div(ng-if='profile.achievements.originalUser') + h5=env.t('originalUser') + small!=env.t('originalUserText') + hr + +div(ng-if='profile.achievements.challenges || user._id == profile._id') + // This is a very strange icon to use. revisit + .achievement.achievement-karaoke(ng-show='profile.achievements.challenges') + div(ng-class='{muted: !profile.achievements.challenges}') + h5=env.t('challengeWinner') + table.table.table-striped + tr(ng-repeat='chal in profile.achievements.challenges') + td {{chal}} + hr + +div(ng-if='profile.achievements.quests || user._id == profile._id') + .achievement.achievement-alien(ng-show='profile.achievements.quests') + div(ng-class='{muted: !profile.achievements.quests}') + h5=env.t('completedQuests') + table.table.table-striped + tr(ng-repeat='(k,v) in profile.achievements.quests') + td {{Content.quests[k].text}} + td x{{v}} + hr + +div(ng-if='profile.achievements.snowball') + .achievement.achievement-snowball + h5=env.t('annoyingFriends') + small + =env.t('annoyingFriendsText', {snowballs: "{{profile.achievements.snowball}}"}) + hr + +div(ng-if='profile.achievements.habitBirthday') + .achievement.achievement-habitBirthday + h5=env.t('habitBirthday') + small + =env.t('habitBirthdayText') + hr diff --git a/views/shared/tasks/task.jade b/views/shared/tasks/task.jade index 7fbf934489..633eb414bc 100644 --- a/views/shared/tasks/task.jade +++ b/views/shared/tasks/task.jade @@ -3,12 +3,12 @@ li(bindonce='list', bo-id='"task-"+task.id', ng-repeat='task in obj[list.type+"s .task-meta-controls // Due Date - span.task-date(ng-if='task.type=="todo" && task.date', style='margin:1px') + span(ng-if='task.type=="todo" && task.date') span(ng-class='{"label label-danger":moment(task.date).isBefore(_today, "days")}') {{moment(task.date).format('MM/DD')}} // Streak + |   span(ng-show='task.streak') {{task.streak}} span(tooltip=env.t('streakCounter')) - |   span.glyphicon.glyphicon-forward |