Reformat code (indent)

pull/91/head
iRouge 2015-01-25 22:33:00 -05:00 committed by Francis Lachapelle
parent 3b43cabc68
commit 296e8f09e5
7 changed files with 783 additions and 678 deletions

View File

@ -1,361 +1,360 @@
<?xml version='1.0' standalone='yes'?>
<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:rsrc="OGo:url"
xmlns:label="OGo:label"
xmlns:uix="OGo:uix">
<md-content md-scroll-y="true" >
<div class="editor md-padding">
<div class="header">
<h1 data-ng-bind-html="card.$fullname()"><!-- fullname --></h1>
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"
>
<md-content md-scroll-y = "true">
<div class = "editor md-padding">
<div class = "header">
<h1 data-ng-bind-html = "card.$fullname()"><!-- fullname --></h1>
<h6>{{card.$description()}}
<span class="label radius" data-ng-repeat="category in card.categories">{{category.value}}</span>
<span class = "label radius" data-ng-repeat = "category in card.categories">{{category.value}}</span>
</h6>
</div>
<form name="cardForm" data-ng-show="card.$isCard()" data-ng-submit="save(cardForm)">
<div class="buttonsToolbar">
<span class="button tiny radius secondary" data-ng-click="cancel()">
<i class="icon-arrow-left"><!-- cancel --></i>
<var:string label:value="Cancel"/>
<form name = "cardForm" data-ng-show = "card.$isCard()" data-ng-submit = "save(cardForm)">
<div class = "buttonsToolbar">
<span class = "button tiny radius secondary" data-ng-click = "cancel()">
<i class = "icon-arrow-left"><!-- cancel --></i>
<var:string label:value = "Cancel" />
</span>
<span class="button tiny radius secondary" data-ng-click="reset()">
<i class="icon-undo"><!-- reset --></i>
<var:string label:value="Reset"/>
<span class = "button tiny radius secondary" data-ng-click = "reset()">
<i class = "icon-undo"><!-- reset --></i>
<var:string label:value = "Reset" />
</span>
<button class="button tiny radius" type="submit">
<i class="icon-checkmark"><!-- save --></i>
<var:string label:value="Save"/>
<button class = "button tiny radius" type = "submit">
<i class = "icon-checkmark"><!-- save --></i>
<var:string label:value = "Save" />
</button>
</div>
<md-input-container>
<div class="action">
<var:entity const:name=""/>
<div class = "action">
<var:entity const:name = "" />
</div>
<label>
<var:string label:value="Display"/>
<var:string label:value = "Display" />
</label>
<input type="text" ng-maxlength="30" data-ng-model="card.fn"/>
<input type = "text" ng-maxlength = "30" data-ng-model = "card.fn" />
</md-input-container>
<md-input-container>
<div class="action">
<var:entity const:name="nbsp"/>
<div class = "action">
<var:entity const:name = "nbsp" />
</div>
<label class="">
<var:string label:value="Firstname"/>
<label class = "">
<var:string label:value = "Firstname" />
</label>
<input type="text" data-ng-model="card.givenname"/>
<input type = "text" data-ng-model = "card.givenname" />
</md-input-container>
<md-input-container>
<div class="action">
<var:entity const:name="nbsp"/>
<div class = "action">
<var:entity const:name = "nbsp" />
</div>
<label class="right inline">
<var:string label:value="Lastname"/>
<label class = "right inline">
<var:string label:value = "Lastname" />
</label>
<input type="text" data-ng-model="card.sn"/>
<input type = "text" data-ng-model = "card.sn" />
</md-input-container>
<md-input-container>
<div class="action">
<var:entity const:name="nbsp"/>
<div class = "action">
<var:entity const:name = "nbsp" />
</div>
<label class="right inline">
<var:string label:value="Nickname"/>
<label class = "right inline">
<var:string label:value = "Nickname" />
</label>
<input type="text" data-ng-model="card.nickname"/>
<input type = "text" data-ng-model = "card.nickname" />
</md-input-container>
<md-input-container>
<div class="action">
<var:entity const:name="nbsp"/>
<div class = "action">
<var:entity const:name = "nbsp" />
</div>
<label class="right inline">
<var:string label:value="Organization"/>
<label class = "right inline">
<var:string label:value = "Organization" />
</label>
<input type="text" data-ng-model="card.org"/>
<input type = "text" data-ng-model = "card.org" />
</md-input-container>
<md-input-container>
<div class="action">
<var:entity const:name="nbsp"/>
<div class = "action">
<var:entity const:name = "nbsp" />
</div>
<label class="right inline">
<var:string label:value="Title"/>
<label class = "right inline">
<var:string label:value = "Title" />
</label>
<input type="text" data-ng-model="card.title"/>
<input type = "text" data-ng-model = "card.title" />
</md-input-container>
<!-- org units -->
<div class="section">
<div class="attr" data-ng-repeat="unit in card.orgUnits">
<div class="action">
<span class="button alert icon" data-ng-click="card.$delete('orgUnits', $index)">
<i class="icon-minus"><!-- remove --></i>
<div class = "section">
<div class = "attr" data-ng-repeat = "unit in card.orgUnits">
<div class = "action">
<span class = "button alert icon" data-ng-click = "card.$delete('orgUnits', $index)">
<i class = "icon-minus"><!-- remove --></i>
</span>
</div>
<div class="key">
<div class = "key">
<md-input-container>
<label class="right inline">
<var:string label:value="Organization Unit"/>
<label class = "right inline">
<var:string label:value = "Organization Unit" />
</label>
</div>
<div class="value">
<input type="text" label:placeholder="unit" data-ng-model="unit.value"
data-sg-focus-on="orgUnit_{{$index}}"/>
<div class = "value">
<input type = "text" label:placeholder = "unit" data-ng-model = "unit.value"
data-sg-focus-on = "orgUnit_{{$index}}" />
</md-input-container>
</div>
</div>
<div class="attr">
<div class="value single">
<span class="button secondary outline tiny" data-ng-click="addOrgUnit()">
<i class="icon-plus"><!-- new --></i>
<var:string label:value="Add Organizational Unit"/>
<div class = "attr">
<div class = "value single">
<span class = "button secondary outline tiny" data-ng-click = "addOrgUnit()">
<i class = "icon-plus"><!-- new --></i>
<var:string label:value = "Add Organizational Unit" />
</span>
</div>
</div>
</div>
<!-- birthday -->
<div class="attr">
<div class="action">
<var:entity const:name="nbsp"/>
<div class = "attr">
<div class = "action">
<var:entity const:name = "nbsp" />
</div>
<div class="key">
<label class="right inline">
<var:string label:value="Birthday"/>
<div class = "key">
<label class = "right inline">
<var:string label:value = "Birthday" />
</label>
</div>
<div class="value">
<input type="text" data-ng-model="card.birthday"/>
<div class = "value">
<input type = "text" data-ng-model = "card.birthday" />
</div>
</div>
<!-- categories -->
<div class="section">
<div class="attr" data-ng-repeat="category in card.categories">
<div class="action">
<span class="button alert icon" data-ng-click="card.$delete('categories', $index)">
<i class="icon-minus"><!-- remove --></i>
<div class = "section">
<div class = "attr" data-ng-repeat = "category in card.categories">
<div class = "action">
<span class = "button alert icon" data-ng-click = "card.$delete('categories', $index)">
<i class = "icon-minus"><!-- remove --></i>
</span>
</div>
<div class="key">
<label class="right inline">
<var:string label:value="Category"/>
<div class = "key">
<label class = "right inline">
<var:string label:value = "Category" />
</label>
</div>
<div class="value">
<input type="text" label:placeholder="category"
data-ng-model="category.value"
data-sg-focus-on="category_{{$index}}"
data-typeahead="cat for cat in card.allCategories | filter:$viewValue"/>
<div class = "value">
<input type = "text" label:placeholder = "category"
data-ng-model = "category.value"
data-sg-focus-on = "category_{{$index}}"
data-typeahead = "cat for cat in card.allCategories | filter:$viewValue" />
</div>
</div>
<div class="attr">
<div class="value single">
<span class="button secondary outline tiny" data-ng-click="addCategory()">
<i class="icon-plus"><!-- new --></i>
<var:string label:value="New Category"/>
<div class = "attr">
<div class = "value single">
<span class = "button secondary outline tiny" data-ng-click = "addCategory()">
<i class = "icon-plus"><!-- new --></i>
<var:string label:value = "New Category" />
</span>
</div>
</div>
</div>
<!-- emails -->
<div class="section">
<div class="attr" data-ng-repeat="email in card.emails">
<div class="action">
<span class="button alert icon" data-ng-click="card.$delete('emails', $index)">
<i class="icon-minus"><!-- remove --></i>
<div class = "section">
<div class = "attr" data-ng-repeat = "email in card.emails">
<div class = "action">
<span class = "button alert icon" data-ng-click = "card.$delete('emails', $index)">
<i class = "icon-minus"><!-- remove --></i>
</span>
</div>
<div class="key">
<select class="text-right" data-ng-model="email.type" data-ng-options="type for type in allEmailTypes">
<div class = "key">
<select class = "text-right" data-ng-model = "email.type" data-ng-options = "type for type in allEmailTypes">
<!-- email types -->
</select>
</div>
<div class="value">
<input type="email" label:placeholder="email address" data-ng-model="email.value"
data-sg-focus-on="email_{{$index}}"/>
<div class = "value">
<input type = "email" label:placeholder = "email address" data-ng-model = "email.value"
data-sg-focus-on = "email_{{$index}}" />
</div>
</div>
<div class="attr">
<div class="value single">
<span class="button secondary outline tiny" data-ng-click="addEmail()">
<i class="icon-plus"><!-- new --></i>
<var:string label:value="New Email Address"/>
<div class = "attr">
<div class = "value single">
<span class = "button secondary outline tiny" data-ng-click = "addEmail()">
<i class = "icon-plus"><!-- new --></i>
<var:string label:value = "New Email Address" />
</span>
</div>
</div>
</div>
<!-- phones -->
<div class="section">
<div class="attr" data-ng-repeat="phone in card.phones">
<div class="action">
<span class="button alert icon" data-ng-click="card.$delete('phones', $index)">
<i class="icon-minus"><!-- remove --></i>
<div class = "section">
<div class = "attr" data-ng-repeat = "phone in card.phones">
<div class = "action">
<span class = "button alert icon" data-ng-click = "card.$delete('phones', $index)">
<i class = "icon-minus"><!-- remove --></i>
</span>
</div>
<div class="key">
<select class="text-right" data-ng-model="phone.type" data-ng-options="type for type in allTelTypes">
<div class = "key">
<select class = "text-right" data-ng-model = "phone.type" data-ng-options = "type for type in allTelTypes">
<!-- phone types -->
</select>
</div>
<div class="value">
<input type="text" label:placeholder="phone number" data-ng-model="phone.value"
data-sg-focus-on="phone_{{$index}}"/>
<div class = "value">
<input type = "text" label:placeholder = "phone number" data-ng-model = "phone.value"
data-sg-focus-on = "phone_{{$index}}" />
</div>
</div>
<div class="attr">
<div class="value single">
<span class="button secondary outline tiny" data-ng-click="addPhone()">
<i class="icon-plus"><!-- new --></i>
<var:string label:value="New Phone Number"/>
<div class = "attr">
<div class = "value single">
<span class = "button secondary outline tiny" data-ng-click = "addPhone()">
<i class = "icon-plus"><!-- new --></i>
<var:string label:value = "New Phone Number" />
</span>
</div>
</div>
</div>
<!-- urls -->
<div class="section">
<div class="attr" data-ng-repeat="url in card.urls">
<div class="action">
<span class="button alert icon" data-ng-click="card.$delete('urls', $index)">
<i class="icon-minus"><!-- remove --></i>
<div class = "section">
<div class = "attr" data-ng-repeat = "url in card.urls">
<div class = "action">
<span class = "button alert icon" data-ng-click = "card.$delete('urls', $index)">
<i class = "icon-minus"><!-- remove --></i>
</span>
</div>
<div class="key">
<select class="text-right" data-ng-model="url.type" data-ng-options="type for type in allUrlTypes">
<div class = "key">
<select class = "text-right" data-ng-model = "url.type" data-ng-options = "type for type in allUrlTypes">
<!-- url types -->
</select>
</div>
<div class="value">
<input type="url" label:placeholder="URL" data-ng-model="url.value" data-sg-focus-on="url_{{$index}}"/>
<div class = "value">
<input type = "url" label:placeholder = "URL" data-ng-model = "url.value" data-sg-focus-on = "url_{{$index}}" />
</div>
</div>
<div class="attr">
<div class="value single">
<span class="button secondary outline tiny" data-ng-click="addUrl()">
<i class="icon-plus"><!-- new --></i>
<var:string label:value="New URL"/>
<div class = "attr">
<div class = "value single">
<span class = "button secondary outline tiny" data-ng-click = "addUrl()">
<i class = "icon-plus"><!-- new --></i>
<var:string label:value = "New URL" />
</span>
</div>
</div>
</div>
<!-- addresses -->
<div class="section">
<div class="attr" data-ng-repeat="address in card.addresses">
<div class="action">
<span class="button alert icon" data-ng-click="card.$delete('addresses', $index)">
<i class="icon-minus"><!-- remove --></i>
<div class = "section">
<div class = "attr" data-ng-repeat = "address in card.addresses">
<div class = "action">
<span class = "button alert icon" data-ng-click = "card.$delete('addresses', $index)">
<i class = "icon-minus"><!-- remove --></i>
</span>
</div>
<div class="key">
<select class="text-right" data-ng-model="address.type" data-ng-options="type for type in allAddressTypes">
<div class = "key">
<select class = "text-right" data-ng-model = "address.type" data-ng-options = "type for type in allAddressTypes">
<!-- address types -->
</select>
</div>
<div class="value compact">
<input type="text" label:placeholder="street" data-ng-model="address.street"
data-sg-focus-on="address_{{$index}}"/>
<input type="text" data-ng-model="address.street2"/>
<input type="text" label:placeholder="Postoffice" data-ng-model="address.postoffice"/>
<input type="text" label:placeholder="City" data-ng-model="address.locality"/>
<input type="text" label:placeholder="Region" data-ng-model="address.region"/>
<input type="text" label:placeholder="Country" data-ng-model="address.country"/>
<input type="text" label:placeholder="Postal Code" data-ng-model="address.postalcode"/>
<div class = "value compact">
<input type = "text" label:placeholder = "street" data-ng-model = "address.street"
data-sg-focus-on = "address_{{$index}}" />
<input type = "text" data-ng-model = "address.street2" />
<input type = "text" label:placeholder = "Postoffice" data-ng-model = "address.postoffice" />
<input type = "text" label:placeholder = "City" data-ng-model = "address.locality" />
<input type = "text" label:placeholder = "Region" data-ng-model = "address.region" />
<input type = "text" label:placeholder = "Country" data-ng-model = "address.country" />
<input type = "text" label:placeholder = "Postal Code" data-ng-model = "address.postalcode" />
</div>
</div>
<div class="attr">
<div class="value single">
<span class="button secondary outline tiny" data-ng-click="addAddress()">
<i class="icon-plus"><!-- new --></i>
<var:string label:value="New Address"/>
<div class = "attr">
<div class = "value single">
<span class = "button secondary outline tiny" data-ng-click = "addAddress()">
<i class = "icon-plus"><!-- new --></i>
<var:string label:value = "New Address" />
</span>
</div>
</div>
</div>
<!-- note -->
<div class="attr">
<div class="action">
<var:entity const:name="nbsp"/>
<div class = "attr">
<div class = "action">
<var:entity const:name = "nbsp" />
</div>
<div class="key">
<label class="right inline">
<var:string label:value="Note"/>
<div class = "key">
<label class = "right inline">
<var:string label:value = "Note" />
</label>
</div>
<div class="value">
<textarea data-ng-model="card.note"><!-- note --></textarea>
<div class = "value">
<textarea data-ng-model = "card.note"><!-- note --></textarea>
</div>
</div>
</form>
<form name="listForm" data-ng-show="card.$isList()" data-ng-submit="save(listForm)">
<div class="buttonsToolbar">
<span class="button tiny radius secondary" data-ng-click="cancel()">
<i class="icon-arrow-left"><!-- cancel --></i>
<var:string label:value="Cancel"/>
<form name = "listForm" data-ng-show = "card.$isList()" data-ng-submit = "save(listForm)">
<div class = "buttonsToolbar">
<span class = "button tiny radius secondary" data-ng-click = "cancel()">
<i class = "icon-arrow-left"><!-- cancel --></i>
<var:string label:value = "Cancel" />
</span>
<span class="button tiny radius secondary" data-ng-click="reset()">
<i class="icon-undo"><!-- reset --></i>
<var:string label:value="Reset"/>
<span class = "button tiny radius secondary" data-ng-click = "reset()">
<i class = "icon-undo"><!-- reset --></i>
<var:string label:value = "Reset" />
</span>
<button class="button tiny radius" type="submit">
<i class="icon-checkmark"><!-- save --></i>
<var:string label:value="Save"/>
<button class = "button tiny radius" type = "submit">
<i class = "icon-checkmark"><!-- save --></i>
<var:string label:value = "Save" />
</button>
</div>
<div class="section">
<div class="attr">
<div class="action">
<var:entity const:name="nbsp"/>
<div class = "section">
<div class = "attr">
<div class = "action">
<var:entity const:name = "nbsp" />
</div>
<div class="key">
<label class="right inline">
<var:string label:value="Display"/>
<div class = "key">
<label class = "right inline">
<var:string label:value = "Display" />
</label>
</div>
<div class="value">
<input type="text" data-ng-model="card.fn"/>
<div class = "value">
<input type = "text" data-ng-model = "card.fn" />
</div>
</div>
<div class="attr">
<div class="action">
<var:entity const:name="nbsp"/>
<div class = "attr">
<div class = "action">
<var:entity const:name = "nbsp" />
</div>
<div class="key">
<label class="right inline">
<var:string label:value="Nickname"/>
<div class = "key">
<label class = "right inline">
<var:string label:value = "Nickname" />
</label>
</div>
<div class="value">
<input type="text" data-ng-model="card.nickname"/>
<div class = "value">
<input type = "text" data-ng-model = "card.nickname" />
</div>
</div>
</div>
<!-- list members -->
<div class="section">
<div class="attr" data-ng-repeat="ref in card.refs">
<div class="action">
<span class="button alert icon" data-ng-click="card.$delete('refs', $index)">
<i class="icon-minus"><!-- remove --></i>
<div class = "section">
<div class = "attr" data-ng-repeat = "ref in card.refs">
<div class = "action">
<span class = "button alert icon" data-ng-click = "card.$delete('refs', $index)">
<i class = "icon-minus"><!-- remove --></i>
</span>
</div>
<div class="key">
<label class="right inline">
<var:string label:value="Member"/>
<div class = "key">
<label class = "right inline">
<var:string label:value = "Member" />
</label>
</div>
<div class="value">
<input type="text" label:placeholder="email address"
data-ng-model="ref.email"
data-sg-focus-on="ref_{{$index}}"
data-typeahead="card.$preferredEmail($viewValue) as card.$shortFormat($viewValue) for card in addressbook.$filter($viewValue, {dry: true, excludeLists: true})"
data-typeahead-on-select="card.$updateMember($index, $model, $item)"/>
<div class = "value">
<input type = "text" label:placeholder = "email address"
data-ng-model = "ref.email"
data-sg-focus-on = "ref_{{$index}}"
data-typeahead = "card.$preferredEmail($viewValue) as card.$shortFormat($viewValue) for card in addressbook.$filter($viewValue, {dry: true, excludeLists: true})"
data-typeahead-on-select = "card.$updateMember($index, $model, $item)" />
</div>
</div>
<div class="attr">
<div class="value single">
<span class="button outline secondary tiny" data-ng-click="addMember()">
<i class="icon-plus"><!-- new --></i>
<var:string label:value="Add Member"/>
<div class = "attr">
<div class = "value single">
<span class = "button outline secondary tiny" data-ng-click = "addMember()">
<i class = "icon-plus"><!-- new --></i>
<var:string label:value = "Add Member" />
</span>
</div>
</div>
@ -363,4 +362,4 @@
</form>
</md-content>
</container>
</container>

