diff --git a/CHANGELOG.md b/CHANGELOG.md
index fe6304f5f2..28685fe452 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,616 +1,3 @@
My app - Changelog
-# (2015-03-24)
-
-
-## Bug Fixes
-
-- **.task-filter:** force long words to wrap
- ([9c2c08c0](watch/commits/9c2c08c03d8449db5e8b4474a4663e8011f3a6fd),
- [#4308](watch/issues/4308))
-- **Bailey:** correct date
- ([17138430](watch/commits/1713843067df6b40187755bc40c73da1ec6972e5))
-- **Gems:** Clarify badge count
- ([f2c6c07f](watch/commits/f2c6c07ff87f9d90b710d64cb89dc150ecea8a4b))
-- **I18N:**
- - Remove more hardcoded text
- ([8cd1ea48](watch/commits/8cd1ea48dbc4eea07cd4822bd0743046cad00aba))
- - Remove hardcoded text
- ([29f693cd](watch/commits/29f693cd246c20f0a85c644442566657e7a8fd93))
- - Translate TT in menu
- ([506c396b](watch/commits/506c396baf0ee708026644ef49a2c52ec676f620))
- - Make Time Travel translatable
- ([35b02cfd](watch/commits/35b02cfdd894a21f69175b81b5fefc74a0c35cda))
- - Translate Time Travelers
- ([8d042745](watch/commits/8d042745bed9cff86b15987882f56a4a9214194f))
-- **NYE:**
- - fix cards
- ([ccfe4809](watch/commits/ccfe48099fda85f7af5c354533637c1c16b15b96))
- - Correct achievement badge
- ([438516b2](watch/commits/438516b26f8d799de6401d359fc1d9f1c00614e4))
- - I18N for random text
- ([e3572286](watch/commits/e35722865abad24f22bac9833a53f3bbd7d8e1ac))
- - I18N for random text
- ([7a16c644](watch/commits/7a16c644c3b9946abffe3713178d60155af850e0))
- - t undefined
- ([11beb14e](watch/commits/11beb14e1421e2376d22edcbed61b9272cf4bd60))
- - Card to self exploit
- ([e7388822](watch/commits/e7388822f1d3c01350408778b4af6c33c49d7207))
- - I18N shop text
- ([5623fb00](watch/commits/5623fb00780ec294b84ec04964254268a3bc8a06))
-- **analytics:** remove testing code
- ([5de42b03](watch/commits/5de42b03c9b6500c26354e556c463becd58e2a93))
-- **auth:**
- - upgrade facebook to Graph API 2, fixes #4832
- ([0c63f6cb](watch/commits/0c63f6cb7dbe741ffdbaef53a947c1ffb1138b0a))
- - search case-insensitive usernames when registering
- ([c3bb42b1](watch/commits/c3bb42b1086fccfa955d87e9d37801eb979204da))
-- **avatar:**
- - prevent avatar from obscuring name
- ([8cf3cd66](watch/commits/8cf3cd66ccd35cf0171a08a696ff67b5243d4235))
- - Correct "Facial Hair" text
- ([e4df3435](watch/commits/e4df3435e13690288c920236c039b70988bc24cf))
-- **avatar-sharing:**
- - screw it, 1.3.3 backwards compat isn't working at the router level anyway. Besides, avatar sharing hasn't worked via addthis for a while, so we don't need this
- ([a44e0f7c](watch/commits/a44e0f7c31dbb7f70c0a024a961ae10b7d5554e6))
- - angular@1.3.9 upgrade fixed the /#?memberId=x bug. Also, anon wasn't able to view avatar shares!
- ([a053486f](watch/commits/a053486fcde200fb212e9863ffefe60f3a562600))
-- **avatar.styl:** improve label layout
- ([0943a229](watch/commits/0943a229ec5cbb976e204ec7ec4641b138aea39b),
- [#4349](watch/issues/4349))
-- **backgrounds:** Frigid, not Snowy, Peak
- ([285ff622](watch/commits/285ff6228cd2b2b5d82a0f887b6ac3fc8530c1db))
-- **bailey:** mystery 3014 promo
- ([bd5f8d79](watch/commits/bd5f8d79eaddcbcc42957f92c2e059da8b44979e))
-- **billing:** script to fix current_period_end, see #4420
- ([ca2d4511](watch/commits/ca2d45113c7f0d9ad5b59ac919355bb0d93737ef))
-- **cds:** max hour is 23 not 24
- ([193b92c1](watch/commits/193b92c16ba4a312d97194e7f2eba31a33acfd81))
-- **console:** remove console.log
- ([c301bd3e](watch/commits/c301bd3e89e4fb0b02bc62b5b16356cf327f46c0))
-- **content:** Cannot call 'toString' of undefined
- ([d5eb5bbf](watch/commits/d5eb5bbfe0416fbfa7270f371edc956c8c166c6b))
-- **date:**
- - typo
- ([756fa834](watch/commits/756fa83418e470578b0b43975a7c4e3d2e244284))
- - add YYYY/MM/DD format
- ([cb13b5ac](watch/commits/cb13b5ac26c7bd43eb024679ca6083e328a2598c))
-- **db:** upgrade flags.recaptureEmailsPhase to new values
- ([eb1ca43c](watch/commits/eb1ca43c44788ee8bf45d2bfe4f7874b0b24a213))
-- **emails:**
- - send emails to new fb users
- ([92a6af72](watch/commits/92a6af72cff29536985da2f3ef3f207d74842abb))
- - parse json
- ([925bfe8a](watch/commits/925bfe8af44765ea05cef4a59a57b0eb88325c26))
- - remove unused variable
- ([739d8885](watch/commits/739d8885a36057bbf2198e350d507e92f87503d4))
-- **event:**
- - Card notif display
- ([de21ec8c](watch/commits/de21ec8cf51c253a4eda21bf6fc70c64635d68f1))
- - Correct card notifs
- ([37ae50a7](watch/commits/37ae50a77af4ca176d42a44efb3ae9b8c2109645))
- - Line breakage II
- ([9a44ab76](watch/commits/9a44ab76ec3e093f093abee06475da998c8a23f0))
- - Line breakage II
- ([281e3fdb](watch/commits/281e3fdbb54a1d1adb6709ca295a546153d6703b))
- - Line breakage
- ([358b4213](watch/commits/358b42133080c897923043c899ad2ef4146fc8bd))
- - Localize poems
- ([9fddb08a](watch/commits/9fddb08aebfca32deb9287a43fcc49fe32b5538b))
- - Valentine's strings
- ([432eee75](watch/commits/432eee750f5bc31668a67b3b3b45b4f0fc3f5116))
- - Robes not for your head
- ([7e0d8104](watch/commits/7e0d8104632539468d547aa1b9b66936088ddc92))
- - Party robes
- ([51b2b9bd](watch/commits/51b2b9bda15b35eded359154888359396fb7f229))
- - Leave old achievement
- ([efd1333c](watch/commits/efd1333c06bb5572147a8d10b9dba6f5fb9d1c7c))
- - Correct achievement award
- ([a654d7ea](watch/commits/a654d7ea10748010885fdcf0f1845c63c985e6b9))
- - Robes shop icon
- ([0cc819cc](watch/commits/0cc819cc646960e003ba182096aeeaafb6aa6618))
- - Mystery sprite error
- ([37db763f](watch/commits/37db763fc28bc6db2b2dcb56eb2d18ede2f0c1b4))
- - Mystery typo
- ([6c8f9e39](watch/commits/6c8f9e39b63d4a4475458b7a010b137fcb3820b5))
- - Better quest text placement
- ([1b4843ff](watch/commits/1b4843ff586340abc51b3f45ccad0fe195fd6475))
- - quest syntax
- ([f4c582eb](watch/commits/f4c582eb2475e6f1bb846aba44b3ad690c4fc0b7))
- - Better shop flow
- ([1c908865](watch/commits/1c9088654881d91e3120dcc9729d6d0b2708db0b))
- - head, not helm
- ([e62cb74a](watch/commits/e62cb74ad01cf7395b81abd2c3764548291a6455))
- - grunt
- ([a4a94f79](watch/commits/a4a94f79734c136bdfd293d56c8a4dc473b93814))
- - Festify missed NPCs
- ([d37dd904](watch/commits/d37dd90484c83200dd513f6596a8b78a3dd41919))
-- **flag-chat:** correct url for tavern flags
- ([4c785e84](watch/commits/4c785e84590c2fa6d69e697e6240020152599346))
-- **flag-email:** correctly format date
- ([635ebf62](watch/commits/635ebf626bdbef17531cd945726a9837457d598c))
-- **flag-message:** small refactor
- ([948d5762](watch/commits/948d5762cd2c73179a77835bd22bb7fae76458d6))
-- **flags-emails:**
- - allow arrays in FLAG_REPORT_EMAIL
- ([9d22e65e](watch/commits/9d22e65e19ba63a5f91ae8cd03c2c1d3c655f552))
- - allow arrays in tnxEmails
- ([065227fa](watch/commits/065227fa8c347d6a1643378edd9f1c29c33ccd6c))
-- **footerCtrl.js:** disable addThis hover
- ([45d30ffe](watch/commits/45d30ffef56cdec74849448195e9cca02af58d7d))
-- **gem-cap:** use customerId in gem purchase
- ([2018cc84](watch/commits/2018cc84ab9891d7ec32dd4dbae0cedfba7786b8))
-- **gifts:**
- - $rootScope => Payments
- ([3423e985](watch/commits/3423e9857d6a00f8305e7906f01ee5760650d8dc))
- - allow gifting 0local
- ([5ec2c118](watch/commits/5ec2c118a5ab51b652915f1a9cfbe3c6ff98785d))
- - allow users to move from facebook=>local
- ([a4c2bf61](watch/commits/a4c2bf61b26011765443c54481c065f475f675e4))
-- **flag-chat:**
- - fetch author and add some group variables
- ([2d4c5e7b](watch/commits/2d4c5e7b98152b215ac875acef919bc3ae3896de))
- - add some variables
- ([7aff280a](watch/commits/7aff280a71b85d81daf47491cb4466e0f7c68879))
- - start implemnting email
- ([652ce10e](watch/commits/652ce10e2246a7b7a9e699f9aa005999b40f69b4))
-- **flag-message:**
- - add server methods
- ([e84880d3](watch/commits/e84880d3e872e85af3e29e0a0381a6a4ad8b4551))
- - add server methods
- ([ae6e0255](watch/commits/ae6e0255c69b4ecb60b0c3502840e875a9ff1085))
-- **gifts:**
- - allow gifting subscriptions
- ([5b01fff7](watch/commits/5b01fff70038886f470f2769235759ff29d7fcf5))
- - allow gifting gems from paypal/stripe
- ([e8dbd5ca](watch/commits/e8dbd5ca1a89c45d1d63f2dfc714822bdc444a9d))
- - allow gifting from balance
- ([7e9b92fc](watch/commits/7e9b92fcad3d2ad43da5395b34f580b8d961d648))
-- **google-discount:** add google discount
- ([5fc001e4](watch/commits/5fc001e4f6bac35020dbe63667d034c2957a47d0))
-- **i18n:**
- - add strings
- ([09015370](watch/commits/09015370f0b9eef726ccf5dd3f695f2ea87d8f75))
- - add string
- ([ff9280de](watch/commits/ff9280deea2326987c67c627cd622bf0925ca62a))
- - add string
- ([bb855bf9](watch/commits/bb855bf9931dc127304e2c1e47394196fc25c937))
-- **iap:** ignore keys/ directory. upload any keys/iap-sandbox iap-live etc on a private branch
- ([9d6caaa1](watch/commits/9d6caaa138d31d4c784737150ea313d68c69b745))
-- **interactive-tour:** disable ads till lvl 2
- ([d84549e2](watch/commits/d84549e2395046c4d94475778cf421eab0f720e5))
-- **loggly:**
- - change tag based on base_url, logs internal server errors
- ([dac2fc68](watch/commits/dac2fc682dfedbd9373b9d2695a857b1cf7afebb))
- - enable json loggin and start loggin errors during cron
- ([8935538b](watch/commits/8935538b5351d8da9b0aee454b1444b63480932c))
- - add test log, use only in production and add sample config
- ([af1ff6d7](watch/commits/af1ff6d74059e12683603ca89a55e5a12ff1a9e4))
- - add loggly
- ([7356e0ba](watch/commits/7356e0bafeb3843d6c457c654abc7a68f999cf44))
-- **mystery:**
- - Migration
- ([55066480](watch/commits/55066480fb3685ae54ff637bfe470e1e257cdfa6))
- - February 2015
- ([d4f8acd0](watch/commits/d4f8acd0ef0879f0a0f459c0a79225b8e791313c))
- - January subscriber set
- ([524761f1](watch/commits/524761f1cf4895b4a876ec696805c0f7c6998f21))
- - January subscriber set
- ([e2f47651](watch/commits/e2f47651a4facc79afec1edfd8c2c76bafee1ed7))
-- **mystery items:** March subscriber sprites added
- ([e918aa15](watch/commits/e918aa158d9d7835efcde86239919c7b830cda27))
-- **news:**
- - Promo images
- ([0ec9e5b1](watch/commits/0ec9e5b1e1edb86db3266e4cf633047d27d1dabf))
- - move old news to /static/old-news, better use of content space
- ([66b4dae0](watch/commits/66b4dae0d98853edd67a117cc4a196f7bdce69f7))
-- **pie:** Add pie
- ([1120d334](watch/commits/1120d334c31c8f3836d4a88b4e1a0a31cd2e48d1))
-- **plans:**
- - time traveler - by full sets
- ([bf7e1e66](watch/commits/bf7e1e66ed7ef4338d31807587ce6569eb06ef88))
- - add time traveler - buy individual mystery items
- ([d81badde](watch/commits/d81badde69e5cd3c3b7ef4babc82337aec87c006))
- - add consecutive-month benefits for subscribers
- ([76be625f](watch/commits/76be625f6dd86d82ad3a52fcf066c4670cd770ad))
- - cleanup plans' perks page, rename Time Trinket => Mystic Hourglass
- ([8c5842eb](watch/commits/8c5842eb527632d2ffa30d2f01eb87ec09cf6609))
- - time travelers tab, 1 trinket to buy 1 set
- ([0fffd665](watch/commits/0fffd66588e603513803967f1983797f530011a2))
- - allow block subscriptions from paypal/stripe
- ([7f2b6b5c](watch/commits/7f2b6b5cfbff94dc7339126308428ee93e23e1a5))
- - consectuive-month subscription perks (gifting)
- ([5fd805db](watch/commits/5fd805db881901df68b342fc66ec741bb85da581))
- - consecutive months & extra months (like a time-card)
- ([57bfee02](watch/commits/57bfee02cf34b9b44f662f90328d2615cc8f4ebe))
-- **presskit:** add presskit page cc @lemoness
- ([cba232ef](watch/commits/cba232ef83fb15c3fd74ed8eb535b5dc3d317bad))
-- **quest:**
- - Bunny quest
- ([4cb67835](watch/commits/4cb6783544b483865d008990e7e6f243e8339e52))
- - Pet Rocks
- ([0608ac5c](watch/commits/0608ac5caa8e753ba4e9c3a92b5fb3c7424f4f30))
- - T-Rex pet
- ([c260362d](watch/commits/c260362d96b629a47d0ce18bacfd7fcc9554b065))
- - T-Rex pet
- ([0b63e48c](watch/commits/0b63e48c6e10478e1717f0ce132ceb0ade4ccb4d))
- - Implement Penguin pet quest
- ([d25455fa](watch/commits/d25455fa5ad9f15815c3220f6bf292e868b57a00))
-- **quests:**
- - Differentiated scrolls
- ([41241750](watch/commits/412417505f2d84d049572a9bfc73d78c3f63c344))
- - Differentiated scrolls
- ([2ca6636c](watch/commits/2ca6636c944c67f9e527d96cc41987dc83a718b2))
-- **seasonal:**
- - Normal view
- ([48246d6a](watch/commits/48246d6a7239687f3b44ad82c56aed8f6e625f4e))
- - Normal view
- ([c9b81414](watch/commits/c9b81414a4079ee8a706d19971ac68e4aa26f856))
- - Implement Snowball
- ([53fff0db](watch/commits/53fff0dbc61c2bb11bf21f1575c487ab05016214))
- - Implement snowball
- ([f7d45c95](watch/commits/f7d45c951e24abf4cfe11804f8a53a85e31df573))
- - Seasonal Shop
- ([a98a6859](watch/commits/a98a68597127f385c7729f25ff6f9f282ea20d0a))
- - Seasonal shop
- ([c7ee171e](watch/commits/c7ee171ee415be5af0f090cffd8378f7890fea74))
-- **spring:** Fling
- ([f3f5669a](watch/commits/f3f5669ab28e944e7c65deef256ac8248f98e4e5))
-- **subscriptions:** Show count of purchasable Gems
- ([62e526f8](watch/commits/62e526f8dc7b490b969a7ee9afa2ddc9c41956b2))
-- **surveys:**
- - Close out survey
- ([7065b400](watch/commits/7065b400bc6c221641a57b8129f5ade5f9aded4c))
- - Survey achievement
- ([9cfa27f0](watch/commits/9cfa27f08948a2b6b8773d6fa0d4d1bf0c36f9df))
-- **thanksgiving:**
- - revert npcs back to normal
- ([eb27a767](watch/commits/eb27a767093905ab045196f58c07389bf76eaf81))
- - add migration for turkey mounts / pets
- ([a8cf1026](watch/commits/a8cf10261042a6925f4b4949313ba891a1ca5dd0))
-- **tour:**
- - Early quit classes tour
- ([18649144](watch/commits/18649144a8b47ac6822d19c40243b32566ceb573))
- - add the other tour entries @lemoness
- ([1e8265a9](watch/commits/1e8265a9f13c364c7f2cdca1124cf2767c714926))
- - ESC to perma-close #4886 @lemoness @alys
- ([cca2d81b](watch/commits/cca2d81bc3deb757d74c3ac3283ca45c52643034))
- - update habits step wording @lemoness
- ([152853a8](watch/commits/152853a877afd1d59eb6e2c03f4a7c560f9a6283))
- - Refactor the Justin Guide to be much more streamlined and interactive. Backdrop focuses user on present task. Chapterized guides
- ([812493fe](watch/commits/812493fec5c5a15db3c2411df0ad64b30c8ceba1))
-- **world-boss:**
- - Desperation move
- ([3ee965d8](watch/commits/3ee965d8d25e896b942d8e1bfda796e83a0b0540))
- - Desperation move
- ([7925935f](watch/commits/7925935ff5de77699df31da6369a74a78ef9bcfe))
- - Healing on rage
- ([480b4e27](watch/commits/480b4e276435c93fcef31248430dee4dc3d2d1c7))
- - Healing on rage
- ([ad7c02d5](watch/commits/ad7c02d50d5a62570b7ecf356c93930a9047fb15))
+# (2015-03-28)
diff --git a/website/public/css/global-modules.styl b/website/public/css/global-modules.styl
index 45b0567d0a..e209b6406e 100644
--- a/website/public/css/global-modules.styl
+++ b/website/public/css/global-modules.styl
@@ -7,7 +7,7 @@ $clearfix
// Text shadow mixin
hrpg-text-shadow-mixin($hrpg-text-shadow-base-color)
text-shadow:
- -1px -1px 1px darken($hrpg-text-shadow-base-color,70%),
+ -1px -1px 1px darken($hrpg-text-shadow-base-color,70%),
1px -1px 1px darken($hrpg-text-shadow-base-color,70%),
-1px 1px 1px darken($hrpg-text-shadow-base-color,70%),
1px 1px 1px darken($hrpg-text-shadow-base-color,70%);
@@ -21,8 +21,8 @@ hrpg-button-color-mixin($hrpg-button-color)
@media screen and (min-width:768px)
&:hover
background-color: darken($hrpg-button-color, 2.36%) !important
- > a, > button, > input, textarea
- color: darken($hrpg-button-color, 70%) !important
+ > a, > button, > input, textarea
+ color: darken($hrpg-button-color, 70%) !important
border-color: darken($hrpg-button-color, 16.18%) !important
> input, textarea
&:hover
@@ -43,7 +43,7 @@ hrpg-button-color-mixin($hrpg-button-color)
@media screen and (min-width:768px)
border:1px solid darken($hrpg-button-color, 16.18%)
h4
- color: darken($hrpg-button-color, 61.8%)
+ color: darken($hrpg-button-color, 61.8%)
background-color: $hrpg-button-color
border-color: darken($hrpg-button-color, 16.18%)
> ul:first-child:before, > div:first-child:before
@@ -81,7 +81,7 @@ $hrpg-button-master
.glyphicon
position: relative
top: 0.132em
- > a, > button
+ > a, > button
&:active
background-color: #aaa !important
$hrpg-button
@@ -113,7 +113,7 @@ $hrpg-button-with-input
height: auto
input, textarea
border: 1px solid #ccc
- border-radius: 0.382em 0em 0em 0.382em !important
+ border-radius: 0.382em 0em 0em 0.382em !important
padding-left: 0.618em
background-color: #fff !important
-webkit-appearance: none
@@ -186,7 +186,7 @@ $hrpg-label
> a
color: #fff
text-shadow:
- -1px -1px 1px #333,
+ -1px -1px 1px #333,
1px -1px 1px #333,
-1px 1px 1px #333,
1px 1px 1px #333;
@@ -250,9 +250,9 @@ $hrpg-modal-dropdown
z-index:2
width:16px
height:16px
- border-top-width: 1px
+ border-top-width: 1px
border-top-style: solid
- border-left-width: 1px
+ border-left-width: 1px
border-left-style: solid
transform: rotate(45deg)
$hrpg-modal-dropdown-left
@@ -270,7 +270,7 @@ $hrpg-modal-dropdown-right
> ul:first-child:before, > div:first-child:before, h4:before
left: 1em
$hrpg-modal-controls
- text-align: right
+ text-align: right
border-radius:0px 0px 0.382em 0.382em
background-color: #fff
li
@@ -317,6 +317,9 @@ hrpg-tag-color-mixin($hrpg-tag-color)
background-color: darken($hrpg-tag-color,32.8%)
&.active:hover > a:before
border-right-color: darken($hrpg-tag-color,32.8%)
+// Tooltips wrapper for disabled elements
+.disabled-tooltip-wrapper
+ display: inline-block
$hrpg-tag-master
display: inline-block
@@ -348,7 +351,7 @@ $hrpg-tag-master
position: absolute
top: 0
left: -1.5em
- &:before
+ &:before
width: 0;
height: 0;
border-top: 1em solid transparent
diff --git a/website/public/js/controllers/groupsCtrl.js b/website/public/js/controllers/groupsCtrl.js
index a87992f43d..a0e1331ac9 100644
--- a/website/public/js/controllers/groupsCtrl.js
+++ b/website/public/js/controllers/groupsCtrl.js
@@ -86,7 +86,7 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', '
});
}else{
$scope.removeMemberData = undefined;
- }
+ }
}
$scope.openInviteModal = function(group){
@@ -118,7 +118,7 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', '
$rootScope.openModal('private-message',{controller:'MemberModalCtrl'});
});
}
-
+
}])
.controller('InviteToGroupCtrl', ['$scope', 'User', 'Groups', 'injectedGroup', '$http', 'Notification', function($scope, User, Groups, injectedGroup, $http, Notification){
@@ -159,6 +159,9 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', '
$scope.profile = member;
});
$scope.sendPrivateMessage = function(uuid, message){
+ // Don't do anything if the user somehow gets here without a message.
+ if (!message) return;
+
$http.post('/api/v2/members/'+uuid+'/message',{message:message}).success(function(){
Notification.text(window.env.t('messageSentAlert'));
$rootScope.User.sync();
diff --git a/website/views/shared/modals/members.jade b/website/views/shared/modals/members.jade
index 4df7fedbef..e816af71ba 100644
--- a/website/views/shared/modals/members.jade
+++ b/website/views/shared/modals/members.jade
@@ -49,8 +49,12 @@ script(type='text/ng-template', id='modals/private-message.html')
textarea.form-control(type='text',rows='5',ui-keydown='{"meta-enter":"sendPrivateMessage(profile._id, _message)"}',placeholder=env.t('needsTextPlaceholder'),ng-model='_message')
.modal-footer
//- Due to a quirk in Bootstrap UI, we need to wrap this so the tooltip can
- //- appear when disabled.
- div(style='display:inline-block',tooltip="{{_message ? '' : env.t('needsText')}}")
+ //- appear when the button is disabled.
+ //
+ //- Source: http://getbootstrap.com/javascript/#tooltips
+ // "Tooltips on disabled elements require wrapper elements"
+ //
+ .disabled-tooltip-wrapper(tooltip="{{_message ? '' : env.t('needsText')}}")
button.btn.btn-primary(ng-disabled='!_message',ng-click='sendPrivateMessage(profile._id, _message)')=env.t("send")
button.btn.btn-default(ng-click='$close()')=env.t('cancel')