Reformat code (indent)
parent
3b43cabc68
commit
296e8f09e5
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue