mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-08-29 02:07:36 +00:00
(js) Make use of 'controllerAs' in Mailer module
This commit is contained in:
@@ -1,182 +1,185 @@
|
||||
<?xml version="1.0" standalone="yes"?>
|
||||
<!DOCTYPE container>
|
||||
<container
|
||||
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"
|
||||
xmlns:uix="OGo:uix"><var:string var:value="doctype" const:escapeHTML="NO" />
|
||||
<div id="messageEditor">
|
||||
<md-content class="md-padding bg-sogoPaper-50">
|
||||
<form>
|
||||
<header>
|
||||
xmlns:label="OGo:label">
|
||||
|
||||
<!-- FROM / TO / CC/ BCC / SUBJECT / ATTACHMENTS -->
|
||||
<div class="msg-header-content">
|
||||
<md-input-container>
|
||||
<label> <var:string label:value="From"/></label>
|
||||
<md-select name="from"
|
||||
ng-model="message.editable.from">
|
||||
<md-option ng-value="identity" ng-repeat="identity in identities">{{identity}}</md-option>
|
||||
</md-select>
|
||||
</md-input-container>
|
||||
|
||||
<div class="pseudo-input-container">
|
||||
<label class="pseudo-input-label">
|
||||
<var:string label:value="To"/>
|
||||
</label>
|
||||
<md-chips ng-model="message.editable.to">
|
||||
<md-autocomplete
|
||||
md-selected-item="autocomplete.to.selected"
|
||||
md-search-text="autocomplete.to.searchText"
|
||||
md-items="user in userFilter(autocomplete.to.searchText)"
|
||||
label:placeholder="Add a recipient">
|
||||
<span md-highlight-text="autocomplete.to.searchText">{{user}}</span>
|
||||
</md-autocomplete>
|
||||
</md-chips>
|
||||
</div>
|
||||
|
||||
<div class="pseudo-input-container" ng-hide="hideCc">
|
||||
<label class="pseudo-input-label">
|
||||
<var:string label:value="Cc"/>
|
||||
</label>
|
||||
<md-chips ng-model="message.editable.cc">
|
||||
<md-autocomplete
|
||||
md-selected-item="autocomplete.cc.selected"
|
||||
md-search-text="autocomplete.cc.searchText"
|
||||
md-items="user in userFilter(autocomplete.cc.searchText)"
|
||||
label:placeholder="Add a recipient">
|
||||
<span md-highlight-text="autocomplete.cc.searchText">{{user}}</span>
|
||||
</md-autocomplete>
|
||||
</md-chips>
|
||||
</div>
|
||||
|
||||
<div class="pseudo-input-container" ng-hide="hideBcc">
|
||||
<label class="pseudo-input-label">
|
||||
<var:string label:value="Bcc"/>
|
||||
</label>
|
||||
<md-chips ng-model="message.editable.bcc">
|
||||
<md-autocomplete
|
||||
md-selected-item="autocomplete.bcc.selected"
|
||||
md-search-text="autocomplete.bcc.searchText"
|
||||
md-items="user in userFilter(autocomplete.bcc.searchText)"
|
||||
label:placeholder="Add a recipient">
|
||||
<span md-highlight-text="autocomplete.bcc.searchText">{{user}}</span>
|
||||
</md-autocomplete>
|
||||
</md-chips>
|
||||
</div>
|
||||
|
||||
<md-input-container>
|
||||
<label>
|
||||
<var:string label:value="Subject"/>
|
||||
</label>
|
||||
<input type="text" name="subject" ng-model="message.editable.subject"/>
|
||||
</md-input-container>
|
||||
|
||||
<md-list>
|
||||
<!-- FILES ALREADY UPLOADED, FOR EXAMPLE WHEN WE FORWARD A
|
||||
MAIL WITH ATTACHMENTS -->
|
||||
<md-list-item ng-repeat="item in message.editable.attachmentAttrs">
|
||||
<div layout="row" layout-align="space-between center">
|
||||
<span ng-bind="item.filename"><!-- filename --></span>
|
||||
<md-button class="sg-icon-button"
|
||||
ng-click="message.$deleteAttachment(item.filename);">
|
||||
<md-icon>remove_circle_outline</md-icon>
|
||||
</md-button>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<!-- FILE BEING ATTACHED TO A MAIL -->
|
||||
<md-list-item ng-repeat="item in uploader.queue">
|
||||
<div layout="row" layout-align="space-between center">
|
||||
<span ng-bind="item.file.name"><!-- filename --></span>
|
||||
<md-progress-linear md-mode="determinate"
|
||||
value="{{item.progress}}"
|
||||
ng-show="item.isUploading" ><!-- progress--></md-progress-linear>
|
||||
<md-button class="sg-icon-button"
|
||||
ng-click="uploader.cancelItem(item)"
|
||||
ng-show="item.isUploading">
|
||||
<md-icon>cancel</md-icon>
|
||||
</md-button>
|
||||
<md-button class="sg-icon-button"
|
||||
ng-click="message.$deleteAttachment(item.file.name);item.remove();"
|
||||
ng-show="!item.isUploading">
|
||||
<md-icon>remove_circle_outline</md-icon>
|
||||
</md-button>
|
||||
</div>
|
||||
</md-list-item>
|
||||
</md-list>
|
||||
</div>
|
||||
|
||||
<!-- </div> -->
|
||||
|
||||
<!-- TOOLBAR TO SHOW CC/BCC/ATTACHMENT FIELDS -->
|
||||
<div layout="column" layout-align="start end">
|
||||
<md-button ng-show="hideCc" ng-click="hideCc = false">Cc</md-button>
|
||||
<md-button ng-show="hideBcc" ng-click="hideBcc = false">Bcc</md-button>
|
||||
|
||||
<md-button>
|
||||
<label for="file-input">
|
||||
Add files
|
||||
</label>
|
||||
<md-toolbar layout="column" layout-align="space-between start" class="md-tall toolbar-main">
|
||||
<div class="md-toolbar-tools md-toolbar-tools-top sg-padded" layout="row" layout-align="space-between start">
|
||||
<div class="sg-toolbar-group-last">
|
||||
<md-button class="sg-icon-button" label:aria-label="More">
|
||||
<md-icon>more_vert</md-icon>
|
||||
</md-button>
|
||||
<input id="file-input" type="file"
|
||||
nv-file-select="nv-file-select"
|
||||
multiple="multiple"
|
||||
uploader="uploader"
|
||||
ng-show="false"/>
|
||||
|
||||
<md-menu>
|
||||
<md-button label:aria-label="More mail options" class="iconBtton" ng-click="$mdOpenMenu($event)">
|
||||
<md-icon>more_vert</md-icon>
|
||||
</md-button>
|
||||
<md-menu-content width="4">
|
||||
<md-menu-item>
|
||||
<md-button>
|
||||
<md-checkbox ng-model="message.editable.receipt">
|
||||
<var:string label:value="Receipt"/>
|
||||
</md-checkbox>
|
||||
</md-button>
|
||||
</md-menu-item>
|
||||
<md-menu-item>
|
||||
<div layout="row" layout-align="center center">
|
||||
<span>
|
||||
<var:string label:value="Priority"/>
|
||||
</span>
|
||||
<md-slider flex="flex"
|
||||
md-discrete="md-discrete"
|
||||
ng-model="message.editable.priority"
|
||||
step="1"
|
||||
min="1"
|
||||
max="5"
|
||||
label:aria-label="Priority">
|
||||
</md-slider>
|
||||
</div>
|
||||
</md-menu-item>
|
||||
</md-menu-content>
|
||||
</md-menu>
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
<!-- MESSAGE CONTENT -->
|
||||
<textarea name="content" var:class="editorClass"
|
||||
ng-model="message.editable.text"/>
|
||||
|
||||
<!-- TOOLBAR BUTTONS -->
|
||||
<div class="buttonsToolbar">
|
||||
<div layout="row" layout-align="end center">
|
||||
<md-button ng-click="cancel()"><var:string label:value="Cancel"/></md-button>
|
||||
<md-button ng-click="message.$save()">
|
||||
<var:string label:value="Save"/>
|
||||
</md-button>
|
||||
<md-button class="fg-sogoBlue-700 md-primary md-hue-3"
|
||||
ng-click="send(message)">
|
||||
<var:string label:value="Send"/>
|
||||
</md-button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</md-content>
|
||||
</div>
|
||||
</md-toolbar>
|
||||
|
||||
<md-content class="md-padding bg-sogoPaper-50">
|
||||
<form>
|
||||
<header>
|
||||
|
||||
<!-- FROM / TO / CC/ BCC / SUBJECT / ATTACHMENTS -->
|
||||
<div class="msg-header-content">
|
||||
<md-input-container>
|
||||
<label> <var:string label:value="From"/></label>
|
||||
<md-select name="from"
|
||||
ng-model="editor.message.editable.from">
|
||||
<md-option ng-value="identity" ng-repeat="identity in editor.identities">{{identity}}</md-option>
|
||||
</md-select>
|
||||
</md-input-container>
|
||||
|
||||
<div class="pseudo-input-container">
|
||||
<label class="pseudo-input-label">
|
||||
<var:string label:value="To"/>
|
||||
</label>
|
||||
<md-chips ng-model="editor.message.editable.to">
|
||||
<md-autocomplete
|
||||
md-selected-item="editor.autocomplete.to.selected"
|
||||
md-search-text="editor.autocomplete.to.searchText"
|
||||
md-items="user in editor.userFilter(editor.autocomplete.to.searchText)"
|
||||
label:placeholder="Add a recipient">
|
||||
<span md-highlight-text="editor.autocomplete.to.searchText">{{user}}</span>
|
||||
</md-autocomplete>
|
||||
</md-chips>
|
||||
</div>
|
||||
|
||||
<div class="pseudo-input-container" ng-hide="editor.hideCc">
|
||||
<label class="pseudo-input-label">
|
||||
<var:string label:value="Cc"/>
|
||||
</label>
|
||||
<md-chips ng-model="editor.message.editable.cc">
|
||||
<md-autocomplete
|
||||
md-selected-item="editor.autocomplete.cc.selected"
|
||||
md-search-text="editor.autocomplete.cc.searchText"
|
||||
md-items="user in editor.userFilter(editor.autocomplete.cc.searchText)"
|
||||
label:placeholder="Add a recipient">
|
||||
<span md-highlight-text="editor.autocomplete.cc.searchText">{{user}}</span>
|
||||
</md-autocomplete>
|
||||
</md-chips>
|
||||
</div>
|
||||
|
||||
<div class="pseudo-input-container" ng-hide="editor.hideBcc">
|
||||
<label class="pseudo-input-label">
|
||||
<var:string label:value="Bcc"/>
|
||||
</label>
|
||||
<md-chips ng-model="editor.message.editable.bcc">
|
||||
<md-autocomplete
|
||||
md-selected-item="editor.autocomplete.bcc.selected"
|
||||
md-search-text="editor.autocomplete.bcc.searchText"
|
||||
md-items="user in editor.userFilter(editor.autocomplete.bcc.searchText)"
|
||||
label:placeholder="Add a recipient">
|
||||
<span md-highlight-text="editor.autocomplete.bcc.searchText">{{user}}</span>
|
||||
</md-autocomplete>
|
||||
</md-chips>
|
||||
</div>
|
||||
|
||||
<md-input-container>
|
||||
<label>
|
||||
<var:string label:value="Subject"/>
|
||||
</label>
|
||||
<input type="text" name="subject" ng-model="editor.message.editable.subject"/>
|
||||
</md-input-container>
|
||||
|
||||
<md-list>
|
||||
<!-- FILES ALREADY UPLOADED, FOR EXAMPLE WHEN WE FORWARD A
|
||||
MAIL WITH ATTACHMENTS -->
|
||||
<md-list-item ng-repeat="item in editor.message.editable.attachmentAttrs">
|
||||
<div layout="row" layout-align="space-between center">
|
||||
<span ng-bind="item.filename"><!-- filename --></span>
|
||||
<md-button class="sg-icon-button"
|
||||
ng-click="editor.message.$deleteAttachment(item.filename);">
|
||||
<md-icon>remove_circle_outline</md-icon>
|
||||
</md-button>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<!-- FILE BEING ATTACHED TO A MAIL -->
|
||||
<md-list-item ng-repeat="item in editor.uploader.queue">
|
||||
<div layout="row" layout-align="space-between center">
|
||||
<span ng-bind="item.file.name"><!-- filename --></span>
|
||||
<md-progress-linear md-mode="determinate"
|
||||
value="{{item.progress}}"
|
||||
ng-show="item.isUploading" ><!-- progress--></md-progress-linear>
|
||||
<md-button class="sg-icon-button"
|
||||
ng-click="editor.uploader.cancelItem(item)"
|
||||
ng-show="item.isUploading">
|
||||
<md-icon>cancel</md-icon>
|
||||
</md-button>
|
||||
<md-button class="sg-icon-button"
|
||||
ng-click="editor.message.$deleteAttachment(item.file.name); item.remove();"
|
||||
ng-show="!item.isUploading">
|
||||
<md-icon>remove_circle_outline</md-icon>
|
||||
</md-button>
|
||||
</div>
|
||||
</md-list-item>
|
||||
</md-list>
|
||||
</div>
|
||||
|
||||
<!-- </div> -->
|
||||
|
||||
<!-- TOOLBAR TO SHOW CC/BCC/ATTACHMENT FIELDS -->
|
||||
<div layout="column" layout-align="start end">
|
||||
<md-button ng-show="editor.hideCc" ng-click="editor.hideCc = false">Cc</md-button>
|
||||
<md-button ng-show="editor.hideBcc" ng-click="editor.hideBcc = false">Bcc</md-button>
|
||||
|
||||
<md-button>
|
||||
<label for="file-input">
|
||||
Add files
|
||||
</label>
|
||||
</md-button>
|
||||
<input id="file-input" type="file"
|
||||
nv-file-select="nv-file-select"
|
||||
multiple="multiple"
|
||||
uploader="editor.uploader"
|
||||
ng-show="false"/>
|
||||
|
||||
<md-menu>
|
||||
<md-button label:aria-label="More mail options" class="iconBtton" ng-click="$mdOpenMenu($event)">
|
||||
<md-icon>more_vert</md-icon>
|
||||
</md-button>
|
||||
<md-menu-content width="4">
|
||||
<md-menu-item>
|
||||
<md-button>
|
||||
<md-checkbox ng-model="editor.message.editable.receipt">
|
||||
<var:string label:value="Receipt"/>
|
||||
</md-checkbox>
|
||||
</md-button>
|
||||
</md-menu-item>
|
||||
<md-menu-item>
|
||||
<div layout="row" layout-align="center center">
|
||||
<span>
|
||||
<var:string label:value="Priority"/>
|
||||
</span>
|
||||
<md-slider flex="flex"
|
||||
md-discrete="md-discrete"
|
||||
ng-model="editor.message.editable.priority"
|
||||
step="1"
|
||||
min="1"
|
||||
max="5"
|
||||
label:aria-label="Priority">
|
||||
</md-slider>
|
||||
</div>
|
||||
</md-menu-item>
|
||||
</md-menu-content>
|
||||
</md-menu>
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
<!-- MESSAGE CONTENT -->
|
||||
<textarea name="content" var:class="editorClass"
|
||||
ng-model="editor.message.editable.text"/>
|
||||
|
||||
<!-- TOOLBAR BUTTONS -->
|
||||
<div class="buttonsToolbar">
|
||||
<div layout="row" layout-align="end center">
|
||||
<md-button ng-click="editor.cancel()"><var:string label:value="Cancel"/></md-button>
|
||||
<md-button ng-click="editor.message.$save()"><var:string label:value="Save"/></md-button>
|
||||
<md-button class="fg-sogoBlue-700 md-primary md-hue-3"
|
||||
ng-click="editor.send()"><var:string label:value="Send"/></md-button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</md-content>
|
||||
</container>
|
||||
|
||||
@@ -2,24 +2,24 @@
|
||||
<container
|
||||
xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:label="OGo:label">
|
||||
<div class="view-list md-layout-fill" layout="column" flex="true" style="position: relative;">
|
||||
<div class="view-list md-layout-fill md-flex" layout="column" style="position: relative;">
|
||||
<md-content id="messagesList">
|
||||
<style>
|
||||
.vs-repeat-repeated-element {
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
<md-progress-linear ng-show="mailbox.$isLoading" md-mode="indeterminate"><!-- progress --></md-progress-linear>
|
||||
<md-progress-linear ng-show="mailbox.selectedFolder.$isLoading" md-mode="indeterminate"><!-- progress --></md-progress-linear>
|
||||
<header class="sg-md-subheader sg-md-subheader--fixed">
|
||||
<h2 class="sg-md-subhead-solo fg-sogoBlue-700">Messages</h2>
|
||||
</header>
|
||||
<md-list vs-repeat="72"
|
||||
vs-scroll-parent="#messagesList">
|
||||
<md-list-item
|
||||
ng-repeat="currentMessage in mailbox.$messages track by currentMessage.id"
|
||||
ng-repeat="currentMessage in mailbox.selectedFolder.$messages track by currentMessage.id"
|
||||
ng-class="{unread: !currentMessage.isread}"
|
||||
ng-click="selectMessage(currentMessage)"
|
||||
ui-sref="mail.account.mailbox.message({accountId: account.id, mailboxId: (mailbox.path | encodeUri), messageId: currentMessage.uid})"
|
||||
ng-click="mailbox.selectMessage(currentMessage)"
|
||||
ui-sref="mail.account.mailbox.message({accountId: mailbox.account.id, mailboxId: (mailbox.selectedFolder.path | encodeUri), messageId: currentMessage.uid})"
|
||||
ui-sref-active="sg-active">
|
||||
<div class="sg-selected-avatar" ng-show="currentMessage.selected"
|
||||
ng-click="currentMessage.selected = !currentMessage.selected">
|
||||
@@ -38,7 +38,7 @@
|
||||
<div class="sg-md-subhead-multi">{{currentMessage.$shortAddress('from')}}</div>
|
||||
<div class="sg-md-body-multi">{{currentMessage.subject}}</div>
|
||||
<i class="icon-ion-refresh"
|
||||
ng-hide="mailbox.$loadMessage(currentMessage.uid)"><!-- loading --></i>
|
||||
ng-hide="mailbox.selectedFolder.$loadMessage(currentMessage.uid)"><!-- loading --></i>
|
||||
</div>
|
||||
<div class="sg-tile-icons">
|
||||
<md-icon ng-show="currentMessage.isflagged">star</md-icon>
|
||||
@@ -51,13 +51,13 @@
|
||||
</md-content>
|
||||
<md-button class="md-fab md-fab-bottom-right md-accent"
|
||||
label:aria-label="Write a new message"
|
||||
ui-sref="mail.newMessage()">
|
||||
ui-sref="mail.account.mailbox.newMessage({accountId: mailbox.account.id, mailboxId: (mailbox.selectedFolder.path | encodeUri)})">
|
||||
<md-icon>add</md-icon>
|
||||
</md-button>
|
||||
</div>
|
||||
|
||||
<!-- This extra container is used to animate views transitions
|
||||
double quotes in ng-animate is not a typo -->
|
||||
<div ng-show="message" id="detailView" class="view-detail ng-cloak" layout="column" ui-view="message" ng-animate="'view'"><!-- message view --></div>
|
||||
<div id="detailView" class="view-detail ng-cloak" layout="column" ui-view="message" ng-animate="'view'"><!-- message view --></div>
|
||||
|
||||
</container>
|
||||
|
||||
@@ -236,45 +236,47 @@
|
||||
<md-sidenav id="left-sidenav" class="md-sidenav-left md-whiteframe-z1 md-layout-fill" md-component-id="left" md-is-locked-open="isGtMedium" layout="column">
|
||||
<var:component className="UIxSidenavToolbarTemplate" />
|
||||
<md-content md-scroll-y="md-scroll-y" class="md-flex">
|
||||
<section ng-repeat="account in accounts track by account.id">
|
||||
<section ng-repeat="account in app.accounts track by account.id">
|
||||
<md-subheader class="sg-md-subheader">
|
||||
<div layout="row" layout-align="space-between center">
|
||||
<span>{{account.name}}</span>
|
||||
<div>
|
||||
<md-button class="sg-icon-button"
|
||||
label:aria-label="New Folder..."
|
||||
ng-click="newFolder(account)">
|
||||
ng-click="app.newFolder(account)">
|
||||
<md-icon>add_circle_outline</md-icon>
|
||||
</md-button>
|
||||
<md-button class="sg-icon-button"
|
||||
ng-show="account.id == 0"
|
||||
label:aria-label="Delegation..."
|
||||
ng-click="delegate(account)">
|
||||
ng-click="app.delegate(account)">
|
||||
<md-icon>people</md-icon>
|
||||
</md-button>
|
||||
</div>
|
||||
</div>
|
||||
</md-subheader>
|
||||
<md-list>
|
||||
<md-list-item ng-repeat="folder in account.$flattenMailboxes() track by folder.path"
|
||||
ng-click="selectFolder(account, folder)"
|
||||
ng-dblclick="editFolder(folder)"
|
||||
ng-click="app.selectFolder(account, folder)"
|
||||
ng-dblclick="app.editFolder(folder)"
|
||||
ui-sref="mail.account.mailbox({accountId: account.id, mailboxId: (folder.path | encodeUri)})"
|
||||
ui-sref-active="sg-active">
|
||||
<md-icon ng-class="'sg-child-level-' + folder.level">{{iconForFolder(folder)}}</md-icon>
|
||||
<md-icon ng-class="'sg-child-level-' + folder.level">{{app.iconForFolder(folder)}}</md-icon>
|
||||
<p class="sg-item-name"
|
||||
ng-show="editMode != folder.path">{{folder.name}}</p>
|
||||
ng-show="app.editMode != folder.path">{{folder.name}}</p>
|
||||
<md-input-container class="md-flex md-tile-content"
|
||||
ng-show="editMode == folder.path">
|
||||
ng-show="app.editMode == folder.path">
|
||||
<input class="folder-name" type="text"
|
||||
label:aria-label="Enter the new name of your folder :"
|
||||
ng-model="folder.name"
|
||||
ng-blur="saveFolder(folder)"
|
||||
ng-blur="app.saveFolder(folder)"
|
||||
sg-focus-on="mailboxName_{{folder.path}}"
|
||||
sg-enter="saveFolder(folder)"
|
||||
sg-escape="revertEditing(folder)"/>
|
||||
sg-enter="app.saveFolder(folder)"
|
||||
sg-escape="app.revertEditing(folder)"/>
|
||||
</md-input-container>
|
||||
<md-menu class="md-secondary"
|
||||
ng-click="true"
|
||||
ng-show="currentFolder.path == folder.path">
|
||||
ng-show="app.service.selectedFolder.path == folder.path">
|
||||
<md-icon label:aria-label="Options"
|
||||
ng-click="$mdOpenMenu()"
|
||||
md-menu-origin="md-menu-origin">more_vert</md-icon>
|
||||
@@ -285,7 +287,7 @@
|
||||
</md-button>
|
||||
</md-menu-item> -->
|
||||
<md-menu-item>
|
||||
<md-button type="button" ng-click="newFolder(folder)">
|
||||
<md-button type="button" ng-click="app.newFolder(folder)">
|
||||
<var:string label:value="New Subfolder..."/>
|
||||
</md-button>
|
||||
</md-menu-item>
|
||||
@@ -295,12 +297,12 @@
|
||||
</md-button>
|
||||
</md-menu-item> -->
|
||||
<md-menu-item>
|
||||
<md-button type="button" ng-click="confirmDelete(folder)">
|
||||
<md-button type="button" ng-click="app.confirmDelete(folder)">
|
||||
<var:string label:value="Delete"/>
|
||||
</md-button>
|
||||
</md-menu-item>
|
||||
<md-menu-item>
|
||||
<md-button type="button" ng-click="exportMails()">
|
||||
<md-button type="button" ng-click="app.exportMails(folder)">
|
||||
<var:string label:value="Export"/>
|
||||
</md-button>
|
||||
</md-menu-item>
|
||||
@@ -311,7 +313,7 @@
|
||||
</md-button>
|
||||
</md-menu-item> -->
|
||||
<md-menu-item>
|
||||
<md-button type="button" ng-click="share(folder)">
|
||||
<md-button type="button" ng-click="app.share(folder)">
|
||||
<var:string label:value="Sharing..."/>
|
||||
</md-button>
|
||||
</md-menu-item>
|
||||
@@ -323,74 +325,77 @@
|
||||
</md-content>
|
||||
</md-sidenav>
|
||||
|
||||
<!-- Main section -->
|
||||
<section layout="column" class="sg-app-content md-layout-fill">
|
||||
<md-toolbar layout="column" layout-align="space-between start" class="md-tall toolbar-main">
|
||||
<div class="md-toolbar-tools md-toolbar-tools-top sg-padded" layout="row" layout-align="space-between start">
|
||||
<var:component className="UIxTopnavToolbarTemplate" />
|
||||
<div class="sg-toolbar-group-last">
|
||||
<md-button class="sg-icon-button" label:aria-label="More">
|
||||
<md-icon>more_vert</md-icon>
|
||||
</md-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-toolbar-tools md-toolbar-tools-bottom"
|
||||
layout="row" layout-align="space-between center"
|
||||
ng-show="mailbox.$selectedCount() == 0">
|
||||
<div class="view-list cols-6 sg-padded" layout="row" layout-align="space-between center"
|
||||
sg-search="mailbox.$filter({ sort: 'date', asc: false }, [{ searchBy: searchField, searchInput: searchText }])">
|
||||
<md-input-container class="sg-search-field-container">
|
||||
<label style="color: white"><md-icon>search</md-icon><var:string label:value="Search"/></label>
|
||||
<input name="folderSearch" type="search" style="color: white"/>
|
||||
</md-input-container>
|
||||
<section layout="column" class="sg-app-content md-layout-fill" ui-view="mailbox"><!-- messages list --></section>
|
||||
</script>
|
||||
|
||||
<div class="sg-toolbar-group">
|
||||
<md-select class="sg-toolbar-sort md-contrast-light">
|
||||
<md-option value="subject"><var:string label:value="Subject"/></md-option>
|
||||
<md-option value="from"><var:string label:value="Sender"/></md-option>
|
||||
<md-option value="subject_or_from"><var:string label:value="Subject or Sender"/></md-option>
|
||||
<md-option value="to_or_cc"><var:string label:value="To or Cc"/></md-option>
|
||||
<md-option value="body"><var:string label:value="Entire Message"/></md-option>
|
||||
</md-select>
|
||||
</div>
|
||||
<script type="text/ng-template" id="UIxMailFolderTemplate">
|
||||
<md-toolbar layout="column" layout-align="space-between start" class="md-tall toolbar-main">
|
||||
<div class="md-toolbar-tools md-toolbar-tools-top sg-padded" layout="row" layout-align="space-between start">
|
||||
<var:component className="UIxTopnavToolbarTemplate" />
|
||||
<div class="sg-toolbar-group-last">
|
||||
<md-button class="sg-icon-button" label:aria-label="More">
|
||||
<md-icon>more_vert</md-icon>
|
||||
</md-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-toolbar-tools md-toolbar-tools-bottom"
|
||||
layout="row" layout-align="space-between center"
|
||||
ng-show="mailbox.selectedFolder.$selectedCount() == 0">
|
||||
<div class="view-list cols-6 sg-padded" layout="row" layout-align="space-between center"
|
||||
sg-search="mailbox.selectedFolder.$filter({ sort: 'date', asc: false }, [{ searchBy: searchField, searchInput: searchText }])">
|
||||
<md-input-container class="sg-search-field-container">
|
||||
<label style="color: white"><md-icon>search</md-icon><var:string label:value="Search"/></label>
|
||||
<input name="folderSearch" type="search" style="color: white"/>
|
||||
</md-input-container>
|
||||
|
||||
<div class="sg-toolbar-group">
|
||||
<md-select class="sg-toolbar-sort md-contrast-light">
|
||||
<md-option value="subject"><var:string label:value="Subject"/></md-option>
|
||||
<md-option value="from"><var:string label:value="Sender"/></md-option>
|
||||
<md-option value="subject_or_from"><var:string label:value="Subject or Sender"/></md-option>
|
||||
<md-option value="to_or_cc"><var:string label:value="To or Cc"/></md-option>
|
||||
<md-option value="body"><var:string label:value="Entire Message"/></md-option>
|
||||
</md-select>
|
||||
</div>
|
||||
</div>
|
||||
<div layout="row" layout-align="start center" ng-show="mailbox.$selectedCount() > 0">
|
||||
<md-button class="sg-icon-button" ng-click="unselectMessages()">
|
||||
<md-icon>arrow_back</md-icon>
|
||||
</div>
|
||||
<div layout="row" layout-align="start center" ng-show="mailbox.selectedFolder.$selectedCount() > 0">
|
||||
<md-button class="sg-icon-button" ng-click="mailbox.unselectMessages()">
|
||||
<md-icon>arrow_back</md-icon>
|
||||
</md-button>
|
||||
<label>{{mailbox.$selectedCount()}} selected</label>
|
||||
<md-button class="sg-icon-button" ng-click="mailbox.confirmDeleteSelectedMessages()">
|
||||
<md-icon>delete</md-icon>
|
||||
</md-button>
|
||||
<md-button class="sg-icon-button">
|
||||
<md-icon>star</md-icon>
|
||||
</md-button>
|
||||
<md-menu>
|
||||
<md-button class="sg-icon-button" label:aria-label="Copy messages" ng-click="$mdOpenMenu()">
|
||||
<md-icon>content_copy</md-icon>
|
||||
</md-button>
|
||||
<label>{{mailbox.$selectedCount()}} selected</label>
|
||||
<md-button class="sg-icon-button" ng-click="confirmDeleteSelectedMessages()">
|
||||
<md-icon>delete</md-icon>
|
||||
</md-button>
|
||||
<md-button class="sg-icon-button">
|
||||
<md-icon>star</md-icon>
|
||||
</md-button>
|
||||
<md-menu>
|
||||
<md-button class="sg-icon-button" label:aria-label="Copy messages" ng-click="$mdOpenMenu()">
|
||||
<md-icon>content_copy</md-icon>
|
||||
</md-button>
|
||||
<md-menu-content width="4">
|
||||
<div ng-repeat="account in accounts track by account.id">
|
||||
<md-menu-item>
|
||||
<md-button class="md-primary" ng-disabled="true">{{account.name}}</md-button>
|
||||
</md-menu-item>
|
||||
<md-menu-divider><!-- divider --></md-menu-divider>
|
||||
<md-menu-item ng-repeat="folder in
|
||||
account.$flattenMailboxes()
|
||||
track by folder.path"
|
||||
ng-hide="mailbox.id == folder.id">
|
||||
<md-button ng-click="copySelectedMessages(folder.id)">
|
||||
<span ng-class="'sg-child-level-' + folder.level">{{folder.name}}</span>
|
||||
</md-button>
|
||||
</md-menu-item>
|
||||
</div>
|
||||
</md-menu-content>
|
||||
</md-menu>
|
||||
</div>
|
||||
</md-toolbar>
|
||||
<div layout="row" ui-view="mailbox"><!-- messages list --></div>
|
||||
</section>
|
||||
<md-menu-content width="4">
|
||||
<div ng-repeat="account in mailbox.accounts track by account.id">
|
||||
<md-menu-item>
|
||||
<md-button class="md-primary" ng-disabled="true">{{account.name}}</md-button>
|
||||
</md-menu-item>
|
||||
<md-menu-divider><!-- divider --></md-menu-divider>
|
||||
<md-menu-item ng-repeat="folder in
|
||||
account.$flattenMailboxes()
|
||||
track by folder.path"
|
||||
ng-hide="mailbox.id == folder.id">
|
||||
<md-button ng-click="mailbox.copySelectedMessages(folder.id)">
|
||||
<span ng-class="'sg-child-level-' + folder.level">{{folder.name}}</span>
|
||||
</md-button>
|
||||
</md-menu-item>
|
||||
</div>
|
||||
</md-menu-content>
|
||||
</md-menu>
|
||||
</div>
|
||||
</md-toolbar>
|
||||
<div layout="row" class="md-flex">
|
||||
<var:component className="UIxMailFolderTemplate" />
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<!-- modal for mailbox sharing options -->
|
||||
@@ -398,10 +403,6 @@
|
||||
<var:component className="UIxMailUserRightsEditor" />
|
||||
</script>
|
||||
|
||||
<script type="text/ng-template" id="UIxMailFolderTemplate">
|
||||
<var:component className="UIxMailFolderTemplate" />
|
||||
</script>
|
||||
|
||||
<script type="text/ng-template" id="UIxMailViewTemplate">
|
||||
<var:component className="UIxMailViewTemplate" />
|
||||
</script>
|
||||
|
||||
@@ -14,17 +14,17 @@
|
||||
<header class="msg-header">
|
||||
<div class="msg-header-content">
|
||||
<div layout="row" layout-align="start center">
|
||||
<md-button class="sg-icon-button sg-msg-flag" label:aria-label="flagged" ng-click="message.toggleFlag()">
|
||||
<md-icon ng-class="{'flagged': message.isflagged}">star</md-icon>
|
||||
<md-button class="sg-icon-button sg-msg-flag" label:aria-label="flagged" ng-click="viewer.message.toggleFlag()">
|
||||
<md-icon ng-class="{'flagged': viewer.message.isflagged}">star</md-icon>
|
||||
</md-button>
|
||||
<h3 class="sg-md-title-msg" ng-bind="message.subject"><!-- subject --></h3>
|
||||
<h3 class="sg-md-title-msg" ng-bind="viewer.message.subject"><!-- subject --></h3>
|
||||
</div>
|
||||
<div class="pseudo-input-container--compact">
|
||||
<label class="pseudo-input-label">
|
||||
<var:string label:value="From"/>
|
||||
</label>
|
||||
<div class="pseudo-input-field">
|
||||
<a ng-href="mailto:{{message.from[0].email}}" ng-bind="message.from[0].full"><!-- from --></a>
|
||||
<a ng-href="mailto:{{viewer.message.from[0].email}}" ng-bind="viewer.message.from[0].full"><!-- from --></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -33,24 +33,19 @@
|
||||
<var:string label:value="To"/>
|
||||
</label>
|
||||
<div class="pseudo-input-field">
|
||||
<a ng-href="mailto:{{message.to[0].email}}" ng-bind="message.to[0].full"><!-- to --></a>
|
||||
<a ng-href="mailto:{{viewer.message.to[0].email}}" ng-bind="viewer.message.to[0].full"><!-- to --></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<md-chips ng-model="message.flags">
|
||||
<md-chip-template>{{message.constructor.$tags[$chip][0]}}</md-chip-template>
|
||||
<button md-chip-remove="md-chip-remove"
|
||||
class="md-chip-remove"
|
||||
ng-click="message.removeTag($chip)">
|
||||
<md-icon>close</md-icon>
|
||||
</button>
|
||||
<md-chips ng-model="viewer.message.flags" ng-change="viewer.changeFlags()">
|
||||
<md-chip-template>{{viewer.service.$tags[$chip][0]}}</md-chip-template>
|
||||
<md-autocomplete
|
||||
md-selected-item="tags.selected"
|
||||
md-selected-item-change="message.addTag(tag)"
|
||||
md-search-text="tags.searchText"
|
||||
md-items="tag in message.constructor.filterTags(tags.searchText)"
|
||||
md-selected-item="viewer.tags.selected"
|
||||
md-selected-item-change="viewer.message.addTag(viewer.tags.selected)"
|
||||
md-search-text="viewer.tags.searchText"
|
||||
md-items="tag in viewer.service.filterTags(viewer.tags.searchText)"
|
||||
label:placeholder="Add a tag">
|
||||
<span md-highlight-text="tags.searchText">{{message.constructor.$tags[tag][0]}}</span>
|
||||
<span md-highlight-text="viewer.tags.searchText">{{viewer.service.$tags[tag][0]}}</span>
|
||||
</md-autocomplete>
|
||||
</md-chips>
|
||||
|
||||
@@ -65,34 +60,34 @@
|
||||
<div class="sg-icon-bar--vertical">
|
||||
<!-- todo: Replace md-tooltip values by localizable string variable -->
|
||||
<md-button class="sg-icon-button"
|
||||
ng-hide="message.isDraft"
|
||||
ui-sref="mail.account.mailbox.message.action({accountId: account.id, mailboxId: (mailbox.path | encodeUri), messageId: message.uid, actionName: 'reply'})"
|
||||
ng-hide="viewer.message.isDraft"
|
||||
ui-sref="mail.account.mailbox.message.action({accountId: viewer.account.id, mailboxId: (viewer.mailbox.path | encodeUri), messageId: viewer.message.uid, actionName: 'reply'})"
|
||||
aria-label="reply">
|
||||
<md-tooltip md-direction="left"><var:string label:value="Reply to Sender Only"/></md-tooltip>
|
||||
<md-icon>reply</md-icon>
|
||||
</md-button>
|
||||
<md-button class="sg-icon-button" aria-label="Reply All"
|
||||
ng-hide="message.isDraft"
|
||||
ui-sref="mail.account.mailbox.message.action({accountId: account.id, mailboxId: (mailbox.path | encodeUri), messageId: message.uid, actionName: 'replyall'})">
|
||||
ui-sref="mail.account.mailbox.message.action({accountId: viewer.account.id, mailboxId: (viewer.mailbox.path | encodeUri), messageId: viewer.message.uid, actionName: 'replyall'})">
|
||||
<md-icon>reply_all</md-icon>
|
||||
</md-button>
|
||||
<md-button class="sg-icon-button" aria-label="Forward"
|
||||
ng-hide="message.isDraft"
|
||||
ui-sref="mail.account.mailbox.message.action({accountId: account.id, mailboxId: (mailbox.path | encodeUri), messageId: message.uid, actionName: 'forward'})">
|
||||
ng-hide="viewer.message.isDraft"
|
||||
ui-sref="mail.account.mailbox.message.action({accountId: viewer.account.id, mailboxId: (viewer.mailbox.path | encodeUri), messageId: viewer.message.uid, actionName: 'forward'})">
|
||||
<md-icon>forward</md-icon>
|
||||
</md-button>
|
||||
<md-button class="sg-icon-button" aria-label="Edit"
|
||||
ng-show="message.isDraft"
|
||||
ui-sref="mail.account.mailbox.message.edit({accountId: account.id, mailboxId: (mailbox.path | encodeUri), messageId: message.uid})">
|
||||
ng-show="viewer.message.isDraft"
|
||||
ui-sref="mail.account.mailbox.message.edit({accountId: viewer.account.id, mailboxId: (viewer.mailbox.path | encodeUri), messageId: viewer.message.uid})">
|
||||
<md-icon>create</md-icon>
|
||||
</md-button>
|
||||
<md-button class="sg-icon-button" aria-label="Delete"
|
||||
ng-click="doDelete(message)">
|
||||
ng-click="viewer.doDelete()">
|
||||
<md-icon>delete</md-icon>
|
||||
</md-button>
|
||||
<md-button class="sg-icon-button" aria-label="Load Images"
|
||||
ng-show="message.$hasUnsafeContent"
|
||||
ng-click="message.loadUnsafeContent()">
|
||||
ng-show="viewer.message.$hasUnsafeContent"
|
||||
ng-click="viewer.message.loadUnsafeContent()">
|
||||
<md-tooltip md-direction="left"><var:string label:value="Load Images"/></md-tooltip>
|
||||
<md-icon>image</md-icon>
|
||||
</md-button>
|
||||
@@ -100,7 +95,7 @@
|
||||
</header>
|
||||
<md-divider><!-- divider --></md-divider>
|
||||
|
||||
<div ng-show="message.shouldAskReceipt == 1"
|
||||
<div ng-show="viewer.message.shouldAskReceipt == 1"
|
||||
layout-padding="layout-padding">
|
||||
<md-whiteframe class="md-whiteframe-z2" layout="column"
|
||||
layout-align="center start">
|
||||
@@ -109,19 +104,19 @@
|
||||
<div class="md-actions" layout="row">
|
||||
<md-button label:aria-label="Yes"
|
||||
type="button" class="md-primary"
|
||||
ng-click="message.$sendMDN()">Yes</md-button>
|
||||
ng-click="viewer.message.$sendMDN()">Yes</md-button>
|
||||
<md-button label:aria-label="No"
|
||||
type="button"
|
||||
ng-click="message.shouldAskReceipt = 0">No</md-button>
|
||||
ng-click="viewer.message.shouldAskReceipt = 0">No</md-button>
|
||||
</div>
|
||||
</md-whiteframe>
|
||||
</div>
|
||||
|
||||
<div class="msg-body">
|
||||
<div class="msg-date sg-md-body-multi">
|
||||
<time datetime="message.date" ng-bind="message.date"><!-- date --></time>
|
||||
<time datetime="viewer.message.date" ng-bind="viewer.message.date"><!-- date --></time>
|
||||
</div>
|
||||
<div class="mailer_mailcontent" ng-repeat="part in message.$content()">
|
||||
<div class="mailer_mailcontent" ng-repeat="part in viewer.message.$content()">
|
||||
<div ng-if="part.html" ng-bind-html="part.content"><!-- msg --></div>
|
||||
<div ng-if="part.compile" sg-compile="part.content"><!-- msg --></div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user