script(type='text/ng-template', id='partials/options.social.challenges.detail.close.html') a.btn.btn-sm.btn-danger(ng-click="delete(closingChal)")=env.t('delete') h5= '- ' + env.t('or') + ' -' select(ui-select2, ng-required=true, ng-model='closingChal.winner', data-placeholder=env.t('selectWinner'), ng-change='selectWinner(closingChal)', style='display:block') option(value='') option(ng-repeat='u in closingChal.members', value='{{u._id}}') {{u.profile.name}} .text-right small.btn-link(ng-click='cancelClosing(closingChal)')=env.t('cancel') script(type='text/ng-template', id='partials/options.social.challenges.detail.member.html') .modal.bs-modal-lg(style='display: block') .modal-dialog.modal-lg .modal-content .modal-header button.close(type='button', ng-click='$state.go("^")', aria-hidden='true') × a(ng-click='clickMember(obj._id, true)') h3 {{obj.profile.name}} .modal-body habitrpg-tasks(main=false, modal='true') .modal-footer .btn-group.pull-left(role="group") button.btn.btn-default(ng-click='clickMember(obj._id, true)') .glyphicon.glyphicon-user button.btn.btn-default(ng-click='sendMessageToChallengeParticipant(obj._id)') .glyphicon.glyphicon-envelope button.btn.btn-default(ng-click='sendGiftToChallengeParticipant(obj._id)') .glyphicon.glyphicon-gift a.btn.btn-default(ng-click='$state.go("^")')=env.t('close') script(type='text/ng-template', id='partials/options.social.challenges.detail.html') // Edit button div(bindonce='challenge', ng-if='challenge.leader._id==user._id || user.contributor.admin') div(ng-hide='challenge._locked==false') button.btn.btn-sm.btn-default(ng-click='edit(challenge)')=env.t('edit') button.btn.btn-sm.btn-success(ng-click='clone(challenge)')=env.t('clone') button.btn.btn-sm.btn-warning(ng-click='close(challenge, $event)', tooltip=env.t('deleteOrSelect'))=env.t('endChallenge') form(ng-show='challenge._locked==false') .form-group(ng-show='challenge._locked==false') button.btn.btn-sm.btn-primary(ng-click='save(challenge)')=env.t('save') button.btn.btn-sm.btn-default(ng-click='challenge._locked=true')=env.t('cancel') .form-group input.form-control(type='text', ng-model='challenge.name') .form-group input.form-control(type='text', minlength="3", maxlength="16", ng-model='challenge.shortName', placeholder=env.t('challengeTag'), required) .form-group textarea.form-control(cols='3', placeholder=env.t('challengeDescr'), ng-model='challenge.description') hr .well(bindonce='challenge', ng-if='challenge.description') markdown(text='challenge.description') .modal-body=env.t('challengeDiscription') habitrpg-tasks(obj='challenge', main=false) // Member List div(bindonce='challenge', ng-if='challenge.members.length > 0') a.btn.btn-primary.btn-sm.pull-right(ng-href='/api/v2/challenges/{{challenge._id}}/csv') =env.t('exportChallengeCSV') h3=env.t('hows') menu button.customize-option(ng-repeat='member in challenge.members track by member._id', ng-click='toggleMember(challenge._id, member._id)') {{member.profile.name}} div(ui-view) // Accordion version if we choose that instead //- div(ng-if='challenge.members') h4=env.t('hows') .accordion-group(bindonce='challenge.members', ng-repeat='member in challenge.members') .accordion-heading a.accordion-toggle(ng-click='toggleMember(challenge._id, member._id)') {{member.profile.name}} .accordion-body(ng-class='{collapse: $stateParams.uid != member._id}') .accordion-inner(ng-if='$stateParams.uid == member._id') div(ui-view) script(type='text/ng-template', id='partials/options.social.challenges.html') .options-blurbmenu small.muted=env.t('blurbChallenges') .container-fluid .row .col-md-2 .well#challenges-filters(ng-hide="cid") h3=env.t('filter') + ':' h4=env.t('groups') ul.list-unstyled a.btn.btn-xs.btn-default.pull-left(ng-click='selectAll()')=env.t('all') a.btn.btn-xs.btn-default(ng-click='selectNone()')=env.t('none') br .checkbox(ng-repeat='group in groupsFilter') label input(type='checkbox', ng-model='search.group[group._id]') | {{group.name}} h4=env.t('membership') .radio label input(type='radio', name='search-participation-radio', ng-model='search._isMember', ng-value='true', ng-change='filterChallenges') =env.t('participating') .radio label input(type='radio', name='search-participation-radio', ng-model='search._isMember', ng-value='false', ng-change='filterChallenges') =env.t('notParticipating') .radio label input(type='radio', name='search-participation-radio', ng-model='search._isMember', value='either', ng-change='filterChallenges') =env.t('either') h4=env.t('challengedOwnedFilterHeader') .radio label input(type='radio', name='search-owner-radio', ng-model='search._isOwner', ng-value='true', ng-change='filterChallenges') =env.t('challengedOwnedFilter') .radio label input(type='radio', name='search-owner-radio', ng-model='search._isOwner', ng-value='false', ng-change='filterChallenges') =env.t('challengedNotOwnedFilter') .radio label input(type='radio', name='search-owner-radio', ng-model='search._isOwner', value='either', ng-change='filterChallenges', checked='checked') =env.t('challengedEitherOwnedFilter') .col-md-10 a.btn.btn-info#back-to-challenges(ng-show="cid", ui-sref='options.social.challenges', ui-sref-opts='{reload: true}') =env.t('backToChallenges') // Creation form button.btn.btn-success#create-challenge-btn(ng-click='create()', ng-hide='newChallenge')=env.t('createChallenge') .create-challenge-from.well(ng-if='newChallenge') form(ng-submit='save(newChallenge)') div input.btn.btn-success(type='submit', value=env.t('save'), ng-disabled='insufficientGemsForTavernChallenge()') input.btn.btn-danger(type='button', ng-click='discard()', value=env.t('discard')) select(ng-model='newChallenge.group', ng-required='required', name='Group', ng-options='g._id as g.name for g in groups') .alert.alert-warning(ng-if='insufficientGemsForTavernChallenge()', ng-click='openModal("buyGems",{track:"Gems > Toolbar"})') =env.t('challengeNotEnoughGems') .challenge-options(ng-show='newChallenge.group') .form-group input.form-control(type='text', ng-model='newChallenge.name', placeholder=env.t('challengeTitle'), required='required', ng-disabled='insufficientGemsForTavernChallenge()') .form-group input.form-control(type='text', minlength="3", maxlength="16", ng-model='newChallenge.shortName', placeholder=env.t('challengeTag'), required ng-disabled='insufficientGemsForTavernChallenge()') |  a.hint.vertical-20(target='_blank', href='http://habitica.wikia.com/wiki/Tags', popover=env.t('challengeTagPop'), popover-trigger='mouseenter', popover-placement='right') =env.t('moreInfo') .form-group textarea.form-control(cols='3', placeholder=env.t('challengeDescr'), ng-model='newChallenge.description' ng-disabled='insufficientGemsForTavernChallenge()') .form-group .input-group span.input-group-addon .Pet_Currency_Gem1x input.form-control(type='number', placeholder=env.t('prize'), ng-disabled='insufficientGemsForTavernChallenge()' min="{{newChallenge.group=='habitrpg' ? 1 : 0}}", max="{{maxPrize}}", ng-model='newChallenge.prize') a.hint(popover="{{newChallenge.group=='habitrpg' ? env.t('prizePopTavern') : env.t('prizePop')}}", popover-trigger='mouseenter', popover-placement='right') =env.t('moreInfo') .pull-right(ng-show='newChallenge.group=="habitrpg"') !=env.t('publicChallenges') .form-group(ng-if='user.contributor.admin') .checkbox label input(type='checkbox', ng-model='newChallenge.official') =env.t('officialChallenge') habitrpg-tasks(main=false, obj='newChallenge') // Challenges list .panel-group .panel.panel-default(ng-repeat='challenge in challenges|filter:filterChallenges track by challenge._id ') .panel-heading ul.pull-right.challenge-accordion-header-specs li.bg-transparent(ng-if='challenge.official') span.label.label-success=env.t('officialChallenge') li a(ui-sref="options.social.guilds.detail({gid:challenge.group._id})" ng-if="challenge.group.type=='guild'") | {{challenge.group.name}} a(ui-sref="options.social.party" ng-if="challenge.group.type=='party'") | {{challenge.group.name}} li =env.t('by') + ' ' a(ng-click='clickMember(challenge.leader._id, true)') {{challenge.leader.profile.name}} li =env.t('participants', {membercount: "{{challenge.memberCount}}"}) li(ng-show='challenge.prize') p!=env.t('prizeValue', {gemcount: "{{challenge.prize}}", gemicon: ""}) li.bg-transparent // leave / join a.btn.btn-sm.btn-danger(ng-show='challenge._isMember', ng-click='clickLeave(challenge, $event)') span.glyphicon.glyphicon-ban-circle =env.t('leave') a.btn.btn-sm.btn-success(ng-hide='challenge._isMember', ng-click='join(challenge)') span.glyphicon.glyphicon-ok =env.t('join') a.accordion-toggle(id="{{challenge._id}}" ng-click='toggle(challenge._id)') {{challenge.name}} .panel-body(ng-class='{collapse: !$stateParams.cid == challenge._id}') .accordion-inner(ng-if='$stateParams.cid == challenge._id') div(ui-view)