Proyectos de Subversion Moodle

Rev

Rev 11 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 11 Rev 1441
Línea 51... Línea 51...
51
 
51
 
52
    /**
52
    /**
53
     * Convert page names to URLs for steps like 'When I am on the "[identifier]" "[page type]" page'.
53
     * Convert page names to URLs for steps like 'When I am on the "[identifier]" "[page type]" page'.
54
     *
54
     *
55
     * Recognised page names are:
55
     * Recognised page names are:
56
     * | pagetype               | name meaning               | description                              |
56
     * | pagetype               | name meaning               | description                                           |
57
     * | course question bank   | Course name                | The question bank for a course           |
57
     * | course question bank   | Course name                | The default question bank for a course                |
58
     * | course question import | Course name                | The import questions screen for a course |
58
     * | course question import | Course name                | The import questions screen for a course default bank |
-
 
59
     * | course question export | Course name                | The export questions screen for a course default bank |
-
 
60
     * | question bank          | Question bank name         | The question bank module                              |
-
 
61
     * | question import        | Question bank name         | The import questions screen for a question bank       |
59
     * | course question export | Course name                | The export questions screen for a course |
62
     * | question export        | Question bank name         | The export questions screen for a question bank       |
60
     * | preview                | Question name              | The screen to preview a question         |
63
     * | preview                | Question name              | The screen to preview a question                      |
61
     * | edit                   | Question name              | The screen to edit a question            |
64
     * | edit                   | Question name              | The screen to edit a question                         |
62
     *
65
     *
63
     * @param string $type identifies which type of page this is, e.g. 'Preview'.
66
     * @param string $type identifies which type of page this is, e.g. 'Preview'.
64
     * @param string $identifier identifies the particular page, e.g. 'My question'.
67
     * @param string $identifier identifies the particular page, e.g. 'My question'.
65
     * @return moodle_url the corresponding URL.
68
     * @return moodle_url the corresponding URL.
Línea 69... Línea 72...
69
        switch (strtolower($type)) {
72
        switch (strtolower($type)) {
70
            case 'course question bank':
73
            case 'course question bank':
71
                // The question bank does not handle fields at the edge of the viewport well.
74
                // The question bank does not handle fields at the edge of the viewport well.
72
                // Increase the size to avoid this.
75
                // Increase the size to avoid this.
73
                $this->execute('behat_general::i_change_window_size_to', ['window', 'large']);
76
                $this->execute('behat_general::i_change_window_size_to', ['window', 'large']);
-
 
77
                $qbank = $this->get_default_bank_for_course_identifier($identifier);
74
                return new moodle_url('/question/edit.php', [
78
                return new moodle_url('/question/edit.php', [
75
                    'courseid' => $this->get_course_id($identifier),
79
                    'cmid' => $qbank->id,
76
                ]);
80
                ]);
Línea -... Línea 81...
-
 
81
 
-
 
82
            case 'question bank':
-
 
83
                // The question bank does not handle fields at the edge of the viewport well.
-
 
84
                // Increase the size to avoid this.
-
 
85
                $this->execute('behat_general::i_change_window_size_to', ['window', 'large']);
-
 
86
                return new moodle_url('/question/edit.php',
-
 
87
                    ['cmid' => $this->get_cm_by_activity_name('qbank', $identifier)->id]
-
 
88
                );
77
 
89
 
-
 
90
            case 'course question categories':
78
            case 'course question categories':
91
                $qbank = $this->get_default_bank_for_course_identifier($identifier);
-
 
92
                return new moodle_url('/question/bank/managecategories/category.php',
-
 
93
                    ['cmid' => $qbank->id]
-
 
94
                );
-
 
95
 
-
 
96
            case 'question categories':
79
                return new moodle_url('/question/bank/managecategories/category.php',
97
                return new moodle_url('/question/bank/managecategories/category.php',
-
 
98
                    ['cmid' => $this->get_cm_by_activity_name('qbank', $identifier)->id]
Línea 80... Línea 99...
80
                        ['courseid' => $this->get_course_id($identifier)]);
99
                );
-
 
100
 
81
 
101
            case 'course question import':
-
 
102
                $qbank = $this->get_default_bank_for_course_identifier($identifier);
-
 
103
                return new moodle_url('/question/bank/importquestions/import.php',
-
 
104
                    ['cmid' => $qbank->id]
-
 
105
                );
-
 
106
 
82
            case 'course question import':
107
            case 'question import':
-
 
108
                return new moodle_url('/question/bank/importquestions/import.php',
Línea 83... Línea 109...
83
                return new moodle_url('/question/bank/importquestions/import.php',
109
                    ['cmid' => $this->get_cm_by_activity_name('qbank', $identifier)->id]
-
 
110
                );
-
 
111
 
-
 
112
            case 'course question export':
-
 
113
                $qbank = $this->get_default_bank_for_course_identifier($identifier);
-
 
114
                return new moodle_url('/question/bank/exportquestions/export.php',
-
 
115
                    ['cmid' => $qbank->id]
84
                        ['courseid' => $this->get_course_id($identifier)]);
116
                );
85
 
117
 
-
 
118
            case 'question export':
Línea 86... Línea 119...
86
            case 'course question export':
119
                return new moodle_url('/question/bank/exportquestions/export.php',
87
                return new moodle_url('/question/bank/exportquestions/export.php',
120
                    ['cmid' => $this->get_cm_by_activity_name('qbank', $identifier)->id]
88
                        ['courseid' => $this->get_course_id($identifier)]);
121
                );
89
 
122
 
Línea 101... Línea 134...
101
                throw new Exception('Unrecognised core_question page type "' . $type . '."');
134
                throw new Exception('Unrecognised core_question page type "' . $type . '."');
102
        }
135
        }
103
    }
136
    }
Línea 104... Línea 137...
104
 
137
 
-
 
138
    /**
-
 
139
     * Get the course default question bank, creating it if it doesn't yet exist
-
 
140
     *
-
 
141
     * @param string $identifier The name of the course to add a default bank to.
-
 
142
     * @return cm_info The newly created default question bank.
-
 
143
     */
