Non-core contributed modules

Block: MRBS - use settings.php to set values for config.inc.php

Details

  • Type: Improvement Improvement
  • Status: Closed Closed
  • Priority: Major Major
  • Resolution: Fixed
  • Affects Version/s: 1.9
  • Fix Version/s: 2.0
  • Component/s: Block: Mrbs
  • Labels:
    None
  • Affected Branches:
    MOODLE_19_STABLE
  • Fixed Branches:
    MOODLE_20_STABLE

Description

Many of the options that are controlled in config.inc.php should be added so that they can be set via the Moodle interface rather than by changing the config.inc.php file. This was suggested by Jens-Peter Misch. I think this will be a significant improvement. I would like make sure that we use the config_plugins table to store the data.

  1. block_mrbs.php
    24/May/08 8:26 PM
    3 kB
    Jens-Peter misch
  2. block_mrbs.php
    18/May/08 1:57 PM
    3 kB
    Jens-Peter misch
  3. block_mrbs.php
    17/May/08 8:05 PM
    3 kB
    Jens-Peter misch
  4. block_mrbs.php
    17/May/08 5:51 AM
    2 kB
    Stephen Bourget
  5. config.inc.php
    26/May/08 7:25 AM
    18 kB
    Anthony Borrow
  6. config.inc.php
    17/May/08 5:51 AM
    17 kB
    Stephen Bourget
  7. CONTRIB-422.diff
    31/Jul/08 1:24 AM
    17 kB
    Anthony Borrow
  8. CONTRIB-422-b.diff
    03/Aug/08 11:00 AM
    33 kB
    Anthony Borrow
  9. settings.php
    17/May/08 5:51 AM
    5 kB
    Stephen Bourget

Issue Links

Activity

Hide
Anthony Borrow added a comment -

Also see and track down http://moodle.org/mod/forum/discuss.php?d=38604

I think it may be related to some setting in the config.inc.php file so I am including it here with this issue. Thanks to William Lu for reporting this.

Show
Anthony Borrow added a comment - Also see and track down http://moodle.org/mod/forum/discuss.php?d=38604 I think it may be related to some setting in the config.inc.php file so I am including it here with this issue. Thanks to William Lu for reporting this.
Hide
Stephen Bourget added a comment -

I'm in the process of implementing this feature this for my local install of MRBS. Are there any specific configuration options that you are looking for?

Show
Stephen Bourget added a comment - I'm in the process of implementing this feature this for my local install of MRBS. Are there any specific configuration options that you are looking for?
Hide
Stephen Bourget added a comment -

Attached is a copy of the modified files needed for the implementation

Config.inc.php - It has been modified to pull the settings from the mdl_config table

settings.php - It has been extended to support the MRBS configuration options for the Site Identification and Calendar settings sections of the config.inc.php file

lang\en_utf8\block_mrbs.php - The required language files.

Show
Stephen Bourget added a comment - Attached is a copy of the modified files needed for the implementation Config.inc.php - It has been modified to pull the settings from the mdl_config table settings.php - It has been extended to support the MRBS configuration options for the Site Identification and Calendar settings sections of the config.inc.php file lang\en_utf8\block_mrbs.php - The required language files.
Hide
Anthony Borrow added a comment -

Stephen - Thanks for your work on this. I am in the midst of final exams and papers so I am a bit distracted. A quick answer to your question is that I wanted to make as much as possible available via settings.php as possible. Working toward having everything in settings.php. The most difficult thing will be to work out how to allow for periods to be created. An array is listed but I think we can dynamically have the user chose that if they want to enable the use of periods they choose the number of periods and then we can generate a list of descriptions and create the array to feed into mrbs. I'll look at what you have done once I finish up the semester. Peace - Anthony

Show
Anthony Borrow added a comment - Stephen - Thanks for your work on this. I am in the midst of final exams and papers so I am a bit distracted. A quick answer to your question is that I wanted to make as much as possible available via settings.php as possible. Working toward having everything in settings.php. The most difficult thing will be to work out how to allow for periods to be created. An array is listed but I think we can dynamically have the user chose that if they want to enable the use of periods they choose the number of periods and then we can generate a list of descriptions and create the array to feed into mrbs. I'll look at what you have done once I finish up the semester. Peace - Anthony
Hide
Jens-Peter misch added a comment - - edited