View File

@ -1,19 +1,17 @@
<?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"
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"/>;
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" />;
</script>
<!--
@ -64,43 +62,55 @@
<div>
<div data-ui-view="addressbooks" layout="row" style="max-height: 100%"><!-- addressbooks list --></div>
<div data-ui-view = "addressbooks" layout = "row" style = "max-height: 100%"><!-- addressbooks list --></div>
<!-- modal for addressbook sharing options -->
<script type="text/ng-template" id="UIxUserRightsEditor">
<var:component className="UIxContactsUserRightsEditor"/>
<script type = "text/ng-template" id = "UIxUserRightsEditor">
<var:component className = "UIxContactsUserRightsEditor" />
</script>
<script type="text/ng-template" id="UIxContactFoldersView">
<script type = "text/ng-template" id = "UIxContactFoldersView">
<!-- dropdown menu for addressbook options button -->
<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>
<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>
<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 label:data-tooltip = "Rename"
data-tooltip-popup-delay = "500">
<span class = "button" data-ng-click = "edit()">
<i class = "icon-pencil"><!-- rename --></i>
</span>
</li>
<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 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>
<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 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>
<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>
<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>
</li>
<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 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>
</ul>
</div>
@ -134,70 +144,75 @@
data-sg-subscribe-on-select="subscribeToFolder">!- subscription dropdown -</div>
-->
<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>
<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>
<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-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>
<main layout="column" layout-fill="layout-fill">
<md-toolbar layout="row" layout-align="space-between start" class="md-tall md-grey">
<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% -->
<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">
<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>
<span class="sd-toolbar-tools">
<span class = "sd-toolbar-tools">
<span>search</span>
</span>
</div>
</md-toolbar>
<md-content layout="row" flex="flex">
<md-content md-scroll-y="md-scroll-y" flex="flex" style="min-width: 300px;" id="contactsList">
<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">
@ -218,36 +233,37 @@
width: 100%;
}
</style>
<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-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>
<div class="md-tile-left">
<div class = "md-tile-left">
<!--avatar-->
<!-- currentCard.tag = vcard || vlist -->
</div>
<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>
<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>
<md-divider md-inset="true" ng-if="!$last"><!--divider--></md-divider>
<md-divider md-inset = "true" ng-if = "!$last"><!--divider--></md-divider>
</md-item>
</md-list>
</md-content>
<md-content class="md-padding" flex="flex" data-ui-view="card"><!-- card view --></md-content>
<md-content class = "md-padding" flex = "flex" data-ui-view = "card"><!-- card view --></md-content>
</md-content>
</main>
</script><!-- UIxContactFoldersView -->
</script>
<!-- UIxContactFoldersView -->
<script type="text/ng-template" id="UIxContactViewTemplate">
<var:component className="UIxContactViewTemplate"/>
<script type = "text/ng-template" id = "UIxContactViewTemplate">
<var:component className = "UIxContactViewTemplate" />
</script>
<var:string value="errorAlertJavaScript" const:escapeHTML="NO" />
<var:string value = "errorAlertJavaScript" const:escapeHTML = "NO" />
</div>
</var:component>

