From 3fae45c7ebbd32b59a60f465de0735a05b86c590 Mon Sep 17 00:00:00 2001 From: Flotter Totte Date: Thu, 17 Jan 2019 10:03:42 +0800 Subject: [PATCH] Submitted info improvements Name of "comment" label customizable Submitted info table --- apply_form.php | 9 ++++- edit.php | 5 ++- edit_form.php | 8 +++- info.php | 67 ++++++++++++++++++++++++++++++ info_table.php | 90 +++++++++++++++++++++++++++++++++++++++++ lang/en/enrol_apply.php | 5 +++ lib.php | 20 ++++++--- manage.php | 2 +- notification.php | 3 +- renderer.php | 59 +++++++++++++++++++++++---- version.php | 2 +- 11 files changed, 251 insertions(+), 19 deletions(-) create mode 100644 info.php create mode 100644 info_table.php diff --git a/apply_form.php b/apply_form.php index 7919046..0cb21a3 100644 --- a/apply_form.php +++ b/apply_form.php @@ -60,12 +60,16 @@ class enrol_apply_apply_form extends moodleform { } $mform->addElement('html', '

'.$instance->customtext1.'

'); - $mform->addElement('textarea', 'applydescription', get_string('comment', 'enrol_apply'), 'cols="80"'); + $comment_title = get_string('comment', 'enrol_apply'); + if($instance->customtext2 != ''){ + $comment_title = $instance->customtext2; + } + $mform->addElement('textarea', 'applydescription', $comment_title, 'cols="80"'); $mform->setType('applydescription', PARAM_TEXT); // User profile... $editoroptions = $filemanageroptions = null; - + if ($instance->customint1) { useredit_shared_definition($mform, $editoroptions, $filemanageroptions, $USER); } @@ -85,5 +89,6 @@ class enrol_apply_apply_form extends moodleform { $mform->addElement('hidden', 'instance'); $mform->setType('instance', PARAM_INT); $mform->setDefault('instance', $instance->id); + } } diff --git a/edit.php b/edit.php index afa2c78..b279ed3 100644 --- a/edit.php +++ b/edit.php @@ -64,10 +64,13 @@ if ($instanceid) { // Process notify setting for editing... // Convert to array for use with multi-select element. $notify = array('$@NONE@$'); +/* if ($instance->customtext2 != '') { $notify = explode(',', $instance->customtext2); } +*/ $instance->notify = $notify; + $mform = new enrol_apply_edit_form(null, array($instance, $plugin, $context)); if ($mform->is_cancelled()) { @@ -86,7 +89,7 @@ if ($mform->is_cancelled()) { unset($notify[array_search('$@NONE@$', $notify)]); } // Convert back to string for storing in enrol table. - $data->customtext2 = implode(',', $notify); + //$data->customtext2 = implode(',', $notify); if ($instance->id) { $instance->status = $data->status; $instance->name = $data->name; diff --git a/edit_form.php b/edit_form.php index 6e0cd08..fb04a33 100644 --- a/edit_form.php +++ b/edit_form.php @@ -60,6 +60,12 @@ class enrol_apply_edit_form extends moodleform { $mform->addElement('textarea', 'customtext1', get_string('editdescription', 'enrol_apply')); + //new added requirement_20190110 + //$title_customtext2 = str_replace("{replace_title}",$instance->customtext2,get_string('custom_label', 'enrol_apply')); + $title_customtext2 = get_string('custom_label', 'enrol_apply'); + $mform->addElement('text', 'customtext2', $title_customtext2); + $mform->setDefault('customtext2', "Comment"); + $options = array(1 => get_string('yes'), 0 => get_string('no')); @@ -94,7 +100,7 @@ class enrol_apply_edit_form extends moodleform { $mform->setType('courseid', PARAM_INT); $this->add_action_buttons(true, ($instance->id ? null : get_string('addinstance', 'enrol'))); - + //echo "
";print_r($instance);exit;
         $this->set_data($instance);
     }
 }
