mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-07 08:34:42 +01:00
Fix problems with links from mail
- unsaved links were not properly displayed - unsaved links could not be removed - calendar preserved original links, so even if you removed one it came back
This commit is contained in:
parent
8601f274ef
commit
953166b161
@ -152,9 +152,10 @@ export class Et2LinkList extends Et2LinkString
|
||||
*/
|
||||
protected _linkTemplate(link) : TemplateResult
|
||||
{
|
||||
const id = typeof link.id === "string" ? link.id : link.link_id;
|
||||
return html`
|
||||
${this._thumbnailTemplate(link)}
|
||||
<et2-link slot="${this._get_row_id(link)}" app="${link.app}" entry_id="${link.id}"
|
||||
<et2-link slot="${this._get_row_id(link)}" app="${link.app}" entry_id="${id}"
|
||||
._parent=${this}
|
||||
.value=${link}></et2-link>
|
||||
<et2-description slot="${this._get_row_id(link)}" ._parent=${this} class="remark"
|
||||
@ -248,7 +249,7 @@ export class Et2LinkList extends Et2LinkString
|
||||
<et2-image-expose
|
||||
slot="${this._get_row_id(link)}" ._parent=${this}
|
||||
href="${link.href}"
|
||||
src=${this.egw().image(link.icon)}></et2-image-expose>`;
|
||||
src=${this.egw().image("" + link.icon)}></et2-image-expose>`;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -123,22 +123,36 @@ export class Et2LinkString extends Et2Widget(LitElement) implements et2_IDetache
|
||||
{
|
||||
_value.to_app = this.application;
|
||||
}
|
||||
if(typeof _value == 'object' && !Array.isArray(_value) && _value.to_app && _value.to_id)
|
||||
|
||||
// We have app & ID - fetch list
|
||||
if(typeof _value == 'object' && !Array.isArray(_value) && _value.to_app && _value.to_id && typeof _value.to_id === "string")
|
||||
{
|
||||
this.application = _value.to_app;
|
||||
this.entryId = _value.to_id;
|
||||
this.get_links();
|
||||
return;
|
||||
}
|
||||
|
||||
// CSV list of IDs for one app
|
||||
if(typeof _value === "string")
|
||||
{
|
||||
let ids = _value.split(",");
|
||||
ids.forEach((id) => (<LinkInfo[]>this._link_list).push(<LinkInfo>{app: this.application, id: id}));
|
||||
}
|
||||
// List of LinkInfo
|
||||
else if(Array.isArray(_value))
|
||||
{
|
||||
this._link_list = _value;
|
||||
}
|
||||
// List of LinkInfo stuffed into to_id - entry is not yet saved
|
||||
else if(typeof _value.to_id !== "string")
|
||||
{
|
||||
this.entryId = _value.to_id;
|
||||
Object.keys(_value.to_id).forEach((key) =>
|
||||
{
|
||||
this._link_list.push(<LinkInfo>_value.to_id[key]);
|
||||
});
|
||||
}
|
||||
this._addLinks(this._link_list);
|
||||
super.requestUpdate();
|
||||
}
|
||||
@ -170,10 +184,11 @@ export class Et2LinkString extends Et2Widget(LitElement) implements et2_IDetache
|
||||
* @returns {TemplateResult}
|
||||
* @protected
|
||||
*/
|
||||
protected _linkTemplate(link) : TemplateResult
|
||||
protected _linkTemplate(link : LinkInfo) : TemplateResult
|
||||
{
|
||||
const id = typeof link.id === "string" ? link.id : link.link_id;
|
||||
return html`
|
||||
<et2-link app="${link.app}" entryId="${link.id}" .value=${link} ._parent=${this}></et2-link>`;
|
||||
<et2-link app="${link.app}" entryId="${id}" .value=${link} ._parent=${this}></et2-link>`;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -426,10 +426,11 @@ class Link extends Link\Storage
|
||||
$link_id = self::temp_link_id($app2,$id2);
|
||||
|
||||
$id1[$link_id] = array(
|
||||
'app' => $app2,
|
||||
'id' => $id2,
|
||||
'remark' => $remark,
|
||||
'owner' => $owner,
|
||||
'app' => $app2,
|
||||
'id' => $id2,
|
||||
'title' => $id2['title'] ?? $id2['name'],
|
||||
'remark' => $remark,
|
||||
'owner' => $owner,
|
||||
'link_id' => $link_id,
|
||||
'lastmod' => time()
|
||||
);
|
||||
|
@ -1788,7 +1788,7 @@ class calendar_uiforms extends calendar_ui
|
||||
|
||||
$content['participants']['status_date'] = $preserv['actual_date'];
|
||||
// set notify_externals in participants from cfs
|
||||
if (!empty($event['##notify_externals']))
|
||||
if(!empty($event['##notify_externals']))
|
||||
{
|
||||
$content['participants']['notify_externals'] = $event['##notify_externals'];
|
||||
}
|
||||
@ -1796,17 +1796,19 @@ class calendar_uiforms extends calendar_ui
|
||||
{
|
||||
$content['participants']['notify_externals'] = $this->cal_prefs['notify_externals'];
|
||||
}
|
||||
$preserved = array_merge($preserv,$content);
|
||||
$preserved = array_merge($preserv, $content);
|
||||
// Don't preserve link_to, it causes problems if user removes a link
|
||||
unset($preserved['link_to']);
|
||||
$event['new_alarm']['options'] = $content['new_alarm']['options'];
|
||||
if ($event['alarm'])
|
||||
if($event['alarm'])
|
||||
{
|
||||
// makes keys of the alarm-array starting with 1
|
||||
$content['alarm'] = array(false);
|
||||
foreach(array_values($event['alarm']) as $id => $alarm)
|
||||
{
|
||||
if (!$alarm['all'] && !$this->bo->check_perms(Acl::READ,0,$alarm['owner']))
|
||||
if(!$alarm['all'] && !$this->bo->check_perms(Acl::READ, 0, $alarm['owner']))
|
||||
{
|
||||
continue; // no read rights to the calendar of the alarm-owner, dont show the alarm
|
||||
continue; // no read rights to the calendar of the alarm-owner, dont show the alarm
|
||||
}
|
||||
$alarm['all'] = (int) $alarm['all'];
|
||||
// fix alarm time in case of alread run alarms, where the time will be their keep_time / when they will be cleaned up otherwise
|
||||
|
Loading…
Reference in New Issue
Block a user