Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • 1-navigation
  • 15-choses-a-faire-css
  • 2-gitlab-deploy
  • 3-qcu-features
  • 42-mementos-non-pris-en-compte-dans-commentaires-survey
  • add-tat-sample
  • gitlab-ci-debug
  • macao3-export
  • main
  • test
10 results

Target

Select target project
  • macao/macao-hugo
  • dbeniamine/macao-hugo
2 results
Select Git revision
  • 1-navigation
  • 15-choses-a-faire-css
  • 2-gitlab-deploy
  • 3-qcu-features
  • add-tat-sample
  • gitlab-ci-debug
  • macao3-export
  • main
  • test
9 results
Show changes

Commits on Source 65

Showing
with 463 additions and 385 deletions
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DBNavigator.Project.DDLFileAttachmentManager">
<mappings />
<preferences />
</component>
<component name="DBNavigator.Project.DatabaseAssistantManager">
<assistants />
</component>
<component name="DBNavigator.Project.DatabaseBrowserManager">
<autoscroll-to-editor value="false" />
<autoscroll-from-editor value="true" />
......@@ -22,6 +29,7 @@
<display-mode value="TABBED" />
<navigation-history-size value="100" />
<show-object-details value="false" />
<enable-sticky-paths value="true" />
</general>
<filters>
<object-type-filter>
......@@ -47,9 +55,15 @@
<object-type name="TYPE" enabled="true" />
<object-type name="TYPE_ATTRIBUTE" enabled="true" />
<object-type name="ARGUMENT" enabled="true" />
<object-type name="JAVA_CLASS" enabled="true" />
<object-type name="JAVA_INNER_CLASS" enabled="true" />
<object-type name="JAVA_FIELD" enabled="true" />
<object-type name="JAVA_METHOD" enabled="true" />
<object-type name="DIMENSION" enabled="true" />
<object-type name="CLUSTER" enabled="true" />
<object-type name="DBLINK" enabled="true" />
<object-type name="CREDENTIAL" enabled="true" />
<object-type name="AI_PROFILE" enabled="true" />
</object-type-filter>
</filters>
<sorting>
......@@ -86,9 +100,15 @@
<object-type name="FUNCTION" enabled="true" />
<object-type name="PACKAGE" enabled="true" />
<object-type name="TYPE" enabled="true" />
<object-type name="JAVA CLASS" enabled="true" />
<object-type name="INNER CLASS" enabled="true" />
<object-type name="JAVA FIELD" enabled="true" />
<object-type name="JAVA METHOD" enabled="true" />
<object-type name="JAVA PARAMETER" enabled="true" />
<object-type name="DIMENSION" enabled="false" />
<object-type name="CLUSTER" enabled="false" />
<object-type name="DBLINK" enabled="true" />
<object-type name="CREDENTIAL" enabled="false" />
</lookup-objects>
<force-database-load value="false" />
<prompt-connection-selection value="true" />
......@@ -363,9 +383,6 @@
<compile-dependencies value="ASK" />
<always-show-controls value="false" />
</compiler>
<debugger>
<debugger-type value="JDBC" />
</debugger>
</operation-settings>
<ddl-file-settings>
<extensions>
......@@ -379,6 +396,7 @@
<mapping file-type-id="TYPE" extensions="tpe" />
<mapping file-type-id="TYPE_SPEC" extensions="tps" />
<mapping file-type-id="TYPE_BODY" extensions="tpb" />
<mapping file-type-id="JAVA_SOURCE" extensions="sql" />
</extensions>
<general>
<lookup-ddl-files value="true" />
......@@ -388,6 +406,11 @@
<make-scripts-rerunnable value="true" />
</general>
</ddl-file-settings>
<assistant-settings>
<credential-settings>
<credentials />
</credential-settings>
</assistant-settings>
<general-settings>
<regional-settings>
<date-format value="MEDIUM" />
......
body {
// Global theme colors are defined in macao/themes/macao-hugo-theme/assets/_defaults.scss and go to @mixin theme-tetras
--quizz-backgourd-color: #00000;
--feedback-sucess-color: rgba(167, 243, 167, 0.8);
--feedback-error-color: #f8a5a5;
--feedback-sucess-color: #FFF2CC;
--feedback-error-color: #FFF2CC;
}
// ***********************************
// Global
// ***********************************
* {
line-height: 1.2 !important
}
img.inlineImage {
vertical-align: middle;
height: 1em;
}
img.inlineImage12 {
vertical-align: middle;
height: 1.2em;
}
img.inlineImage14 {
vertical-align: middle;
height: 1.4em;
}
img.inlineImage16 {
vertical-align: middle;
height: 1.6em;
}
img.inlineImage18 {
vertical-align: middle;
height: 1.8em;
}
img.inlineImage2 {
vertical-align: middle;
height: 2em;
}
img.inlineImage22 {
vertical-align: middle;
height: 2.2em;
}
img.inlineImage24 {
vertical-align: middle;
height: 2.4em;
}
img.inlineImage26 {
vertical-align: middle;
height: 2.6em;
}
img.inlineImage28 {
vertical-align: middle;
height: 2.8em;
}
img.inlineImage3 {
vertical-align: middle;
height: 3em;
}
.btn-play {
cursor: pointer;
background-color: var(--macao-primary-color);
border-radius: 5px;
border: none;
padding: 5px 10px;
color: white;
}
.notextplay {
font-size: 0; /* hides text */
color: white;
}
.notextplay i {
font-size: medium; /* keep icon visible */
}
p#gapfill-container {
......@@ -97,6 +167,10 @@ a {
color: var(--macao-primary-color);
}
a:visited {
color: var(--macao-primary-color) !important;
}
a.active {
color: var(--macao-secondary-font-color) !important;
background-color: var(--macao-primary-color);
......@@ -132,6 +206,75 @@ em:not(:has(strong)) {
padding: 3px;
padding-right: 4px;
border-radius: 5px;
}
// ***********************************
// Dropdowns
// ***********************************
// Min width for dropdowns
.sv-dropdown_select-wrapper {
min-width: 150px !important;
}
// ***********************************
// .sv-title-actions__title
// ***********************************
.sv-title-actions__title {
white-space: break-spaces !important;
}
.one-line {
.sd-question__header {
max-width: 60%;
}
.sv-string-viewer {
display: inline-flex;
align-items: center;
gap: 5px;
max-width: 100%;
flex-wrap: wrap;
}
}
/* Base style for buttons with the class "block" */
button.block {
background-color: white; /* White background */
border: 2px solid black; /* Black border */
color: black; /* Transparent text color to hide any text */
padding: 5px 10px; /* Padding around the button */
display: inline-block; /* Display as inline-block */
font-size: 14px; /* Font size */
margin: 2px; /* Margin around the button */
cursor: pointer; /* Pointer cursor on hover */
border-radius: 2; /* No rounded corners */
vertical-align: middle; /* Vertically align the button */
text-align: center; /* Center the text */
width: calc(10px + 50px * var(--duration)); /* Width proportional to the duration attribute */
height: 30px;
overflow: hidden; /* Hide overflow text */
white-space: nowrap; /* Prevent text from wrapping */
text-overflow: ellipsis; /* Add ellipsis if text overflows */
}
/* Additional style for buttons with both "block" and "outlined" classes */
button.block.outlined {
background-color: transparent; /* Transparent background */
border: 2px solid orange; /* Orange border */
}
/* Set the --duration CSS variable based on the duration attribute */
button.block {
--duration: 0; /* Default duration */
}
button.block[duration] {
--duration: attr(duration numeric, 0);
}
@import "plugins/_scrollbars.scss";
......@@ -46,3 +46,26 @@ $(document).ready(function() {
$('.book-icon').hide();
}
});
document.addEventListener('DOMContentLoaded', function() {
// Select all buttons with the class 'block'
const buttons = document.querySelectorAll('button.block');
// Loop through each button and set the width and label
buttons.forEach(function(button) {
const duration = parseFloat(button.getAttribute('duration'));
if (!isNaN(duration)) {
// Set the width proportional to the duration
button.style.width = `calc(50px + 50px * ${duration})`;
}
const label = button.getAttribute('label');
if (label) {
// Set the button's text content to the label attribute
button.textContent = label;
} else {
// If no label attribute, clear the text content
button.textContent = '';
}
});
});
/**
* Checks whether all questions are correctly answered and displays the overall feedback.
* Checks the answers for questions.
*/
function checkAllQuestions(questions, surveyConfig, converter) {
function checkAnswers() {
const currentPage = survey.currentPage;
let allCorrect = true;
questions.forEach((question) => {
if (!question.isAnswerCorrect()) {
// Iterate over each element on the current page
currentPage.elements.forEach((element) => {
if (element.getType() === 'html' && element.correctAnswers) {
// Handle fill-in-the-blank questions
element.correctAnswers.forEach((correctAnswerArray, index) => {
const blankId = `blank${currentPage.elements.indexOf(element) + 1}`;
const inputElement = document.getElementById(blankId);
let userAnswer;
if (inputElement.tagName === 'INPUT') {
userAnswer = inputElement.value.trim().toLowerCase();
} else if (inputElement.tagName === 'SELECT') {
userAnswer = inputElement.options[inputElement.selectedIndex].value.trim().toLowerCase();
}
// Check if the user's answer matches any of the correct answers
if (!correctAnswerArray.some(correctAnswer => userAnswer === correctAnswer.toLowerCase())) {
allCorrect = false;
}
});
} else if (element.getType() === 'radiogroup' && element.correctAnswer !== undefined) {
// Handle radio group questions
const userAnswer = element.value;
if (userAnswer != element.correctAnswer) {
allCorrect = false;
}
}
});
// Update feedback based on whether all answers are correct
if (allCorrect) {
correctIndic.node.className = "correct";
correctIndic.commentNode.innerHTML = converter.renderInline(surveyConfig.correctComment) || "All answers are correct!";
correctIndic.commentNode.innerHTML = jsonStatic.correctComment || "C'est correct !";
} else {
correctIndic.node.className = "incorrect";
correctIndic.commentNode.innerHTML = converter.renderInline(surveyConfig.incorrectComment) || "Some answers are incorrect!";
correctIndic.commentNode.innerHTML = jsonStatic.incorrectComment || "Vous vous trompez.";
}
}
/**
* Clears all answers and resets the feedback indicator.
* Clears all answers from the questions.
*/
function clearAllQuestions(questions) {
questions.forEach((question) => {
question.value = undefined;
function clearAnswers() {
const currentPage = survey.currentPage;
currentPage.elements.forEach((element, elementIndex) => {
if (element.getType() === 'html' && element.correctAnswers) {
element.correctAnswers.forEach((_, index) => {
const blankId = `blank${elementIndex + 1}`;
const inputElement = document.getElementById(blankId);
if (inputElement.tagName === 'INPUT') {
inputElement.value = "";
} else if (inputElement.tagName === 'SELECT') {
inputElement.selectedIndex = 0;
}
});
} else if (element.getType() === 'radiogroup') {
// Clear radio group selection
element.clearValue();
}
});
correctIndic.node.className = "hidden";
correctIndic.commentNode.innerHTML = "";
}
/**
* Renders the appropriate input method based on the presence of the "options" attribute.
*/
function renderInputMethod(element, elementIndex) {
const blankId = `blank${elementIndex + 1}`;
const inputElement = document.getElementById(blankId);
if (inputElement) {
// Create the appropriate input method based on the presence of options
if (element.options && element.options.length > 0) {
// Render a dropdown if options are available
const selectElement = document.createElement('select');
selectElement.id = blankId;
selectElement.className = 'fill-in-blank';
// Add a blank default option
const defaultOption = document.createElement('option');
defaultOption.value = "";
defaultOption.textContent = "";
selectElement.appendChild(defaultOption);
// Add the rest of the options
element.options.forEach(option => {
const optionElement = document.createElement('option');
optionElement.value = option;
optionElement.textContent = option;
selectElement.appendChild(optionElement);
});
// Replace the input element with the select element
inputElement.replaceWith(selectElement);
} else {
// Ensure it's an input element if no options are available
const inputTextElement = document.createElement('input');
inputTextElement.type = 'text';
inputTextElement.id = blankId;
inputTextElement.className = 'fill-in-blank';
inputTextElement.placeholder = ''; // Set an empty placeholder
// Replace any non-input element with the input element
inputElement.replaceWith(inputTextElement);
}
}
}
let correctIndic;
let survey;
let converter;
$(function () {
correctIndic = {
......@@ -40,35 +124,71 @@ $(function () {
};
Survey.JsonObject.metaData.addProperty("question", {
name: "customFormat", type: "text", category: "general", default: "", visibleIndex: 0,
name: "customFormat",
type: "text",
category: "general",
default: "",
visibleIndex: 0,
});
Survey.JsonObject.metaData.addProperty("survey", {
name: "isSurveySummaryVisible",
type: "boolean",
category: "general",
default: "false",
visibleIndex: 0,
});
// Load survey model from JSON
const survey = new Survey.Model(jsonStatic);
Survey.JsonObject.metaData.addProperty("question", {
name: "helpComment",
type: "text",
category: "general",
default: "",
visibleIndex: 0,
});
const questions = survey.getAllQuestions();
if(questions.length === 1) {
console.log("Survey has only one question");
console.log(questions[0]);
const regex = /pg\d\d\d/g;
if(questions[0].title.match(regex)) {
questions[0].titleLocation = "hidden";
}
}
Survey.JsonObject.metaData.addProperty("question", {
name: "compComment",
type: "text",
category: "general",
default: "",
visibleIndex: 0,
});
Survey.JsonObject.metaData.addProperty("question", {
name: "transcript",
type: "text",
category: "general",
default: "",
visibleIndex: 0,
});
Survey.JsonObject.metaData.addProperty("question", {
name: "options",
type: "text",
category: "general",
default: "",
visibleIndex: 0,
});
Survey.JsonObject.metaData.addProperty("question", {
name: "correctAnswers",
type: "text",
category: "general",
default: "",
visibleIndex: 0,
});
// Load survey model from JSON
survey = new Survey.Model(jsonStatic);
// Instantiate `markdown-it`
const converter = markdownit({
html: true // Support HTML tags in the source (unsafe, see documentation)
converter = markdownit({
html: true // Support HTML tags in the source
});
survey.onTextMarkdown.add((_, options) => {
// Convert Markdown to HTML
let str = converter.renderInline(options.text);
// ...
// Sanitize the HTML markup using a third-party library here
// ...
// Set HTML markup to render
options.html = str;
});
......@@ -81,16 +201,49 @@ $(function () {
$(options.htmlElement).addClass("hide-disabled-checkboxes");
}
}
// Display compComment if present
if (options.question.compComment) {
const compCommentElement = document.createElement('div');
compCommentElement.className = 'comp-comment';
compCommentElement.innerHTML = options.question.compComment;
options.htmlElement.appendChild(compCommentElement);
}
// Add "Corrigé" button if helpComment is present
if (options.question.helpComment) {
const helpButton = document.createElement('button');
helpButton.innerHTML = 'Corrigé';
helpButton.className = 'sd-btn sd-btn--action nav-input';
helpButton.onclick = () => toggleHelpComment(options.question, options.htmlElement);
options.htmlElement.appendChild(helpButton);
}
if (options.question.getType() === "dropdown") {
// Very ugly fix to avoid sliding dropdown on focus
$('.book-article').css({
'will-change': 'unset',
'transition': 'none',
});
$('.book-page').css({
'will-change': 'unset',
'transition': 'none',
});
}
});
// Render the appropriate input method for each question
survey.onAfterRenderQuestion.add((survey, options) => {
if (options.question.getType() === 'html') {
renderInputMethod(options.question, survey.currentPage.elements.indexOf(options.question));
}
});
// Add "Check answers" button
survey.addNavigationItem({
id: "sv-nav-check",
title: "Vérifier",
action: () => {
checkAllQuestions(survey.currentPage.questions, jsonStatic, converter);
},
action: checkAnswers,
css: "nav-button",
innerCss: "sd-btn sd-btn--action nav-input"
});
......@@ -99,22 +252,56 @@ $(function () {
survey.addNavigationItem({
id: "sv-nav-clear",
title: "Effacer",
action: () => {
clearAllQuestions(survey.currentPage.questions);
},
action: clearAnswers,
css: "nav-button",
innerCss: "sd-btn nav-input"
});
// Ugly tricks to avoid to create a new theme
survey.onComplete.add(function (sender) {
if (sender.isSurveySummaryVisible) {
console.log("Survey summary is visible");
const userData = sender.data;
const summaryDiv = document.createElement("div");
summaryDiv.id = "surveySummary";
let html = "<h3>Your Results:</h3><ul>";
sender.getAllQuestions().forEach(q => {
const userAnswer = userData[q.name];
const correctAnswer = q.correctAnswer;
const isCorrect = userAnswer === correctAnswer;
html += `<li><b>${q.title}</b><br>
Your answer: ${userAnswer} <br>
Correct answer: ${correctAnswer} <br>
<span style="color:${isCorrect ? 'green' : 'red'};">
${isCorrect ? "Correct" : "Incorrect"}
</span>`;
// Check if the transcript property exists and add an image if it does
if (q.transcript) {
html += `<br><img src="${q.transcript}" alt="Transcript Image" class="inlineImage">`;
}
html += `</li><br>`;
});
html += "</ul>";
summaryDiv.innerHTML = html;
// Append the summary after the survey container
document.getElementById("surveyContainer").appendChild(summaryDiv);
}
});
// Ugly tricks to avoid creating a new theme
const customTheme = SurveyTheme.DefaultLightPanelless;
const primColor = getComputedStyle(document.documentElement, null).getPropertyValue('--macao-primary-color');
customTheme.cssVariables["--sjs-primary-backcolor"] = primColor;
customTheme.cssVariables["--sjs-primary-backcolor-dark"] = primColor;
// Apply theme
survey.applyTheme(SurveyTheme.DefaultLightPanelless);
console.log("Survey theme applied", SurveyTheme.DefaultLightPanelless);
survey.applyTheme(customTheme);
console.log("Survey theme applied", customTheme);
survey.showCompleteButton = false;
......
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>full</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
</buildSpec>
<natures>
</natures>
</projectDescription>
......@@ -4,7 +4,7 @@ weight = 30
+++
Ecoutez et complétez les deux énoncés suivants en vous servant de
Écoutez et complétez les deux énoncés suivants en vous servant de
vos connaissances grammaticales.
......
{
"elements": [
{
{"type": "html",
"name": "pg1888_seg0",
"correctAnswer": "",
"titleLocation": "hidden",
"isRequired": true,
"width": "100%",
"minWidth": "256px",
"maxWidth": "",
"startWithNewLine": false,
"html": "\n\n***| <img style=\"vertical-align:middle;\" src=\"/macao-hugo/media/ecouteur_macao.png\" id=\"ecouteur_macao.png\"/> | <div><audio id=\"ecran191_04.mp3\" ><source src=\"/macao-hugo/media/ecran191/ecran191_04.mp3\" type=\"audio/mpeg\"></audio><button onclick=\"document.getElementById('ecran191_04.mp3').play()\">Play</button></div><div><audio id=\"ecran191_01.mp3\" ><source src=\"/macao-hugo/media/ecran191/ecran191_01.mp3\" type=\"audio/mpeg\"></audio><button onclick=\"document.getElementById('ecran191_01.mp3').play()\">Play</button></div> |\n| --- | --- |***\n\nZurich?\n\n| <img style=\"vertical-align:middle;\" src=\"/macao-hugo/media/ecouteur_macao.png\" id=\"ecouteur_macao.png\"/> | <div><audio id=\"ecran192_04.mp3\" ><source src=\"/macao-hugo/media/ecran192/ecran192_04.mp3\" type=\"audio/mpeg\"></audio><button onclick=\"document.getElementById('ecran192_04.mp3').play()\">Play</button></div><div><audio id=\"ecran192_01.mp3\" ><source src=\"/macao-hugo/media/ecran192/ecran192_01.mp3\" type=\"audio/mpeg\"></audio><button onclick=\"document.getElementById('ecran192_01.mp3').play()\">Play</button></div> |\n| --- | --- |\n\nZorba?",
"choices": []}
}
]
,
"correctComment": "\n\nBien.\n\nDans ces énoncés, la présence de **BE** est requise, sous la forme ***is*** prononcée\nici : **/z/**.\n\nComme les mots qui suivent commencent par le phonème **/z/**, on ne peut pas\nvraiment distinguer la prononciation de ***is***.\n\n",
......
......@@ -5,11 +5,9 @@ weight = 60
Ecoutez l'énoncé :
| <img style="vertical-align:middle;" src="/macao-hugo/media/ecouteur_macao.png" id="ecouteur_macao.png"/> | <div><audio id="ecran211_04.mp3" ><source src="/macao-hugo/media/ecran211/ecran211_04.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran211_04.mp3').play()">Play</button></div><div><audio id="ecran211_01.mp3" ><source src="/macao-hugo/media/ecran211/ecran211_01.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran211_01.mp3').play()">Play</button></div> |
| --- | --- |
Écoutez l'énoncé :
<audio id="ecran211_04.mp3" ><source src="/macao-hugo/media/ecran211/ecran211_04.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran211_04.mp3').play()">Play</button><audio id="ecran211_01.mp3" ><source src="/macao-hugo/media/ecran211/ecran211_01.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran211_01.mp3').play()">Play</button>
Cet énoncé renvoie-t-il à une situation réelle ?
<div class="commentaireInfoGroup" hidden="True">
......
{
"elements": [
{"name": "pg191",
{
"name": "pg191",
"titleLocation": "hidden",
"type": "radiogroup",
"choices": [
......@@ -14,8 +14,8 @@
"text": "NON\n"
}
],
"correctAnswer": 1}
"correctAnswer": 1
}
]
,
"correctComment": "\n\nBonne réponse !\n\n"}
......@@ -3,11 +3,9 @@ title = "Sixième tâche"
weight = 100
+++
Ecoutez :
| <img style="vertical-align:middle;" src="/macao-hugo/media/ecouteur_macao.png" id="ecouteur_macao.png"/> | <div><audio id="ecran26_01.mp3" ><source src="/macao-hugo/media/ecran26/ecran26_01.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran26_01.mp3').play()">Play</button></div> |
| --- | --- |
Écoutez :
<audio id="ecran26_01.mp3" ><source src="/macao-hugo/media/ecran26/ecran26_01.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran26_01.mp3').play()">Play</button>
Sélectionnez ce que vous avez entendu.
......
{
"elements": [
{"type": "html",
"name": "pg2429_seg0",
"correctAnswer": "",
"titleLocation": "hidden",
"isRequired": true,
"width": "100%",
"minWidth": "256px",
"maxWidth": "",
"startWithNewLine": false,
"html": "\nYou don't find many independent companies in the cinema\nindustries.\nMost of the time,",
"choices": []},
{"type": "dropdown",
"name": "pg2429_seg1",
"correctAnswer": "rep471",
"titleLocation": "hidden",
"isRequired": true,
"width": "100%",
"minWidth": "256px",
"maxWidth": "",
"startWithNewLine": false,
"choices": [{
"value": "rep247",
"text": "there are"
},
{
"value": "rep471",
"text": "they are"
}]},
{"type": "html",
"name": "pg2429_seg2",
"correctAnswer": "",
"titleLocation": "hidden",
"isRequired": true,
"width": "100%",
"minWidth": "256px",
"maxWidth": "",
"startWithNewLine": false,
"html": " confronted by financial difficulties.\n",
"choices": []}
}
]
,
"correctComment": "\n\nBien. En effet seul ***they are*** convient : ***they*** reprend ***independent\ncompanies*** et ***are*** ***confronted*** renvoie au passif (**BE + V** au\nparticipe passé).\n\n***There are*** aurait été suivi d'un groupe nominal.\n\n",
......
......@@ -4,13 +4,11 @@ weight = 10
+++
Ecoutez l'énoncé et remettez les éléments ci-dessous dans
Écoutez l'énoncé et remettez les éléments ci-dessous dans
l'ordre de
l'énoncé entendu :
| <img style="vertical-align:middle;" src="/macao-hugo/media/ecouteur_macao.png" id="ecouteur_macao.png"/> | |
| --- | --- |
| <div><audio id="ecran17_04.mp3" ><source src="/macao-hugo/media/ecran17/ecran17_04.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran17_04.mp3').play()">Play</button></div><div><audio id="ecran17_01.mp3" ><source src="/macao-hugo/media/ecran17/ecran17_01.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran17_01.mp3').play()">Play</button></div> | |
<audio id="ecran17_04.mp3" ><source src="/macao-hugo/media/ecran17/ecran17_04.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran17_04.mp3').play()">Play</button><audio id="ecran17_01.mp3" ><source src="/macao-hugo/media/ecran17/ecran17_01.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran17_01.mp3').play()">Play</button>
<div class="commentaireInfoGroup" hidden="True">
......
{
"elements": [
{
}
]
,
"correctComment": "\n\nBien !\n\n",
......
......@@ -5,12 +5,10 @@ weight = 40
Ecoutez les deux énoncés suivants.
Écoutez les deux énoncés suivants.
| <img style="vertical-align:middle;" src="/macao-hugo/media/ecouteur_macao.png" id="ecouteur_macao.png"/> | |
| --- | --- |
| <div><audio id="ecran201_04.mp3" ><source src="/macao-hugo/media/ecran201/ecran201_04.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran201_04.mp3').play()">Play</button></div><div><audio id="ecran201_01.mp3" ><source src="/macao-hugo/media/ecran201/ecran201_01.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran201_01.mp3').play()">Play</button></div> | Whenever I phone her <div><audio id="mots20itape1_01.mp3" ><source src="/macao-hugo/media/mots20itape1/mots20itape1_01.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('mots20itape1_01.mp3').play()">Play</button></div> the conversation. |
| <div><audio id="ecran202_04.mp3" ><source src="/macao-hugo/media/ecran202/ecran202_04.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran202_04.mp3').play()">Play</button></div><div><audio id="ecran202_01.mp3" ><source src="/macao-hugo/media/ecran202/ecran202_01.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran202_01.mp3').play()">Play</button></div> | If I had a tape recorder <div><audio id="mots20id_tape1_01.mp3" ><source src="/macao-hugo/media/mots20id_tape1/mots20id_tape1_01.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('mots20id_tape1_01.mp3').play()">Play</button></div> the conversation. |
<audio id="ecran201_04.mp3" ><source src="/macao-hugo/media/ecran201/ecran201_04.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran201_04.mp3').play()">Play</button><audio id="ecran201_01.mp3" ><source src="/macao-hugo/media/ecran201/ecran201_01.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran201_01.mp3').play()">Play</button> Whenever I phone her <audio id="mots20itape1_01.mp3" ><source src="/macao-hugo/media/mots20itape1/mots20itape1_01.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('mots20itape1_01.mp3').play()">Play</button> the conversation.
<audio id="ecran202_04.mp3" ><source src="/macao-hugo/media/ecran202/ecran202_04.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran202_04.mp3').play()">Play</button><audio id="ecran202_01.mp3" ><source src="/macao-hugo/media/ecran202/ecran202_01.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran202_01.mp3').play()">Play</button> If I had a tape recorder <audio id="mots20id_tape1_01.mp3" ><source src="/macao-hugo/media/mots20id_tape1/mots20id_tape1_01.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('mots20id_tape1_01.mp3').play()">Play</button> the conversation.
Que diriez-vous des blocs mis en valeur ?
......
{
"elements": [
{"name": "pg3746",
{
"name": "pg3746",
"titleLocation": "hidden",
"type": "radiogroup",
"choices": [
......@@ -14,8 +14,8 @@
"text": "la\nprononciation est nettement différente.\n"
}
],
"correctAnswer": 0}
"correctAnswer": 0
}
]
,
"correctComment": "\n\nEffectivement, on entend pratiquement la même chose. Toutefois on peut reconstruire la structure des énoncés.\n\n***Whenever***\n+ présent en **DO** expriment qu'on réfère à un ensemble de situations vues au présent, à une situation\nrépétée, d'où le présent simple (présent en **DO**) dans la proposition principale : ***I tape the\nconversation**.\n\n**If*** pose une condition, une hypothèse et ***had*** indique\nune rupture avec le réel (un irréel). Parallèlement, la présence du modal ***would*** (ou :\n***'d***) situe la proposition principale ***I'd tape the conversation*** dans\nl'hypothétique.\n\n"}
......@@ -7,11 +7,9 @@ weight = 20
Réécoutez l'énoncé :
| <img style="vertical-align:middle;" src="/macao-hugo/media/ecouteur_macao.png" id="ecouteur_macao.png"/> | <div><audio id="ecran17_04.mp3" ><source src="/macao-hugo/media/ecran17/ecran17_04.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran17_04.mp3').play()">Play</button></div><div><audio id="ecran17_01.mp3" ><source src="/macao-hugo/media/ecran17/ecran17_01.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran17_01.mp3').play()">Play</button></div> |
| --- | --- |
| Est-ce qu'on entend distinctement | | **'s** | | --- | | ? |
| --- | --- | --- | --- |
<audio id="ecran17_04.mp3" ><source src="/macao-hugo/media/ecran17/ecran17_04.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran17_04.mp3').play()">Play</button><audio id="ecran17_01.mp3" ><source src="/macao-hugo/media/ecran17/ecran17_01.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran17_01.mp3').play()">Play</button>
Est-ce qu'on entend distinctement **'s** ?
--- ---
<div class="commentaireInfoGroup" hidden="True">
......
{
"elements": [
{"name": "pg6329",
{
"name": "pg6329",
"titleLocation": "hidden",
"type": "radiogroup",
"choices": [
......@@ -14,8 +14,8 @@
"text": "NON\n"
}
],
"correctAnswer": 1}
"correctAnswer": 1
}
]
,
"correctComment": "\n\nExact. Il est vrai que dans cet énoncé, ***'s*** (forme de **BE**) ne s'entend pas distinctement.\nAvec une question en ***What**…?* dans laquelle ***what*** n'est pas sujet, la présence d'un\nauxiliaire est requise. Celui qui parle choisit d'employer **BE + -ING** ; l'auxiliaire **BE** prend\nla forme ***'s***. C'est donc bien la connaissance d'éléments grammaticaux qui permet de\nreconstruire la structure de l'énoncé et d'interpréter l'énoncé correctement.\n\n"}
......@@ -4,11 +4,9 @@ weight = 80
+++
Ecoutez à nouveau l'énoncé et complétez.
| <img style="vertical-align:middle;" src="/macao-hugo/media/ecouteur_macao.png" id="ecouteur_macao.png"/> | <div><audio id="ecran211_04.mp3" ><source src="/macao-hugo/media/ecran211/ecran211_04.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran211_04.mp3').play()">Play</button></div><div><audio id="ecran211_01.mp3" ><source src="/macao-hugo/media/ecran211/ecran211_01.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran211_01.mp3').play()">Play</button></div> |
| --- | --- |
Écoutez à nouveau l'énoncé et complétez.
<audio id="ecran211_04.mp3" ><source src="/macao-hugo/media/ecran211/ecran211_04.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran211_04.mp3').play()">Play</button><audio id="ecran211_01.mp3" ><source src="/macao-hugo/media/ecran211/ecran211_01.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran211_01.mp3').play()">Play</button>
<div class="commentaireInfoGroup" hidden="True">
</div>
......
{
"elements": [
{"type": "html",
"name": "pg6866_seg0",
"correctAnswer": "",
"titleLocation": "hidden",
"isRequired": true,
"width": "100%",
"minWidth": "256px",
"maxWidth": "",
"startWithNewLine": false,
"html": "I",
"choices": []},
{"type": "dropdown",
"name": "pg6866_seg1",
"correctAnswer": "rep117",
"titleLocation": "hidden",
"isRequired": true,
"width": "100%",
"minWidth": "256px",
"maxWidth": "",
"startWithNewLine": false,
"choices": [{
"value": "rep117",
"text": "Would do"
},
{
"value": "rep312",
"text": " 'd do"
},
{
"value": "rep356",
"text": " Would do"
},
{
"value": "rep577",
"text": "would do"
},
{
"value": "rep891",
"text": " would do"
},
{
"value": "rep935",
"text": "'d do"
}]},
{"type": "dropdown",
"name": "pg6866_seg1",
"correctAnswer": "rep312",
"titleLocation": "hidden",
"isRequired": true,
"width": "100%",
"minWidth": "256px",
"maxWidth": "",
"startWithNewLine": false,
"choices": [{
"value": "rep117",
"text": "Would do"
},
{
"value": "rep312",
"text": " 'd do"
},
{
"value": "rep356",
"text": " Would do"
},
{
"value": "rep577",
"text": "would do"
},
{
"value": "rep891",
"text": " would do"
},
{
"value": "rep935",
"text": "'d do"
}]},
{"type": "dropdown",
"name": "pg6866_seg1",
"correctAnswer": "rep356",
"titleLocation": "hidden",
"isRequired": true,
"width": "100%",
"minWidth": "256px",
"maxWidth": "",
"startWithNewLine": false,
"choices": [{
"value": "rep117",
"text": "Would do"
},
{
"value": "rep312",
"text": " 'd do"
},
{
"value": "rep356",
"text": " Would do"
},
{
"value": "rep577",
"text": "would do"
},
{
"value": "rep891",
"text": " would do"
},
{
"value": "rep935",
"text": "'d do"
}]},
{"type": "dropdown",
"name": "pg6866_seg1",
"correctAnswer": "rep577",
"titleLocation": "hidden",
"isRequired": true,
"width": "100%",
"minWidth": "256px",
"maxWidth": "",
"startWithNewLine": false,
"choices": [{
"value": "rep117",
"text": "Would do"
},
{
"value": "rep312",
"text": " 'd do"
},
{
"value": "rep356",
"text": " Would do"
},
{
"value": "rep577",
"text": "would do"
},
{
"value": "rep891",
"text": " would do"
},
{
"value": "rep935",
"text": "'d do"
}]},
{"type": "dropdown",
"name": "pg6866_seg1",
"correctAnswer": "rep891",
"titleLocation": "hidden",
"isRequired": true,
"width": "100%",
"minWidth": "256px",
"maxWidth": "",
"startWithNewLine": false,
"choices": [{
"value": "rep117",
"text": "Would do"
},
{
"value": "rep312",
"text": " 'd do"
},
{
"value": "rep356",
"text": " Would do"
},
{
"value": "rep577",
"text": "would do"
},
{
"value": "rep891",
"text": " would do"
},
{
"value": "rep935",
"text": "'d do"
}]},
{"type": "dropdown",
"name": "pg6866_seg1",
"correctAnswer": "rep935",
"titleLocation": "hidden",
"isRequired": true,
"width": "100%",
"minWidth": "256px",
"maxWidth": "",
"startWithNewLine": false,
"choices": [{
"value": "rep117",
"text": "Would do"
},
{
"value": "rep312",
"text": " 'd do"
},
{
"value": "rep356",
"text": " Would do"
},
{
"value": "rep577",
"text": "would do"
},
{
"value": "rep891",
"text": " would do"
},
{
"value": "rep935",
"text": "'d do"
}]},
{"type": "html",
"name": "pg6866_seg2",
"correctAnswer": "",
"titleLocation": "hidden",
"isRequired": true,
"width": "100%",
"minWidth": "256px",
"maxWidth": "",
"startWithNewLine": false,
"html": "medical\nstudies if I could start again.\n",
"choices": []}
}
]
,
"correctComment": "\n\nBravo. A l'oreille, il est difficile de distinguer la présence de ***would***, avec ***do***\nqui le suit. Il est donc utile dans ce cas de se servir d'indices grammaticaux figurant dans le contexte.\n\n",
"correctComment": "\n\nBravo. À l'oreille, il est difficile de distinguer la présence de ***would***, avec ***do***\nqui le suit. Il est donc utile dans ce cas de se servir d'indices grammaticaux figurant dans le contexte.\n\n",
"incorrectComment": "\n\nVous vous trompez. L'énoncé commence par ***I would do*** (ou : ***I'd do***). Votre erreur\npeut s'expliquer car à l'oreille, il est difficile de distinguer la présence de ***would***, avec\n***do*** qui le suit. Il est donc utile dans ce cas de se servir d'indices grammaticaux figurant\ndans le contexte.\n\n"}
......@@ -5,11 +5,9 @@ weight = 50
Ecoutez l'énoncé :
| <img style="vertical-align:middle;" src="/macao-hugo/media/ecouteur_macao.png" id="ecouteur_macao.png"/> | <div><audio id="ecran211_04.mp3" ><source src="/macao-hugo/media/ecran211/ecran211_04.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran211_04.mp3').play()">Play</button></div><div><audio id="ecran211_01.mp3" ><source src="/macao-hugo/media/ecran211/ecran211_01.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran211_01.mp3').play()">Play</button></div> |
| --- | --- |
Écoutez l'énoncé :
<audio id="ecran211_04.mp3" ><source src="/macao-hugo/media/ecran211/ecran211_04.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran211_04.mp3').play()">Play</button><audio id="ecran211_01.mp3" ><source src="/macao-hugo/media/ecran211/ecran211_01.mp3" type="audio/mpeg"></audio><button onclick="document.getElementById('ecran211_01.mp3').play()">Play</button>
Cet énoncé comporte-t-il une hypothèse ?
<div class="commentaireInfoGroup" hidden="True">
......