diff --git a/info.php b/info.php
new file mode 100644
index 0000000..7bade9f
--- /dev/null
+++ b/info.php
@@ -0,0 +1,67 @@
+.
+
+/**
+ * @package    enrol_apply
+ * @copyright  emeneo (http://emeneo.com/)
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * @author     emeneo (http://emeneo.com/)
+ */
+
+ defined('MOODLE_INTERNAL') || die();
+ 
+require_once('../../config.php');
+require_once($CFG->dirroot.'/enrol/apply/lib.php');
+require_once($CFG->dirroot.'/enrol/apply/info_table.php');
+require_once($CFG->dirroot.'/enrol/apply/renderer.php');
+
+$id = optional_param('id', null, PARAM_INT);
+$formaction = optional_param('formaction', null, PARAM_TEXT);
+$userenrolments = optional_param_array('userenrolments', null, PARAM_INT);
+
+require_login();
+
+$manageurlparams = array();
+if ($id == null) {
+    $context = context_system::instance();
+    require_capability('enrol/apply:manageapplications', $context);
+    $pageheading = get_string('submitted_info', 'enrol_apply');
+} else {
+    $instance = $DB->get_record('enrol', array('id' => $id, 'enrol' => 'apply'), '*', MUST_EXIST);
+    require_course_login($instance->courseid);
+    $course = get_course($instance->courseid);
+    $context = context_course::instance($course->id, MUST_EXIST);
+    require_capability('enrol/apply:manageapplications', $context);
+    $manageurlparams['id'] = $instance->id;
+    $pageheading = $course->fullname;
+}
+
+$manageurl = new moodle_url('/enrol/apply/info.php', $manageurlparams);
+
+$PAGE->set_context($context);
+$PAGE->set_url($manageurl);
+$PAGE->set_pagelayout('admin');
+$PAGE->set_heading($pageheading);
+$PAGE->navbar->add(get_string('submitted_info', 'enrol_apply'));
+$PAGE->set_title(get_string('submitted_info', 'enrol_apply'));
+$PAGE->requires->css('/enrol/apply/style.css');
+
+
+$table = new enrol_apply_info_table($id);
+$table->define_baseurl($manageurl);
+
+$renderer = $PAGE->get_renderer('enrol_apply');
+$renderer->info_page($table, $manageurl,$instance);
diff --git a/info_table.php b/info_table.php
new file mode 100644
index 0000000..9499907
--- /dev/null
+++ b/info_table.php
@@ -0,0 +1,90 @@
+.
+
+/**
+ *
+ * @package    enrol_apply
+ * @copyright  2016 sudile GbR (http://www.sudile.com)
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * @author     Johannes Burk 
+ */
+
+defined('MOODLE_INTERNAL') || die();
+
+require_once($CFG->libdir . '/tablelib.php');
+
+class enrol_apply_info_table extends table_sql {
+
+    public $is_collapsible = false;
+
+    public function __construct($enrolid = null) {
+        parent::__construct('enrol_apply_info_table');
+
+        global $DB;
+
+        $sqlwhere = 'ue.status != 0';
+        $sqlparams = array();
+        if ($enrolid != null) {
+            $sqlwhere .= " AND e.id = :enrolid";
+            $sqlparams['enrolid'] = $enrolid;
+        } else {
+            $sqlwhere .= " AND e.enrol = :enrol";
+            $sqlparams['enrol'] = 'apply';
+        }
+
+        $this->set_sql(
+            'ue.id AS userenrolmentid, ue.userid, ue.status AS enrolstatus, ue.timecreated AS applydate,
+            ai.comment AS applycomment, u.*, c.fullname as course',
+            "{user_enrolments} AS ue
+            LEFT JOIN {enrol_apply_applicationinfo} ai ON ai.userenrolmentid = ue.id
+            JOIN {user} u ON u.id = ue.userid
+            JOIN {enrol} e ON e.id = ue.enrolid
+            JOIN {course} c ON c.id = e.courseid",
+            $sqlwhere,
+            $sqlparams);
+
+        //$this->no_sorting('checkboxcolumn');
+    }
+
+    /**
+     * Get any extra classes names to add to this row in the HTML.
+     * @param $row array the data for this row. Note (Johannes): this is actually an object with all sql columns.
+     * @return string added to the class="" attribute of the tr.
+     */
+    public function get_row_class($row) {
+        if ($row->enrolstatus == 2) {
+            return 'enrol_apply_waitinglist_highlight';
+        }
+        return '';
+    }
+    /*
+    public function col_checkboxcolumn($row) {
+        return html_writer::checkbox('userenrolments[]', $row->userenrolmentid, false);
+    }
+
+    public function col_fullname($row) {
+        // The $row variable contains all user fields, see sql query.
+        global $OUTPUT;
+        $col = $OUTPUT->user_picture($row, array('popup' => true));
+        $col .= fullname($row);
+        return $col;
+    }
+
+    public function col_applydate($row) {
+        return date("Y-m-d", $row->applydate);
+    }
+    */
+}
diff --git a/lang/en/enrol_apply.php b/lang/en/enrol_apply.php
index 90e6f5a..6f7a89a 100644
--- a/lang/en/enrol_apply.php
+++ b/lang/en/enrol_apply.php
@@ -100,6 +100,9 @@ $string['user_profile'] = 'User Profile';
 $string['show_standard_user_profile'] = 'Show standard user profile fields on enrolment screen';
 $string['show_extra_user_profile'] = 'Show extra user profile fields on enrolment screen';
 
