diff --git a/CHANGELOG.md b/CHANGELOG.md
index bacc54d3f8..28685fe452 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,282 +1,3 @@
My app - Changelog
-# (2014-02-15)
-
-
-## Documentation
-
-- **rebirth:** Bullet point about repurchase of limited ed gear after Rebirth
- ([d3f4a561](watch/commits/d3f4a561fdf137e5d8f406bae03be4fef1caff22))
-
-
-## Bug Fixes
-
-- **#2003:** healer gear not showing
- ([949cd97b](watch/commits/949cd97b91b42e9450eba559bbfea17e239ab100))
-- **#2375:** merge in @SabreCat's stats.jade changes "More elegant show/hide setup for attribute bonuses"
- ([518f200a](watch/commits/518f200a8fc7373b44ed7d7b5f016d921b0746bd))
-- **allocateNow:** Send empty object to user.ops per @colegleason suggestion
- ([f6e12fa2](watch/commits/f6e12fa25e4366622db3e6f1b6ab03e848b49e10))
-- **batch-update:** send errors to client if batch-update found an error, crash pid.
- ([f9679629](watch/commits/f967962996be69a5335454610af76d10e1db08b8))
-- **beastmaster:** fixes #2557, adds opacity to previously-owned pets after they're mounted. You can earn them back again
- ([5caaff1c](watch/commits/5caaff1cea1a68fe572e7ddf4aac50248b13df5d))
-- **bosses:** don't reset progress.up when starting a new quest. We want to be able to carry over damage from the same day a boss battle begins, even if the dailies were completed before battle-start. Fixes #2168
- ([4efd0f5e](watch/commits/4efd0f5ed8708f2491dd483f93e3d7a268a6337d))
-- **bower:** updated jquery directory
- ([191b789d](watch/commits/191b789d760a7bdc7d1b53727f6127b677c78c94))
-- **bs3:**
- - fix to MemberModalCtrl parameter
- ([ebd1df93](watch/commits/ebd1df932e28263e5cc01e8a35f545ab26f1e8bd))
- - port pet feeding bar
- ([5db96ebc](watch/commits/5db96ebca2fbd5b64f49af03a5137ea80f6b1673))
-- **buffs:** Move help bubble to left of special buffs
- ([4f911a68](watch/commits/4f911a68d805742e6744383948eea6f224f2b0ea))
-- **challenges:**
- - better handling of deleted challenges. If !chal, break the task.challenge. Move the function into userController#score so we have access to next, etc. fixes #1883
- ([33b326b5](watch/commits/33b326b59685ea6e50f9950094d009460ce80094))
- - challenge csv export now has proper filename
- ([36f21196](watch/commits/36f21196f466260b7cd52b283c50b9e16943f668),
- [#2689](watch/issues/2689))
-- **classes:**
- - misc fixes
- ([d2121a85](watch/commits/d2121a858716cb5a532a53ee9c5a1adaa74a7f69))
- - misc class fixes (not @snicker, ng-if on item store since we dynamically swap it sometimes)
- ([478be611](watch/commits/478be6111337cd200374f7f31b959725c6a0b945))
-- **css:**
- - temp fix for bailey height
- ([c8faffcc](watch/commits/c8faffcc7289090990c3a17ab8c07a00069f5ce4))
- - menu and gems wallet margin
- ([975b5165](watch/commits/975b5165730477310aa64bac27ddc07a34ea6c1d))
- - lighter columns title
- ([a22e2814](watch/commits/a22e28143f74302c8340c3d33b01af9714875523))
- - better food tray
- ([1c41c4dd](watch/commits/1c41c4ddb9a5b04297a371bc4d6aba013ce33f17))
-- **errors:**
- - `return next(err)` when experiencing errors, instead of res.json(500,{err:err}). Let the top-level error handler handle this (needed for upcoming versionerror discarding)
- ([bf5e9016](watch/commits/bf5e9016a4cb7889b3a9e39b90eb35cb8f7f9ec8))
- - handle if err.message == undefined, send err
- ([b42dacf2](watch/commits/b42dacf2035d62453b585cfcf453829a423b59de))
-- **event-tracking:**
- - typo
- ([ff9d4b88](watch/commits/ff9d4b886ef7a98da0514975441a8bb845496c31))
- - stripe sub, not pp
- ([0c99976b](watch/commits/0c99976bf5a3c7f04f031d62a8b07c862c85a0a9))
-- **find_uniq_user:** fix
- ([ecbe780e](watch/commits/ecbe780e70549b1470504efe052f238c89a9db14))
-- **footer:** ensure window.env is accessible from static pages, so we can get deferred scripts on frontpage (esp google analytics)
- ([67ee011a](watch/commits/67ee011aa35969db93e2d7dc1cd1e1f587f146de))
-- **groups:**
- - pass missing next into Like function
- ([afee0968](watch/commits/afee0968f8f6923847e186d3e11b9745ced9606e))
- - send error if +1 errored
- ([5b6c4427](watch/commits/5b6c4427b504b6143f24bfee314f562b9803c5a4))
-- **hall:** let's try $gt instead of $ne:null, the query is still slow
- ([a72b0131](watch/commits/a72b013131cfc7fa5d3affdbfe59b5b3cb15ae89))
-- **i18n:** do not save user language for now
- ([094a4be0](watch/commits/094a4be0015f0f0deaaf94a0734193eb40a8beae))
-- **misc:**
- - some styles & translations
- ([8f19f225](watch/commits/8f19f225f104960b3cf27e229a5571e014be697c))
- - isStaticPage and debug buttons
- ([19139f56](watch/commits/19139f562b8e68ed43f4cab748920f1e0634e86e))
-- **missing-gems:** remove ad-removal from script, since ads are part of subscription
- ([e1240dde](watch/commits/e1240dde1d3dcaca4235fad384fea5c07a3706bf))
-- **mongoose:** typo
- ([2786b362](watch/commits/2786b362067efdd245c3efa3a4891021fcfaab2d))
-- **mounts:**
- - fix pets & mounts css to position the user based on pet/mount equip
- ([37340d23](watch/commits/37340d23180da02d3742dc9be40a5fb780ecb13b))
- - Move avatar upward when mounted regardless of pet
- ([bc1adeb1](watch/commits/bc1adeb1277103a5ca1f756e175ed68bbe837a2f))
-- **nodemon:**
- - Add another ignore for weirdsauce Windoze dev environments
- ([3fda08c3](watch/commits/3fda08c366793c8fbcbf701a9594ae3b2fd8bbea))
- - ignore CHANGELOG.md on watch
- ([d6c55952](watch/commits/d6c55952da8b49f36e9d8e4570d80931d081343d))
-- **party:** Round boss health up instead of to nearest integer
- ([626da568](watch/commits/626da5681f5ea95700f8ddf40587c7184926971c),
- [#2504](watch/issues/2504))
-- **paypal:** fixes #2492, remove environment check for now, only have production-mode option. revisit
- ([1dc68112](watch/commits/1dc68112d131e4ebdec32ddff938eb6311d6565f))
-- **performance:** cache spritesmith image, fix #2633
- ([f03d7d7d](watch/commits/f03d7d7dde4f8cb39babd2b982d77e7f88f349b7))
-- **pets:** add questPets to UserSchema.items.mounts too fixes #2814
- ([42766125](watch/commits/42766125d5c8870f25c3a0a001473f700b8f6cc1))
-- **profile:** fix bug where empty profile displayed on username click
- ([0579c432](watch/commits/0579c432489c4a038e8c9f95ea3b285f5abc146f),
- [#2465](watch/issues/2465))
-- **quests:**
- - quests with a level cap cannot be bought before that level.
- ([dab9ddbd](watch/commits/dab9ddbda27f5e10e4545fea703deebfe2dd9975),
- [#2707](watch/issues/2707))
- - bug fix to multi-drop
- ([f478d10c](watch/commits/f478d10c20f816cd104b3f0da814c189957f45f5))
- - list multiple rewards in dialog
- ([e48c7277](watch/commits/e48c7277f8256cf827790aece51e897fe0439374))
-- **readme:** remove text about translations wip
- ([f2bb1fd2](watch/commits/f2bb1fd26e44a9eb0ba325776bf335e021beeece))
-- **settings:**
- - remove unnecessary code
- ([5f0cf657](watch/commits/5f0cf6575c0dc4cfc041956e3dc27898d8b4242d))
- - reintroduce space between captions and help bubbles stripped during localization
- ([5ddf09fe](watch/commits/5ddf09fe13c7f8d844c8c47be0fb8f8b2fd1df33))
-- **spells:**
- - temp workaround for spell & task being undefined. #2649 #2640
- ([241d0414](watch/commits/241d04140f5db77929d9f597d232f55843bb0f5d))
- - more $rootScope spell-casting bug fixes
- ([47bd6dcb](watch/commits/47bd6dcb79778d90d6f3ddeb003c3d8e45433333))
- - add some spells tests, don't send up body to spell paths
- ([e0646bb9](watch/commits/e0646bb98d44b6874b5259107c9be5fa34c58933))
- - some $rootScope.applying action fixes so cast-ending is immediate instead of waiting on response. Also, slim down party population to the essentials to avoid RequestEntityTooLarge
- ([c6f7ab8a](watch/commits/c6f7ab8a5c6f4e382208a928b90ba5f4eba9cd37))
- - to cancel spell-casting
- ([a1df41ad](watch/commits/a1df41ad8165cd9eb6d2d5d59c7fe404edde716c))
-- **stable:** show hatchable combo when petOwned>0 (fyi @deilann)
- ([51bff238](watch/commits/51bff23885ca0080e7e71ff752daa0950ae923ae))
-- **stats:** Better layout for attribute point allocation
- ([d782fc6b](watch/commits/d782fc6b6a3cd7e90d327c93a5764626b2990c74))
-- **swagger:** fix jade script warning in swagger
- ([2e2fcfcf](watch/commits/2e2fcfcf464fbae21bff9e1be1ca915f071b976b))
-- **tests:**
- - include select2 in test manifest
- ([38b4cea7](watch/commits/38b4cea73299f51c4db7f6b2eb12533d219745f8))
- - don't use cluster in tests, else we get "connection refused"
- ([7a479098](watch/commits/7a479098dc6535654e322c737d80813790967941))
-- **todos:**
- - add migration for dateCreated & dateCompleted #2478
- ([4cc39f16](watch/commits/4cc39f16a13f5fb9f0e3ddde7d274c0f224f4a0e))
- - add dateCompleted to todos so they're archived 3 days after completion, not 3 days after creation. Fixes #2478
- ([b1afc177](watch/commits/b1afc177aa4bfc4cbd9b847e40431db91666d9c3))
-- **toolbar:**
- - Tweak Settings drop-down
- ([e241429c](watch/commits/e241429cc3d2eca18d2f5a9726f6caa6270a1b02))
- - Tweak icon popovers
- ([4454204f](watch/commits/4454204f47f80e64119f7896bf246259173d115b))
- - tweaks
- ([5501d57e](watch/commits/5501d57e107c0bc7085847b0c808f027360fa405))
-- **translation:** Fix #2585.
- ([06200acc](watch/commits/06200accada462c3234ab407cfb0f6b684e5effe))
-- **translations:**
- - fix #2564 and similar ones
- ([42740902](watch/commits/42740902055a3807532028a5dfb39eff905c104f))
- - add env.t to rootScope
- ([13131087](watch/commits/13131087ff9563d2d174b2c978102f0dc2b87387))
- - remove translations for privacy & terms
- ([a9095f34](watch/commits/a9095f346479336be13b2bf341666b908fa30b3d))
- - merge @luveluen pull request, fix some syntax
- ([a6c67f17](watch/commits/a6c67f17815558f19895b8f67d29c40c14689f09))
- - @lefnire now everything is ok
- ([52decb7e](watch/commits/52decb7edeefb4755ea832b0cf63eaeea5e93259))
- - correct some variables
- ([fba73953](watch/commits/fba739535bc1b630d73eb469448e9c3706043efd))
- - revert some views
- ([d000c706](watch/commits/d000c70679ae0e13d9bec749295e42cc8e299c95))
-- **user:**
- - make sure next is passed to all routes, and is available in err-back of batch updates
- ([0c21f54c](watch/commits/0c21f54c67b52b07c417fd8216c6b04bce59d0ab))
- - if need to upgrade site, send 501, not 400
- ([ab86ba11](watch/commits/ab86ba11bdb3379a8d8fa1814879640d61c57227))
- - PUT user retricted path errors are 401, not 500
- ([0aec4caa](watch/commits/0aec4caa785c3b12e15f1c2e19c5b67b20d1a6e1))
-- **winston:** typo
- ([83b3739f](watch/commits/83b3739f4671a08466e057242f936140d5c739ef))
-
-
-## Features
-
-- **administrators:** start adding features page for admin accounts
- ([f7f4a0c1](watch/commits/f7f4a0c166558ba7e5461732f7bb6d7bcac25f88))
-- **attributes:** Add backfill button in flat and classbased allocation modes
- ([76a7ab5b](watch/commits/76a7ab5bcce2d486dab3f447f0659ba870d1ff7e))
-- **bailey:** notif about STWC updates + scroll-purchase deadlines (@colegleason)
- ([90176444](watch/commits/90176444e9c7a318040829e8b71d1493b5d58e9e))
-- **bug-crushing:** add the critical hammer of bug-crushing
- ([00af5f7d](watch/commits/00af5f7d0258b0f7dddef8ede40bd825b057748a))
-- **challenges:**
- - add angular-ui-select2 for simpler find/select challenge winner.
- ([9fa45217](watch/commits/9fa452173989889c48ed696a45cf4a1dc16294a4))
- - add button for csv export
- ([ae0d758d](watch/commits/ae0d758d8fc751219a693fee7f3e3ebcfbd67590))
- - add csv export for challenge progress. WIP, will refine this over time - but we need it something like this for the STWC come 1/31.
- ([16a602f9](watch/commits/16a602f94c3b7c99d49e42b47b4835b65a243690))
- - markdown in challenge-descriptions
- ([41233c7b](watch/commits/41233c7b167905eeccfdff5589789e002ec23f97))
-- **cheating:** prevent +habit spamming with a 10s timer
- ([ad4ca665](watch/commits/ad4ca6655a3bdd870bb08173530372f81fdc9102))
-- **event-tracking:**
- - better page-view tracking via ui-router
- ([b093717b](watch/commits/b093717b8d54b61e5d4b44b0d56a1f43308f078c))
- - track registration count
- ([72b6c9bc](watch/commits/72b6c9bc9189275909804f9ecab18e9fe1f69d27))
- - pass ga to server user.ops
- ([9217b517](watch/commits/9217b5174ab9ab4754269263b214f6bfe45d4f1d))
- - track ecommerce events
- ([d89fb17b](watch/commits/d89fb17b03b2e2c0fb1da77fb13cc660a5b6c9d1))
- - add server-side GA tracking for ecommerce events
- ([f7b4a04a](watch/commits/f7b4a04a590ade26871abc726ade2c666176488e))
- - start adding some client-side GA event-tracking
- ([ffb42906](watch/commits/ffb42906e1d7c6bd8f01e715d98d96426bc6d0de))
-- **groups:** add group chat notifications
- ([ce82be63](watch/commits/ce82be637d1d707e899aeee5f315da69367fa367))
-- **habitBirthday:** add habitrpg birthday event. includes cakes for all pets, absurd party robes, npc swap, badge, etc. @lemoness
- ([aff885c0](watch/commits/aff885c05c03bd70beeb0db8d68922671fc46309))
-- **homepage:**
- - start cleaning up homepage, add navbar for play button & upcoming links
- ([0ddaae4d](watch/commits/0ddaae4d7525277e696a57d20234e49cd6fd1cbc))
- - use .marketing for centering, add playbutton as static in footer. This is pretty ugly (http://gyazo.com/215e20729569689ab48cf56c71c1fe28), let's iterate / prettify. @deilann
- ([47bcaf83](watch/commits/47bcaf83e760dbb266ae7ff2f7299c2a1cdf3712))
-- **marketing:**
- - more copy for mobile
- ([cbb44847](watch/commits/cbb448478edfd0003c43d20ed216bab20d25dadd))
- - start fleshing out the about page with images, content, etc. Create separate videos page
- ([cb079977](watch/commits/cb079977e6f35f9308ab28158373dd3e1de9f798))
- - add video tuts on "learn more" page until we have some copy
- ([5028707c](watch/commits/5028707c7b174b5e050c7c1662155e781a6b415b))
- - some frontpage updates, a screenshot, & "contact us" button mods
- ([a582a054](watch/commits/a582a0546d680d36a21c507deff725a6c38fdb28))
-- **premium:**
- - subscriber mystery item (doesn't yet do anything)
- ([d0342628](watch/commits/d0342628340ce7dce95fa20177ccbcfe1ebf93e6))
- - backport server code for premium subs (it's just ccard handling & uer model stuff)
- ([3660f1a8](watch/commits/3660f1a85c1447de118f334a145d0d7698b93981))
- - updates to group plans info page
- ([66f95cdd](watch/commits/66f95cdd4cfb698fddc765a77b66d29e31eb1361))
- - backport client-side premium code to public repo, it's client-side anyway (@colegleason @paglias)
- ([2e18f0eb](watch/commits/2e18f0eb82f5efc77544d33d1db3fbb9cc583124))
-- **quests:**
- - add flags.levelDrops for dropping items at certain levels
- ([78315d82](watch/commits/78315d828ba9a1033526b9a72b7c385281e6ad0a))
- - allow dropping scrolls in quests
- ([54064deb](watch/commits/54064debf3c95390b5507acd826f9db3339b9f09))
- - allow html in quest notes
- ([800231cf](watch/commits/800231cf6481351032d4e5143edd54f5e7e3a179))
- - add level requirement for quests
- ([9e69d795](watch/commits/9e69d7959f174955f44429a94f22ce40fc5f7861))
- - add canBuy so we can exclude certain items from the market (if you can only find them on quest-drop, etc). This isn't the prettiest, change?
- ([f16654d2](watch/commits/f16654d2354dc86cc7c52e1cf0562f850cf203be))
- - allow quests to drop multiple items
- ([d9e5725e](watch/commits/d9e5725ee13f7e9ad329fc548537d5265cf483ca))
-- **rainbow-hair:** add rainbow hair colors
- ([82d9233d](watch/commits/82d9233d99167d6704c878884dcc49a55cc7d884))
-- **restore:** add restore-gp back in. Parly to end the winter event, partly due to the convo at #2681 regarding subscriptions. Fixes #2681
- ([179316e1](watch/commits/179316e10fa7597b08573d94721861baa3dbbb1c))
-- **toolbar:**
- - try with icons instead of text, test against prod / beta & get a vote.
- ([7456f00d](watch/commits/7456f00dc6122ad293652b7a32fb4ce671f75241))
- - add toolbar featuring navigation, gems / subs, bailey, & chat / invite notifications
- ([f72cb213](watch/commits/f72cb21300c078b439b3334bfa3e205ba04dc949))
-- **tracking:** gems > toolbar separately from wallet
- ([f6abfc67](watch/commits/f6abfc67b31808c0e2d325c235747260855338c9))
-- **valentine:** valentine event
- ([fd6eb872](watch/commits/fd6eb8724eae38d02849ffccb09f1f9c7d8e490d))
-- **winter:**
- - remove purchasable winter hair colors, keep available if they purchased during event
- ([f8796e90](watch/commits/f8796e9028d4f4cd2b5c5ede1734d2876d174dc9))
- - remove winter scrolls & snowballs
- ([52f8f0d5](watch/commits/52f8f0d5b0fdf4271fcb5f7d497ad3bf544c24e8))
-
-
-## Docs
-
-- **rebirth:** Bullet point about repurchase of limited ed gear after Rebirth
+# (2015-03-28)
diff --git a/common/locales/en/groups.json b/common/locales/en/groups.json
index 94f6ca73a3..c5c2cf8183 100644
--- a/common/locales/en/groups.json
+++ b/common/locales/en/groups.json
@@ -94,5 +94,7 @@
"abuseFlagModalBody": "Are you sure you want to report this post? You should ONLY report a post that violates the <%= firstLinkStart %>Community Guidelines<%= linkEnd %> and/or <%= secondLinkStart %>Terms of Service<%= linkEnd %>. Inappropriately reporting a post is a violation of the Community Guidelines and may give you an infraction.",
"abuseFlagModalButton": "Report",
"abuseReported": "Thank you for reporting this violation. The moderators have been notified.",
- "abuseAlreadyReported": "You have already reported this message."
+ "abuseAlreadyReported": "You have already reported this message.",
+ "needsText": "Please type a message.",
+ "needsTextPlaceholder": "Type your message here."
}
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 2823e7c231..97f19194bd 100644
--- a/website/public/js/controllers/groupsCtrl.js
+++ b/website/public/js/controllers/groupsCtrl.js
@@ -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 70b3fddd33..0add44a526 100644
--- a/website/views/shared/modals/members.jade
+++ b/website/views/shared/modals/members.jade
@@ -46,9 +46,16 @@ script(type='text/ng-template', id='modals/private-message.html')
.modal-header
h4=env.t('pmHeading', {name: "{{profile.profile.name}}"})
.modal-body
- textarea.form-control(type='text',rows='5',ui-keydown='{"meta-enter":"sendPrivateMessage(profile._id, _message)"}',ng-model='_message', focus-me)
+ textarea.form-control(type='text',rows='5',ui-keydown='{"meta-enter":"sendPrivateMessage(profile._id, _message)"}',placeholder=env.t('needsTextPlaceholder'),ng-model='_message', focus-me)
.modal-footer
- button.btn.btn-primary(ng-click='sendPrivateMessage(profile._id, _message)')=env.t("send")
+ //- Due to a quirk in Bootstrap UI, we need to wrap this so the tooltip can
+ //- 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')
script(type='text/ng-template', id='modals/send-gift.html')