===== Open eClass Widgets (Μικροεφαρμογές) ===== Ένα widget εγκαθίσταται μέσα στον φάκελο widgets στο root του openeclass και πρέπει να ακολουθούν την παρακάτω δομή φακέλων και αρχείων: * * * .php (Το βασικό αρχείο του widget) * views (υποχρεωτικός φάκελος που περιλαμβάνει 2 αρχεία) * run.blade.php (blade template που αφορά την εκτέλεση / εμφάνιση του widget) * options.blade.php (blade template που αφορά την εμφάνιση των options του widget) * css (προαιρετικός φάκελος που περιλαμβάνει τα css αρχεία του widget) * images (προαιρετικός φάκελος που περιλαμβάνει φωτογραφίες που χρησιμοποιεί το widget) * js (προαιρετικός φάκελος που περιλαμβάνει τα javascript αρχεία του widget) === Παράδειγμα δημιουργία ενός hello world widget === Αρχείο ''HelloWorldWidget.php'' Ελληνικά, [en] => English, [es] => Español, [cs] => Česky, [sq] => Shqip, * [bg] => Български, [ca] => Català, [da] => Dansk, [nl] => Nederlands, [fi] => Suomi, * [fr] => Français [de] => Deutsch [is] => Íslenska [it] => Italiano [jp] => 日本語 [pl] => Polski [ru] => Русский [tr] => Türkçe [sv] => Svenska * * Fallback language is English */ $this->name = array( 'en' => 'Hello World', 'el' => 'Γεια σου κόσμε' ); $this->description = array( 'en' => 'This is a widget simply for widget creation reference', 'el' => 'Ένα widget ως αναφορά για την δημιουργία άλλων widgets από τους προγραμματιστές' ); } public static function install() { /* START CUSTOM CODE */ /* END CUSTOM CODE */ return self::register_widget(); } public static function uninstall() { /* START CUSTOM CODE */ /* END CUSTOM CODE */ return self::unregister_widget(); } public function run($widget_widget_area_id) { $this->initialize_widget_data($widget_widget_area_id); /* START CUSTOM CODE */ /* END CUSTOM CODE */ return widget_view("run", $this->view_data); } public function getOptionsForm($widget_widget_area_id) { $this->initialize_widget_data($widget_widget_area_id); //START CUSTOM CODE //END CUSTOM CODE return widget_view("options", $this->view_data); } } === Αντίστοιχα αρχεία blade === ''run.blade.php''

Hello World! Nice to meet you!

''option.blade.php'' // We live the file empty as there are no options in our hello world widget === Χρήσιμες functions και variables === ''widget_view()'' και ''$this->view_data'' Για να περάσουμε μια variable σε ένα blade view απλά χρησιμοποιούμε τον $this->view_data πίνακα. Παράδειγμα $this->view_data['announcements'] = Database::get()->queryArray("SELECT * FROM announcement"); return widget_view("run", $this->view_data); Για να εμφανίσουμε το αποτέλεσμα στο Blade view θα κάναμε το παρακάτω @foreach ($announcements as $announcement)
  • {{ $announcement->title }}
  • @endforeach
    ''widget_css_link()'' και ''widget_js_link()'' Για να συμπεριλάβουμε css και js αρχεία που βρίσκονται στους φακέλους css και js αντίστοιχα του φακέλου του widget χρησιμοποιούμε τις functions widget_css_link() και widget_js_link() σύμφωνα με το παρακάτω παράδειγμα widget_css_link('clock.css', $this->folder); widget_js_link('clock.js', $this->folder); ''widget_tbl_name()'' Οι ονοματοδοσία πινάκων μιας μικροεφαρμογής ακολουθεί συγκεκριμένο πρότυπο (wdgt_{developer_team}_{onoma_pinaka}). Για να παράγουμε ένα τέτοιο όνομα εύκολα μπορούμε να χρησιμοποιήσουμε την function ''widget_tbl_name()'' σύμφωνα με τα παρακάτω παραδείγματα. query("CREATE TABLE IF NOT EXISTS $tbl_name ( `id` int(11) NOT NULL auto_increment PRIMARY KEY, `whatever` varchar(255) NOT NULL)"); return self::register_widget(); } public static function uninstall() { $tbl_name = self::widget_tbl_name(); \Database::get()->query("DROP TABLE IF EXISTS $tbl_name"); return self::unregister_widget(); } Στην παραπάνω περίπτωση ο πίνακας που θα δημιουργείται κατά την εγκατάσταση της μικροεφαρμογής είναι ο //wdgt_openeclass_clock// Εναλλακτικά θα μπορούμε να παραλλάξουμε το όνομα του πίνακα που δημιουργείται περνώντας στην function κάποιο string ως εξής: $tbl_name = self::widget_tbl_name('time'); Το παραπάνω θα δημιουργούσε έναν πίνακα με όνομα //wdgt_openeclass_time//