complete feature contact info for angeltypes, fixes #275
This commit is contained in:
parent
f58a46603c
commit
d8476f244d
|
@ -31,3 +31,7 @@ INSERT INTO `GroupPrivileges` (group_id, privilege_id) VALUES (-65, 14), (-65, 4
|
||||||
|
|
||||||
-- Add log level to LogEntries
|
-- Add log level to LogEntries
|
||||||
ALTER TABLE `LogEntries` CHANGE COLUMN `nick` `level` VARCHAR(20) NOT NULL;
|
ALTER TABLE `LogEntries` CHANGE COLUMN `nick` `level` VARCHAR(20) NOT NULL;
|
||||||
|
|
||||||
|
-- Angeltype contact update
|
||||||
|
ALTER TABLE `AngelTypes` DROP FOREIGN KEY angeltypes_ibfk_1;
|
||||||
|
ALTER TABLE `AngelTypes` DROP `contact_user_id`;
|
|
@ -143,6 +143,10 @@ function angeltype_edit_controller()
|
||||||
|
|
||||||
$angeltype['description'] = strip_request_item_nl('description', $angeltype['description']);
|
$angeltype['description'] = strip_request_item_nl('description', $angeltype['description']);
|
||||||
|
|
||||||
|
$angeltype['contact_name'] = strip_request_item('contact_name', $angeltype['contact_name']);
|
||||||
|
$angeltype['contact_dect'] = strip_request_item('contact_dect', $angeltype['contact_dect']);
|
||||||
|
$angeltype['contact_email'] = strip_request_item('contact_email', $angeltype['contact_email']);
|
||||||
|
|
||||||
if ($valid) {
|
if ($valid) {
|
||||||
if ($angeltype['id'] != null) {
|
if ($angeltype['id'] != null) {
|
||||||
AngelType_update($angeltype);
|
AngelType_update($angeltype);
|
||||||
|
|
|
@ -16,7 +16,6 @@ function AngelType_new()
|
||||||
'no_self_signup' => false,
|
'no_self_signup' => false,
|
||||||
'description' => '',
|
'description' => '',
|
||||||
'requires_driver_license' => false,
|
'requires_driver_license' => false,
|
||||||
'contact_user_id' => null,
|
|
||||||
'contact_name' => null,
|
'contact_name' => null,
|
||||||
'contact_dect' => null,
|
'contact_dect' => null,
|
||||||
'contact_email' => null
|
'contact_email' => null
|
||||||
|
@ -24,53 +23,15 @@ function AngelType_new()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validates the contact user
|
* Checks if the angeltype has any contact information.
|
||||||
*
|
*
|
||||||
* @param array $angeltype The angeltype
|
* @param Angeltype $angeltype
|
||||||
* @return ValidationResult
|
* @return bool
|
||||||
*/
|
*/
|
||||||
function AngelType_validate_contact_user_id($angeltype)
|
function AngelType_has_contact_info($angeltype) {
|
||||||
{
|
return !empty($angeltype['contact_name'])
|
||||||
if (!isset($angeltype['contact_user_id'])) {
|
|| !empty($angeltype['contact_dect'])
|
||||||
return new ValidationResult(true, null);
|
|| !empty($angeltype['contact_email']);
|
||||||
}
|
|
||||||
if (isset($angeltype['contact_name']) || isset($angeltype['contact_dect']) || isset($angeltype['contact_email'])) {
|
|
||||||
return new ValidationResult(false, $angeltype['contact_user_id']);
|
|
||||||
}
|
|
||||||
if (User($angeltype['contact_user_id']) == null) {
|
|
||||||
return new ValidationResult(false, $angeltype['contact_user_id']);
|
|
||||||
}
|
|
||||||
return new ValidationResult(true, $angeltype['contact_user_id']);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns contact data (name, dect, email) for given angeltype or null
|
|
||||||
*
|
|
||||||
* @param array $angeltype The angeltype
|
|
||||||
* @return array|null
|
|
||||||
*/
|
|
||||||
function AngelType_contact_info($angeltype)
|
|
||||||
{
|
|
||||||
if (isset($angeltype['contact_user_id'])) {
|
|
||||||
$contact_user = User($angeltype['contact_user_id']);
|
|
||||||
$contact_data = [
|
|
||||||
'contact_name' => $contact_user['Nick'],
|
|
||||||
'contact_dect' => $contact_user['DECT']
|
|
||||||
];
|
|
||||||
if ($contact_user['email_by_human_allowed']) {
|
|
||||||
$contact_data['contact_email'] = $contact_user['email'];
|
|
||||||
}
|
|
||||||
return $contact_data;
|
|
||||||
}
|
|
||||||
if (isset($angeltype['contact_name'])) {
|
|
||||||
return [
|
|
||||||
'contact_name' => $angeltype['contact_name'],
|
|
||||||
'contact_dect' => $angeltype['contact_dect'],
|
|
||||||
'contact_email' => $angeltype['contact_email']
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -102,7 +63,6 @@ function AngelType_update($angeltype)
|
||||||
`description` = ?,
|
`description` = ?,
|
||||||
`requires_driver_license` = ?,
|
`requires_driver_license` = ?,
|
||||||
`no_self_signup` = ?,
|
`no_self_signup` = ?,
|
||||||
`contact_user_id` = ?,
|
|
||||||
`contact_name` = ?,
|
`contact_name` = ?,
|
||||||
`contact_dect` = ?,
|
`contact_dect` = ?,
|
||||||
`contact_email` = ?
|
`contact_email` = ?
|
||||||
|
@ -113,7 +73,6 @@ function AngelType_update($angeltype)
|
||||||
$angeltype['description'],
|
$angeltype['description'],
|
||||||
(int)$angeltype['requires_driver_license'],
|
(int)$angeltype['requires_driver_license'],
|
||||||
(int)$angeltype['no_self_signup'],
|
(int)$angeltype['no_self_signup'],
|
||||||
$angeltype['contact_user_id'],
|
|
||||||
$angeltype['contact_name'],
|
$angeltype['contact_name'],
|
||||||
$angeltype['contact_dect'],
|
$angeltype['contact_dect'],
|
||||||
$angeltype['contact_email'],
|
$angeltype['contact_email'],
|
||||||
|
@ -124,7 +83,10 @@ function AngelType_update($angeltype)
|
||||||
engelsystem_log(
|
engelsystem_log(
|
||||||
'Updated angeltype: ' . $angeltype['name'] . ($angeltype['restricted'] ? ', restricted' : '')
|
'Updated angeltype: ' . $angeltype['name'] . ($angeltype['restricted'] ? ', restricted' : '')
|
||||||
. ($angeltype['no_self_signup'] ? ', no_self_signup' : '')
|
. ($angeltype['no_self_signup'] ? ', no_self_signup' : '')
|
||||||
. ($angeltype['requires_driver_license'] ? ', requires driver license' : '')
|
. ($angeltype['requires_driver_license'] ? ', requires driver license' : '') . ', '
|
||||||
|
. $angeltype['contact_name'] . ', '
|
||||||
|
. $angeltype['contact_dect'] . ', '
|
||||||
|
. $angeltype['contact_email']
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,7 +105,6 @@ function AngelType_create($angeltype)
|
||||||
`description`,
|
`description`,
|
||||||
`requires_driver_license`,
|
`requires_driver_license`,
|
||||||
`no_self_signup`,
|
`no_self_signup`,
|
||||||
`contact_user_id`,
|
|
||||||
`contact_name`,
|
`contact_name`,
|
||||||
`contact_dect`,
|
`contact_dect`,
|
||||||
`contact_email`
|
`contact_email`
|
||||||
|
@ -156,7 +117,6 @@ function AngelType_create($angeltype)
|
||||||
$angeltype['description'],
|
$angeltype['description'],
|
||||||
(int)$angeltype['requires_driver_license'],
|
(int)$angeltype['requires_driver_license'],
|
||||||
(int)$angeltype['no_self_signup'],
|
(int)$angeltype['no_self_signup'],
|
||||||
$angeltype['contact_user_id'],
|
|
||||||
$angeltype['contact_name'],
|
$angeltype['contact_name'],
|
||||||
$angeltype['contact_dect'],
|
$angeltype['contact_dect'],
|
||||||
$angeltype['contact_email'],
|
$angeltype['contact_email'],
|
||||||
|
@ -167,7 +127,10 @@ function AngelType_create($angeltype)
|
||||||
engelsystem_log(
|
engelsystem_log(
|
||||||
'Created angeltype: ' . $angeltype['name']
|
'Created angeltype: ' . $angeltype['name']
|
||||||
. ($angeltype['restricted'] ? ', restricted' : '')
|
. ($angeltype['restricted'] ? ', restricted' : '')
|
||||||
. ($angeltype['requires_driver_license'] ? ', requires driver license' : '')
|
. ($angeltype['requires_driver_license'] ? ', requires driver license' : '') . ', '
|
||||||
|
. $angeltype['contact_name'] . ', '
|
||||||
|
. $angeltype['contact_dect'] . ', '
|
||||||
|
. $angeltype['contact_email']
|
||||||
);
|
);
|
||||||
return $angeltype;
|
return $angeltype;
|
||||||
}
|
}
|
||||||
|
|
|
@ -211,6 +211,20 @@ function page_with_title($title, $elements)
|
||||||
return '<div class="col-md-12"><h1>' . $title . '</h1>' . join($elements) . '</div>';
|
return '<div class="col-md-12"><h1>' . $title . '</h1>' . join($elements) . '</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Renders a description based on the data arrays key and values as label an description.
|
||||||
|
* @param array $data
|
||||||
|
*/
|
||||||
|
function description($data) {
|
||||||
|
$elements = [];
|
||||||
|
foreach($data as $label => $description) {
|
||||||
|
if(!empty($label) && !empty($description)) {
|
||||||
|
$elements[] = '<dt>' . $label . '</dt><dd>' . $description . '</dd>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return '<dl class="dl-horizontal">' . join($elements) . '</dl>';
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Rendert eine Datentabelle
|
* Rendert eine Datentabelle
|
||||||
*
|
*
|
||||||
|
|
|
@ -92,15 +92,20 @@ function AngelType_edit_view($angeltype, $supporter_mode)
|
||||||
_('Requires driver license'),
|
_('Requires driver license'),
|
||||||
$angeltype['requires_driver_license']
|
$angeltype['requires_driver_license']
|
||||||
),
|
),
|
||||||
//form_text('contact_name', _('Name'), $angeltype['contact_name']),
|
|
||||||
//form_text('contact_dect', _('DECT'), $angeltype['contact_dect']),
|
|
||||||
//form_text('contact_email', _('E-Mail'), $angeltype['contact_email']),
|
|
||||||
form_info(
|
form_info(
|
||||||
'',
|
'',
|
||||||
_('Restricted angel types can only be used by an angel if enabled by a supporter (double opt-in).')
|
_('Restricted angel types can only be used by an angel if enabled by a supporter (double opt-in).')
|
||||||
),
|
),
|
||||||
form_textarea('description', _('Description'), $angeltype['description']),
|
form_textarea('description', _('Description'), $angeltype['description']),
|
||||||
form_info('', _('Please use markdown for the description.')),
|
form_info('', _('Please use markdown for the description.')),
|
||||||
|
heading(_('Contact'), 3),
|
||||||
|
form_info(
|
||||||
|
'',
|
||||||
|
_('Primary contact person/desk for user questions.')
|
||||||
|
),
|
||||||
|
form_text('contact_name', _('Name'), $angeltype['contact_name']),
|
||||||
|
form_text('contact_dect', _('DECT'), $angeltype['contact_dect']),
|
||||||
|
form_text('contact_email', _('E-Mail'), $angeltype['contact_email']),
|
||||||
form_submit('submit', _('Save'))
|
form_submit('submit', _('Save'))
|
||||||
])
|
])
|
||||||
]);
|
]);
|
||||||
|
@ -322,6 +327,10 @@ function AngelType_view(
|
||||||
msg()
|
msg()
|
||||||
];
|
];
|
||||||
|
|
||||||
|
if(AngelType_has_contact_info($angeltype)) {
|
||||||
|
$page[] = AngelTypes_render_contact_info($angeltype);
|
||||||
|
}
|
||||||
|
|
||||||
$page[] = '<h3>' . _('Description') . '</h3>';
|
$page[] = '<h3>' . _('Description') . '</h3>';
|
||||||
$parsedown = new Parsedown();
|
$parsedown = new Parsedown();
|
||||||
if ($angeltype['description'] != '') {
|
if ($angeltype['description'] != '') {
|
||||||
|
@ -392,6 +401,20 @@ function AngelType_view(
|
||||||
return page_with_title(sprintf(_('Team %s'), $angeltype['name']), $page);
|
return page_with_title(sprintf(_('Team %s'), $angeltype['name']), $page);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Renders the contact info
|
||||||
|
*
|
||||||
|
* @param Anteltype $angeltype
|
||||||
|
* @return string HTML
|
||||||
|
*/
|
||||||
|
function AngelTypes_render_contact_info($angeltype) {
|
||||||
|
return heading(_('Contact'), 3) . description([
|
||||||
|
_('Name') => $angeltype['contact_name'],
|
||||||
|
_('DECT') => $angeltype['contact_dect'],
|
||||||
|
_('E-Mail') => $angeltype['contact_email']
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Display the list of angeltypes.
|
* Display the list of angeltypes.
|
||||||
*
|
*
|
||||||
|
@ -431,6 +454,10 @@ function AngelTypes_about_view_angeltype($angeltype)
|
||||||
|
|
||||||
$html = '<h2>' . $angeltype['name'] . '</h2>';
|
$html = '<h2>' . $angeltype['name'] . '</h2>';
|
||||||
|
|
||||||
|
if(AngelType_has_contact_info($angeltype)) {
|
||||||
|
$html .= AngelTypes_render_contact_info($angeltype);
|
||||||
|
}
|
||||||
|
|
||||||
if (isset($angeltype['user_angeltype_id'])) {
|
if (isset($angeltype['user_angeltype_id'])) {
|
||||||
$buttons = [];
|
$buttons = [];
|
||||||
if ($angeltype['user_angeltype_id'] != null) {
|
if ($angeltype['user_angeltype_id'] != null) {
|
||||||
|
|
Loading…
Reference in New Issue