MDL-49543 badges: Add decription format and backup/restore

Signed-off-by: Yuliya Bozhko <[email protected]>
This commit is contained in:
Yuliya Bozhko
2015-03-24 09:22:47 +13:00
parent 0b6ba27a04
commit fffeb03fe7
10 changed files with 53 additions and 15 deletions
+1 -1
View File
@@ -825,7 +825,7 @@ class backup_badges_structure_step extends backup_structure_step {
$criteria = new backup_nested_element('criteria');
$criterion = new backup_nested_element('criterion', array('id'), array('badgeid',
'criteriatype', 'method'));
'criteriatype', 'method', 'description', 'descriptionformat'));
$parameters = new backup_nested_element('parameters');
$parameter = new backup_nested_element('parameter', array('id'), array('critid',
+5 -3
View File
@@ -2269,9 +2269,11 @@ class restore_badges_structure_step extends restore_structure_step {
$data = (object)$data;
$params = array(
'badgeid' => $this->get_new_parentid('badge'),
'criteriatype' => $data->criteriatype,
'method' => $data->method
'badgeid' => $this->get_new_parentid('badge'),
'criteriatype' => $data->criteriatype,
'method' => $data->method,
'description' => $data->description,
'descriptionformat' => $data->descriptionformat,
);
$newid = $DB->insert_record('badge_criteria', $params);
$this->set_mapping('criterion', $data->id, $newid);
+12 -1
View File
@@ -112,6 +112,12 @@ abstract class award_criteria {
*/
public $description;
/**
* Format of the criterion description.
* @var integer
*/
public $descriptionformat;
/**
* Any additional parameters.
* @var array
@@ -128,6 +134,7 @@ abstract class award_criteria {
$this->method = isset($params['method']) ? $params['method'] : BADGE_CRITERIA_AGGREGATION_ANY;
$this->badgeid = $params['badgeid'];
$this->description = isset($params['description']) ? $params['description'] : '';
$this->descriptionformat = isset($params['descriptionformat']) ? $params['descriptionformat'] : FORMAT_HTML;
if (isset($params['id'])) {
$this->params = $this->get_params($params['id']);
}
@@ -249,7 +256,7 @@ abstract class award_criteria {
if (!empty($this->description)) {
$badge = new badge($this->badgeid);
echo $OUTPUT->box(
format_text($this->description, FORMAT_HTML, array('context' => $badge->get_context())),
format_text($this->description, $this->descriptionformat, array('context' => $badge->get_context())),
'criteria-description'
);
}
@@ -348,8 +355,10 @@ abstract class award_criteria {
// Figure out criteria description.
// If it is coming from the form editor, it is an array(text, format).
$description = '';
$descriptionformat = FORMAT_HTML;
if (isset($params['description']['text'])) {
$description = $params['description']['text'];
$descriptionformat = $params['description']['format'];
} else if (isset($params['description'])) {
$description = $params['description'];
}
@@ -359,6 +368,7 @@ abstract class award_criteria {
$fordb->method = isset($params['agg']) ? $params['agg'] : BADGE_CRITERIA_AGGREGATION_ALL;
$fordb->badgeid = $this->badgeid;
$fordb->description = $description;
$fordb->descriptionformat = $descriptionformat;
$t = $DB->start_delegated_transaction();
// Pick only params that are required by this criterion.
@@ -434,6 +444,7 @@ abstract class award_criteria {
$fordb->method = $this->method;
$fordb->badgeid = $newbadgeid;
$fordb->description = $this->description;
$fordb->descriptionformat = $this->descriptionformat;
if (($newcrit = $DB->insert_record('badge_criteria', $fordb, true)) && isset($this->params)) {
foreach ($this->params as $k => $param) {
foreach ($param as $key => $value) {
+4 -2
View File
@@ -77,9 +77,11 @@ class award_criteria_course extends award_criteria {
if (!empty($this->description)) {
echo $OUTPUT->box(
format_text($this->description, FORMAT_HTML, array('context' => context_course::instance($this->courseid))),
format_text($this->description, $this->descriptionformat,
array('context' => context_course::instance($this->courseid))
),
'criteria-description'
);
);
}
if (!empty($this->params)) {
+4 -1
View File
@@ -48,7 +48,7 @@ class award_criteria_overall extends award_criteria {
if (!empty($this->description)) {
$badge = new badge($this->badgeid);
echo $OUTPUT->box(
format_text($this->description, FORMAT_HTML, array('context' => $badge->get_context())),
format_text($this->description, $this->descriptionformat, array('context' => $badge->get_context())),
'criteria-description');
}
echo $OUTPUT->heading($this->get_title(), 2);
@@ -184,8 +184,10 @@ class award_criteria_overall extends award_criteria {
// Sort out criteria description.
// If it is coming from the form editor, it is an array of (text, format).
$description = '';
$descriptionformat = FORMAT_HTML;
if (isset($params['description']['text'])) {
$description = $params['description']['text'];
$descriptionformat = $params['description']['format'];
} else if (isset($params['description'])) {
$description = $params['description'];
}
@@ -194,6 +196,7 @@ class award_criteria_overall extends award_criteria {
$fordb->criteriatype = $this->criteriatype;
$fordb->badgeid = $this->badgeid;
$fordb->description = $description;
$fordb->descriptionformat = $descriptionformat;
if ($this->id !== 0) {
$fordb->id = $this->id;
$DB->update_record('badge_criteria', $fordb);
+5 -1
View File
@@ -58,7 +58,11 @@ class edit_criteria_form extends moodleform {
$mform->addElement('header', 'description_header', get_string('description'));
$mform->addElement('editor', 'description', '', null, null);
$mform->setType('description', PARAM_RAW);
$mform->setDefault('description', array('text' => $criteria->description));
$mform->setDefault('description', array(
'text' => $criteria->description,
'format' => $criteria->descriptionformat
)
);
$mform->closeHeaderBefore('buttonar');
$this->add_action_buttons(true, get_string('save', 'badges'));
+3 -3
View File
@@ -721,7 +721,7 @@ class core_badges_renderer extends plugin_renderer_base {
$overall = $badge->criteria[BADGE_CRITERIA_TYPE_OVERALL];
if (!$short && !empty($overall->description)) {
$overalldescr = $this->output->box(
format_text($overall->description, FORMAT_HTML, array('context' => $badge->get_context())),
format_text($overall->description, $overall->descriptionformat, array('context' => $badge->get_context())),
'criteria-description'
);
}
@@ -745,7 +745,7 @@ class core_badges_renderer extends plugin_renderer_base {
$c = reset($badge->criteria);
if (!$short && !empty($c->description)) {
$overalldescr = $this->output->box(
format_text($c->description, FORMAT_HTML, array('context' => $badge->get_context())),
format_text($c->description, $c->descriptionformat, array('context' => $badge->get_context())),
'criteria-description'
);
}
@@ -762,7 +762,7 @@ class core_badges_renderer extends plugin_renderer_base {
$criteriadescr = '';
if (!$short && !empty($c->description)) {
$criteriadescr = $this->output->box(
format_text($c->description, FORMAT_HTML, array('context' => $badge->get_context())),
format_text($c->description, $c->descriptionformat, array('context' => $badge->get_context())),
'criteria-description'
);
}
+11 -2
View File
@@ -154,10 +154,19 @@ class core_badges_badgeslib_testcase extends advanced_testcase {
public function test_add_badge_criteria_description() {
$criteriaoverall = award_criteria::build(array('criteriatype' => BADGE_CRITERIA_TYPE_OVERALL, 'badgeid' => $this->badgeid));
$criteriaoverall->save(array('agg' => BADGE_CRITERIA_AGGREGATION_ALL, 'description' => 'Overall description'));
$criteriaoverall->save(array(
'agg' => BADGE_CRITERIA_AGGREGATION_ALL,
'description' => 'Overall description',
'descriptionformat' => FORMAT_HTML
));
$criteriaprofile = award_criteria::build(array('criteriatype' => BADGE_CRITERIA_TYPE_PROFILE, 'badgeid' => $this->badgeid));
$params = array('agg' => BADGE_CRITERIA_AGGREGATION_ALL, 'field_address' => 'address', 'description' => 'Description');
$params = array(
'agg' => BADGE_CRITERIA_AGGREGATION_ALL,
'field_address' => 'address',
'description' => 'Description',
'descriptionformat' => FORMAT_HTML
);
$criteriaprofile->save($params);
$badge = new badge($this->badgeid);
+1
View File
@@ -2864,6 +2864,7 @@
<FIELD NAME="criteriatype" TYPE="int" LENGTH="10" NOTNULL="false" SEQUENCE="false" COMMENT="The criteria type we are aggregating"/>
<FIELD NAME="method" TYPE="int" LENGTH="1" NOTNULL="true" DEFAULT="1" SEQUENCE="false" COMMENT="1 = all, 2 = any"/>
<FIELD NAME="description" TYPE="text" NOTNULL="false" SEQUENCE="false"/>
<FIELD NAME="descriptionformat" TYPE="int" LENGTH="2" NOTNULL="true" DEFAULT="0" SEQUENCE="false"/>
</FIELDS>
<KEYS>
<KEY NAME="primary" TYPE="primary" FIELDS="id"/>
+7 -1
View File
@@ -4249,13 +4249,19 @@ function xmldb_main_upgrade($oldversion) {
if ($oldversion < 2015032000.00) {
$table = new xmldb_table('badge_criteria');
$field = new xmldb_field('description', XMLDB_TYPE_TEXT, null, null, null, null, null);
$field = new xmldb_field('description', XMLDB_TYPE_TEXT, null, null, null, null, null);
// Conditionally add description field to the badge_criteria table.
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
$field = new xmldb_field('descriptionformat', XMLDB_TYPE_INTEGER, 2, null, XMLDB_NOTNULL, null, 0);
// Conditionally add description format field to the badge_criteria table.
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
upgrade_main_savepoint(true, 2015032000.00);
}