View File

@ -1,89 +1,101 @@
<?xml version='1.0' standalone='yes'?>
<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:rsrc="OGo:url"
xmlns:label="OGo:label"
xmlns:uix="OGo:uix">
<div class="viewer">
<div class="header">
<h1 data-ng-bind-html="card.$fullname()"><!-- fullname --></h1>
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"
>
<div class = "viewer">
<div class = "header">
<h1 data-ng-bind-html = "card.$fullname()"><!-- fullname --></h1>
<h6>{{card.$description()}}
<span class="label radius" data-ng-repeat="category in card.categories">{{category.value}}</span>
<span class = "label radius" data-ng-repeat = "category in card.categories">{{category.value}}</span>
</h6>
</div>
<div class="buttonsToolbar">
<span data-ng-show="addressbook.isEditable">
<a class="button tiny radius" data-ui-sref="addressbook.card.editor({addressbookId: addressbook.id, cardId: card.id})"><i class="icon-pencil"><!-- edit --></i></a>
<span class="button tiny radius alert" data-ng-click="confirmDelete(card)"><i class="icon-trash"><!-- delete --></i></span>
<div class = "buttonsToolbar">
<span data-ng-show = "addressbook.isEditable">
<a class = "button tiny radius" data-ui-sref = "addressbook.card.editor({addressbookId: addressbook.id, cardId: card.id})">
<i class = "icon-pencil"><!-- edit --></i>
</a>
<span class = "button tiny radius alert" data-ng-click = "confirmDelete(card)">
<i class = "icon-trash"><!-- delete --></i>
</span>
</span>
</div>
<div class="attr" data-ng-show="card.birthday">
<div class="key">
<label class="right"><var:string label:value="Birthday"/></label>
<div class = "attr" data-ng-show = "card.birthday">
<div class = "key">
<label class = "right">
<var:string label:value = "Birthday" />
</label>
</div>
<div class="value">
<div class = "value">
<span>{{card.$birthday() | date}}</span>
</div>
</div>
<div class="section" data-ng-repeat="ref in card.refs track by ref.reference">
<div class = "section" data-ng-repeat = "ref in card.refs track by ref.reference">
<!-- list members -->
<div class="attr">
<div class="value single">
<a data-ui-sref="addressbook.card.view({addressbookId: addressbook.id, cardId: ref.reference})">{{ref.$fullname()}}</a>
<div data-ng-show="ref.email">
<a href="mailto:{{ref.email}}"><i class="icon-ion-ios7-email-outline"><!-- email --></i> {{ref.email}}</a>
<div class = "attr">
<div class = "value single">
<a data-ui-sref = "addressbook.card.view({addressbookId: addressbook.id, cardId: ref.reference})">{{ref.$fullname()}}</a>
<div data-ng-show = "ref.email">
<a href = "mailto:{{ref.email}}">
<i class = "icon-ion-ios7-email-outline"><!-- email --></i>
{{ref.email}}
</a>
</div>
</div>
</div>
</div>
<div class="section" data-ng-show="card.emails.length > 0">
<div class="attr" data-ng-repeat="email in card.emails">
<div class="key">
<label class="right"><var:entity const:name="nbsp" />{{email.type}}</label>
<div class = "section" data-ng-show = "card.emails.length > 0">
<div class = "attr" data-ng-repeat = "email in card.emails">
<div class = "key">
<label class = "right"><var:entity const:name = "nbsp" />{{email.type}}
</label>
</div>
<div class="value">
<a href="mailto:{{email.value}}">{{email.value}}</a>
<div class = "value">
<a href = "mailto:{{email.value}}">{{email.value}}</a>
</div>
</div>
</div>
<div class="section" data-ng-show="card.phones.length > 0">
<div class="attr" data-ng-repeat="phone in card.phones">
<div class="key">
<label class="right">{{phone.type}}</label>
<div class = "section" data-ng-show = "card.phones.length > 0">
<div class = "attr" data-ng-repeat = "phone in card.phones">
<div class = "key">
<label class = "right">{{phone.type}}</label>
</div>
<div class="value">
<a href="tel:{{phone.value}}">{{phone.value}}</a>
<div class = "value">
<a href = "tel:{{phone.value}}">{{phone.value}}</a>
</div>
</div>
</div>
<div class="section" data-ng-show="card.urls">
<div class="attr" data-ng-repeat="url in card.urls">
<div class="key">
<label class="right"><var:entity const:name="nbsp" />{{url.type}}</label>
<div class = "section" data-ng-show = "card.urls">
<div class = "attr" data-ng-repeat = "url in card.urls">
<div class = "key">
<label class = "right"><var:entity const:name = "nbsp" />{{url.type}}
</label>
</div>
<div class="value">
<a href="#" data-ng-href="{{url.value}}">{{url.value}}</a>
<div class = "value">
<a href = "#" data-ng-href = "{{url.value}}">{{url.value}}</a>
</div>
</div>
</div>
<div class="section" data-ng-show="card.addresses">
<div class="attr" data-ng-repeat="address in card.addresses">
<div class="key">
<label class="right">{{address.type}}</label>
<div class = "section" data-ng-show = "card.addresses">
<div class = "attr" data-ng-repeat = "address in card.addresses">
<div class = "key">
<label class = "right">{{address.type}}</label>
</div>
<div class="value">
<div data-sg-address="address"><!-- address --></div>
<div class = "value">
<div data-sg-address = "address"><!-- address --></div>
</div>
</div>
</div>
<div class="attr" data-ng-show="card.note">
<div class="key">
<label class="right"><var:string label:value="Note"/></label>
<div class = "attr" data-ng-show = "card.note">
<div class = "key">
<label class = "right">
<var:string label:value = "Note" />
</label>
</div>
<div class="value">
<div data-ng-bind-html="card.note"><!-- note --></div>
<div class = "value">
<div data-ng-bind-html = "card.note"><!-- note --></div>
</div>
</div>
</div>

