mirror of
https://github.com/the-djmaze/snappymail.git
synced 2025-01-19 05:09:22 +08:00
CardDav categories support (tags)
This commit is contained in:
parent
fe50a92f88
commit
74b09e93df
10 changed files with 28760 additions and 28760 deletions
|
@ -621,8 +621,8 @@ ko.bindingHandlers.contactTags = {
|
|||
'parseOnBlur': true,
|
||||
'allowDragAndDrop': false,
|
||||
'focusCallback': fFocusCallback,
|
||||
'inputDelimiters': [';'],
|
||||
'outputDelimiter': ';',
|
||||
'inputDelimiters': [',', ';'],
|
||||
'outputDelimiter': ',',
|
||||
'autoCompleteSource': function (oData, fResponse) {
|
||||
RL.getContactsTagsAutocomplete(oData.term, function (aData) {
|
||||
fResponse(_.map(aData, function (oTagItem) {
|
||||
|
|
|
@ -73,7 +73,7 @@ ContactModel.prototype.parse = function (oItem)
|
|||
|
||||
if (Utils.isNonEmptyArray(oItem['Tags']))
|
||||
{
|
||||
this.tags = oItem['Tags'].join(';');
|
||||
this.tags = oItem['Tags'].join(',');
|
||||
}
|
||||
|
||||
bResult = true;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"name": "RainLoop",
|
||||
"title": "RainLoop Webmail",
|
||||
"version": "1.6.6",
|
||||
"release": "922",
|
||||
"release": "924",
|
||||
"description": "Simple, modern & fast web-based email client",
|
||||
"homepage": "http://rainloop.net",
|
||||
"main": "Gruntfile.js",
|
||||
|
|
|
@ -5048,7 +5048,7 @@ class Actions
|
|||
{
|
||||
$sUid = \trim($this->GetActionParam('Uid', ''));
|
||||
$sTags = \trim($this->GetActionParam('Tags', ''));
|
||||
$aTags = \explode(';', $sTags);
|
||||
$aTags = \explode(',', $sTags);
|
||||
$aTags = \array_map('trim', $aTags);
|
||||
$aTags = \array_unique($aTags);
|
||||
|
||||
|
|
|
@ -211,7 +211,7 @@ class Contact
|
|||
$oVCard->VERSION = '3.0';
|
||||
$oVCard->PRODID = '-//RainLoop//'.APP_VERSION.'//EN';
|
||||
|
||||
unset($oVCard->FN, $oVCard->EMAIL, $oVCard->TEL, $oVCard->URL, $oVCard->{'X-RL-TAGS'});
|
||||
unset($oVCard->FN, $oVCard->EMAIL, $oVCard->TEL, $oVCard->URL, $oVCard->NICKNAME, $oVCard->CATEGORIES, $oVCard->{'X-RL-TAGS'});
|
||||
|
||||
$sFirstName = $sLastName = $sMiddleName = $sSuffix = $sPrefix = '';
|
||||
foreach ($this->Properties as /* @var $oProperty \RainLoop\Providers\AddressBook\Classes\Property */ &$oProperty)
|
||||
|
@ -274,7 +274,7 @@ class Contact
|
|||
|
||||
if (0 < \count($this->Tags))
|
||||
{
|
||||
$oVCard->{'X-RL-TAGS'} = \implode(';', $this->Tags);
|
||||
$oVCard->CATEGORIES = $this->Tags;
|
||||
}
|
||||
|
||||
return (string) $oVCard->serialize();
|
||||
|
@ -590,9 +590,10 @@ class Contact
|
|||
|
||||
$this->Properties = $aProperties;
|
||||
|
||||
if (isset($oVCard->{'X-RL-TAGS'}) && 0 < \strlen($oVCard->{'X-RL-TAGS'}))
|
||||
if (isset($oVCard->CATEGORIES))
|
||||
{
|
||||
$this->Tags = \explode(';', $oVCard->{'X-RL-TAGS'});
|
||||
$this->Tags = (array) $oVCard->CATEGORIES->getParts();
|
||||
$this->Tags = \is_array($this->Tags) ? $this->Tags : array();
|
||||
$this->Tags = \array_map('trim', $this->Tags);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2470,6 +2470,7 @@ Utils.detectDropdownVisibility = _.debounce(function () {
|
|||
return oItem.hasClass('open');
|
||||
}));
|
||||
}, 50);
|
||||
|
||||
// Base64 encode / decode
|
||||
// http://www.webtoolkit.info/
|
||||
|
||||
|
@ -3254,8 +3255,8 @@ ko.bindingHandlers.contactTags = {
|
|||
'parseOnBlur': true,
|
||||
'allowDragAndDrop': false,
|
||||
'focusCallback': fFocusCallback,
|
||||
'inputDelimiters': [';'],
|
||||
'outputDelimiter': ';',
|
||||
'inputDelimiters': [',', ';'],
|
||||
'outputDelimiter': ',',
|
||||
'autoCompleteSource': function (oData, fResponse) {
|
||||
RL.getContactsTagsAutocomplete(oData.term, function (aData) {
|
||||
fResponse(_.map(aData, function (oTagItem) {
|
||||
|
@ -3460,7 +3461,6 @@ ko.observable.fn.validateFunc = function (fFunc)
|
|||
return this;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
|
2
rainloop/v/0.0.0/static/js/admin.min.js
vendored
2
rainloop/v/0.0.0/static/js/admin.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -3259,8 +3259,8 @@ ko.bindingHandlers.contactTags = {
|
|||
'parseOnBlur': true,
|
||||
'allowDragAndDrop': false,
|
||||
'focusCallback': fFocusCallback,
|
||||
'inputDelimiters': [';'],
|
||||
'outputDelimiter': ';',
|
||||
'inputDelimiters': [',', ';'],
|
||||
'outputDelimiter': ',',
|
||||
'autoCompleteSource': function (oData, fResponse) {
|
||||
RL.getContactsTagsAutocomplete(oData.term, function (aData) {
|
||||
fResponse(_.map(aData, function (oTagItem) {
|
||||
|
@ -3465,7 +3465,6 @@ ko.observable.fn.validateFunc = function (fFunc)
|
|||
return this;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -6008,7 +6007,7 @@ ContactModel.prototype.parse = function (oItem)
|
|||
|
||||
if (Utils.isNonEmptyArray(oItem['Tags']))
|
||||
{
|
||||
this.tags = oItem['Tags'].join(';');
|
||||
this.tags = oItem['Tags'].join(',');
|
||||
}
|
||||
|
||||
bResult = true;
|
||||
|
|
6
rainloop/v/0.0.0/static/js/app.min.js
vendored
6
rainloop/v/0.0.0/static/js/app.min.js
vendored
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue