2014-08-06 22:11:39 +02:00
|
|
|
<?xml version='1.0' standalone='yes'?>
|
|
|
|
<!DOCTYPE var:component>
|
|
|
|
<var:component
|
|
|
|
xmlns="http://www.w3.org/1999/xhtml"
|
|
|
|
xmlns:var="http://www.skyrix.com/od/binding"
|
|
|
|
xmlns:const="http://www.skyrix.com/od/constant"
|
|
|
|
xmlns:uix="OGo:uix"
|
|
|
|
xmlns:label="OGo:label"
|
|
|
|
xmlns:rsrc="OGo:url"
|
|
|
|
const:userDefaultsKeys="SOGoContactsCategories"
|
2014-11-03 18:19:35 +01:00
|
|
|
const:jsFiles="Common/resource.js, Common/user-model.js, Common/acl-model.js, Contacts/card-model.js, Contacts/addressbook-model.js"
|
2014-08-06 22:11:39 +02:00
|
|
|
className="UIxPageFrame"
|
|
|
|
title="name"
|
|
|
|
var:popup="isPopup">
|
|
|
|
<script type="text/javascript">
|
|
|
|
var contactFolders = <var:string value="contactFolders" const:escapeHTML="NO"/>;
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<ion-nav-view><!-- main view --></ion-nav-view>
|
|
|
|
|
|
|
|
<script type="text/ng-template" id="addressbooks.html">
|
|
|
|
<ion-view title="Address Books">
|
|
|
|
<ion-nav-buttons side="left">
|
|
|
|
<button menu-toggle="left" class="button button-icon icon ion-navicon"><!-- menu toggle --></button>
|
|
|
|
</ion-nav-buttons>
|
2014-09-10 22:20:52 +02:00
|
|
|
<ion-nav-buttons side="right">
|
|
|
|
<a class="button button-clear button-positive button-icon icon ion-ios7-plus-empty" ng-click="newAddressbook()"><!-- new --></a>
|
|
|
|
</ion-nav-buttons>
|
2014-08-06 22:11:39 +02:00
|
|
|
<ion-content class="has-header">
|
|
|
|
<ion-list>
|
2014-09-10 22:20:52 +02:00
|
|
|
<ion-item ng-repeat="addressbook in addressbooks" option-buttons="buttons"
|
2014-09-19 02:46:52 +02:00
|
|
|
ui-sref="app.addressbook({addressbookId: addressbook.id})"
|
2014-09-10 22:20:52 +02:00
|
|
|
class="item-icon-left item-icon-right">
|
|
|
|
<i class="icon" ng-class="{'ion-earth': addressbook.isRemote}"><!-- public addressbook --></i>
|
|
|
|
{{addressbook.name}}
|
2014-08-06 22:11:39 +02:00
|
|
|
<i class="icon ion-ios7-arrow-right"><!-- right arrow icon --></i>
|
|
|
|
<ion-option-button class="button-info"
|
2014-11-03 18:19:35 +01:00
|
|
|
ng-hide="addressbook.isRemote"
|
2014-09-10 22:20:52 +02:00
|
|
|
ng-click="edit(addressbook)"><var:string label:value="Edit"/></ion-option-button>
|
2014-08-06 22:11:39 +02:00
|
|
|
</ion-item>
|
|
|
|
</ion-list>
|
|
|
|
</ion-content>
|
|
|
|
</ion-view>
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<script type="text/ng-template" id="addressbook.html">
|
|
|
|
<ion-view title="{{addressbook.name}}">
|
2014-09-05 21:12:05 +02:00
|
|
|
<ion-nav-buttons side="right">
|
2014-10-16 19:27:59 +02:00
|
|
|
<a class="button button-clear button-positive button-icon icon ion-ios7-plus-empty" ng-click="addCard()"><!-- new --></a>
|
2014-09-05 21:12:05 +02:00
|
|
|
</ion-nav-buttons>
|
2014-08-06 22:11:39 +02:00
|
|
|
<ion-content class="has-header">
|
|
|
|
<ion-list>
|
|
|
|
<ion-item class="item-input">
|
|
|
|
<i class="icon ion-search placeholder-icon"><!-- search --></i>
|
|
|
|
<input type="text"
|
|
|
|
placeholder="Search"
|
|
|
|
data-ng-model="search.filter"
|
|
|
|
data-ng-keyup="doSearch($event)"/>
|
|
|
|
</ion-item>
|
|
|
|
</ion-list>
|
|
|
|
<ion-list>
|
2014-09-05 21:12:05 +02:00
|
|
|
<ion-item class="item-icon-right" option-buttons="buttons"
|
|
|
|
data-ng-repeat="card in addressbook.cards"
|
2014-09-19 02:46:52 +02:00
|
|
|
data-ui-sref="app.card({addressbookId: addressbook.id, cardId: card.c_name})">
|
2014-08-06 22:11:39 +02:00
|
|
|
{{card.c_cn || card.c_mail}}
|
|
|
|
<i class="icon ion-ios7-arrow-right"><!-- right arrow icon --></i>
|
|
|
|
</ion-item>
|
|
|
|
</ion-list>
|
|
|
|
</ion-content>
|
|
|
|
</ion-view>
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<script type="text/ng-template" id="card.html">
|
2014-09-05 21:12:05 +02:00
|
|
|
<ion-view title="">
|
2014-08-06 22:11:39 +02:00
|
|
|
<ion-nav-buttons side="right">
|
2014-09-05 21:12:05 +02:00
|
|
|
<a class="button button-clear button-positive" data-ng-click="edit()"><var:string label:value="Edit"/></a>
|
2014-08-06 22:11:39 +02:00
|
|
|
</ion-nav-buttons>
|
|
|
|
<ion-content padding="10" class="has-header">
|
2014-09-29 17:06:46 +02:00
|
|
|
<h4 data-ng-bind-html="card.$fullname()"><!-- fullname --></h4>
|
2014-09-05 21:12:05 +02:00
|
|
|
<p>
|
2014-09-29 17:06:46 +02:00
|
|
|
{{card.$description()}}
|
|
|
|
<span class="label" data-ng-repeat="category in card.categories">{{category.value}}</span>
|
2014-09-05 21:12:05 +02:00
|
|
|
</p>
|
2014-09-29 17:06:46 +02:00
|
|
|
<ion-list class="list-clear" data-ng-show="card.birthday">
|
2014-09-05 21:12:05 +02:00
|
|
|
<ion-item class="item-icon-right">
|
|
|
|
<i class="icon ion-calendar"><!-- icon --></i>
|
2014-09-29 17:06:46 +02:00
|
|
|
<small><var:string label:value="Birthday"/></small> {{card.$birthday() | date}}
|
2014-09-05 21:12:05 +02:00
|
|
|
</ion-item>
|
|
|
|
</ion-list>
|
2014-09-29 17:06:46 +02:00
|
|
|
<ion-list class="list-clear" data-ng-show="card.refs.length > 0">
|
|
|
|
<ion-item ng-repeat="ref in card.refs"
|
2014-09-05 21:12:05 +02:00
|
|
|
href="{{UserFolderURL}}Mail/Compose/{{ref.email}}"
|
|
|
|
class="item-icon-right">
|
|
|
|
<i class="icon ion-person"><!-- icon --></i>
|
|
|
|
{{ref.fn || ref.email}}
|
|
|
|
</ion-item>
|
|
|
|
</ion-list>
|
2014-09-29 17:06:46 +02:00
|
|
|
<ion-list class="list-clear" data-ng-show="card.emails">
|
|
|
|
<ion-item ng-repeat="email in card.emails"
|
2014-08-06 22:11:39 +02:00
|
|
|
href="{{UserFolderURL}}Mail/Compose/{{email.value}}"
|
|
|
|
class="item-icon-right">
|
|
|
|
<i class="icon ion-email"><!-- icon --></i>
|
|
|
|
<small>{{email.type}}</small> {{email.value}}
|
|
|
|
</ion-item>
|
|
|
|
</ion-list>
|
2014-09-29 17:06:46 +02:00
|
|
|
<ion-list class="list-clear" data-ng-show="card.phones">
|
|
|
|
<ion-item ng-repeat="phone in card.phones"
|
2014-08-06 22:11:39 +02:00
|
|
|
href="tel:{{phone.value}}"
|
|
|
|
class="item-icon-right">
|
|
|
|
<i class="icon ion-ios7-telephone-outline"><!-- icon --></i>
|
|
|
|
<small>{{phone.type}}</small> {{phone.value}}
|
|
|
|
</ion-item>
|
|
|
|
</ion-list>
|
2014-09-29 17:06:46 +02:00
|
|
|
<ion-list class="list-clear" data-ng-show="card.urls">
|
|
|
|
<ion-item ng-repeat="url in card.urls"
|
2014-08-06 22:11:39 +02:00
|
|
|
href="{{url.value}}"
|
|
|
|
class="item-icon-right">
|
|
|
|
<i class="icon ion-link"><!-- icon --></i>
|
|
|
|
<small>{{url.type}}</small> {{url.value}}
|
|
|
|
</ion-item>
|
|
|
|
</ion-list>
|
2014-09-29 17:06:46 +02:00
|
|
|
<ion-list class="list-clear" data-ng-show="card.addresses">
|
|
|
|
<ion-item class="item-icon-right" ng-repeat="address in card.addresses">
|
2014-09-05 21:12:05 +02:00
|
|
|
<i class="icon ion-location"><!-- icon --></i>
|
2014-08-06 22:11:39 +02:00
|
|
|
<small>{{address.type}}</small>
|
|
|
|
<address data-sg-address="address"><!-- address --></address>
|
|
|
|
</ion-item>
|
|
|
|
</ion-list>
|
2014-09-29 17:06:46 +02:00
|
|
|
<ion-list class="list-clear" data-ng-show="card.note">
|
2014-08-06 22:11:39 +02:00
|
|
|
<ion-item>
|
|
|
|
<small><var:string label:value="note"/></small>
|
2014-09-29 17:06:46 +02:00
|
|
|
{{card.note}}
|
2014-08-06 22:11:39 +02:00
|
|
|
</ion-item>
|
|
|
|
</ion-list>
|
|
|
|
</ion-content>
|
|
|
|
</ion-view>
|
|
|
|
</script>
|
|
|
|
|
2014-09-05 21:12:05 +02:00
|
|
|
<script type="text/ng-template" id="cardEditor.html">
|
|
|
|
<ion-modal-view>
|
2014-09-29 17:06:46 +02:00
|
|
|
<form name="cardForm" data-ng-show="card.$isCard()">
|
2014-10-16 19:27:59 +02:00
|
|
|
<ion-header-bar class="bar-positive">
|
|
|
|
<button class="button button-clear" ng-click="cancel()"><var:string label:value="Cancel"/></button>
|
|
|
|
<button class="button button-clear" ng-click="save(cardForm)"><var:string label:value="Save"/></button>
|
|
|
|
</ion-header-bar>
|
|
|
|
<ion-content padding="10">
|
|
|
|
<ion-list class="list-clear">
|
|
|
|
<ion-item class="item-input">
|
|
|
|
<input type="text" label:placeholder="Display" ng-model="card.fn"/>
|
|
|
|
</ion-item>
|
|
|
|
<ion-item class="item-input">
|
|
|
|
<input type="text" label:placeholder="Givenname" ng-model="card.givenname"/>
|
|
|
|
</ion-item>
|
|
|
|
<ion-item class="item-input">
|
|
|
|
<input type="text" label:placeholder="Lastname" ng-model="card.sn"/>
|
|
|
|
</ion-item>
|
|
|
|
<ion-item class="item-input">
|
|
|
|
<input type="text" label:placeholder="Nickname" ng-model="card.nickname"/>
|
|
|
|
</ion-item>
|
|
|
|
<ion-item class="item-input">
|
|
|
|
<input type="text" label:placeholder="Organization" ng-model="card.org"/>
|
|
|
|
</ion-item>
|
|
|
|
<ion-item class="item-input">
|
|
|
|
<input type="text" label:placeholder="Title" ng-model="card.title"/>
|
|
|
|
</ion-item>
|
|
|
|
</ion-list>
|
|
|
|
<ion-list class="list-clear">
|
|
|
|
<ion-item ng-repeat="unit in card.orgUnits"
|
|
|
|
class="item-input">
|
|
|
|
<button class="button button-small button-assertive button-icon icon ion-minus-circled" data-ng-click="card.$delete('orgUnits', $index)"><!-- remove --></button>
|
|
|
|
<input type="text" label:placeholder="organization unit"
|
2014-09-05 21:12:05 +02:00
|
|
|
ng-model="unit.value"/>
|
2014-10-16 19:27:59 +02:00
|
|
|
</ion-item>
|
|
|
|
<ion-item>
|
|
|
|
<button class="button button-small button-clear button-positive"
|
|
|
|
data-ng-click="addOrgUnit()"><i class="icon ion-plus-circled"><!-- add --></i> <var:string label:value="Add Organizational Unit"/></button>
|
|
|
|
</ion-item>
|
|
|
|
</ion-list>
|
|
|
|
<ion-list class="list-clear">
|
|
|
|
<ion-item class="item-input">
|
|
|
|
<input type="date" label:placeholder="birthday"
|
|
|
|
ng-model="birthday"/>
|
|
|
|
</ion-item>
|
|
|
|
</ion-list>
|
|
|
|
<ion-list class="list-clear">
|
|
|
|
<ion-item ng-repeat="category in card.categories"
|
|
|
|
class="item-input">
|
|
|
|
<button class="button button-small button-assertive button-icon icon ion-minus-circled" data-ng-click="card.$delete('categories', $index)"><!-- remove --></button>
|
|
|
|
<input type="text" label:placeholder="category"
|
|
|
|
ng-model="category.value"/>
|
|
|
|
</ion-item>
|
|
|
|
<ion-item>
|
|
|
|
<button class="button button-small button-clear button-positive"
|
|
|
|
data-ng-click="addCategory()"><i class="icon ion-plus-circled"><!-- add --></i> <var:string label:value="Add Category"/></button>
|
|
|
|
</ion-item>
|
|
|
|
</ion-list>
|
|
|
|
<ion-list class="list-clear">
|
|
|
|
<ion-item ng-repeat="email in card.emails"
|
|
|
|
class="item-input item-select">
|
|
|
|
<button class="button button-small button-assertive button-icon icon ion-minus-circled" data-ng-click="card.$delete('emails', $index)"><!-- remove --></button>
|
|
|
|
<input type="text" label:placeholder="email address"
|
|
|
|
ng-model="email.value"/>
|
|
|
|
<select data-ng-model="email.type"
|
|
|
|
data-ng-options="type for type in allEmailTypes"><!-- email types --></select>
|
|
|
|
</ion-item>
|
|
|
|
<ion-item>
|
|
|
|
<button class="button button-small button-clear button-positive"
|
|
|
|
data-ng-click="addEmail()"><i class="icon ion-plus-circled"><!-- add --></i> <var:string label:value="Add Email Address"/></button>
|
|
|
|
</ion-item>
|
|
|
|
</ion-list>
|
|
|
|
<ion-list class="list-clear">
|
|
|
|
<ion-item ng-repeat="phone in card.phones"
|
|
|
|
class="item-input item-select">
|
|
|
|
<button class="button button-small button-assertive button-icon icon ion-minus-circled" data-ng-click="card.$delete('phones', $index)"><!-- remove --></button>
|
|
|
|
<input type="text" label:placeholder="phone number"
|
|
|
|
ng-model="phone.value"/>
|
|
|
|
<select data-ng-model="phone.type"
|
2014-09-05 21:12:05 +02:00
|
|
|
data-ng-options="type for type in allPhoneTypes"><!-- phone types --></select>
|
2014-10-16 19:27:59 +02:00
|
|
|
</ion-item>
|
|
|
|
<ion-item>
|
|
|
|
<button class="button button-small button-clear button-positive"
|
|
|
|
data-ng-click="addPhone()"><i class="icon ion-plus-circled"><!-- add --></i> <var:string label:value="Add Phone Number"/></button>
|
|
|
|
</ion-item>
|
|
|
|
</ion-list>
|
|
|
|
<ion-list class="list-clear">
|
|
|
|
<ion-item ng-repeat="url in card.urls"
|
|
|
|
class="item-input item-select">
|
|
|
|
<button class="button button-small button-assertive button-icon icon ion-minus-circled"
|
|
|
|
data-ng-click="card.$delete('urls', $index)"><!-- remove --></button>
|
|
|
|
<input type="text" label:placeholder="URL"
|
|
|
|
ng-model="url.value"/>
|
|
|
|
<select data-ng-model="url.type"
|
|
|
|
data-ng-options="type for type in allUrlTypes"><!-- url types --></select>
|
|
|
|
</ion-item>
|
|
|
|
<ion-item>
|
|
|
|
<button class="button button-small button-clear button-positive" data-ng-click="addUrl()">
|
|
|
|
<i class="icon ion-plus-circled"><!-- add --></i> <var:string label:value="Add URL"/>
|
|
|
|
</button>
|
|
|
|
</ion-item>
|
|
|
|
</ion-list>
|
|
|
|
<ion-list class="list-clear"
|
|
|
|
ng-repeat="address in card.addresses">
|
|
|
|
<ion-item class="item-input">
|
2014-09-05 21:12:05 +02:00
|
|
|
<button class="button button-small button-assertive button-icon icon ion-minus-circled"
|
2014-09-29 17:06:46 +02:00
|
|
|
data-ng-click="card.$delete('addresses', $index)"><!-- remove --></button>
|
2014-09-05 21:12:05 +02:00
|
|
|
<ion-list class="list-address">
|
|
|
|
<ion-item class="item-input">
|
|
|
|
<input type="text" label:placeholder="street" data-ng-model="address.street"/>
|
|
|
|
</ion-item>
|
|
|
|
<ion-item class="item-input">
|
|
|
|
<input type="text" label:placeholder="street" data-ng-model="address.street2"/>
|
|
|
|
</ion-item>
|
|
|
|
<ion-item class="item-input item-select">
|
|
|
|
<input type="text" label:placeholder="Postoffice" data-ng-model="address.postoffice"/>
|
|
|
|
<select data-ng-model="address.type"
|
|
|
|
data-ng-options="type for type in allAddressTypes"><!-- address types --></select>
|
|
|
|
</ion-item>
|
|
|
|
<ion-item class="item-input">
|
|
|
|
<input type="text" label:placeholder="City" data-ng-model="address.locality"/>
|
|
|
|
<input type="text" label:placeholder="Region" data-ng-model="address.region"/>
|
|
|
|
</ion-item>
|
|
|
|
<ion-item class="item-input">
|
|
|
|
<input type="text" label:placeholder="Country" data-ng-model="address.country"/>
|
|
|
|
<input type="text" label:placeholder="Postal Code" data-ng-model="address.postalcode"/>
|
|
|
|
</ion-item>
|
|
|
|
</ion-list>
|
2014-10-16 19:27:59 +02:00
|
|
|
</ion-item>
|
|
|
|
<ion-item>
|
2014-09-05 21:12:05 +02:00
|
|
|
<button class="button button-small button-clear button-positive" data-ng-click="addAddress()">
|
|
|
|
<i class="icon ion-plus-circled"><!-- add --></i> <var:string label:value="Add Address"/>
|
|
|
|
</button>
|
2014-10-16 19:27:59 +02:00
|
|
|
</ion-item>
|
|
|
|
</ion-list>
|
|
|
|
<ion-list class="list-clear">
|
|
|
|
<ion-item class="item-input">
|
|
|
|
<input type="text" label:placeholder="Note" data-ng-model="card.note"/>
|
|
|
|
</ion-item>
|
|
|
|
</ion-list>
|
|
|
|
<button class="button button-block button-assertive"
|
|
|
|
ng-hide="card.isNew"
|
|
|
|
ng-click="confirmDelete(card)"><var:string label:value="Delete"/></button>
|
|
|
|
</ion-content>
|
|
|
|
</form>
|
|
|
|
<form name="listForm" data-ng-show="card.$isList()">
|
|
|
|
<ion-header-bar class="bar-positive">
|
|
|
|
<button class="button button-clear" ng-click="cancel()"><var:string label:value="Cancel"/></button>
|
|
|
|
<button class="button button-clear" ng-click="save(listForm)"><var:string label:value="Save" /></button>
|
|
|
|
</ion-header-bar>
|
|
|
|
<ion-content padding="10">
|
|
|
|
<div>
|
|
|
|
<div class="subtitle">
|
2014-10-25 04:00:27 +02:00
|
|
|
<var:string label:value="List details"/>
|
2014-10-16 19:27:59 +02:00
|
|
|
</div>
|
|
|
|
<ion-list class="list-clear">
|
|
|
|
<ion-item class="item-input">
|
2014-10-25 04:00:27 +02:00
|
|
|
<input type="text" label:placeholder="List name:" ng-model="card.fn"/>
|
2014-10-16 19:27:59 +02:00
|
|
|
</ion-item>
|
|
|
|
<ion-item class="item-input">
|
2014-10-25 04:00:27 +02:00
|
|
|
<input type="text" label:placeholder="List nickname:" ng-model="card.nickname"/>
|
|
|
|
</ion-item>
|
|
|
|
<ion-item class="item-input">
|
|
|
|
<input type="text" label:placeholder="List description:" ng-model="card.description"/>
|
2014-10-16 19:27:59 +02:00
|
|
|
</ion-item>
|
|
|
|
</ion-list>
|
|
|
|
</div>
|
|
|
|
<div class="subtitle">
|
2014-10-25 04:00:27 +02:00
|
|
|
<var:string label:value="Members"/>
|
2014-10-16 19:27:59 +02:00
|
|
|
</div>
|
|
|
|
<div id="search-box" class="item-input-inset">
|
|
|
|
<div class="item-input-wrapper">
|
|
|
|
<i class="icon ion-search placeholder-icon"></i>
|
2014-10-20 19:52:35 +02:00
|
|
|
<input type="text" label:placeholder="Search" data-ng-model="search.query" data-ng-keyup="showPopOver($event)" />
|
2014-10-25 04:00:27 +02:00
|
|
|
<i ng-show="search.query" class="clear-search icon ion-ios7-close-empty" ng-click="resetSearch()"><!-- spacer --></i>
|
2014-10-16 19:27:59 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<ion-list class="list-clear">
|
|
|
|
<ion-item ng-repeat="ref in card.refs" class="item-input">
|
|
|
|
<button class="button button-small button-assertive button-icon icon ion-minus-circled"
|
|
|
|
data-ng-click="card.$delete('refs', $index)"><!-- remove --></button>
|
2014-10-25 04:00:27 +02:00
|
|
|
<span>{{ref.$shortFormat()}}</span>
|
2014-10-16 19:27:59 +02:00
|
|
|
</ion-item>
|
|
|
|
</ion-list>
|
|
|
|
<button class="button button-block button-assertive" ng-hide="card.isNew"
|
|
|
|
ng-click="confirmDelete(card)"><var:string label:value="Delete"/></button>
|
|
|
|
</ion-content>
|
|
|
|
</form>
|
|
|
|
</ion-modal-view>
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<script type="text/ng-template" id="searchFolderContacts.html">
|
|
|
|
<ion-popover-view>
|
|
|
|
<ion-content>
|
2014-10-25 04:00:27 +02:00
|
|
|
<ion-list ng-repeat="card in addressbook.cards | orderBy:['sn'] | filter:cardsFilter">
|
|
|
|
<ion-item ng-click="addMember(card)">
|
|
|
|
<span>{{card.$shortFormat(search.query)}}</span>
|
2014-09-05 21:12:05 +02:00
|
|
|
</ion-item>
|
|
|
|
</ion-list>
|
|
|
|
</ion-content>
|
2014-10-16 19:27:59 +02:00
|
|
|
</ion-popover-view>
|
2014-09-05 21:12:05 +02:00
|
|
|
</script>
|
|
|
|
|
2014-10-08 19:44:37 +02:00
|
|
|
<script type="text/ng-template" id="acl-modal.html">
|
|
|
|
<ion-modal-view>
|
|
|
|
<ion-header-bar class="bar-positive">
|
2014-11-03 18:19:35 +01:00
|
|
|
<div class="buttons" data-ng-hide="search.active">
|
2014-10-21 20:44:48 +02:00
|
|
|
<button class="button button-icon" data-ng-click="closeModal()"><var:string label:value="Close"/></button>
|
2014-10-08 20:08:54 +02:00
|
|
|
</div>
|
2014-11-03 18:19:35 +01:00
|
|
|
<div class="buttons" data-ng-show="search.active">
|
2014-10-21 20:44:48 +02:00
|
|
|
<button class="button button-icon" data-ng-click="cancelSearch()"><var:string label:value="Back"/></button>
|
2014-10-08 19:44:37 +02:00
|
|
|
</div>
|
2014-11-03 18:19:35 +01:00
|
|
|
<h1 class="title">{{title}}</h1>
|
2014-10-08 19:44:37 +02:00
|
|
|
<div class="buttons">
|
2014-10-21 20:44:48 +02:00
|
|
|
<button class="button button-icon" data-ng-click="saveModal()"><var:string label:value="Save"/></button>
|
2014-10-08 19:44:37 +02:00
|
|
|
</div>
|
|
|
|
</ion-header-bar>
|
|
|
|
<ion-content>
|
2014-11-03 18:19:35 +01:00
|
|
|
<ion-list show-delete="showDelete"
|
|
|
|
on-tap="toggleDelete(false)">
|
2014-10-08 19:44:37 +02:00
|
|
|
<div ng-repeat="user in users | orderBy:['userClass', 'displayName']">
|
2014-11-03 18:19:35 +01:00
|
|
|
<ion-item class="item-stable item-icon-left item-icon-right"
|
|
|
|
ng-click="toggleUser(user)"
|
|
|
|
on-swipe-right="toggleDelete(true)">
|
|
|
|
<i class="icon"
|
|
|
|
ng-class="(user.userClass == 'public-user') ? 'ion-ios7-people' : 'ion-ios7-person'"><!-- spacer --></i>
|
|
|
|
{{user.$shortFormat()}}
|
2014-10-21 20:44:48 +02:00
|
|
|
<i class="icon" data-ng-class="displayIcon(user)"><!-- spacer --></i>
|
2014-11-03 18:19:35 +01:00
|
|
|
<ion-delete-button class="ion-minus-circled"
|
|
|
|
ng-disabled="user.$isSpecial() || !user.inAclList"
|
|
|
|
ng-click="removeUser(user)"></ion-delete-button>
|
2014-10-08 19:44:37 +02:00
|
|
|
</ion-item>
|
2014-11-03 18:19:35 +01:00
|
|
|
<div class="item-accordion" ng-show="userIsSelected(user)">
|
|
|
|
<ion-toggle ng-hide="user.$isSpecial()"
|
|
|
|
ng-model="selectedUser.isSubscribed"
|
|
|
|
ng-checked="selectedUser.isSubscribed"
|
|
|
|
ng-disabled="selectedUser.wasSubscribed">
|
2014-10-08 19:44:37 +02:00
|
|
|
<var:string label:value="Subscribe user"/></ion-toggle>
|
2014-11-03 18:19:35 +01:00
|
|
|
<ion-checkbox data-ng-hide="selectedUser.$isAnonymous()"
|
|
|
|
data-ng-checked="selectedUser.rights.canCreateObjects"
|
|
|
|
data-ng-model="selectedUser.rights.canCreateObjects"
|
|
|
|
data-ng-change="confirmChange(selectedUser)">
|
2014-10-08 19:44:37 +02:00
|
|
|
<var:string label:value="This person can add cards to this addressbook."/></ion-checkbox>
|
2014-11-03 18:19:35 +01:00
|
|
|
<ion-checkbox data-ng-hide="selectedUser.$isAnonymous()"
|
|
|
|
data-ng-checked="selectedUser.rights.canEditObjects"
|
|
|
|
data-ng-model="selectedUser.rights.canEditObjects"
|
|
|
|
data-ng-change="confirmChange(selectedUser)">
|
2014-10-08 19:44:37 +02:00
|
|
|
<var:string label:value="This person can edit the cards of this addressbook."/></ion-checkbox>
|
2014-11-03 18:19:35 +01:00
|
|
|
<ion-checkbox data-ng-hide="selectedUser.$isAnonymous()"
|
|
|
|
data-ng-checked="selectedUser.rights.canEraseObjects"
|
|
|
|
data-ng-model="selectedUser.rights.canEraseObjects"
|
|
|
|
data-ng-change="confirmChange(selectedUser)">
|
2014-10-08 19:44:37 +02:00
|
|
|
<var:string label:value="This person can erase cards from this addressbook."/></ion-checkbox>
|
2014-11-03 18:19:35 +01:00
|
|
|
<ion-checkbox data-ng-checked="selectedUser.rights.canViewObjects"
|
|
|
|
data-ng-model="selectedUser.rights.canViewObjects"
|
|
|
|
data-ng-change="confirmChange(selectedUser)">
|
2014-10-08 19:44:37 +02:00
|
|
|
<var:string label:value="This person can read the cards of this addressbook."/></ion-checkbox>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</ion-list>
|
|
|
|
</ion-content>
|
|
|
|
<ion-footer-bar class="bar-footer">
|
2014-11-03 18:19:35 +01:00
|
|
|
<ion-search class="item item-light" label:placeholder="Add..." min-length="2"
|
|
|
|
model="usersFound"
|
|
|
|
source="searchUsers"
|
|
|
|
clear="cancelSearch()">
|
2014-10-08 19:44:37 +02:00
|
|
|
</ion-search>
|
|
|
|
</ion-footer-bar>
|
|
|
|
</ion-modal-view>
|
|
|
|
</script>
|
2014-08-06 22:11:39 +02:00
|
|
|
</var:component>
|