View File

@ -1,44 +1,40 @@
<?xml version='1.0' standalone='yes'?>
<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:rsrc="OGo:url"
xmlns:label="OGo:label"
xmlns:uix="OGo:uix">
<md-content flex="40" style="min-width: 300px;" id="messagesList">
<!--dirty fix for vs-repeat-->
<style>
.vs-repeat-repeated-element {
width: 100%;
}
</style>
<md-list data-vs-repeat="72"
data-vs-scroll-parent="#messagesList">
<md-item ng-repeat="currentMessage in mailbox.$messages track by currentMessage.id"
data-ng-class="{unread: !currentMessage.isread}">
<md-item-content>
<div class="md-tile-left">
<!--avatar-->
</div>
<div class="sg-tile-content">
<a data-ui-sref="mail.account.mailbox.message({accountId: account.id, mailboxId: (mailbox.path | encodeUri), messageId: currentMessage.uid})"
data-ui-sref-active="_selected">
<div class="name">
{{currentMessage.$shortAddress('from')}}
<span class="right" data-ng-bind-html="currentMessage.relativedate"><!-- date --></span>
</div>
<div class="subject">{{currentMessage.subject}}</div>
<i class="icon-ion-refresh"
data-ng-hide="mailbox.$loadMessage(currentMessage.uid)"><!-- loading --></i>
</a>
</div>
</md-item-content>
<md-divider md-inset="true" ng-if="!$last"><!--divider--></md-divider>
</md-item>
</md-list>
</md-content>
xmlns = "http://www.w3.org/1999/xhtml"
>
<md-content flex = "40" style = "min-width: 300px;" id = "messagesList">
<!--dirty fix for vs-repeat-->
<style>
.vs-repeat-repeated-element {
width: 100%;
}
</style>
<md-list data-vs-repeat = "72"
data-vs-scroll-parent = "#messagesList">
<md-item ng-repeat = "currentMessage in mailbox.$messages track by currentMessage.id"
data-ng-class = "{unread: !currentMessage.isread}">
<md-item-content>
<div class = "md-tile-left">
<!--avatar-->
</div>
<div class = "sg-tile-content">
<a data-ui-sref = "mail.account.mailbox.message({accountId: account.id, mailboxId: (mailbox.path | encodeUri), messageId: currentMessage.uid})"
data-ui-sref-active = "_selected">
<div class = "name">
{{currentMessage.$shortAddress('from')}}
<span class = "right" data-ng-bind-html = "currentMessage.relativedate"><!-- date --></span>
</div>
<div class = "subject">{{currentMessage.subject}}</div>
<i class = "icon-ion-refresh"
data-ng-hide = "mailbox.$loadMessage(currentMessage.uid)"><!-- loading --></i>
</a>
</div>
</md-item-content>
<md-divider md-inset = "true" ng-if = "!$last"><!--divider--></md-divider>
</md-item>
</md-list>
</md-content>
<div layout="column" flex="60" data-ui-view="message"><!-- message view --></div>
<div layout = "column" flex = "60" data-ui-view = "message"><!-- message view --></div>
</container>

