aboutsummaryrefslogtreecommitdiff
path: root/classes/ui_forms_plugin.php
blob: 2cd7541cd0441b5d259eb3ce3c3a2a4ba3421244 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.

/**
 * Defines forms.
 *
 * @copyright 2018 'Valentin Popov' <info@valentineus.link>
 * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 * @package   local_webhooks
 */

defined( "MOODLE_INTERNAL" ) || die();

require_once( $CFG->dirroot . "/local/webhooks/lib.php" );
require_once( $CFG->libdir . "/formslib.php" );

/**
 * Description editing form definition.
 *
 * @copyright 2018 'Valentin Popov' <info@valentineus.link>
 * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 * @package   local_webhooks
 */
class local_webhooks_service_edit_form extends moodleform {
    /**
     * @param string $baseUrl
     */
    public function __construct( $baseUrl ) {
        parent::__construct( $baseUrl );
    }

    /**
     * Defines the standard structure of the form.
     */
    protected function definition() {
        $mForm =& $this->_form;
        $size = array( "size" => 60 );

        /* Form heading */
        $mForm->addElement( "header", "editserviceheadermain", new lang_string( "service", "webservice" ) );

        /* Name of the service */
        $mForm->addElement( "text", "name", new lang_string( "name", "moodle" ), $size );
        $mForm->addRule( "name", null, "required" );
        $mForm->setType( "name", PARAM_RAW );

        /* Callback address */
        $mForm->addElement( "text", "point", new lang_string( "url", "moodle" ), $size );
        $mForm->addRule( "point", null, "required" );
        $mForm->setType( "point", PARAM_URL );

        /* Enabling the service */
        $mForm->addElement( "advcheckbox", "status", new lang_string( "enable", "moodle" ) );
        $mForm->setType( "status", PARAM_BOOL );
        $mForm->setDefault( "status", 1 );
        $mForm->setAdvanced( "status" );

        /* Token */
        $mForm->addElement( "text", "token", new lang_string( "token", "webservice" ), $size );
        $mForm->addRule( "token", null, "required" );
        $mForm->setType( "token", PARAM_RAW );

        /* Content type */
        $contentType = array(
            "application/json"                  => "application/json",
            "application/x-www-form-urlencoded" => "application/x-www-form-urlencoded",
        );

        $mForm->addElement( "select", "header", "Content-Type", $contentType );
        $mForm->setAdvanced( "header" );

        /* Form heading */
        $mForm->addElement( "header", "editserviceheaderevent", new lang_string( "edulevel", "moodle" ) );

        /* List of events */
        $eventList = report_eventlist_list_generator::get_all_events_list( true );

        $events = array();
        foreach ( $eventList as $event ) {
            $events[ $event[ "component" ] ][] =& $mForm->createElement( "checkbox", $event[ "eventname" ], $event[ "eventname" ] );
        }

        foreach ( $events as $key => $event ) {
            $mForm->addGroup( $event, "events", $key, "<br />", true );
        }

        /* Control Panel */
        $this->add_action_buttons( true );
    }
}