Smf® Solutions

Smf 2.1.x => Smf 2.1.x Discussion Générale => Discussion démarrée par: maximus23 le 19 Décembre 2021 à 06:03:05

Titre: Modification pour les dates des évènements du calendrier 2.1 RC4
Posté par: maximus23 le 19 Décembre 2021 à 06:03:05
Bonjour,

Concerne 2.1 RC4.

Format de date testé dans la configuration Admin : %d %B %Y à %T

Voici les modifications à apporter pour avoir un format de date correct pour les évènements.

Pour ceux qui n'ont pas encore installé de Modules les 4 fichiers corrigés à remplacer se trouvent en annexe.

Pour les autres voici la correction à faire.

Fichier Sources/Calendar.php

Rechercher :
Code
$start_parsed = date_parse($_REQUEST['start_date']);
Remplacer par :
Code
$start_parsed = date_parse(convertDateToEnglish($_REQUEST['start_date']));

Rechercher :
Code
$end_parsed = date_parse($_REQUEST['end_date']);
Remplacer par :
Code
$end_parsed = date_parse(convertDateToEnglish($_REQUEST['end_date'])); 

Sauver.

Fichier Sources/Subs-Calendar.php

Rechercher :
Code
$d = date_parse($_POST['start_date']);
Remplacer par :
Code
$d = date_parse(convertDateToEnglish($_POST['start_date']));

Rechercher :
Code
$d = date_parse($_POST['start_datetime']);
Remplacer par :
Code
$d = date_parse(convertDateToEnglish($_POST['start_datetime']));

Rechercher :
Code
$start_string_parsed = date_parse($start_string);
Remplacer par :
Code
$start_string_parsed = date_parse(convertDateToEnglish($start_string));

Rechercher :
Code
$end_string_parsed = date_parse($end_string);
Remplacer par :
Code
$end_string_parsed = date_parse(convertDateToEnglish($end_string));

Mettre avant la fin du fichier ?>
Code
/**
 * Helper function to convert date string to english
 * so that date_parse can parse the date
 *
 * @param string $date A localized date string
 * @return string English date string
 */
function convertDateToEnglish($date)
{
    global $txt, $context;

    if ($context['user']['language'] == 'english')
        return $date;

    $replacements = array_combine(array_map('strtolower', $txt['months_titles']), array(
        'January', 'February', 'March', 'April', 'May', 'June',
        'July', 'August', 'September', 'October', 'November', 'December'
    ));
    $replacements += array_combine(array_map('strtolower', $txt['months_short']), array(
        'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
        'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
    ));
    $replacements += array_combine(array_map('strtolower', $txt['days']), array(
        'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'
    ));
    $replacements += array_combine(array_map('strtolower', $txt['days_short']), array(
        'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'
    ));
    // Find all possible variants of AM and PM for this language.
    $replacements[strtolower($txt['time_am'])] = 'AM';
    $replacements[strtolower($txt['time_pm'])] = 'PM';
    if (($am = strftime('%p', strtotime('01:00:00'))) !== 'p' && $am !== false)
    {
        $replacements[strtolower($am)] = 'AM';
        $replacements[strtolower(strftime('%p', strtotime('23:00:00')))] = 'PM';
    }
    if (($am = strftime('%P', strtotime('01:00:00'))) !== 'P' && $am !== false)
    {
        $replacements[strtolower($am)] = 'AM';
        $replacements[strtolower(strftime('%P', strtotime('23:00:00')))] = 'PM';
    }

    return strtr(strtolower($date), $replacements);
}

Sauver.

Fichier Themes/default/Calendar.template.php

Rechercher :
Code
                 <input type="text" name="start_date" id="start_date" maxlength="10" value="', $calendar_data['start_date'], '" tabindex="', $context['tabindex']++, '" class="date_input start" data-type="date">';
Remplacer par :
Code
                 <input type="text" name="start_date" id="start_date" maxlength="10" value="', trim($calendar_data['start_date']), '" tabindex="', $context['tabindex']++, '" class="date_input start" data-type="date">';

Rechercher :
Code
                 <input type="text" name="end_date" id="end_date" maxlength="10" value="', $calendar_data['end_date'], '" tabindex="', $context['tabindex']++, '" class="date_input end" data-type="date">';
Remplacer par :
Code
                 <input type="text" name="end_date" id="end_date" maxlength="10" value="', trim($calendar_data['end_date']), '" tabindex="', $context['tabindex']++, '" class="date_input end" data-type="date">';