View File

@ -1,33 +1,39 @@
<?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:rsrc="OGo:url"
xmlns:label="OGo:label"
className="UIxPageFrame"
title="title"
const:userDefaultsKeys="SOGoMailMessageCheck,SOGoRefreshViewCheck,SOGoMailSortByThreads,SOGoMailListViewColumnsOrder,SOGoMailDisplayRemoteInlineImages,SOGoMailComposeMessageType,SOGoMailReplyPlacement"
const:userSettingsKeys="Mail"
const:jsFiles="Common/resource.js, Common/user-model.js, Common/acl-model.js, Contacts/card-model.js, Contacts/addressbook-model.js, Mailer/message-model.js, Mailer/mailbox-model.js, Mailer/account-model.js, vendor/ckeditor/ckeditor.js, vendor/ckeditor/ck.js, vendor/ng-tags-input.js, vendor/angular-file-upload.js"
const:cssFiles="ng-tags-input.css">
<script type="text/javascript">
var mailAccounts = <var:string value="mailAccounts" const:escapeHTML="NO"/>;
var userNames = <var:string value="userNames" const:escapeHTML="NO" />;
var unseenCountFolders = <var:string value="unseenCountFolders" const:escapeHTML="NO"/>;
xmlns = "http://www.w3.org/1999/xhtml"
xmlns:var = "http://www.skyrix.com/od/binding"
xmlns:const = "http://www.skyrix.com/od/constant"
className = "UIxPageFrame"
title = "title"
const:userDefaultsKeys = "SOGoMailMessageCheck,SOGoRefreshViewCheck,SOGoMailSortByThreads,SOGoMailListViewColumnsOrder,SOGoMailDisplayRemoteInlineImages,SOGoMailComposeMessageType,SOGoMailReplyPlacement"
const:userSettingsKeys = "Mail"
const:jsFiles = "Common/resource.js, Common/user-model.js, Common/acl-model.js, Contacts/card-model.js, Contacts/addressbook-model.js, Mailer/message-model.js, Mailer/mailbox-model.js, Mailer/account-model.js, vendor/ckeditor/ckeditor.js, vendor/ckeditor/ck.js, vendor/ng-tags-input.js, vendor/angular-file-upload.js"
const:cssFiles = "ng-tags-input.css">
<script type = "text/javascript">
var mailAccounts =<var:string value = "mailAccounts" const:escapeHTML = "NO" />;
var userNames =<var:string value = "userNames" const:escapeHTML = "NO" />;
var unseenCountFolders =<var:string value = "unseenCountFolders" const:escapeHTML = "NO" />;
</script>
<style type="text/css">
<var:foreach list="availableLabels" item="currentLabel">
#label-menu LI.<var:string value="currentLabel.name.asCSSIdentifier"/>,
TABLE.messageList TR[labels~=<var:string const:value='"' const:escapeHTML="NO"
/><var:string value="currentLabel.name"/><var:string const:value='"' const:escapeHTML="NO"/>] TD
{ color: <var:string value="currentLabel.color"/>; }
TABLE.messageList TR[labels~=<var:string const:value='"' const:escapeHTML="NO"
/><var:string value="currentLabel.name"/><var:string const:value='"' const:escapeHTML="NO"/>]._selected TD
{ color: #fff;
background-color: <var:string value="currentLabel.color"/> !important; }
</var:foreach>
<style type = "text/css">
<var:foreach list = "availableLabels" item = "currentLabel">
#label-menu LI.<var:string value = "currentLabel.name.asCSSIdentifier" />,
TABLE.messageList TR[labels~=
<var:string const:value = '"' const:escapeHTML = "NO"
/>
<var:string value = "currentLabel.name" />
<var:string const:value = '"' const:escapeHTML = "NO" />] TD
{ color:<var:string value = "currentLabel.color" />; }
TABLE.messageList TR[labels~=
<var:string const:value = '"' const:escapeHTML = "NO"
/>
<var:string value = "currentLabel.name" />
<var:string const:value = '"' const:escapeHTML = "NO" />]._selected TD
{ color: #fff;
background-color:
<var:string value = "currentLabel.color" />
!important; }
</var:foreach>
</style>
<!--
@ -214,51 +220,64 @@
</div>
-->
<!--FIXME : repport in-line styling in style definitions -->
<div class="view" ui-view="mailboxes" layout="row"><!-- mailboxes list --></div>
<div class = "view" ui-view = "mailboxes" layout = "row"><!-- mailboxes list --></div>
<script type="text/ng-template" id="UIxMailMainFrame">
<script type = "text/ng-template" id = "UIxMailMainFrame">
<!-- dropdown menu for mailbox options button -->
<div id="folderProperties" class="f-dropdown icons-dropdown" data-dropdown-content="dropdown-content">
<ul class="button-group">
<li data-ng-show="currentFolder.isEditable">
<span class="button" data-ng-click="editFolder(currentFolder)"><i class="icon-pencil"><!-- rename --></i></span>
<div id = "folderProperties" class = "f-dropdown icons-dropdown" data-dropdown-content = "dropdown-content">
<ul class = "button-group">
<li data-ng-show = "currentFolder.isEditable">
<span class = "button" data-ng-click = "editFolder(currentFolder)">
<i class = "icon-pencil"><!-- rename --></i>
</span>
</li>
<li data-ng-show="currentFolder.isEditable">
<span class="button" data-ng-click="newFolder(currentFolder)"><i class="icon-plus"><!-- new mailbox --></i></span>
<li data-ng-show = "currentFolder.isEditable">
<span class = "button" data-ng-click = "newFolder(currentFolder)">
<i class = "icon-plus"><!-- new mailbox --></i>
</span>
</li>
<li data-ng-show="currentFolder.isEditable">
<span class="button" data-ng-click="share()"><i class="icon-earth"><!-- share --></i></span>
<li data-ng-show = "currentFolder.isEditable">
<span class = "button" data-ng-click = "share()">
<i class = "icon-earth"><!-- share --></i>
</span>
</li>
<li>
<span class="button" data-ng-click="exportMails()"><i class="icon-ion-ios7-upload-outline"><!-- export --></i></span>
<span class = "button" data-ng-click = "exportMails()">
<i class = "icon-ion-ios7-upload-outline"><!-- export --></i>
</span>
</li>
<li data-ng-show="currentFolder.isEditable">
<span class="button" data-ng-click="confirmDelete()"><i class="icon-trash"><!-- delete --></i></span>
<li data-ng-show = "currentFolder.isEditable">
<span class = "button" data-ng-click = "confirmDelete()">
<i class = "icon-trash"><!-- delete --></i>
</span>
</li>
</ul>
</div>
<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>
<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>
<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>
<md-list ng-repeat="account in accounts track by account.id">
<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>
<md-list ng-repeat = "account in accounts track by account.id">
<md-item>
<md-item-content>
<div class="md-tile-content">
<md-button><h3>{{account.name}}</h3></md-button>
<div class = "md-tile-content">
<md-button>
<h3>{{account.name}}</h3>
</md-button>
</div>
</md-item-content>
</md-item>
<sg-folder-tree data-ng-repeat="folder in account.$mailboxes track by folder.id"
data-sg-root="account"
data-sg-folder="folder"
data-sg-select-folder="setCurrentFolder"><!-- tree --></sg-folder-tree>
<sg-folder-tree data-ng-repeat = "folder in account.$mailboxes track by folder.id"
data-sg-root = "account"
data-sg-folder = "folder"
data-sg-select-folder = "setCurrentFolder"><!-- tree --></sg-folder-tree>
</md-list>
</md-content>
</md-sidenav>
@ -267,31 +286,33 @@
<a class="button tiny radius split" data-ui-sref="mail.newMessage()"><var:string label:value="Compose"/><span data-dropdown-toggle="#draftsDrop"></span></a><br/>
</div>-->
<main layout="column" layout-fill="layout-fill">
<md-toolbar layout="row" layout-align="space-between start" class="md-tall md-grey">
<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% -->
<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">
<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">
[[Calendar]]
</div>
</span>
<span class="sd-toolbar-tools">
<span class = "sd-toolbar-tools">
<span>search</span>
</span>
</div>
</md-toolbar>
<md-content layout="row" flex="flex" ui-view="mailbox"><!-- messages list --></md-content>
<md-content layout = "row" flex = "flex" ui-view = "mailbox"><!-- messages list --></md-content>
</main>
</script>
<script type="text/ng-template" id="UIxMailFolderTemplate">
<var:component className="UIxMailFolderTemplate"/>
<script type = "text/ng-template" id = "UIxMailFolderTemplate">
<var:component className = "UIxMailFolderTemplate" />
</script>
<script type="text/ng-template" id="UIxMailViewTemplate">
<var:component className="UIxMailViewTemplate"/>
<script type = "text/ng-template" id = "UIxMailViewTemplate">
<var:component className = "UIxMailViewTemplate" />
</script>
</var:component>

