> For the complete documentation index, see [llms.txt](https://docs.chamilo.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chamilo.org/3.x/el/odigos-programmatisti/developer-guide/plugins/course-tool-plugins.md).

# Πρόσθετα εργαλείων μαθήματος

Τα πρόσθετα εργαλείων μαθήματος προσθέτουν νέα εργαλεία στην αρχική σελίδα του μαθήματος δίπλα στα ενσωματωμένα εργαλεία όπως Documents, Exercises και Forums.

## Πώς Λειτουργούν τα Πρόσθετα Εργαλείων Μαθήματος

Όταν ένα πρόσθετο δηλώνει τον εαυτό του ως εργαλείο μαθήματος:

1. Εμφανίζεται στο πλέγμα εργαλείων της αρχικής σελίδας του μαθήματος
2. Οι διδάσκοντες μπορούν να το εμφανίσουν/αποκρύψουν όπως οποιοδήποτε άλλο εργαλείο
3. Κάνοντας κλικ στο εργαλείο ανοίγει η διεπαφή του πρόσθετου εντός του πλαισίου του μαθήματος

## Δήλωση ως Εργαλείο Μαθήματος

Στην κλάση του πρόσθετου σας, ορίστε `$isCoursePlugin = true`. Για να προσθέσετε αυτόματα ένα εικονίδιο εργαλείου στην αρχική σελίδα του μαθήματος, ορίστε επίσης `$addCourseTool = true`:

```php
class MyToolPlugin extends Plugin
{
    protected function __construct()
    {
        parent::__construct('1.0', 'Author');
        $this->isCoursePlugin = true;
        $this->addCourseTool = true;
    }
}
```

## Ρυθμίσεις ανά Μάθημα

Ορίστε πεδία διαμόρφωσης σε επίπεδο μαθήματος μέσω της ιδιότητας `$course_settings`:

```php
public array $course_settings = [
    ['name' => 'my_plugin_enabled', 'type' => 'checkbox', 'default' => false],
    ['name' => 'my_plugin_limit',   'type' => 'text',     'default' => '10'],
];
```

Αυτά εμφανίζονται στον πίνακα ρυθμίσεων του μαθήματος και μπορούν να επικυρωθούν με υπερκάλυψη της `validateCourseSetting(string $variable)` (επιστρέψτε `false` για απόρριψη μιας τιμής) ή να αξιοποιηθούν μέσω της `course_settings_updated(array $values)`.

## Εγκατάσταση και Απεγκατάσταση

Για να δηλώσετε τα πεδία του πρόσθετου σε όλα τα υπάρχοντα μαθήματα κατά την εγκατάσταση:

```php
public function install(): void
{
    $this->install_course_fields_in_all_courses(add_tool_link: true);
}
```

Για εγκατάσταση σε ένα μόνο μάθημα (π.χ. όταν δημιουργείται ένα νέο μάθημα):

```php
$this->course_install(courseId: $courseId, addToolLink: true);
```

Για αφαίρεση πεδίων από ένα συγκεκριμένο μάθημα:

```php
$this->uninstall_course_fields(courseId: $courseId);
```

## Σημεία Ενσωμάτωσης

Τα πρόσθετα εργαλείων μαθήματος ενσωματώνονται μέσω:

* **`LegacyPluginCourseTool`** (`src/CoreBundle/Tool/LegacyPluginCourseTool.php`) — Δηλώνει το πρόσθετο ως εργαλείο στο μάθημα
* **`CToolStateProvider`** (`src/CoreBundle/State/CToolStateProvider.php`) — Επιλύει ποια εργαλεία (συμπεριλαμβανομένων των εργαλείων πρόσθετων) εμφανίζονται στην αρχική σελίδα του μαθήματος
* Το εργαλείο εμφανίζεται στη συλλογή `CTool` του μαθήματος

## Πλαίσιο Μαθήματος

Όταν ένας εκπαιδευόμενος κάνει κλικ στο εργαλείο του πρόσθετου σας, ο κώδικας του πρόσθετου εκτελείται εντός του πλαισίου του μαθήματος. Μπορείτε να αποκτήσετε πρόσβαση σε:

* Το τρέχον μάθημα (μέσω `api_get_course_id()` ή του CID request store)
* Την τρέχουσα συνεδρία (εάν ισχύει)
* Τον τρέχοντα χρήστη
* Τις ρυθμίσεις του πρόσθετου σε επίπεδο μαθήματος

## Παραδείγματα

Ενσωματωμένα πρόσθετα εργαλείων μαθήματος:

* **BigBlueButton** (`Bbb/`) — Τηλεδιάσκεψη εντός μαθημάτων
* **Zoom** (`Zoom/`) — Συναντήσεις Zoom εντός μαθημάτων
* **OnlyOffice** (`Onlyoffice/`) — Επεξεργασία εγγράφων εντός μαθημάτων