Rechercher :
Code
                                <input type="text" name="start_date" id="start_date" maxlength="10" value="', $context['event']['start_date'], '" tabindex="', $context['tabindex']++, '" class="date_input start" data-type="date">
                                <input type="text" name="start_time" id="start_time" maxlength="11" value="', $context['event']['start_time_local'], '" tabindex="', $context['tabindex']++, '" class="time_input start" data-type="time"', !empty($context['event']['allday']) ? ' disabled' : '', '>
Remplacer par :
Code
                                <input type="text" name="start_date" id="start_date" maxlength="10" value="', trim($context['event']['start_date_orig']), '" tabindex="', $context['tabindex']++, '" class="date_input start" data-type="date">
                                <input type="text" name="start_time" id="start_time" maxlength="11" value="', $context['event']['start_time_orig'], '" tabindex="', $context['tabindex']++, '" class="time_input start" data-type="time"', !empty($context['event']['allday']) ? ' disabled' : '', '>

Rechercher :
Code
                                <input type="text" name="end_date" id="end_date" maxlength="10" value="', $context['event']['end_date'], '" tabindex="', $context['tabindex']++, '" class="date_input end" data-type="date"', $modSettings['cal_maxspan'] == 1 ? ' disabled' : '', '>
                                <input type="text" name="end_time" id="end_time" maxlength="11" value="', $context['event']['end_time_local'], '" tabindex="', $context['tabindex']++, '" class="time_input end" data-type="time"', !empty($context['event']['allday']) ? ' disabled' : '', '>
Remplacer par :
Code
                                <input type="text" name="end_date" id="end_date" maxlength="10" value="', trim($context['event']['end_date_orig']), '" tabindex="', $context['tabindex']++, '" class="date_input end" data-type="date"', $modSettings['cal_maxspan'] == 1 ? ' disabled' : '', '>
                                <input type="text" name="end_time" id="end_time" maxlength="11" value="', $context['event']['end_time_orig'], '" tabindex="', $context['tabindex']++, '" class="time_input end" data-type="time"', !empty($context['event']['allday']) ? ' disabled' : '', '>

Sauver.

Fichier Themes/default/Post.template.php

Rechercher :
Code
                                        <input type="text" name="start_date" id="start_date" maxlength="10" value="', $context['event']['start_date'], '" tabindex="', $context['tabindex']++, '" class="date_input start" data-type="date">
                                        <input type="text" name="start_time" id="start_time" maxlength="11" value="', $context['event']['start_time'], '" tabindex="', $context['tabindex']++, '" class="time_input start" data-type="time"', !empty($context['event']['allday']) ? ' disabled' : '', '>
Remplacer par :
Code
                                        <input type="text" name="start_date" id="start_date" maxlength="10" value="', trim($context['event']['start_date_orig']), '" tabindex="', $context['tabindex']++, '" class="date_input start" data-type="date">
                                        <input type="text" name="start_time" id="start_time" maxlength="11" value="', $context['event']['start_time_orig'], '" tabindex="', $context['tabindex']++, '" class="time_input start" data-type="time"', !empty($context['event']['allday']) ? ' disabled' : '', '>

Rechercher :
Code
                                        <input type="text" name="end_date" id="end_date" maxlength="10" value="', $context['event']['end_date'], '" tabindex="', $context['tabindex']++, '" class="date_input end" data-type="date"', $modSettings['cal_maxspan'] == 1 ? ' disabled' : '', '>
                                        <input type="text" name="end_time" id="end_time" maxlength="11" value="', $context['event']['end_time'], '" tabindex="', $context['tabindex']++, '" class="time_input end" data-type="time"', !empty($context['event']['allday']) ? ' disabled' : '', '>
Remplacer par :
Code
                                        <input type="text" name="end_date" id="end_date" maxlength="10" value="', trim($context['event']['end_date_orig']), '" tabindex="', $context['tabindex']++, '" class="date_input end" data-type="date"', $modSettings['cal_maxspan'] == 1 ? ' disabled' : '', '>
                                        <input type="text" name="end_time" id="end_time" maxlength="11" value="', $context['event']['end_time_orig'], '" tabindex="', $context['tabindex']++, '" class="time_input end" data-type="time"', !empty($context['event']['allday']) ? ' disabled' : '', '>

Sauver.
Titre: Modification pour les dates des évènements du calendrier 2.1 RC4
Posté par: bisane le 19 Décembre 2021 à 09:13:05
Merci, Max ! :)