
9-ameliy PT_A
.pdf9-ámeliy sabaq. Belgili tapsırma ushın keńeytpe blokınıń specifikaciyası hám proektin islep shıǵıw.
Jumıstıń maqseti
Bul ámeliy jumıstıń maqseti - Moodle sistemasında tapsırmalardı bahalaw hám qadaǵalaw processin jaqsılaw ushın keńeytpe blogın jobalastırıw, programmalastırıw hám engiziw. Blok oqıtıwshıǵa studentlerdiń tapsırmalardı orınlaw barısın tez ańlap alıwǵa, al studentlerge óz progressin kóriwge múmkinshilik beredi.
Ámeliy bólim
1. Moodle keńeytpe blokların tayarlaw ortasın ornatıw
Birinshi adım - Moodle sistemasın lokal kompyuterinizde ornatıw hám onı keńeytpe islep shıǵıw ushın konfiguraciyalaw.
1.XAMPP, WAMP yaki MAMP sıyaqlı veb-server paketlerin ornatıń.
2.Moodlediń eń sońǵı versiyasın júklep alıń hám onı veb-server papkasına ornalastırıń.
3.Moodledi ornatıw procedurasın orınlań.
4.Administrator sıpatında sistemaǵa kiriń hám islep shıǵıwshı rejimin qosıń (Sayt administrirlew > Sırtqı kórinisi > Islep shıǵıwshı rejimi).
2.Keńeytpe blokınıń strukturasın jaratıw
1.Moodledıń blocks papkasında task_progress atlı jańa papka jaratıń.
2.Tómendegi strukturanı jaratıń:
blocks/task_progress/
├── block_task_progress.php ├── db/
│└── access.php ├── lang/
│└── en/
│└── block_task_progress.php ├── version.php
└── styles.css
3. Tiykarǵı blok klassın islep shıǵıw
block_task_progress.php faylında tiykarǵı blok klassın jaratıń:
<?php
class block_task_progress extends block_base {
public function init() {
$this->title = get_string('pluginname', 'block_task_progress');
}
public function get_content() { global $COURSE, $DB, $USER;
if ($this->content !== null) { return $this->content;
}
$this->content = new stdClass; $this->content->text = ''; $this->content->footer = '';
// Kurste belgilengen tapsırmalardı alıw $assignments = $DB->get_records('assign',
array('course' => $COURSE->id));
if (empty($assignments)) { $this->content->text =
get_string('noassignments', 'block_task_progress'); return $this->content;
}
$table = new html_table(); $table->head = array(
get_string('assignment', 'block_task_progress'),
get_string('duedate', 'block_task_progress'),
get_string('status', 'block_task_progress')
);
foreach ($assignments as $assignment) { $cm =
get_coursemodule_from_instance('assign', $assignment- >id, $COURSE->id);
$submission = $DB- >get_record('assign_submission', array(
'assignment' => $assignment->id, 'userid' => $USER->id,
'status' => 'submitted'
));
$status = $submission ? get_string('submitted', 'block_task_progress') : get_string('notsubmitted', 'block_task_progress');
$duedate = $assignment->duedate ? userdate($assignment->duedate) : get_string('noduedate', 'block_task_progress');
$table->data[] = array( html_writer::link(new
moodle_url('/mod/assign/view.php', array('id' => $cm- >id)), $assignment->name),
$duedate, $status
);
}
$this->content->text = html_writer::table($table);
return $this->content;
}
public function applicable_formats() { return array(
'site' => true, 'course' => true, 'my' => true
);
}
public function instance_allow_multiple() { return false;
}
}
4. Til faylın qosıw
lang/en/block_task_progress.php faylın jaratıń:
<?php
$string['pluginname'] = 'Task Progress'; $string['task_progress'] = 'Task Progress'; $string['task_progress:addinstance'] = 'Add a new Task Progress block'; $string['task_progress:myaddinstance'] = 'Add a new Task Progress block to Dashboard';
$string['noassignments'] = 'No assignments in this course';
$string['assignment'] = 'Assignment'; $string['duedate'] = 'Due date'; $string['status'] = 'Status'; $string['submitted'] = 'Submitted'; $string['notsubmitted'] = 'Not submitted'; $string['noduedate'] = 'No due date';
5. Ruqsatlardı konfiguraciyalaw
db/access.php faylın jaratıń:
<?php
$capabilities = array( 'block/task_progress:myaddinstance' => array(
'captype' => 'write', 'contextlevel' => CONTEXT_SYSTEM, 'archetypes' => array(
'user' => CAP_ALLOW
), 'clonepermissionsfrom' =>
'moodle/my:manageblocks'
),
'block/task_progress:addinstance' => array( 'riskbitmask' => RISK_SPAM | RISK_XSS, 'captype' => 'write',
'contextlevel' => CONTEXT_BLOCK, 'archetypes' => array(
'editingteacher' => CAP_ALLOW, 'manager' => CAP_ALLOW
), 'clonepermissionsfrom' =>
'moodle/site:manageblocks'
),
);
6. Versiya faylın qosıw
version.php faylın jaratıń:
<?php
defined('MOODLE_INTERNAL') || die();
$plugin->component = 'block_task_progress'; $plugin->version = 2023051200;
$plugin->requires = 2022112800; // Moodle 4.1 $plugin->maturity = MATURITY_STABLE; $plugin->release = 'v1.0';
7. Stil faylın qosıw
styles.css faylın jaratıń:
.block_task_progress .submitted { color: green;
font-weight: bold;
}
.block_task_progress .notsubmitted { color: red;
}
.block_task_progress table { width: 100%;
}
.block_task_progress table td { padding: 5px;
}
8.Bloktı ornatıw hám testlew
1.Moodle administrator paneline ótip, "Xabarlandırıwlar" bólimine barıń (Sayt administrirlew > Xabarlandırıwlar).
2.Jańa blogımız avtomatik túrde anıqlanıp, ornatıw ushın tayarlanǵan boladı.
3."Plaginlerdi tekseriw" bóliminde bloktı ornatıw ushın túymeni basıń.
4.Ornatıw processi tamamlanǵannan keyin, kurs betine ótip, bloktı qosıń (Redaktorlawdı qosıw > Blok qosıw > Task Progress).
5.Bloktiń isin teksherip kóriń - kurstaǵı tapsırmalar haqqında maǵlıwmat durıs kórsetilgen be?
9.Keńeytpe funkcionallıqtı qosıw
Keńeytpe blogımızǵa qosımsha funkciyalardı qosıw:
1.block_task_progress.php faylındaǵı get_content() metodına tómendegi kodlardı qosıń:
//Statistika sekciyasın qosıw
$totalAssignments = count($assignments); $submittedCount = 0;
foreach ($assignments as $assignment) {
$submission = $DB->get_record('assign_submission', array(
'assignment' => $assignment->id, 'userid' => $USER->id,
'status' => 'submitted'
));
if ($submission) { $submittedCount++;
}
}
$progress = ($totalAssignments > 0) ? round(($submittedCount / $totalAssignments) * 100) : 0;
// Progress indikatorın qosıw $this->content->text .= html_writer::tag('h4', get_string('progress', 'block_task_progress')); $progressbar = html_writer::tag('div',
html_writer::tag('div', $progress . '%', array('style' => 'width: ' . $progress . '%;')),
array('class' => 'progress-bar')
);
$this->content->text .= $progressbar; $this->content->text .= html_writer::tag('p', get_string('progressinfo', 'block_task_progress',
array('submitted' => $submittedCount, 'total' => $totalAssignments)));
2. lang/en/block_task_progress.php faylına jańa qatarlardı qosıń:
$string['progress'] = 'Your Progress'; $string['progressinfo'] = 'Submitted: {$a- >submitted}/{$a->total}';
3. styles.css faylına progress indikatorınıń stilin qosıń:
.progress-bar { width: 100%;
background-color: #e0e0e0; border-radius: 5px; margin: 10px 0;
}