View File

@ -1,50 +1,60 @@
<?xml version='1.0' standalone='yes'?>
<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:rsrc="OGo:url"
xmlns:label="OGo:label"
xmlns:uix="OGo:uix">
<md-toolbar class="md-toolbar-small md-hue-1 buttonsToolbar">
<span layout="row" flex="flex" layout-align="space-around center">
<a class="button tiny radius"
data-ui-sref="mail.account.mailbox.message.action({accountId: account.id, mailboxId: (mailbox.path | encodeUri), messageId: message.uid, actionName: 'reply'})"><i class="icon-reply"><!-- reply --></i></a>
<a class="button tiny radius"
data-ui-sref="mail.account.mailbox.message.action({accountId: account.id, mailboxId: (mailbox.path | encodeUri), messageId: message.uid, actionName: 'replyall'})"><i class="icon-reply"><!-- reply all --></i></a>
<a class="button tiny radius"
data-ui-sref="mail.account.mailbox.message.action({accountId: account.id, mailboxId: (mailbox.path | encodeUri), messageId: message.uid, actionName: 'forward'})"><i class="icon-reply"><!-- forward --></i></a>
<a class="button tiny radius"
data-ui-sref="mail.account.mailbox.message.edit({accountId: account.id, mailboxId: (mailbox.path | encodeUri), messageId: message.uid})"
data-ng-show="message.isDraft"><i class="icon-pencil"><!-- edit --></i></a>
<span class="button tiny radius alert"
data-ng-click="doDelete(message)"><i class="icon-trash"><!-- delete --></i></span>
<span class="button tiny radius"
data-ng-show="message.hasUnsafeContent"
data-ng-click="loadImages()"><var:string label:value="Load Images"/></span>
xmlns = "http://www.w3.org/1999/xhtml"
xmlns:var = "http://www.skyrix.com/od/binding"
xmlns:label = "OGo:label"
>
<md-toolbar class = "md-toolbar-small md-hue-1 buttonsToolbar">
<span layout = "row" flex = "flex" layout-align = "space-around center">
<a class = "button tiny radius"
data-ui-sref = "mail.account.mailbox.message.action({accountId: account.id, mailboxId: (mailbox.path | encodeUri), messageId: message.uid, actionName: 'reply'})">
<i class = "icon-reply"><!-- reply --></i>
</a>
<a class = "button tiny radius"
data-ui-sref = "mail.account.mailbox.message.action({accountId: account.id, mailboxId: (mailbox.path | encodeUri), messageId: message.uid, actionName: 'replyall'})">
<i class = "icon-reply"><!-- reply all --></i>
</a>
<a class = "button tiny radius"
data-ui-sref = "mail.account.mailbox.message.action({accountId: account.id, mailboxId: (mailbox.path | encodeUri), messageId: message.uid, actionName: 'forward'})">
<i class = "icon-reply"><!-- forward --></i>
</a>
<a class = "button tiny radius"
data-ui-sref = "mail.account.mailbox.message.edit({accountId: account.id, mailboxId: (mailbox.path | encodeUri), messageId: message.uid})"
data-ng-show = "message.isDraft">
<i class = "icon-pencil"><!-- edit --></i>
</a>
<span class = "button tiny radius alert"
data-ng-click = "doDelete(message)">
<i class = "icon-trash"><!-- delete --></i>
</span>
<span class = "button tiny radius"
data-ng-show = "message.hasUnsafeContent"
data-ng-click = "loadImages()">
<var:string label:value = "Load Images" />
</span>
</span>
</md-toolbar>
<md-content md-scroll-y="md-scroll-y" class="md-padding">
<header class="header">
<!--todo : default headings don't suit. Define new styles-->
<h3 data-ng-bind="message.subject"><!-- subject --></h3>
<div layout="row" layout-align="space-between center">
<h5>
<a data-ng-href="mailto:{{message.from[0].email}}"
data-ng-bind="message.from[0].full"><!-- from --></a>
</h5>
<h6 data-ng-bind="message.date"><!-- date --></h6>
</div>
<h5>
<a data-ng-href="mailto:{{message.to[0].email}}"
data-ng-bind="message.to[0].full"><!-- to --></a>
</h5>
<p class="flags">
<span class="label radius" data-ng-repeat="flag in message.flags">{{flag}}</span>
</p>
</header>
</md-toolbar>
<md-content md-scroll-y = "md-scroll-y" class = "md-padding">
<header class = "header">
<!--todo : default headings don't suit. Define new styles-->
<h3 data-ng-bind = "message.subject"><!-- subject --></h3>
<div layout = "row" layout-align = "space-between center">
<h5>
<a data-ng-href = "mailto:{{message.from[0].email}}"
data-ng-bind = "message.from[0].full"><!-- from --></a>
</h5>
<h6 data-ng-bind = "message.date"><!-- date --></h6>
</div>
<h5>
<a data-ng-href = "mailto:{{message.to[0].email}}"
data-ng-bind = "message.to[0].full"><!-- to --></a>
</h5>
<p class = "flags">
<span class = "label radius" data-ng-repeat = "flag in message.flags">{{flag}}</span>
</p>
</header>
<div class="mailer_mailcontent"
data-ng-bind-html="message.$content()"><!-- msg --></div>
</md-content>
<div class = "mailer_mailcontent"
data-ng-bind-html = "message.$content()"><!-- msg --></div>
</md-content>
</container>

View File