+//$string['custom_label'] = 'Custom label "{replace_title}"';
+$string['custom_label'] = 'Custom label';
+
 $string['maxenrolled'] = 'Max enrolled users';
 $string['maxenrolled_help'] = 'Specifies the maximum number of users that can self enrol. 0 means no limit.';
 $string['maxenrolledreached_left'] = 'Maximum number of users allowed';
@@ -117,3 +120,5 @@ $string['expiry_heading'] = 'Expiry settings';
 $string['expiry_desc'] = '';
 $string['expiredaction'] = 'Enrolment expiry action';
 $string['expiredaction_help'] = 'Select action to carry out when user enrolment expires. Please note that some user data and settings are purged from course during course unenrolment.';
+
+$string['submitted_info'] = 'Enrol info';
diff --git a/lib.php b/lib.php
index 40e8ac2..5e0c6d2 100644
--- a/lib.php
+++ b/lib.php
@@ -175,6 +175,13 @@ class enrol_apply_plugin extends enrol_plugin {
                 get_string('confirmenrol', 'enrol_apply'),
                 'core',
                 array('class' => 'iconsmall')));
+
+            $infolink = new moodle_url("/enrol/apply/info.php", array('id' => $instance->id));
+            $icons[] = $OUTPUT->action_icon($infolink, new pix_icon(
+                'i/files',
+                get_string('submitted_info', 'enrol_apply'),
+                'core',
+                array('class' => 'iconsmall')));
         }
 
         return $icons;
@@ -364,7 +371,7 @@ class enrol_apply_plugin extends enrol_plugin {
         require_once($CFG->dirroot.'/enrol/apply/notification.php');
         // Required for course_get_url() function.
         require_once($CFG->dirroot.'/course/lib.php');
-
+       
         $course = get_course($instance->courseid);
         $user = core_user::get_user($userenrolment->userid);
 
@@ -376,7 +383,8 @@ class enrol_apply_plugin extends enrol_plugin {
             $type,
             $subject,
             $content,
-            course_get_url($course));
+            course_get_url($course),
+            $instance->courseid);
         message_send($message);
     }
 
@@ -387,7 +395,7 @@ class enrol_apply_plugin extends enrol_plugin {
         require_once($CFG->dirroot.'/course/lib.php');
 
         $renderer = $PAGE->get_renderer('enrol_apply');
-
+        
         $course = get_course($instance->courseid);
         $user = core_user::get_user($userid);
         $contact = core_user::get_support_user();
@@ -425,7 +433,8 @@ class enrol_apply_plugin extends enrol_plugin {
                     'application',
                     get_string('mailtoteacher_suject', 'enrol_apply'),
                     $content,
-                    $manageurl);
+                    $manageurl,
+                    $instance->courseid);
                 message_send($message);
             }
         }
@@ -451,7 +460,8 @@ class enrol_apply_plugin extends enrol_plugin {
                     'application',
                     get_string('mailtoteacher_suject', 'enrol_apply'),
                     $content,
-                    $manageurl);
+                    $manageurl,
+                    $instance->courseid);
                 message_send($message);
             }
         }
diff --git a/manage.php b/manage.php
index 35d8e8b..14e97b7 100644
--- a/manage.php
+++ b/manage.php
@@ -78,4 +78,4 @@ $table = new enrol_apply_manage_table($id);
 $table->define_baseurl($manageurl);
 
 $renderer = $PAGE->get_renderer('enrol_apply');