see next info

Show
Jens-Peter misch added a comment - - edited see next info
Hide
Jens-Peter misch added a comment - - edited

Hi Stephen,
thank you for your work. I tested it with Moodle 1.9.1 Version. Here is the german UTF-8 File
Tha Attached File is a copy og the modified files needed for implementation (german):

lang\de_utf8\block_mrbs.php - The required language files.

Jens

Show
Jens-Peter misch added a comment - - edited Hi Stephen, thank you for your work. I tested it with Moodle 1.9.1 Version. Here is the german UTF-8 File Tha Attached File is a copy og the modified files needed for implementation (german): lang\de_utf8\block_mrbs.php - The required language files. Jens
Hide
Jens-Peter misch added a comment -

mrbs/lang/de_utf8/block_mrbs.php
Version 18.05.2008:
now without String-literal errors...

Show
Jens-Peter misch added a comment - mrbs/lang/de_utf8/block_mrbs.php Version 18.05.2008: now without String-literal errors...
Hide
Jens-Peter misch added a comment -

new Version...24.05.2008

Show
Jens-Peter misch added a comment - new Version...24.05.2008
Hide
Anthony Borrow added a comment -

Thanks for the updated file, perfect timing as I will begin looking at this today. I'm going to have some breakfast first and then come back. Classes are done so I can concentrate a little more on Moodle. Peace - Anthony

Show
Anthony Borrow added a comment - Thanks for the updated file, perfect timing as I will begin looking at this today. I'm going to have some breakfast first and then come back. Classes are done so I can concentrate a little more on Moodle. Peace - Anthony
Hide
Anthony Borrow added a comment -

Stephen - The settings stuff looks good. A couple of things I noticed during testing for further improvement. The first is that we really ought to use mdl_config_plugins rather than mdl_config. The second is that if debugging is turned to report all errors there are some undefined notices that prevent the block from displaying so we should also add to settings values for resolution, morningstarts, eveningends, morningstarts_min, and eveningends_min to avoid that problem. Otherwise, I think it all looks pretty sharp. Peace - Anthony

Show
Anthony Borrow added a comment - Stephen - The settings stuff looks good. A couple of things I noticed during testing for further improvement. The first is that we really ought to use mdl_config_plugins rather than mdl_config. The second is that if debugging is turned to report all errors there are some undefined notices that prevent the block from displaying so we should also add to settings values for resolution, morningstarts, eveningends, morningstarts_min, and eveningends_min to avoid that problem. Otherwise, I think it all looks pretty sharp. Peace - Anthony
Hide
Anthony Borrow added a comment -

added if statement for non-period related settings to avoid error when resolution, morningstarts, eveningends, morningstarts_min, and eveningends_min not set.

Show
Anthony Borrow added a comment - added if statement for non-period related settings to avoid error when resolution, morningstarts, eveningends, morningstarts_min, and eveningends_min not set.
Hide
Anthony Borrow added a comment -

Stephen,

I think we need to clean up the visibility such that if periods are enabled then resolution, morningstarts, eveningends, morningstarts_min, and eveningends_min are grayed out and when periods are disabled then they are able to be edited. Otherwise, folks have to save the change and wait for the page to reload. I think it will be clearer (and more Moodle-consistent) making them dependent upon the periods enabled box.

Peace - Anthony

Show
Anthony Borrow added a comment - Stephen, I think we need to clean up the visibility such that if periods are enabled then resolution, morningstarts, eveningends, morningstarts_min, and eveningends_min are grayed out and when periods are disabled then they are able to be edited. Otherwise, folks have to save the change and wait for the page to reload. I think it will be clearer (and more Moodle-consistent) making them dependent upon the periods enabled box. Peace - Anthony
Hide
Anthony Borrow added a comment -