-
 
144
    private function get_default_bank_for_course_identifier(string $identifier): cm_info {
-
 
145
        $course = get_course($this->get_course_id($identifier));
-
 
146
        return \core_question\local\bank\question_bank_helper::get_default_open_instance_system_type($course, true);
-
 
147
    }
-
 
148
 
105
    /**
149
    /**
106
     * Find a question, and where it is, from the question name.
150
     * Find a question, and where it is, from the question name.
107
     *
151
     *
108
     * This is a helper used by resolve_page_instance_url.
152
     * This is a helper used by resolve_page_instance_url.
109
     *
153
     *
Línea 362... Línea 406...
362
        ]);
406
        ]);
Línea 363... Línea 407...
363
 
407
 
364
        // Apply filters.
408
        // Apply filters.
365
        $this->execute("behat_forms::press_button", [get_string('applyfilters')]);
409
        $this->execute("behat_forms::press_button", [get_string('applyfilters')]);
-
 
410
    }
-
 
411
 
-
 
412
    /**
-
 
413
     * Record that a user has recently accessed the question bank related to a particular activity.
-
 
414
     *
-
 
415
     * @Given :user has recently viewed the :activityname :activitytype question bank
-
 
416
     * @param string $useridentifier The user's username or email.
-
 
417
     * @param string $activityname name of an activity.
-
 
418
     * @param string $activitytype type of an activity, e.g. 'quiz' or 'qbank'.
-
 
419
     */
-
 
420
    public function user_has_recently_viewed_question_bank(
-
 
421
        string $useridentifier,
-
 
422
        string $activityname,
-
 
423
        string $activitytype,
-
 
424
    ): void {
-
 
425
        global $USER;
-
 
426
        $originaluser = $USER;
-
 
427
 
-
 
428
        if (!plugin_supports('mod', $activitytype, FEATURE_USES_QUESTIONS)) {
-
 
429
            throw new Exception($activitytype . ' do not have a question bank.');
-
 
430
        }
-
 
431
 
-
 
432
        $user = $this->get_user_by_identifier($useridentifier);
-
 
433
        if (!$user) {
-
 
434
            throw new Exception('Unknow user ' . $useridentifier . '.');
-
 
435
        }
-
 
436
        $USER = $user;
-
 
437
 
-
 
438
        $cm = $this->get_cm_by_activity_name($activitytype, $activityname);
-
 
439
        \core_question\local\bank\question_bank_helper::add_bank_context_to_recently_viewed($cm->context);
-
 
440
 
-
 
441
        $USER = $originaluser;
366
    }
442
    }