* InfoLog: config which fields are editable for status "archive", default all

This commit is contained in:
ralf 2024-04-03 16:01:50 +02:00
parent f9545835fa
commit 9f2d952fdf
5 changed files with 36 additions and 11 deletions

View File

@ -129,6 +129,10 @@ class infolog_bo
* @var string "yes": archived entries can not be changed, "but_admins" noone but admins can change archived entries * @var string "yes": archived entries can not be changed, "but_admins" noone but admins can change archived entries
*/ */
var $archived_readonly; var $archived_readonly;
/**
* @var array fields editable for status archived
*/
var $archived_editable;
/** /**
* Instance of infolog_tracking, only instaciated if needed! * Instance of infolog_tracking, only instaciated if needed!
* *
@ -302,6 +306,7 @@ class infolog_bo
} }
} }
} }
$this->archived_editable = $config_data['archived_editable'] ?? null;
$this->limit_modified_n_month = $config_data['limit_modified_n_month'] ?? null; $this->limit_modified_n_month = $config_data['limit_modified_n_month'] ?? null;
} }

View File

@ -2239,7 +2239,7 @@ class infolog_ui
unset($preserv['msg']); unset($preserv['msg']);
unset($preserv['links']); unset($preserv['link_to']); unset($preserv['links']); unset($preserv['link_to']);
// for no edit rights or implizit edit of responsible user make all fields readonly, but status and percent // for no edit rights or implicit edit of responsible user make all fields readonly, but status and percent
if ($info_id && !$this->bo->check_access($content, Acl::EDIT) && !$undelete) if ($info_id && !$this->bo->check_access($content, Acl::EDIT) && !$undelete)
{ {
$readonlys['__ALL__'] = true; // make all fields not explicitly set readonly $readonlys['__ALL__'] = true; // make all fields not explicitly set readonly
@ -2258,6 +2258,17 @@ class infolog_ui
{ {
$readonlys['action'] = true; $readonlys['action'] = true;
} }
// if only certain fields are editable in status "archived", set all r/o and then allow the given one plus buttons
elseif ($content['info_status'] === 'archive' && $this->bo->archived_editable)
{
$readonlys['__ALL__'] = true; // make all fields not explicitly set readonly
foreach($this->bo->archived_editable as $name)
{
$readonlys[$name] = false;
}
$readonlys['button[edit]'] = $readonlys['button[save]'] = $readonlys['button[apply]'] = $readonlys['no_notifications'] = false;
$readonlys['action'] = $readonlys['button[cancel]'] = false; // always allowed
}
// ToDo: use the old status before the delete // ToDo: use the old status before the delete
if ($info_id && !empty($undelete)) if ($info_id && !empty($undelete))
{ {
@ -2265,7 +2276,8 @@ class infolog_ui
$this->tmpl->setElementAttribute('button[save]', 'label', 'Un-Delete'); $this->tmpl->setElementAttribute('button[save]', 'label', 'Un-Delete');
} }
if (!($readonlys['button[delete]'] = !$info_id || !$this->bo->check_access($content, Acl::DELETE))) if (!($readonlys['button[delete]'] = !$info_id || !$this->bo->check_access($content, Acl::DELETE) ||
$content['info_status'] === 'archive' && $this->bo->archived_readonly))
{ {
$content['info_anz_subs'] = $this->bo->anzSubs($info_id); // to determine js confirmation of delete or not $content['info_anz_subs'] = $this->bo->anzSubs($info_id); // to determine js confirmation of delete or not
} }
@ -2632,6 +2644,7 @@ class infolog_ui
Api\Config::save_value('implicit_rights', $this->bo->implicit_rights = $content['implicit_rights'] == 'edit' ? 'edit' : 'read', 'infolog'); Api\Config::save_value('implicit_rights', $this->bo->implicit_rights = $content['implicit_rights'] == 'edit' ? 'edit' : 'read', 'infolog');
Api\Config::save_value('history', $this->bo->history = $content['history'], 'infolog'); Api\Config::save_value('history', $this->bo->history = $content['history'], 'infolog');
Api\Config::save_value('archived_readonly', $this->bo->archived_readonly = $content['archived_readonly'], 'infolog'); Api\Config::save_value('archived_readonly', $this->bo->archived_readonly = $content['archived_readonly'], 'infolog');
Api\Config::save_value('archived_editable', $this->bo->archived_editable = $content['archived_editable'], 'infolog');
Api\Config::save_value('index_load_cfs', implode(',', (array)$content['index_load_cfs']), 'infolog'); Api\Config::save_value('index_load_cfs', implode(',', (array)$content['index_load_cfs']), 'infolog');
Api\Config::save_value('sub_prefix', $content['sub_prefix'], 'infolog'); Api\Config::save_value('sub_prefix', $content['sub_prefix'], 'infolog');
Api\Config::save_value('allow_past_due_date', $content['allow_past_due_date'], 'infolog'); Api\Config::save_value('allow_past_due_date', $content['allow_past_due_date'], 'infolog');
@ -2681,7 +2694,8 @@ class infolog_ui
'history_no_delete' => lang('Yes, noone can purge deleted items'), 'history_no_delete' => lang('Yes, noone can purge deleted items'),
), ),
'index_load_cfs' => $this->bo->enums['type'], 'index_load_cfs' => $this->bo->enums['type'],
'notification_type' => array('~global~' => 'all') + $this->bo->enums['type'] 'notification_type' => array('~global~' => 'all') + $this->bo->enums['type'],
'archived_editable' => $excludefields,
); );
$preserve['notification_old_type'] = $content['notification_type']; $preserve['notification_old_type'] = $content['notification_type'];
$this->tmpl->read('infolog.config'); $this->tmpl->read('infolog.config');

View File

@ -183,6 +183,7 @@ edit rights (full edit rights incl. making someone else responsible!) infolog de
edit status infolog de Status ändern edit status infolog de Status ändern
edit the entry infolog de Eintrag bearbeiten edit the entry infolog de Eintrag bearbeiten
edit this entry infolog de Diesen Eintrag bearbeiten edit this entry infolog de Diesen Eintrag bearbeiten
editable fields for status 'archived' admin de Bearbeitbare Felder für Status 'Archiviert'
empty for all infolog de Leer für alle empty for all infolog de Leer für alle
encrypt description infolog de Beschreibung verschlüsseln encrypt description infolog de Beschreibung verschlüsseln
end infolog de Ende end infolog de Ende
@ -193,8 +194,8 @@ enter a custom phone/email, leave empty if linked entry should be used infolog d
enter a textual description of the log-entry infolog de Geben Sie eine textliche Beschreibung des Eintrags ein enter a textual description of the log-entry infolog de Geben Sie eine textliche Beschreibung des Eintrags ein
enter the query pattern infolog de Geben Sie ein Suchmuster ein enter the query pattern infolog de Geben Sie ein Suchmuster ein
entry and all files infolog de Eintrag und alle Dateien entry and all files infolog de Eintrag und alle Dateien
entry can not be changed anymore, after status is set infolog de Eintrag kann NICHT mehr geändert werden, nach dem der Status gesetzt wurde entry can not be changed anymore, after status is set admin de Eintrag kann NICHT mehr geändert werden, nach dem der Status gesetzt wurde
entry can not be changed by anybody, but egroupware admins infolog de Eintrag kann NICHT mehr geändert werden von jedem, außer EGroupware Administratoren entry can not be changed by anybody, but egroupware admins admin de Eintrag kann NICHT mehr geändert werden von jedem, außer EGroupware Administratoren
error: importing the ical infolog de Fehler beim Import der iCal error: importing the ical infolog de Fehler beim Import der iCal
error: no mail (mailbox / uid) given! infolog de Fehler: keine Mail (Mailbox / UID) angegeben! error: no mail (mailbox / uid) given! infolog de Fehler: keine Mail (Mailbox / UID) angegeben!
error: saving the entry infolog de Fehler: beim Speichern des Eintrags error: saving the entry infolog de Fehler: beim Speichern des Eintrags
@ -226,7 +227,7 @@ general fields: infolog de Allgemeine Felder:
general settings infolog de Allgemeine Einstellungen: general settings infolog de Allgemeine Einstellungen:
global categories infolog de Globale Kategorien global categories infolog de Globale Kategorien
group owner for infolog de Gruppeneigentümer für group owner for infolog de Gruppeneigentümer für
handling of status 'archived' infolog de Behandlung des Status 'Archiviert' handling of status 'archived' admin de Behandlung des Status 'Archiviert'
high infolog de Hoch high infolog de Hoch
history infolog de Historie history infolog de Historie
history logging infolog de Protokollierung der Historie history logging infolog de Protokollierung der Historie
@ -317,7 +318,7 @@ no entries found, try again ... infolog de Kein Einträge gefunden, noch einmal
no filter infolog de Kein Filter no filter infolog de Kein Filter
no links or attachments infolog de Keine Verknüpfungen oder Anhänge no links or attachments infolog de Keine Verknüpfungen oder Anhänge
no project infolog de Kein Projekt no project infolog de Kein Projekt
no special handling infolog de Keine spezielle Behandlung no special handling admin de Keine spezielle Behandlung
nonactive infolog de Nicht aktiv nonactive infolog de Nicht aktiv
none infolog de Keine none infolog de Keine
normal infolog de Normal normal infolog de Normal

View File

@ -183,6 +183,7 @@ edit rights (full edit rights incl. making someone else responsible!) infolog en
edit status infolog en Edit status edit status infolog en Edit status
edit the entry infolog en Edit the entry edit the entry infolog en Edit the entry
edit this entry infolog en Edit this entry edit this entry infolog en Edit this entry
editable fields for status 'archived' admin en Editable fields for status 'archived'
empty for all infolog en Empty for all empty for all infolog en Empty for all
encrypt description infolog en Encrypt description encrypt description infolog en Encrypt description
end infolog en End end infolog en End
@ -193,8 +194,8 @@ enter a custom phone/email, leave empty if linked entry should be used infolog e
enter a textual description of the log-entry infolog en Enter text description of the InfoLog entry enter a textual description of the log-entry infolog en Enter text description of the InfoLog entry
enter the query pattern infolog en Enter the query pattern enter the query pattern infolog en Enter the query pattern
entry and all files infolog en Entry and all files entry and all files infolog en Entry and all files
entry can not be changed anymore, after status is set infolog en Entry can NOT be changed anymore, after status is set entry can not be changed anymore, after status is set admin en Entry can NOT be changed anymore, after status is set
entry can not be changed by anybody, but egroupware admins infolog en Entry can NOT be changed by anybody, but EGroupware admins entry can not be changed by anybody, but egroupware admins admin en Entry can NOT be changed by anybody, but EGroupware admins
error: importing the ical infolog en Error: importing the iCal error: importing the ical infolog en Error: importing the iCal
error: no mail (mailbox / uid) given! infolog en Error: no mail (Mailbox / UID) given! error: no mail (mailbox / uid) given! infolog en Error: no mail (Mailbox / UID) given!
error: saving the entry infolog en Error saving the entry! error: saving the entry infolog en Error saving the entry!
@ -226,7 +227,7 @@ general fields: infolog en General fields:
general settings infolog en General settings general settings infolog en General settings
global categories infolog en Global categories global categories infolog en Global categories
group owner for infolog en Group owner for group owner for infolog en Group owner for
handling of status 'archived' infolog en Handling of status 'archived' handling of status 'archived' admin en Handling of status 'archived'
high infolog en High high infolog en High
history infolog en History history infolog en History
history logging infolog en History logging history logging infolog en History logging
@ -317,7 +318,7 @@ no entries found, try again ... infolog en No entries found, try again ...
no filter infolog en No filter no filter infolog en No filter
no links or attachments infolog en No links or attachments no links or attachments infolog en No links or attachments
no project infolog en No project no project infolog en No project
no special handling infolog en No special handling no special handling admin en No special handling
nonactive infolog en Non active nonactive infolog en Non active
none infolog en None none infolog en None
normal infolog en Normal normal infolog en Normal

View File

@ -37,6 +37,10 @@
<option value="but_admins">Entry can NOT be changed by anybody, but EGroupware admins</option> <option value="but_admins">Entry can NOT be changed by anybody, but EGroupware admins</option>
</et2-select> </et2-select>
</row> </row>
<row>
<et2-description value="Editable fields for status 'archived'"></et2-description>
<et2-select id="archived_editable" multiple="true" placeholder="all"></et2-select>
</row>
<row class="th"> <row class="th">
<et2-description value="Other configurations" span="all"></et2-description> <et2-description value="Other configurations" span="all"></et2-description>
</row> </row>