sogo/UI/Templates/ContactsUI/UIxContactFoldersView.wox

270 lines
13 KiB
Plaintext
Raw Normal View History

<?xml version='1.0' standalone='yes'?>
<!DOCTYPE var:component>
<var:component
2015-01-26 04:33:00 +01:00
xmlns = "http://www.w3.org/1999/xhtml"
xmlns:var = "http://www.skyrix.com/od/binding"
xmlns:const = "http://www.skyrix.com/od/constant"
xmlns:label = "OGo:label"
const:userDefaultsKeys = "SOGoContactsCategories"
const:jsFiles = "Common/user-model.js, Common/acl-model.js, Common/resource.js, Contacts/card-model.js, Contacts/addressbook-model.js"
className = "UIxPageFrame"
title = "name"
var:popup = "isPopup">
<script type = "text/javascript">
var contactFolders =<var:string value = "contactFolders" const:escapeHTML = "NO" />;
2014-06-19 21:52:57 +02:00
</script>
<!--
<div id="uploadDialog" style="display: none" class="dialog left">
<div>
<h3><var:string label:value="Import Cards"/></h3>
<p class="prompt"><var:string label:value="Select a vCard or LDIF file."/></p>
<form const:href="" name="uploadForm" id="uploadForm" method="post"
2014-06-19 21:52:57 +02:00
enctype="multipart/form-data"
onsubmit="return AIM.submit(this, {'onStart' : validateUploadForm,
'onComplete' : uploadCompleted})">
<p class="prompt"><input type="file" name="contactsFile" id="contactsFile" class="textField" required="required" />
<a href="#" class="button actionButton" id="uploadSubmit"
onclick="if($('uploadForm').onsubmit()) $('uploadForm').submit()">
<span><var:string label:value="Upload" /></span></a>
<a href="#" class="button" const:id="uploadCancel">
<span><var:string label:value="Cancel" /></span></a></p>
</form>
<hr/>
</div>
</div>
<div id="uploadResults" data-dropdown-content="dropdown-content" class="f-dropdown">
<div>
<h3><var:string label:value="Import Cards"/></h3>
<p id="uploadResultsContent">!- empty -</p>
<p><a href="#" class="button" const:id="uploadOK">
2014-06-19 21:52:57 +02:00
<span><var:string label:value="Done" /></span></a></p>
<hr/>
</div>
</div>
2014-06-19 21:52:57 +02:00
<ul class="f-dropdown" data-dropdown-content="dropdown-content" id="contactMenu">
<li><var:string label:value="Properties" /></li>
<li><var:string label:value="Categories" /></li>
<li>!- separator -</li>
2014-06-19 21:52:57 +02:00
<li><var:string label:value="Write" /></li>
<li><var:string label:value="Instant Message" /></li>
<li>!- separator -</li>
2014-06-19 21:52:57 +02:00
<li><var:string label:value="Delete" /></li>
<li>!- separator -</li>
2014-06-19 21:52:57 +02:00
<li><var:string label:value="Move To" /></li>
<li><var:string label:value="Copy To" /></li>
<li><var:string label:value="Export" /></li>
<li><var:string label:value="View Raw Source" /></li>
</ul>
-->
2014-06-19 21:52:57 +02:00
2015-01-26 03:30:27 +01:00
<div>
2015-01-26 04:33:00 +01:00
<div data-ui-view = "addressbooks" layout = "row" style = "max-height: 100%"><!-- addressbooks list --></div>
<!-- modal for addressbook sharing options -->
2015-01-26 04:33:00 +01:00
<script type = "text/ng-template" id = "UIxUserRightsEditor">
<var:component className = "UIxContactsUserRightsEditor" />
</script>
2015-01-26 04:33:00 +01:00
<script type = "text/ng-template" id = "UIxContactFoldersView">
<!-- dropdown menu for addressbook options button -->
2015-01-26 04:33:00 +01:00
<div id = "addressbookProperties" class = "f-dropdown icons-dropdown">
<ul class = "button-group">
<li label:data-tooltip = "Links to this Address Book"
data-tooltip-popup-delay = "500">
<span class = "button"
data-sg-dropdown-content-toggle = "#addressbookLinks">
<i class = "icon-hyperlink"><!-- links --></i>
</span>
</li>
2015-01-26 04:33:00 +01:00
<li label:data-tooltip = "Rename"
data-tooltip-popup-delay = "500">
<span class = "button" data-ng-click = "edit()">
<i class = "icon-pencil"><!-- rename --></i>
</span>
</li>
2015-01-26 04:33:00 +01:00
<li data-ng-show = "addressbook.isOwned"
label:data-tooltip = "Sharing..."
data-tooltip-popup-delay = "500">
<span class = "button" data-ng-click = "share()">
<i class = "icon-share"><!-- share --></i>
</span>
</li>
2015-01-26 04:33:00 +01:00
<li label:data-tooltip = "Import Cards"
data-tooltip-popup-delay = "500">
<span class = "button" data-ng-click = "importCards()">
<i class = "icon-file"><!-- import --></i>
</span>
</li>
2015-01-26 04:33:00 +01:00
<li label:data-tooltip = "Export"
data-tooltip-popup-delay = "500">
<span class = "button" data-ng-click = "exportCards()">
<i class = "icon-ion-ios7-upload-outline"><!-- export --></i>
</span>
2014-10-15 20:37:15 +02:00
</li>
2015-01-26 04:33:00 +01:00
<li label:data-tooltip = "Delete"
data-tooltip-popup-delay = "500">
<span class = "button" data-ng-click = "confirmDelete(addressbook)">
<i class = "icon-trash"><!-- delete --></i>
</span>
</li>
2014-06-19 21:52:57 +02:00
</ul>
</div>
<!-- dropdown menu for new card split button
<ul id="newListDrop" class="f-dropdown">
<li><a class="tiny" data-ui-sref="addressbook.new({addressbookId: addressbook.id, contactType: 'list'})"><var:string label:value="New List"/></a></li>
</ul>
-->
<!-- dropdown menu for addressbook links
<div id="addressbookLinks" class="sg-dropdown-content joyride-tip-guide">
<span class="joyride-nub left">!- dropdown nub -</span>
<div class="joyride-content-wrapper">
<ul>
<li class="title"><var:string label:value="Links to this Address Book"/></li>
<li class="subtitle"><var:string label:value="CardDAV URL for Authenticated User Access"/></li>
<li class="value">{{addressbook.cardDavURL}}</li>
<var:if condition="isPublicAccessEnabled">
<li class="subtitle"><var:string label:value="CardDAV URL for Public Access"/></li>
<li class="value">{{addressbook.publicCardDavURL}}</li>
</var:if>
</ul>
</div>
</div>
-->
<!-- dropdown menu for subscriptions
2014-11-11 17:14:55 +01:00
<div id="folderSubscribe" class="sg-dropdown-content"
data-sg-subscribe="contact"
data-sg-subscribe-on-select="subscribeToFolder">!- subscription dropdown -</div>
-->
2014-11-11 17:14:55 +01:00
2015-01-26 04:33:00 +01:00
<md-sidenav class = "md-sidenav-left md-whiteframe-z1" md-component-id = "left" md-is-locked-open = "$media('gt-md')" layout = "column">
<md-toolbar class = "md-tall" layout-align = "end start">
<h2 class = "md-toolbar-tools md-toolbar-tools-bottom">
<span class = "md-flex">{{activeUser.identification}}</span>
</h2>
</md-toolbar>
2015-01-26 04:33:00 +01:00
<md-content md-scroll-y = "md-scroll-y" class = "md-padding" ng-controller = "LeftCtrl">
<md-button ng-click = "close()" class = "md-primary" hide-gt-md = "hide-gt-md">Close</md-button>
<!--<div class="newItemsToolbar">
<a class="button tiny radius split" data-ui-sref="addressbook.new({addressbookId: addressbook.id, contactType: 'card'})"><var:string label:value="New Card"/><span data-dropdown-toggle="#newListDrop"></span></a><br/>
</div>-->
<md-list>
<md-item ng-repeat = "folder in addressbooks track by folder.id"
ng-class = "{_selected: addressbook.id==folder.id}"
ng-dblclick = "edit($index)">
<md-item-content>
<i class = "icon" data-ng-class = "{'icon-earth': folder.isRemote, 'icon-address-book': folder.isEditable}"><!-- icon --></i>
<form data-ng-submit = "save($index)">
<a data-ui-sref = "addressbook({addressbookId: folder.id})"
data-ng-click = "select($index)"
data-ng-show = "editMode!=folder.id"
data-ng-cloak = "ng-cloak">{{folder.name}}
</a>
<input class = "folder-name" type = "text"
data-ng-model = "folder.name"
data-ng-show = "editMode==folder.id"
data-ng-cloak = "ng-cloak"
data-ng-blur = "save($index)"
data-sg-focus-on = "addressBookName_{{$index}}"
data-sg-escape = "revertEditing($index)" />
</form>
<span class = "icon" data-ng-cloak = "ng-cloak">
<a class = "icon" href = "#"
data-dropdown-toggle = "#addressbookProperties"
data-options = "align:right"
data-ng-show = "currentFolderIsConfigurable(folder)">
<i class = "icon-cog"><!-- options --></i>
</a>
</span>
</md-item-content>
</md-item>
</md-list>
<!--<div class="buttonsToolbar">
<button data-ng-click="newAddressbook()" class="button" label:title="New Addressbook..."><i class="icon-plus">!- new -></i></button>
<a href="#" class="button" label:title="Subscribe to an Addressbook..."
data-sg-dropdown-content-toggle="#folderSubscribe"><i class="icon-earth">!- subscribe -</i></a>
</div>-->
</md-content>
</md-sidenav>
2015-01-26 04:33:00 +01:00
<main layout = "column" layout-fill = "layout-fill">
<md-toolbar layout = "row" layout-align = "space-between start" class = "md-tall md-grey">
<!--fixme : md-toolbar-tools height is inconsistently defined, in former version it was 64px (basic toolbar height), here it's 100% -->
2015-01-26 04:33:00 +01:00
<div class = "md-toolbar-tools" ng-controller = "toggleCtrl">
<span flex = "flex">
<md-button ng-click = "toggleLeft()" class = "md-primary" hide-gt-md = "hide-gt-md">
<span class = "icon-ic_menu_24px"></span>
</md-button>
<div class = "display-1" style = "font-size: 2em; font-weight: 300">
[[Contacts]]
</div>
</span>
2015-01-26 04:33:00 +01:00
<span class = "sd-toolbar-tools">
<span>search</span>
</span>
2014-08-06 22:06:58 +02:00
</div>
</md-toolbar>
2015-01-26 04:33:00 +01:00
<md-content layout = "row" flex = "flex">
<md-content md-scroll-y = "md-scroll-y" flex = "flex" style = "min-width: 300px;" id = "contactsList">
<!-- Search field & special results
<input type="text" placeholder="Search" data-ng-model="search.filter" data-ng-keyup="doSearch($event)" />
<div data-ng-switch="search.status">
<div data-ng-switch-when="min-char" class="alert-bg">
<i class="icon-warning"></i><var:string label:value="Please enter at least three characters"/>
</div>
<div data-ng-switch-when="no-result" class="alert-bg">
<i class="icon-ion-search"></i><var:string label:value="No matching card"/>
</div>
<div data-ng-switch-when="remote-addressbook" data-ng-show="addressbook.cards.length == 0" class="alert-bg">
<i class="icon-ion-search"></i><var:string label:value="Initiate a search"/>
</div>
</div>
-->
<!--dirty fix for vs-repeat-->
<style>
.vs-repeat-repeated-element {
width: 100%;
}
</style>
2015-01-26 04:33:00 +01:00
<md-list data-vs-repeat = "72"
data-vs-scroll-parent = "#contactsList">
<md-item ng-repeat = "currentCard in addressbook.cards track by currentCard.id"
ng-class = "{_selected: card.id == currentCard.id}">
<md-item-content>
2015-01-26 04:33:00 +01:00
<div class = "md-tile-left">
<!--avatar-->
<!-- currentCard.tag = vcard || vlist -->
</div>
2015-01-26 04:33:00 +01:00
<div class = "sg-tile-content">
<a data-ui-sref = "addressbook.card.view({addressbookId: addressbook.id, cardId: currentCard.id})">
<div class = "name" ng-bind-html = "currentCard.$fullname()"><!-- cn --></div>
<div class = "subject">{{currentCard.$preferredEmail()}}</div>
</a>
</div>
</md-item-content>
2015-01-26 04:33:00 +01:00
<md-divider md-inset = "true" ng-if = "!$last"><!--divider--></md-divider>
</md-item>
</md-list>
</md-content>
2015-01-26 04:33:00 +01:00
<md-content class = "md-padding" flex = "flex" data-ui-view = "card"><!-- card view --></md-content>
</md-content>
</main>
2015-01-26 04:33:00 +01:00
</script>
<!-- UIxContactFoldersView -->
2014-08-06 22:06:58 +02:00
2015-01-26 04:33:00 +01:00
<script type = "text/ng-template" id = "UIxContactViewTemplate">
<var:component className = "UIxContactViewTemplate" />
</script>
2015-01-26 04:33:00 +01:00
<var:string value = "errorAlertJavaScript" const:escapeHTML = "NO" />
2015-01-26 03:30:27 +01:00
</div>
</var:component>