.progress-bar div { height: 20px;
background-color: #4CAF50; border-radius: 5px; text-align: center; color: white; font-weight: bold;
}
ÁMELIY TAPSÍRMALAR
Tapsırma 1: Keńeytpe blok strukturasın jaratıw
Óz jumıs papkańızda blocks/task_tracker dep atalatuǵın papka hám onıń ishinde barlıq kerekli fayllardı jaratıń. Blok "Tapsırma Trekeri" dep atalsın.
Tapsırma 2: Tiykarǵı funkciyalar islep shıǵıw
block_task_tracker.php faylında tiykarǵı kod jazıń. Blok kurstaǵı barlıq tapsırmalardı kórsetsin, hár tapsırma ushın atın, tapsırıw múddetin hám tapsırıldı ma yamasa tapsırılmadı ma ekenligin kórsetsin.
Tapsırma 3: Qosımsha funkciyalar qosıw
Tapsırmalar arasında oqıtıwshı tárepinen bahalanǵan tapsırmalardı kórsetetuǵın funkciya qosıń. Bul ushın get_content() metodına qosımsha kod jazıń.
Tapsırma 4: Bloktı testlew
Islep shıqqan blogıńızdı lokal Moodle sistemańızda ornatıń hám testleń. Testi ushın kursta bir neshe tapsırma jaratıp, olardıń birewin tapsırıń.
Tapsırma 5: Keńeytpeniń dokumentaciyasın jazıw
Blok haqqında qısqasha dokumentaciya jazıń. Bul dokumentaciyada bloktıń ne isleytuǵını, onı qalay qollanıw hám onıń artıqmashılıqları haqqında maǵlıwmat bolsın.
Tapsırma 6: Bloktıń keńeytpesin islep shıǵıw
Bloktı keńeytip, tek bahalanǵan tapsırmalardı kórsetetuǵın yaki tek tapsırılmaǵan tapsırmalardı kórsetetuǵın funkciya qosıń.
Tapsırma 7: Blok sazlamaların qosıw
Blokta qosımsha sazlamalar jaratıń. Máselen, kurs administratorı qaysı tapsırmalar tiplerin kórsetiw kerek ekenligin tańlay alatuǵın bolsın.