12,
'default_year' => 'auto',
'show_tabs' => 'yes',
], $atts, 'academiccrew_courses_archive' );
$calc = new AcademicYearCalculator();
$default_year = match ( (string) $atts['default_year'] ) {
'auto' => $calc->calculate( 1 ),
'all' => null,
default => (int) $atts['default_year'] ?: null,
};
$periods = [];
for ( $p = 1; $p <= PeriodCadence::period_count(); $p++ ) {
$periods[] = [
'value' => $p,
'label' => PeriodCadence::period_label( $p ),
'yearFmt' => $calc->format( $calc->calculate( $p ) ),
];
}
wp_enqueue_style(
'academiccrew-courses-archive',
ACADEMICCREW_URL . 'assets/css/courses-archive.css',
[ 'fusion-stylesheet', 'tabler-icons' ],
ACADEMICCREW_VERSION
);
wp_enqueue_script(
'academiccrew-courses-archive',
ACADEMICCREW_URL . 'assets/js/courses-archive.js',
[],
ACADEMICCREW_VERSION,
true
);
wp_localize_script( 'academiccrew-courses-archive', 'ACADEMICCREW_ARCHIVE', [
'restUrl' => rest_url( 'academiccrew/v1/courses' ),
'filtersUrl' => rest_url( 'academiccrew/v1/courses/filters' ),
'nonce' => wp_create_nonce( 'wp_rest' ),
'perPage' => (int) $atts['per_page'],
'defaultYear' => $default_year,
'periods' => $periods,
'i18n' => [
'all' => __( 'All courses', 'academiccrew' ),
'noResults' => __( 'No courses found with these filters.', 'academiccrew' ),
'loading' => __( 'Loading courses...', 'academiccrew' ),
'courses' => __( 'courses', 'academiccrew' ),
'course' => __( 'course', 'academiccrew' ),
'resetFilters' => __( 'Reset filters', 'academiccrew' ),
'sort' => __( 'Sort', 'academiccrew' ),
'sortCode' => __( 'Code A→Z', 'academiccrew' ),
'sortName' => __( 'Name A→Z', 'academiccrew' ),
'sortCfuDesc' => __( 'Credits ↓', 'academiccrew' ),
'sortCfuAsc' => __( 'Credits ↑', 'academiccrew' ),
'sortYearDesc' => __( 'Year ↓', 'academiccrew' ),
'sortYearAsc' => __( 'Year ↑', 'academiccrew' ),
'cfu' => 'CFU',
'viewCourse' => __( 'View course →', 'academiccrew' ),
'allYears' => __( 'All academic years', 'academiccrew' ),
'allDegrees' => __( 'All degree programmes', 'academiccrew' ),
'allInstructors' => __( 'All instructors', 'academiccrew' ),
'language' => __( 'Language', 'academiccrew' ),
'credits' => __( 'Credits', 'academiccrew' ),
'degreeProgram' => __( 'Degree programme', 'academiccrew' ),
'instructor' => __( 'Instructor', 'academiccrew' ),
'searchPlaceholder' => __( 'Search course or code...', 'academiccrew' ),
],
] );
ob_start();
?>