Stephen - What do you think, since we are in here and working on this of adding the misc. settings (below) as well. I think some of these might be useful to folks. The exceptions would be $javascript_cursor and $show_plus_link (I don't think those would get much use). Similarly, we could include the mail settings (below). Ideally I would like to see the block use Moodle's mail settings (either sendmail or SMTP) as already configured within Moodle. Peace - Anthony

-MISC SETTINGS-

  1. Maximum repeating entrys (max needed +1):
    $max_rep_entrys = 365 + 1;
  1. Default report span in days:
    $default_report_days = 60;
  1. Results per page for searching:
    $search["count"] = 20;
  1. Page refresh time (in seconds). Set to 0 to disable
    $refresh_rate = 0;
  1. should areas be shown as a list or a drop-down select box?
    $area_list_format = "list";
    #$area_list_format = "select";
  1. Entries in monthly view can be shown as start/end slot, brief description or
  2. both. Set to "description" for brief description, "slot" for time slot and
  3. "both" for both. Default is "both", but 6 entries per day are shown instead
  4. of 12.
    $monthly_view_entries_details = "both";
  1. To view weeks in the bottom (trailer.php) as week numbers (42) instead of
  2. 'first day of the week' (13 Oct), set this to TRUE
    $view_week_number = FALSE;
  1. To display times on right side in day and week view, set to TRUE;
    $times_right_side = FALSE;
  1. Control the active cursor in day/week/month views.
    $javascript_cursor = true; # Change to false if clients have old browsers
  2. incompatible with JavaScript.

$show_plus_link = true; # Change to true to always show the link as in

  1. MRBS 1.1.

$highlight_method = "hybrid"; # One of "bgcolor", "class", "hybrid".

  1. Define default starting view (month, week or day)
  2. Default is day
    $default_view = "day";
  1. Define default room to start with (used by index.php)
  2. Room numbers can be determined by looking at the Edit or Delete URL for a
  3. room on the admin page.
  4. Default is 0
    $default_room = 0;

-MAIL SETTINGS-

  1. Set to TRUE if you want to be notified when entries are booked. Default is
  2. FALSE
    define ("MAIL_ADMIN_ON_BOOKINGS", FALSE);
  1. Set to TRUE if you want AREA ADMIN to be notified when entries are booked.
  2. Default is FALSE. Area admin emails are set in room_area admin page.
    define ("MAIL_AREA_ADMIN_ON_BOOKINGS", FALSE);
  1. Set to TRUE if you want ROOM ADMIN to be notified when entries are booked.
  2. Default is FALSE. Room admin emails are set in room_area admin page.
    define ("MAIL_ROOM_ADMIN_ON_BOOKINGS", FALSE);
  1. Set to TRUE if you want ADMIN to be notified when entries are deleted. Email
  2. will be sent to mrbs admin, area admin and room admin as per above settings,
  3. as well as to booker if MAIL_BOOKER is TRUE (see below).
    define ("MAIL_ADMIN_ON_DELETE", FALSE);
  1. Set to TRUE if you want to be notified on every change (i.e, on new entries)
  2. but also each time they are edited. Default is FALSE (only new entries)
    define ("MAIL_ADMIN_ALL", FALSE);
  1. Set to TRUE is you want to show entry details in email, otherwise only a
  2. link to view_entry is provided. Irrelevant for deleted entries. Default is
  3. FALSE.
    define ("MAIL_DETAILS", FALSE);
  1. Set to TRUE if you want BOOKER to receive a copy of his entries as well any
  2. changes (depends of MAIL_ADMIN_ALL, see below). Default is FALSE. To know
  3. how to set mrbs to send emails to users/bookers, see INSTALL.
    define ("MAIL_BOOKER", FALSE);
  1. If MAIL_BOOKER is set to TRUE (see above) and you use an authentication
  2. scheme other than 'auth_db', you need to provide the mail domain that will
  3. be appended to the username to produce a valid email address (ie.
  4. "@domain.com").
    define ("MAIL_DOMAIN", '');
  1. If you use MAIL_DOMAIN above and username returned by mrbs contains extra
  2. strings appended like domain name ('username.domain'), you need to provide
  3. this extra string here so that it will be removed from the username.
    define ("MAIL_USERNAME_SUFFIX", '');
  1. Set the name of the Backend used to transport your mails. Either "mail",
  2. "smtp" or "sendmail". Default is 'mail'. See INSTALL for more details.
    define ("MAIL_ADMIN_BACKEND", "mail");
Show
Anthony Borrow added a comment - Stephen - What do you think, since we are in here and working on this of adding the misc. settings (below) as well. I think some of these might be useful to folks. The exceptions would be $javascript_cursor and $show_plus_link (I don't think those would get much use). Similarly, we could include the mail settings (below). Ideally I would like to see the block use Moodle's mail settings (either sendmail or SMTP) as already configured within Moodle. Peace - Anthony -MISC SETTINGS-
  1. Maximum repeating entrys (max needed +1): $max_rep_entrys = 365 + 1;
  1. Default report span in days: $default_report_days = 60;
  1. Results per page for searching: $search["count"] = 20;
  1. Page refresh time (in seconds). Set to 0 to disable $refresh_rate = 0;
  1. should areas be shown as a list or a drop-down select box? $area_list_format = "list"; #$area_list_format = "select";
  1. Entries in monthly view can be shown as start/end slot, brief description or
  2. both. Set to "description" for brief description, "slot" for time slot and
  3. "both" for both. Default is "both", but 6 entries per day are shown instead
  4. of 12. $monthly_view_entries_details = "both";
  1. To view weeks in the bottom (trailer.php) as week numbers (42) instead of
  2. 'first day of the week' (13 Oct), set this to TRUE $view_week_number = FALSE;
  1. To display times on right side in day and week view, set to TRUE; $times_right_side = FALSE;
  1. Control the active cursor in day/week/month views. $javascript_cursor = true; # Change to false if clients have old browsers
  2. incompatible with JavaScript.
$show_plus_link = true; # Change to true to always show the link as in
  1. MRBS 1.1.
$highlight_method = "hybrid"; # One of "bgcolor", "class", "hybrid".
  1. Define default starting view (month, week or day)
  2. Default is day $default_view = "day";
  1. Define default room to start with (used by index.php)
  2. Room numbers can be determined by looking at the Edit or Delete URL for a
  3. room on the admin page.
  4. Default is 0 $default_room = 0;
-MAIL SETTINGS-
  1. Set to TRUE if you want to be notified when entries are booked. Default is
  2. FALSE define ("MAIL_ADMIN_ON_BOOKINGS", FALSE);
  1. Set to TRUE if you want AREA ADMIN to be notified when entries are booked.
  2. Default is FALSE. Area admin emails are set in room_area admin page. define ("MAIL_AREA_ADMIN_ON_BOOKINGS", FALSE);
  1. Set to TRUE if you want ROOM ADMIN to be notified when entries are booked.
  2. Default is FALSE. Room admin emails are set in room_area admin page. define ("MAIL_ROOM_ADMIN_ON_BOOKINGS", FALSE);
  1. Set to TRUE if you want ADMIN to be notified when entries are deleted. Email
  2. will be sent to mrbs admin, area admin and room admin as per above settings,
  3. as well as to booker if MAIL_BOOKER is TRUE (see below). define ("MAIL_ADMIN_ON_DELETE", FALSE);
  1. Set to TRUE if you want to be notified on every change (i.e, on new entries)
  2. but also each time they are edited. Default is FALSE (only new entries) define ("MAIL_ADMIN_ALL", FALSE);
  1. Set to TRUE is you want to show entry details in email, otherwise only a
  2. link to view_entry is provided. Irrelevant for deleted entries. Default is
  3. FALSE. define ("MAIL_DETAILS", FALSE);
  1. Set to TRUE if you want BOOKER to receive a copy of his entries as well any
  2. changes (depends of MAIL_ADMIN_ALL, see below). Default is FALSE. To know
  3. how to set mrbs to send emails to users/bookers, see INSTALL. define ("MAIL_BOOKER", FALSE);
  1. If MAIL_BOOKER is set to TRUE (see above) and you use an authentication
  2. scheme other than 'auth_db', you need to provide the mail domain that will
  3. be appended to the username to produce a valid email address (ie.
  4. "@domain.com"). define ("MAIL_DOMAIN", '');
  1. If you use MAIL_DOMAIN above and username returned by mrbs contains extra
  2. strings appended like domain name ('username.domain'), you need to provide
  3. this extra string here so that it will be removed from the username. define ("MAIL_USERNAME_SUFFIX", '');
  1. Set the name of the Backend used to transport your mails. Either "mail",
  2. "smtp" or "sendmail". Default is 'mail'. See INSTALL for more details. define ("MAIL_ADMIN_BACKEND", "mail");
Hide
Stephen Bourget added a comment -

Anthony,

There shouldn't be an issue adding the other configuration options to the settings.php file. The question becomes however would adding all of the options be overwhelming for the average user. For example when I was working on adding the configuration options I had found that none of the categories in the admin menu had any more than 12 or so options. I would be wary that having the 30+ configuration options for the MRBS block could be overwhelming. (The list you posted above would add 20 items to the configuration screen) If there were a way to add sub categories under the mrbs block for each type of configuration (General, email, misc, etc) then it wouldn't be an issue.

As to using mdl_config_plugins in place of mdl_config, I could not find anything that was using the settings.php files that actually used that table. The only part of moodle that seems to use mdl_config_plugins is the authentication plugins. (The authentication plugins are all configured with the config.html files)

-Steve

Show
Stephen Bourget added a comment - Anthony, There shouldn't be an issue adding the other configuration options to the settings.php file. The question becomes however would adding all of the options be overwhelming for the average user. For example when I was working on adding the configuration options I had found that none of the categories in the admin menu had any more than 12 or so options. I would be wary that having the 30+ configuration options for the MRBS block could be overwhelming. (The list you posted above would add 20 items to the configuration screen) If there were a way to add sub categories under the mrbs block for each type of configuration (General, email, misc, etc) then it wouldn't be an issue. As to using mdl_config_plugins in place of mdl_config, I could not find anything that was using the settings.php files that actually used that table. The only part of moodle that seems to use mdl_config_plugins is the authentication plugins. (The authentication plugins are all configured with the config.html files) -Steve
Hide
Jens-Peter misch added a comment -

Hi,
I can understand both sides. Maybe a solution is to do it like in a moodle profile with a button hide advanced / show advanced.
So let find us a solution as fast as possible, then i can do the next step with my information system add on on the mrbs block in moodle.
I wait for your comment.

Jens

Show
Jens-Peter misch added a comment - Hi, I can understand both sides. Maybe a solution is to do it like in a moodle profile with a button hide advanced / show advanced. So let find us a solution as fast as possible, then i can do the next step with my information system add on on the mrbs block in moodle. I wait for your comment. Jens
Hide
Juerg Hoerner added a comment -

You did a very good work.

Admin works well.

I have a problem, if I enrol as teacher over the ldap in moodle the booking system mrbs is not visible.

The config.inc.php is not configuered for ldap. Should I do configure for ldap?

Show
Juerg Hoerner added a comment - You did a very good work. Admin works well. I have a problem, if I enrol as teacher over the ldap in moodle the booking system mrbs is not visible. The config.inc.php is not configuered for ldap. Should I do configure for ldap?
Hide
Anthony Borrow added a comment -

Juerg - Thanks for testing the revised admin code. As I recall (sorry it has been a long time since I've had a chance to look at the MRBS code), MRBS simply uses a system level custom role like mrbs_scheduler, mrbs_viewer and mrbs_admin for privileges. I'm not that familiar with ldap other than in theory (but not in practice). Somehow you will need to use ldap to have that teacher given the system level role of an mrbs_scheduler. It is really not the config.inc.php that needs to use ldap as much as getting Moodle to recognize that that user has that system level role. Perhaps you can configure ldap to do this but since I have not worked with I am not sure how best to advise. Feel free to post a question on the forums about how to assign a system level role using ldap. Once you have that setup it should work. Alternatively, you can just manually go in and add that user to the mrbs_schedule role. Peace - Anthony

Show
Anthony Borrow added a comment - Juerg - Thanks for testing the revised admin code. As I recall (sorry it has been a long time since I've had a chance to look at the MRBS code), MRBS simply uses a system level custom role like mrbs_scheduler, mrbs_viewer and mrbs_admin for privileges. I'm not that familiar with ldap other than in theory (but not in practice). Somehow you will need to use ldap to have that teacher given the system level role of an mrbs_scheduler. It is really not the config.inc.php that needs to use ldap as much as getting Moodle to recognize that that user has that system level role. Perhaps you can configure ldap to do this but since I have not worked with I am not sure how best to advise. Feel free to post a question on the forums about how to assign a system level role using ldap. Once you have that setup it should work. Alternatively, you can just manually go in and add that user to the mrbs_schedule role. Peace - Anthony
Hide
Anthony Borrow added a comment -

an official diff file

Show
Anthony Borrow added a comment - an official diff file
Hide
Anthony Borrow added a comment -

an official patch file

Show
Anthony Borrow added a comment - an official patch file
Hide
Anthony Borrow added a comment -

Stephen - I agree that adding all of the options would be a bit much. Perhaps we can add them all but create an advanced settings to keep it from being overwhelming for those just getting started. I'll continue to see what needs to be done to make use of mdl_config_plugins instead of mdl_config. I have committed the work done so far as a starting place. I will be working on CONTRIB-230 which is to update the code to the latest MRBS version. Then I'll come back to finishing this off. Peace - Anthony

Show
Anthony Borrow added a comment - Stephen - I agree that adding all of the options would be a bit much. Perhaps we can add them all but create an advanced settings to keep it from being overwhelming for those just getting started. I'll continue to see what needs to be done to make use of mdl_config_plugins instead of mdl_config. I have committed the work done so far as a starting place. I will be working on CONTRIB-230 which is to update the code to the latest MRBS version. Then I'll come back to finishing this off. Peace - Anthony
Hide
Anthony Borrow added a comment -

I'm going to mark this issue as resolved. Not all of the config.inc.php settings are changeable via the mrbs block's settings.php file; however, the major ones are. Advanced users will know to look in the config.inc.php file anyway; however, if we want to add them then folks can comment here and I will reopen this issue. Otherwise, I'm not going to worry about it. Peace - Anthony

Show
Anthony Borrow added a comment - I'm going to mark this issue as resolved. Not all of the config.inc.php settings are changeable via the mrbs block's settings.php file; however, the major ones are. Advanced users will know to look in the config.inc.php file anyway; however, if we want to add them then folks can comment here and I will reopen this issue. Otherwise, I'm not going to worry about it. Peace - Anthony
Hide
Anthony Borrow added a comment -

CONTRIB-422 is a subtask of CONTRIB-230

Show
Anthony Borrow added a comment - CONTRIB-422 is a subtask of CONTRIB-230
Hide
Anthony Borrow added a comment -

The more I think about it, the more I would like for settings to be able to handle all of the possible configuration options even though it will make it a bit long to look it. I'll investigate how to make the page a little more manageable on the eyes by breaking them up somehow. I've simplified the config.inc.php file and removed items which I do not think are needed. Peace - Anthony

Show
Anthony Borrow added a comment - The more I think about it, the more I would like for settings to be able to handle all of the possible configuration options even though it will make it a bit long to look it. I'll investigate how to make the page a little more manageable on the eyes by breaking them up somehow. I've simplified the config.inc.php file and removed items which I do not think are needed. Peace - Anthony
Hide
Anthony Borrow added a comment -

added some additional settings from config.inc.php and the needed strings in the language files

Show
Anthony Borrow added a comment - added some additional settings from config.inc.php and the needed strings in the language files
Hide
Stephen Bourget added a comment -

Anthony,

I've looked at the revised changes to the MRBS block and have one observation:

The Settings "Entry type A" through "Entry type I" should most likely have a clearer "descriptive text" since it is not clear what the option actually does.

My suggestion would be to change the language string from :

$string['config_entry_type2'] = 'Entry type $a';

to

$string['config_entry_type2'] = 'These event types appear on the \'Add Entry\' screen. Every entry type is assigned a different color by default. Entry types are displayed in the following order: \'Entry A\', \'Entry B\', \'Entry C\', etc';

-Steve

Show
Stephen Bourget added a comment - Anthony, I've looked at the revised changes to the MRBS block and have one observation: The Settings "Entry type A" through "Entry type I" should most likely have a clearer "descriptive text" since it is not clear what the option actually does. My suggestion would be to change the language string from : $string['config_entry_type2'] = 'Entry type $a'; to $string['config_entry_type2'] = 'These event types appear on the \'Add Entry\' screen. Every entry type is assigned a different color by default. Entry types are displayed in the following order: \'Entry A\', \'Entry B\', \'Entry C\', etc'; -Steve
Hide
Anthony Borrow added a comment -

Steve - I agree that makes it much more clear. I've committed the new language string. Thanks - Anthony

Show
Anthony Borrow added a comment - Steve - I agree that makes it much more clear. I've committed the new language string. Thanks - Anthony
Hide
Anthony Borrow added a comment -

Closing all of my resolved issues. Peace - Anthony

Show
Anthony Borrow added a comment - Closing all of my resolved issues. Peace - Anthony

People

Vote (1)
Watch (3)

Dates

  • Created:
    Updated:
    Resolved: