{"id":10850,"date":"2026-08-12T19:25:28","date_gmt":"2026-08-12T16:25:28","guid":{"rendered":"https:\/\/lingualand.gr\/new\/exercises\/b1plus-022-perfect-tenses-02\/"},"modified":"2026-08-12T19:25:28","modified_gmt":"2026-08-12T16:25:28","slug":"b1plus-022-perfect-tenses-02","status":"publish","type":"page","link":"https:\/\/lingualand.gr\/new\/exercises\/b1plus-022-perfect-tenses-02\/","title":{"rendered":"Perfect Tenses 2"},"content":{"rendered":"<div class=\"lingualand-b1plus-exercise-page\" style=\"max-width:1100px;margin:20px auto;\"><iframe title=\"Perfect Tenses 2\" srcdoc=\"&lt;!doctype html&gt;&lt;html lang=&quot;en&quot;&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,initial-scale=1&quot;&gt;&lt;title&gt;Perfect Tenses 2&lt;\/title&gt;&lt;style&gt;:root{--b:#173f73;--g:#16845b;--r:#bb3344;--bg:#f4f8fc}*{box-sizing:border-box}body{margin:0;background:var(--bg);font:17px\/1.45 Arial,sans-serif;color:#182536}.page{max-width:840px;margin:24px auto;padding:24px}.brand{background:var(--b);color:#fff;padding:20px 24px;border-radius:16px}.brand h1{margin:0 0 6px;font-size:27px}.card{background:#fff;margin-top:18px;padding:24px;border-radius:16px;box-shadow:0 5px 22px #173f7320}.q{padding:14px 0;border-bottom:1px solid #dce6f1}.q p{margin:0 0 8px}.q label{display:block;padding:7px 10px;margin:5px 0;border-radius:8px;background:#f6f9fc;cursor:pointer}.q.correct{border-left:5px solid var(--g);padding-left:12px}.q.wrong{border-left:5px solid var(--r);padding-left:12px}.feedback{font-weight:bold;margin-top:6px}.controls{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}button{border:0;border-radius:9px;padding:11px 16px;font-weight:bold;cursor:pointer;background:var(--b);color:#fff}button.secondary{background:#617388}.score{font-size:21px;font-weight:bold;margin-top:18px}@media(max-width:600px){.page{padding:12px}.card{padding:16px}}&lt;\/style&gt;&lt;\/head&gt;&lt;body&gt;&lt;div id=&quot;accessGate&quot; style=&quot;min-height:100vh;display:grid;place-items:center;padding:20px;background:#eef3f8;color:#172033;font-family:Arial,sans-serif&quot;&gt;&lt;form id=&quot;accessForm&quot; style=&quot;width:min(420px,100%);background:#fff;border-radius:14px;padding:24px;box-shadow:0 4px 16px #243a8f22&quot;&gt;&lt;h1 style=&quot;margin:0 0 10px;color:#243a8f;font-size:1.45rem&quot;&gt;B1+ Exercise Access&lt;\/h1&gt;&lt;p style=&quot;margin:0 0 16px&quot;&gt;Enter your access key to open the exercise.&lt;\/p&gt;&lt;input id=&quot;accessKey&quot; type=&quot;password&quot; autocomplete=&quot;off&quot; style=&quot;width:100%;padding:12px;border:1px solid #aab3c2;border-radius:9px;font-size:1rem&quot; aria-label=&quot;Access key&quot;&gt;&lt;button type=&quot;submit&quot; style=&quot;margin-top:14px;width:100%;padding:12px;border:0;border-radius:9px;background:#243a8f;color:white;font-weight:bold;cursor:pointer&quot;&gt;Open exercise&lt;\/button&gt;&lt;div id=&quot;accessMessage&quot; style=&quot;min-height:22px;margin-top:12px;color:#b91c1c;font-weight:bold&quot; aria-live=&quot;polite&quot;&gt;&lt;\/div&gt;&lt;\/form&gt;&lt;\/div&gt;&lt;div id=&quot;exerciseApp&quot; hidden&gt;&lt;main class=&quot;page&quot;&gt;&lt;header class=&quot;brand&quot;&gt;&lt;h1&gt;Perfect Tenses&lt;\/h1&gt;&lt;div&gt;B1+ Interactive Exercise \u00b7 Set 2&lt;\/div&gt;&lt;\/header&gt;&lt;div class=&quot;card&quot;&gt;&lt;p&gt;Choose the correct answer.&lt;\/p&gt;&lt;section class=&quot;q&quot; data-answer=&quot;2&quot;&gt;&lt;p&gt;&lt;b&gt;1.&lt;\/b&gt; During the training workshop, the producer ___ the final episode since early morning.&lt;\/p&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q0&quot; value=&quot;0&quot;&gt; has edited the final episode&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q0&quot; value=&quot;1&quot;&gt; was editing the final episode&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q0&quot; value=&quot;2&quot;&gt; has been editing the final episode&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q0&quot; value=&quot;3&quot;&gt; edited the final episode&lt;\/label&gt;&lt;div class=&quot;feedback&quot;&gt;&lt;\/div&gt;&lt;\/section&gt;\n&lt;section class=&quot;q&quot; data-answer=&quot;3&quot;&gt;&lt;p&gt;&lt;b&gt;2.&lt;\/b&gt; During the training workshop, the architect has already ___ a community centre.&lt;\/p&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q1&quot; value=&quot;0&quot;&gt; design a community centre&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q1&quot; value=&quot;1&quot;&gt; designing a community centre&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q1&quot; value=&quot;2&quot;&gt; to design a community centre&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q1&quot; value=&quot;3&quot;&gt; designed a community centre&lt;\/label&gt;&lt;div class=&quot;feedback&quot;&gt;&lt;\/div&gt;&lt;\/section&gt;\n&lt;section class=&quot;q&quot; data-answer=&quot;0&quot;&gt;&lt;p&gt;&lt;b&gt;3.&lt;\/b&gt; During the training workshop, the student ___ the final unit yet.&lt;\/p&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q2&quot; value=&quot;0&quot;&gt; hasn\u2019t revised the final unit&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q2&quot; value=&quot;1&quot;&gt; didn\u2019t revise the final unit&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q2&quot; value=&quot;2&quot;&gt; isn\u2019t revising the final unit&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q2&quot; value=&quot;3&quot;&gt; hadn\u2019t revised the final unit&lt;\/label&gt;&lt;div class=&quot;feedback&quot;&gt;&lt;\/div&gt;&lt;\/section&gt;\n&lt;section class=&quot;q&quot; data-answer=&quot;1&quot;&gt;&lt;p&gt;&lt;b&gt;4.&lt;\/b&gt; During the training workshop, this is the first time the doctor ___ the test results.&lt;\/p&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q3&quot; value=&quot;0&quot;&gt; examined the test results&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q3&quot; value=&quot;1&quot;&gt; has examined the test results&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q3&quot; value=&quot;2&quot;&gt; is examining the test results&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q3&quot; value=&quot;3&quot;&gt; had examined the test results&lt;\/label&gt;&lt;div class=&quot;feedback&quot;&gt;&lt;\/div&gt;&lt;\/section&gt;\n&lt;section class=&quot;q&quot; data-answer=&quot;2&quot;&gt;&lt;p&gt;&lt;b&gt;5.&lt;\/b&gt; During the training workshop, how long ___ the carpenter ___ a set of shelves?&lt;\/p&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q4&quot; value=&quot;0&quot;&gt; did \/ make&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q4&quot; value=&quot;1&quot;&gt; is \/ making&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q4&quot; value=&quot;2&quot;&gt; has \/ been making&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q4&quot; value=&quot;3&quot;&gt; has \/ made&lt;\/label&gt;&lt;div class=&quot;feedback&quot;&gt;&lt;\/div&gt;&lt;\/section&gt;\n&lt;section class=&quot;q&quot; data-answer=&quot;3&quot;&gt;&lt;p&gt;&lt;b&gt;6.&lt;\/b&gt; During the training workshop, the builder ___ just ___ the old apartment.&lt;\/p&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q5&quot; value=&quot;0&quot;&gt; did \/ renovate&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q5&quot; value=&quot;1&quot;&gt; is \/ renovating&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q5&quot; value=&quot;2&quot;&gt; had \/ renovate&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q5&quot; value=&quot;3&quot;&gt; has \/ renovated&lt;\/label&gt;&lt;div class=&quot;feedback&quot;&gt;&lt;\/div&gt;&lt;\/section&gt;\n&lt;section class=&quot;q&quot; data-answer=&quot;0&quot;&gt;&lt;p&gt;&lt;b&gt;7.&lt;\/b&gt; During the training workshop, by last June, the consultant ___ the new strategy.&lt;\/p&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q6&quot; value=&quot;0&quot;&gt; had presented the new strategy&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q6&quot; value=&quot;1&quot;&gt; has presented the new strategy&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q6&quot; value=&quot;2&quot;&gt; will present the new strategy&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q6&quot; value=&quot;3&quot;&gt; was presenting the new strategy&lt;\/label&gt;&lt;div class=&quot;feedback&quot;&gt;&lt;\/div&gt;&lt;\/section&gt;\n&lt;section class=&quot;q&quot; data-answer=&quot;1&quot;&gt;&lt;p&gt;&lt;b&gt;8.&lt;\/b&gt; During the training workshop, the researcher looked tired because they ___ the survey results since early morning.&lt;\/p&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q7&quot; value=&quot;0&quot;&gt; have been analysing the survey results&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q7&quot; value=&quot;1&quot;&gt; had been analysing the survey results&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q7&quot; value=&quot;2&quot;&gt; were analysing the survey results&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q7&quot; value=&quot;3&quot;&gt; had analysed the survey results&lt;\/label&gt;&lt;div class=&quot;feedback&quot;&gt;&lt;\/div&gt;&lt;\/section&gt;\n&lt;section class=&quot;q&quot; data-answer=&quot;2&quot;&gt;&lt;p&gt;&lt;b&gt;9.&lt;\/b&gt; During the training workshop, the musician ___ never ___ a difficult concerto before that day.&lt;\/p&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q8&quot; value=&quot;0&quot;&gt; has \/ practised&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q8&quot; value=&quot;1&quot;&gt; did \/ practise&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q8&quot; value=&quot;2&quot;&gt; had \/ practised&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q8&quot; value=&quot;3&quot;&gt; was \/ practising&lt;\/label&gt;&lt;div class=&quot;feedback&quot;&gt;&lt;\/div&gt;&lt;\/section&gt;\n&lt;section class=&quot;q&quot; data-answer=&quot;3&quot;&gt;&lt;p&gt;&lt;b&gt;10.&lt;\/b&gt; During the training workshop, the coach ___ the junior team several times this month.&lt;\/p&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q9&quot; value=&quot;0&quot;&gt; trained the junior team&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q9&quot; value=&quot;1&quot;&gt; is training the junior team&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q9&quot; value=&quot;2&quot;&gt; had trained the junior team&lt;\/label&gt;&lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;q9&quot; value=&quot;3&quot;&gt; has trained the junior team&lt;\/label&gt;&lt;div class=&quot;feedback&quot;&gt;&lt;\/div&gt;&lt;\/section&gt;&lt;div class=&quot;controls&quot;&gt;&lt;button id=&quot;check&quot;&gt;Check Answers&lt;\/button&gt;&lt;button id=&quot;show&quot; class=&quot;secondary&quot;&gt;Show Answers&lt;\/button&gt;&lt;button id=&quot;again&quot; class=&quot;secondary&quot;&gt;Try Again&lt;\/button&gt;&lt;\/div&gt;&lt;div id=&quot;score&quot; class=&quot;score&quot; aria-live=&quot;polite&quot;&gt;Score: not checked yet&lt;\/div&gt;&lt;\/div&gt;&lt;\/main&gt;&lt;script&gt;(()=&gt;{const qs=[...document.querySelectorAll('.q')];const mark=(q,chosen)=&gt;{const a=+q.dataset.answer;q.classList.remove('correct','wrong');q.classList.add(chosen===a?'correct':'wrong');q.querySelector('.feedback').textContent=chosen===a?'\u2713 Correct':'\u2715 Correct answer: '+q.querySelectorAll('label')[a].textContent.trim()};document.getElementById('check').onclick=()=&gt;{let c=0;qs.forEach(q=&gt;{const x=q.querySelector('input:checked');const v=x?+x.value:-1;if(v===+q.dataset.answer)c++;mark(q,v)});document.getElementById('score').textContent='Score: '+c+'\/'+qs.length+' ('+Math.round(c\/qs.length*100)+'%)'};document.getElementById('show').onclick=()=&gt;{qs.forEach(q=&gt;{const a=+q.dataset.answer;q.querySelectorAll('input')[a].checked=true;mark(q,a)});document.getElementById('score').textContent='Answers shown \u2014 complete the exercise yourself, then check your score.'};document.getElementById('again').onclick=()=&gt;{qs.forEach(q=&gt;{q.classList.remove('correct','wrong');q.querySelectorAll('input').forEach(x=&gt;x.checked=false);q.querySelector('.feedback').textContent=''});document.getElementById('score').textContent='Score: not checked yet'};})();&lt;\/script&gt;&lt;\/div&gt;&lt;script&gt;\n(function(){\nconst expectedHash=&quot;041887a6df54e900b74b46a39d21ed4a0c769d1eb2baca6752b882f12c87ed27&quot;;\nconst expiry=new Date(&quot;2027-08-10T23:59:59+03:00&quot;).getTime();\nconst form=document.getElementById(&quot;accessForm&quot;), keyInput=document.getElementById(&quot;accessKey&quot;), msg=document.getElementById(&quot;accessMessage&quot;), gate=document.getElementById(&quot;accessGate&quot;), app=document.getElementById(&quot;exerciseApp&quot;);\nasync function sha256(text){const bytes=new TextEncoder().encode(text);const digest=await crypto.subtle.digest(&quot;SHA-256&quot;,bytes);return Array.from(new Uint8Array(digest)).map(b=&gt;b.toString(16).padStart(2,&quot;0&quot;)).join(&quot;&quot;);}\nfunction expired(){return Date.now()&gt;expiry;}\nfunction deny(text){msg.textContent=text;app.hidden=true;gate.style.display=&quot;grid&quot;;}\nfunction allow(){gate.style.display=&quot;none&quot;;app.hidden=false;keyInput.value=&quot;&quot;;}\nif(expired()) deny(&quot;This access key has expired.&quot;);\nform.addEventListener(&quot;submit&quot;,async function(e){e.preventDefault(); if(expired()){deny(&quot;This access key has expired.&quot;);return;} const entered=keyInput.value.trim(); if(!entered){deny(&quot;Please enter the access key.&quot;);return;} try{const hash=await sha256(entered); if(hash===expectedHash){allow();}else{deny(&quot;Incorrect access key.&quot;);}}catch(err){deny(&quot;Access check is unavailable in this browser.&quot;);}});\n})();\n&lt;\/script&gt;&lt;\/body&gt;&lt;\/html&gt;\" style=\"width:100%;min-height:1450px;border:0;border-radius:8px;background:#eef3f8;display:block;\" loading=\"lazy\"><\/iframe><\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":7,"featured_media":0,"parent":9619,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"ngg_post_thumbnail":0,"footnotes":""},"class_list":["post-10850","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/lingualand.gr\/new\/wp-json\/wp\/v2\/pages\/10850","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lingualand.gr\/new\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/lingualand.gr\/new\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/lingualand.gr\/new\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/lingualand.gr\/new\/wp-json\/wp\/v2\/comments?post=10850"}],"version-history":[{"count":0,"href":"https:\/\/lingualand.gr\/new\/wp-json\/wp\/v2\/pages\/10850\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/lingualand.gr\/new\/wp-json\/wp\/v2\/pages\/9619"}],"wp:attachment":[{"href":"https:\/\/lingualand.gr\/new\/wp-json\/wp\/v2\/media?parent=10850"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}