-$renderer->manage_page($table, $manageurl);
+$renderer->manage_page($table, $manageurl, $instance);
diff --git a/notification.php b/notification.php
index fce3894..fac2104 100644
--- a/notification.php
+++ b/notification.php
@@ -24,7 +24,7 @@
 defined('MOODLE_INTERNAL') || die();
 
 class enrol_apply_notification extends \core\message\message {
-    public function __construct($to, $from, $type, $subject, $content, $url) {
+    public function __construct($to, $from, $type, $subject, $content, $url,$courseid) {
         $this->component = 'enrol_apply';
 
         switch ($type) {
@@ -60,5 +60,6 @@ class enrol_apply_notification extends \core\message\message {
         $this->notification = true;
         $this->contexturl = $url;
         $this->contexturlname = get_string('course');
+        $this->courseid = $courseid;
     }
 }
diff --git a/renderer.php b/renderer.php
index 9efc772..e9b7a30 100644
--- a/renderer.php
+++ b/renderer.php
@@ -25,11 +25,11 @@
 defined('MOODLE_INTERNAL') || die();
 
 class enrol_apply_renderer extends plugin_renderer_base {
-    public function manage_page($table, $manageurl) {
+    public function manage_page($table, $manageurl, $instance) {
         echo $this->header();
         echo $this->heading(get_string('confirmusers', 'enrol_apply'));
         echo get_string('confirmusers_desc', 'enrol_apply');
-        $this->manage_form($table, $manageurl);
+        $this->manage_form($table, $manageurl, $instance);
         echo $this->footer();
     }
 
@@ -40,13 +40,13 @@ class enrol_apply_renderer extends plugin_renderer_base {
         echo $this->footer();
     }
 
-    public function manage_form($table, $manageurl) {
+    public function manage_form($table, $manageurl, $instance) {
         echo html_writer::start_tag('form', array(
             'id' => 'enrol_apply_manage_form',
             'method' => 'post',
             'action' => $manageurl->out()));
 
-        $this->manage_table($table);
+        $this->manage_table($table, $instance);
 
         if ($table->totalrows > 0) {
             echo html_writer::empty_tag('br');
@@ -69,7 +69,15 @@ class enrol_apply_renderer extends plugin_renderer_base {
         echo html_writer::end_tag('form');
     }
 
-    public function manage_table($table) {
+    public function info_page($table, $manageurl,$instance) {
+        echo $this->header();
+        echo $this->heading(get_string('submitted_info', 'enrol_apply'));
+        echo get_string('submitted_info', 'enrol_apply');
+        $this->info_form($table, $manageurl,$instance);
+        echo $this->footer();
+    }
+
+    public function manage_table($table, $instance) {
         $columns = array(
             'checkboxcolumn',
             'course',
@@ -83,7 +91,42 @@ class enrol_apply_renderer extends plugin_renderer_base {
             'fullname', // Magic happens here: The column heading will automatically be set due to column name 'fullname'.
             get_string('email'),
             get_string('applydate', 'enrol_apply'),
-            get_string('comment', 'enrol_apply'));
+            $instance->customtext2);
+        $table->define_columns($columns);
+        $table->define_headers($headers);
+
+        $table->sortable(true, 'id');
+
+        $table->out(50, true);
+    }
+
+    public function info_form($table, $manageurl,$instance) {
+        echo html_writer::start_tag('form', array(
+            'id' => 'enrol_apply_info_form',
+            'method' => 'post',
+            'action' => $manageurl->out()));
+
+        $this->info_table($table,$instance);
+
+        if ($table->totalrows > 0) {
+            echo html_writer::empty_tag('br');
+            echo html_writer::start_tag('div', array('class' => 'formaction'));
+
+
+            echo html_writer::end_tag('div');
+
+            $this->page->requires->js_call_amd('enrol_apply/info', 'init');
+        }
+        echo html_writer::end_tag('form');
+    }
+
+    public function info_table($table,$instance) {
+        $columns = array(
+            'fullname',
+            'applycomment');
+        $headers = array(
+            'User', // Magic happens here: The column heading will automatically be set due to column name 'fullname'.
+            $instance->customtext2);
         $table->define_columns($columns);
         $table->define_headers($headers);
 
@@ -105,7 +148,9 @@ class enrol_apply_renderer extends plugin_renderer_base {
             $body .= '

'. get_string('email') .': '.$standarduserfields->email.'

'; $body .= '

'. get_string('city') .': '.$standarduserfields->city.'

'; $body .= '

'. get_string('country') .': '.$standarduserfields->country.'

'; - $body .= '

'. get_string('preferredlanguage') .': '.$standarduserfields->lang.'

'; + if(isset($standarduserfields->lang)){ + $body .= '

'. get_string('preferredlanguage') .': '.$standarduserfields->lang.'

'; + } $body .= '

'. get_string('description') .': '.$standarduserfields->description_editor['text'].'

'; $body .= '

'. get_string('firstnamephonetic') .': '.$standarduserfields->firstnamephonetic.'

'; diff --git a/version.php b/version.php index faa4afc..7f44045 100644 --- a/version.php +++ b/version.php @@ -24,7 +24,7 @@ defined('MOODLE_INTERNAL') || die(); -$plugin->version = 2018112603; +$plugin->version = 2018112604; $plugin->requires = 2011080100; $plugin->maturity = MATURITY_STABLE; $plugin->release = 'Enrolment upon approval plugin Version 3.5-a';