@ -1,174 +1,225 @@
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE container>
<container
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:var="http://www.skyrix.com/od/binding"
xmlns:const="http://www.skyrix.com/od/constant"
xmlns:rsrc="OGo:url"
xmlns:label="OGo:label"
><var:string var:value="doctype" const:escapeHTML="NO" />
<var:if condition="hideFrame" const:negate="YES"
><html const:xmlns="http://www.w3.org/1999/xhtml"
xml:lang="en" const:lang="en">
xmlns = "http://www.w3.org/1999/xhtml"
xmlns:xml = "http://www.w3.org/XML/1998/namespace"
xmlns:var = "http://www.skyrix.com/od/binding"
xmlns:const = "http://www.skyrix.com/od/constant"
xmlns:rsrc = "OGo:url"
xmlns:label = "OGo:label"
>
<var:string var:value = "doctype" const:escapeHTML = "NO" />
<var:if condition = "hideFrame" const:negate = "YES"
>
<html const:xmlns = "http://www.w3.org/1999/xhtml"
xml:lang = "en" const:lang = "en">
<head>
<title>
<var:string value="title"/>
</title>
<meta name="hideFrame" var:content="hideFrame" />
<meta name="description" content="SOGo Web Interface" />
<meta name="author" content="SKYRIX Software AG/Inverse inc." />
<meta name="robots" content="stop" />
<meta name="build" var:content="buildDate" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="mailto:support@inverse.ca" rev="made" />
<link rel="shortcut icon" var:href="siteFavicon" type="image/x-icon" />
<link type="text/css" rel="stylesheet" rsrc:href="css/icons.css"/>
<link type="text/css" rel="stylesheet" rsrc:href="css/angular-material.css"/>
<link type="text/css" rel="stylesheet" rsrc:href="css/themes/grey-theme.css"/>
<link type="text/css" rel="stylesheet" rsrc:href="css/styles.css"/>
<var:if condition="hasPageSpecificCSS"
><link type="text/css" rel="stylesheet" var:href="pageCSSURL"
/></var:if>
<var:foreach list="additionalCSSFiles" item="item"
><link type="text/css" rel="stylesheet" var:href="item"
/>
</var:foreach>
<var:if-ie const:lte="9"
><link type="text/css" rel="stylesheet" rsrc:href="iefixes.css"/>
<script type="text/javascript" rsrc:src="XMLHttpRequest.js"><!-- space --></script>
</var:if-ie>
<title>
<var:string value = "title" />
</title>
<meta name = "hideFrame" var:content = "hideFrame" />
<meta name = "description" content = "SOGo Web Interface" />
<meta name = "author" content = "SKYRIX Software AG/Inverse inc." />
<meta name = "robots" content = "stop" />
<meta name = "build" var:content = "buildDate" />
<meta name = "viewport" content = "width=device-width, initial-scale=1" />
<link href = "mailto:support@inverse.ca" rev = "made" />
<link rel = "shortcut icon" var:href = "siteFavicon" type = "image/x-icon" />
<link type = "text/css" rel = "stylesheet" rsrc:href = "css/icons.css" />
<link type = "text/css" rel = "stylesheet" rsrc:href = "css/angular-material.css" />
<link type = "text/css" rel = "stylesheet" rsrc:href = "css/themes/grey-theme.css" />
<link type = "text/css" rel = "stylesheet" rsrc:href = "css/styles.css" />
<var:if condition = "hasPageSpecificCSS"
>
<link type = "text/css" rel = "stylesheet" var:href = "pageCSSURL"
/>
</var:if>
<var:foreach list = "additionalCSSFiles" item = "item"
>
<link type = "text/css" rel = "stylesheet" var:href = "item"
/>
</var:foreach>
<var:if-ie const:lte = "9"
>
<link type = "text/css" rel = "stylesheet" rsrc:href = "iefixes.css" />
<script type = "text/javascript" rsrc:src = "XMLHttpRequest.js"><!-- space --></script>
</var:if-ie>
</head>
<body var:data-ng-app="angularModule" var:class="bodyClasses"
><var:if condition="isCompatibleBrowser"
><var:if condition="singleWindowModeEnabled"
><div id="popupFrame" style="display: none;"><iframe width="100%" height="100%" src="/SOGo/loading"><!-- space --></iframe></div></var:if
><var:if condition="shortUserNameForDisplay" const:value="anonymous"
const:negate="YES"><var:if condition="hasUserSettingsKeys"
><script type="text/javascript">
var UserSettings = <var:string value="userSettings" const:escapeHTML="NO"/>;
<body var:data-ng-app = "angularModule" var:class = "bodyClasses"
>
<var:if condition = "isCompatibleBrowser"
>
<var:if condition = "singleWindowModeEnabled"
>
<div id = "popupFrame" style = "display: none;">
<iframe width = "100%" height = "100%" src = "/SOGo/loading"><!-- space --></iframe>
</div>
</var:if
>
<var:if condition = "shortUserNameForDisplay" const:value = "anonymous"
const:negate = "YES">
<var:if condition = "hasUserSettingsKeys"
>
<script type = "text/javascript">
var UserSettings =<var:string value = "userSettings" const:escapeHTML = "NO" />;
</script
></var:if><var:if condition="hasUserDefaultsKeys">
<script type="text/javascript">
var UserDefaults = <var:string value="userDefaults" const:escapeHTML="NO"/>;
</script
></var:if
></var:if
><var:if condition="isPopup" const:negate="YES"
><var:if condition="isUIxDebugEnabled"
><!-- space --></var:if>
</var:if>
<var:component-content/>
<!--FIXME : make sure the .md-button.md-default-theme[disabled] is "contrast aware" disabled labels are actualy almost invisible -->
<md-toolbar class="sg-bottombar" layout="row" layout-align="center center">
<var:if condition="userHasCalendarAccess">
<var:if condition="isCalendar">
<md-button ng-disabled="true"><var:string label:value="Calendar" /></md-button>
</var:if>
<var:if condition="isCalendar" const:negate="YES">
<md-button var:href="relativeCalendarPath"><var:string label:value="Calendar" /></md-button>
</var:if>
</var:if>
<var:if condition="isContacts">
<md-button ng-disabled="true"><var:string label:value="Address Book"/></md-button>
</var:if>
<var:if condition="isContacts" const:negate="YES">
<md-button var:href="relativeContactsPath"><var:string label:value="Address Book" /></md-button>
</var:if>
<var:if condition="userHasMailAccess">
<var:if condition="isMail">
<md-button ng-disabled="true"><var:string label:value="Mail"/></md-button>
</var:if>
<var:if condition="isMail" const:negate="YES">
<md-button var:href="relativeMailPath"><var:string label:value="Mail" /></md-button>
</var:if>
</var:if>
<md-button var:data-ng-href="relativePreferencesPath"><var:string label:value="Preferences" /></md-button>
<var:if condition="isSuperUser">
<var:if condition="isAdministration">
<md-button ng-disabled="true"><var:string label:value="Administration"/></md-button>
</var:if>
<var:if condition="isAdministration" const:negate="YES">
<md-button var:href="relativeAdministrationPath"><var:string label:value="Administration" /></md-button>
</var:if>
</var:if>
</md-toolbar>
<script type="text/javascript">
var ApplicationBaseURL = '<var:string value="modulePath"/>';
var ResourcesURL = '<var:string value="applicationPath"/>.woa/WebServerResources';
var minimumSearchLength = <var:string value="minimumSearchLength"/>;
<var:if condition="isSuperUser"
>var IsSuperUser = true;
</var:if>
<var:if condition="isSuperUser" const:negate="YES"
>var IsSuperUser = false;
</var:if>
<var:if condition="usesCASAuthentication"
>var usesCASAuthentication = true;
</var:if>
<var:if condition="usesCASAuthentication" const:negate="YES"
>var usesCASAuthentication = false;
</var:if>
<var:if condition="shortUserNameForDisplay" const:value="anonymous"
const:negate="YES"
>var UserFolderURL = '<var:string value="userFolderPath" const:escapeHTML="NO"/>';
var UserLogin = '<var:string value="shortUserNameForDisplay" const:escapeHTML="NO"/>';
var UserIdentification = '<var:string value="userIdentification" const:escapeHTML="NO"/>';
var UserLanguage = '<var:string value="userLanguage" const:escapeHTML="NO"/>';
>
</var:if>
<var:string value="commonLocalizableStrings" const:escapeHTML="NO"/>
<var:string value="productLocalizableStrings" const:escapeHTML="NO"/>
</script>
<script type="text/javascript" rsrc:src="js/vendor/underscore-min.js"><!-- space --></script>
<script type="text/javascript" rsrc:src="js/vendor/hammer.js"><!-- space --></script>
<script type="text/javascript" rsrc:src="js/vendor/angular.js"><!-- space --></script>
<script type="text/javascript" rsrc:src="js/vendor/angular-animate.js"><!-- space --></script>
<script type="text/javascript" rsrc:src="js/vendor/angular-sanitize.js"><!-- space --></script>
<script type="text/javascript" rsrc:src="js/vendor/angular-aria.js"><!-- space --></script>
<script type="text/javascript" rsrc:src="js/vendor/angular-material.js"><!-- space --></script>
<script type="text/javascript" rsrc:src="js/vendor/angular-ui-router.js"><!-- space --></script>
<script type="text/javascript" rsrc:src="js/vendor/mm-foundation-tpls.js"><!-- space --></script>
<script type="text/javascript" rsrc:src="js/vendor/angular-recursion.js"><!-- space --></script>
<script type="text/javascript" rsrc:src="js/vendor/angular-vs-repeat.js"><!-- space --></script>
<script type="text/javascript" rsrc:src="js/Common/utils.js"><!-- space --></script>
<script type="text/javascript" rsrc:src="js/Common/ui.js"><!-- space --></script>
<script type="text/javascript" rsrc:src="js/Common/ui-common.js"><!-- space --></script>
<script type="text/javascript" rsrc:src="js/Common/ui-desktop.js"><!-- space --></script>
<var:if condition="hasProductSpecificJavaScript"><script type="text/javascript"
var:src="productJavaScriptURL"><!-- space --></script></var:if>
<var:if condition="hasPageSpecificJavaScript"><script type="text/javascript"
var:src="pageJavaScriptURL"><!-- space --></script></var:if>
<var:foreach list="additionalJSFiles" item="item"
><script type="text/javascript" var:src="item"><!-- space --></script>
</var:foreach>
<var:foreach list="systemAdditionalJSFiles" item="item"
><script type="text/javascript" var:src="item"><!-- space --></script>
</var:foreach>
<var:if condition = "hasUserDefaultsKeys">
<script type = "text/javascript">
var UserDefaults =<var:string value = "userDefaults" const:escapeHTML = "NO" />;
</script
>
</var:if
>
</var:if
>
<var:if condition = "isPopup" const:negate = "YES"
>
<var:if condition = "isUIxDebugEnabled"
><!-- space --></var:if>
</var:if>
<var:component-content />
<!--FIXME : make sure the .md-button.md-default-theme[disabled] is "contrast aware" disabled labels are actualy almost invisible -->
<md-toolbar class = "sg-bottombar" layout = "row" layout-align = "center center">
<var:if condition = "userHasCalendarAccess">
<var:if condition = "isCalendar">
<md-button ng-disabled = "true">
<var:string label:value = "Calendar" />
</md-button>
</var:if>
<var:if condition = "isCalendar" const:negate = "YES">
<md-button var:href = "relativeCalendarPath">
<var:string label:value = "Calendar" />
</md-button>
</var:if>
</var:if>
<var:if condition = "isContacts">
<md-button ng-disabled = "true">
<var:string label:value = "Address Book" />
</md-button>
</var:if>
<var:if condition = "isContacts" const:negate = "YES">
<md-button var:href = "relativeContactsPath">
<var:string label:value = "Address Book" />
</md-button>
</var:if>
<var:if condition = "userHasMailAccess">
<var:if condition = "isMail">
<md-button ng-disabled = "true">
<var:string label:value = "Mail" />
</md-button>
</var:if>
<var:if condition = "isMail" const:negate = "YES">
<md-button var:href = "relativeMailPath">
<var:string label:value = "Mail" />
</md-button>
</var:if>
</var:if>
<md-button var:data-ng-href = "relativePreferencesPath">
<var:string label:value = "Preferences" />
</md-button>
<var:if condition = "isSuperUser">
<var:if condition = "isAdministration">
<md-button ng-disabled = "true">
<var:string label:value = "Administration" />
</md-button>
</var:if>
<var:if condition = "isAdministration" const:negate = "YES">
<md-button var:href = "relativeAdministrationPath">
<var:string label:value = "Administration" />
</md-button>
</var:if>
</var:if>
</md-toolbar>
<script type = "text/javascript">
var ApplicationBaseURL = '<var:string value = "modulePath" />';
var ResourcesURL = '<var:string value = "applicationPath" />.woa/WebServerResources';
var minimumSearchLength =<var:string value = "minimumSearchLength" />;
<var:if condition = "isSuperUser"
>var IsSuperUser = true;
</var:if>
<var:if condition = "isSuperUser" const:negate = "YES"
>var IsSuperUser = false;
</var:if>
<var:if condition = "usesCASAuthentication"
>var usesCASAuthentication = true;
</var:if>
<var:if condition = "usesCASAuthentication" const:negate = "YES"
>var usesCASAuthentication = false;
</var:if>
<var:if condition = "shortUserNameForDisplay" const:value = "anonymous"
const:negate = "YES"
>var UserFolderURL = '<var:string value = "userFolderPath" const:escapeHTML = "NO" />';
var UserLogin = '<var:string value = "shortUserNameForDisplay" const:escapeHTML = "NO" />';
var UserIdentification = '<var:string value = "userIdentification" const:escapeHTML = "NO" />';
var UserLanguage = '<var:string value = "userLanguage" const:escapeHTML = "NO" />';
</var:if>
<var:string value = "commonLocalizableStrings" const:escapeHTML = "NO" />
<var:string value = "productLocalizableStrings" const:escapeHTML = "NO" />
</script>
<script type = "text/javascript" rsrc:src = "js/vendor/underscore-min.js"><!-- space --></script>
<script type = "text/javascript" rsrc:src = "js/vendor/hammer.js"><!-- space --></script>
<script type = "text/javascript" rsrc:src = "js/vendor/angular.js"><!-- space --></script>
<script type = "text/javascript" rsrc:src = "js/vendor/angular-animate.js"><!-- space --></script>
<script type = "text/javascript" rsrc:src = "js/vendor/angular-sanitize.js"><!-- space --></script>
<script type = "text/javascript" rsrc:src = "js/vendor/angular-aria.js"><!-- space --></script>
<script type = "text/javascript" rsrc:src = "js/vendor/angular-material.js"><!-- space --></script>
<script type = "text/javascript" rsrc:src = "js/vendor/angular-ui-router.js"><!-- space --></script>
<script type = "text/javascript" rsrc:src = "js/vendor/mm-foundation-tpls.js"><!-- space --></script>
<script type = "text/javascript" rsrc:src = "js/vendor/angular-recursion.js"><!-- space --></script>
<script type = "text/javascript" rsrc:src = "js/vendor/angular-vs-repeat.js"><!-- space --></script>
<script type = "text/javascript" rsrc:src = "js/Common/utils.js"><!-- space --></script>
<script type = "text/javascript" rsrc:src = "js/Common/ui.js"><!-- space --></script>
<script type = "text/javascript" rsrc:src = "js/Common/ui-common.js"><!-- space --></script>
<script type = "text/javascript" rsrc:src = "js/Common/ui-desktop.js"><!-- space --></script>
<var:if condition = "hasProductSpecificJavaScript">
<script type = "text/javascript"
var:src = "productJavaScriptURL"><!-- space --></script>
</var:if>
<var:if condition = "hasPageSpecificJavaScript">
<script type = "text/javascript"
var:src = "pageJavaScriptURL"><!-- space --></script>
</var:if>
<var:foreach list = "additionalJSFiles" item = "item"
>
<script type = "text/javascript" var:src = "item"><!-- space --></script>
</var:foreach>
<var:foreach list = "systemAdditionalJSFiles" item = "item"
>
<script type = "text/javascript" var:src = "item"><!-- space --></script>
</var:foreach>
</var:if>
<var:if condition="isCompatibleBrowser" const:negate="YES"
><var:component className="SOGoBrowsersPanel"
/></var:if>
<noscript>
<div class="javascriptPopupBackground">
</div>
<div class="javascriptMessagePseudoWindow noJavascriptErrorMessage">
<var:string label:value="noJavascriptError"
/><br /><br
/><a class="button" var:href="page.context.uri"
><var:string label:value="noJavascriptRetry"
/></a>
</div>
</noscript>
<var:if condition = "isCompatibleBrowser" const:negate = "YES"
>
<var:component className = "SOGoBrowsersPanel"
/>
</var:if>
<noscript>
<div class = "javascriptPopupBackground">
</div>
<div class = "javascriptMessagePseudoWindow noJavascriptErrorMessage">
<var:string label:value = "noJavascriptError"
/>
<br />
<br
/>
<a class = "button" var:href = "page.context.uri"
>
<var:string label:value = "noJavascriptRetry"
/>
</a>
</div>
</noscript>
</body>
</html>
</var:if>
<var:if condition="hideFrame">
<var:if condition = "hideFrame">
<var:component-content />
</var:if>
</container>