Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Deprecated functions in 2.0: Difference between revisions

From MoodleDocs
m (Reverted edits by Nicolasconnault (talk) to last version by David Mudrak)
Line 10: Line 10:


== Functions to migrate ==
== Functions to migrate ==
=== button_to_popup_window (0) ===
=== button_to_popup_window (4) ===
Old code:
Old code:
<code php>
<code php>
Line 28: Line 28:
Note: popup parameters ($options) '''must''' be prepared as an associative array, not a string as previously. Simply reusing the $options param previously passed to button_to_popup_window() will not work. The $height and $width params are also part of the popup params. See lib/deprecatedlib.php for an example of how the legacy function call is handled.
Note: popup parameters ($options) '''must''' be prepared as an associative array, not a string as previously. Simply reusing the $options param previously passed to button_to_popup_window() will not work. The $height and $width params are also part of the popup params. See lib/deprecatedlib.php for an example of how the legacy function call is handled.


=== choose_from_menu (1) ===
=== choose_from_menu (192) ===
Old code:
Old code:
<code php>
<code php>
Line 48: Line 48:
</code>
</code>


=== choose_from_menu_nested (0) ===
=== choose_from_menu_nested (6) ===
Old code:
Old code:
<code php>
<code php>
Line 67: Line 67:
#The $script param is no longer supported. Please use component::add_action() instead.
#The $script param is no longer supported. Please use component::add_action() instead.


=== choose_from_menu_yesno (0) ===
=== choose_from_menu_yesno (5) ===
Old code:
Old code:
<code php>
<code php>
Line 81: Line 81:
Note: The $script param has been dropped, you need to use component::add_action() instead.
Note: The $script param has been dropped, you need to use component::add_action() instead.


=== choose_from_radio (0) ===
=== choose_from_radio (6) ===
 
=== close_window_button (34) ===
=== close_window_button (0) ===
Old code:
Old code:
<code php>
<code php>
Line 94: Line 93:
Note: You must pass a language string already processed by get_string().
Note: You must pass a language string already processed by get_string().


=== print_continue (0) ===
=== print_continue (91) ===
Old code:
Old code:
<code php>
<code php>
Line 104: Line 103:
</code>
</code>


=== doc_link (0) ===
=== doc_link (30) ===
Old code:
Old code:
<code php>
<code php>
Line 113: Line 112:
echo $OUTPUT->doc_link($path, $text, $iconpath);
echo $OUTPUT->doc_link($path, $text, $iconpath);
</code>
</code>
Note: This is not for general use, do not confuse with help_icon()


=== formerr (120) ===
=== helpbutton (391) ===
Old code:
<code php>
formerr($string);
</code>
New code:
<code php>
echo $OUTPUT->error_text($error);
</code>
 
=== helpbutton (0) ===
Old code:
Old code:
<code php>
<code php>
Line 154: Line 142:
Note: popup parameters ($options) '''must''' be prepared as an associative array, not a string as previously. Simply reusing the $options param previously passed to link_to_popup_window() will not work. See lib/deprecatedlib.php for an example of how the legacy function call is handled.
Note: popup parameters ($options) '''must''' be prepared as an associative array, not a string as previously. Simply reusing the $options param previously passed to link_to_popup_window() will not work. See lib/deprecatedlib.php for an example of how the legacy function call is handled.


=== notice_yesno (0) ===
=== notice_yesno (79) ===
Old code:
Old code:
<code php>
<code php>
Line 163: Line 151:
echo $OUTPUT->confirm($message, $linkyes, $linkno);
echo $OUTPUT->confirm($message, $linkyes, $linkno);
</code>
</code>
New code (with options in an array):
New code (complex form):
<code php>
<code php>
echo $OUTPUT->confirm($message, new moodle_url($linkno, $optionsyes), new moodle_url($linkno, $optionsno));
$formcontinue = new html_form();
$formcontinue->url = new moodle_url($linkyes, $optionsyes);
$formcontinue->button->text = get_string('yes');
$formcontinue->method = $methodyes;
 
$formcancel = new html_form();
$formcancel->url = new moodle_url($linkno, $optionsno);
$formcancel->button->text = get_string('no');
$formcancel->method = $methodno;
 
echo $OUTPUT->confirm($message, $formcontinue, $formcancel);
</code>
</code>


=== notify (0) ===
=== notify (548) ===
Old code:
Old code:
<code php>
<code php>
Line 179: Line 177:
Note: Use a CSS rule for alignment.
Note: Use a CSS rule for alignment.


=== popup_form (0) ===
=== popup_form (51) ===
Old code:
Old code:
<code php>
<code php>
Line 186: Line 184:
New code:
New code:
<code php>
<code php>
// if $baseurl == 'http://domain.com/index.php?var1=1&amp;var2='
// After converting $options' keys to full URLs:
$select = html_select::make_popup_form('http://domain.com/index.php?var1=1', 'var2', $options, $formid, $selected);
$select = moodle_select::make_popup_form($options, $formid, $submitvalue, $selected);
$select->disabled = $disabled; // optional
$select->disabled = $disabled; // optional
$select->set_label($selectlabel, $select->id); // optional, set to false if no "nothing" option is desired (when $selectlabel == '' in original call)
$select->set_label($selectlabel, $select->id); // optional
$select->set_help_icon($help, $helptext); // optional
$select->set_help_icon($help, $helptext); // optional
$select->form->button->text = $submitvalue; // optional


echo $OUTPUT->select($select);
echo $OUTPUT->select($select);
</code>
</code>
Notes:  
Notes: You must convert the $options array so that the index keys represent a full URL: $baseurl . $key . $optionsextra[$key]. See lib/deprecatedlib.php for an example of conversion.
*The $optionsextra param is not supported. If your code uses it, you should find another way to add extra params to your <option> tags without using this horrible hack which usually includes inline JS or CSS.


=== print_arrow (15) ===
=== print_arrow (15) ===
=== print_box* (0) ===
=== print_box* (380) ===
Old code:
Old code:
<code php>
<code php>
Line 213: Line 209:
</code>
</code>


=== print_checkbox (10) ===
=== print_checkbox (33) ===
Old code:
Old code:
<code php>
<code php>
Line 231: Line 227:
Note: html_select_option is a component that can be rendered as a select <option>, a radio button or a checkbox. It holds sufficient information to render all these elements, except the $name variable which is attached to a moodle_select component. This is why we pass the $name string to $OUTPUT->checkbox().
Note: html_select_option is a component that can be rendered as a select <option>, a radio button or a checkbox. It holds sufficient information to render all these elements, except the $name variable which is attached to a moodle_select component. This is why we pass the $name string to $OUTPUT->checkbox().


=== print_container (0) ===
=== print_container (153) ===
Old code:
Old code:
<code php>
<code php>
Line 244: Line 240:
</code>
</code>


=== print_date_selector (0) ===
=== print_date_selector (11) ===
 
=== print_footer (569) ===
=== print_footer (0) ===
Old code:
Old code:
<code php>
<code php>
Line 273: Line 268:
Note: Navigation code is being rewritten, this doc will then be updated with the new usage.
Note: Navigation code is being rewritten, this doc will then be updated with the new usage.


=== print_heading_with_help (0) ===
=== print_header_with_help (0) ===
 
=== print_heading (436) ===
=== print_heading (0) ===
Old code:
Old code:
<code php>
<code php>
Line 286: Line 280:
Note: Use a CSS class rule to control alignment.
Note: Use a CSS class rule to control alignment.


=== print_heading_block (0) ===
=== print_heading_block (9) ===
 
=== print_headline (11) ===
=== print_headline (0) ===
=== print_paging_bar (41) ===
Old code:
<code php>
print_headline($text, $size);
</code>
New code:
<code php>
echo $OUTPUT->heading($text, $size);
</code>
 
=== print_paging_bar (2) ===


Old code:
Old code:
Line 314: Line 298:
$pagingbar->nocurr = $nocurr;
$pagingbar->nocurr = $nocurr;
echo $OUTPUT->paging_bar($pagingbar);
echo $OUTPUT->paging_bar($pagingbar);
</code>
Note: The last two instances of print_paging_bar are found in the old tablelib, which will soon be deprecated.
=== print_scale_menu_helpbutton (0) ===
Old code:
<code php>
print_scale_menu_helpbutton($courseid, $scale);
</code>
New code:
<code php>
echo $OUTPUT->help_button(help_button::make_scale_menu($courseid, $scale));
</code>
</code>


=== print_scale_menu_helpbutton (6) ===
=== print_side_block (4) ===
=== print_side_block (4) ===
=== print_single_button (0) ===
=== print_single_button (108) ===
Old code:
Old code:
<code php>
<code php>
Line 352: Line 326:
</code>
</code>


=== print_spacer (0) ===
=== print_spacer (20) ===
Old code:
Old code:
<code php>
<code php>
Line 391: Line 365:


=== print_textarea (55) ===
=== print_textarea (55) ===
=== print_textfield (0) ===
=== print_textfield (2) ===
 
=== print_time_selector (9) ===
=== print_time_selector (0) ===
=== print_user_picture (77) ===
 
=== print_user_picture (0) ===


Old code:
Old code:
Line 403: Line 375:
New code (simple):
New code (simple):
<code php>
<code php>
$userpic = new moodle_user_picture();
$userpic = new user_picture();
$userpic->user = $user;
$userpic->user = $user;
$userpic->courseid = $courseid;
$userpic->courseid = $courseid;
Line 435: Line 407:
Note: $courseid param has been dropped.
Note: $courseid param has been dropped.


=== update_tag_button (0) ===
=== update_tag_button (4) ===


== Non-supported functions ==
== Non-supported functions ==
Line 449: Line 421:
=== update_categories_search_button ===
=== update_categories_search_button ===
=== update_mymoodle_icon ===
=== update_mymoodle_icon ===
==See also==
* [[Developement:How_Moodle_outputs_HTML]]
* [[Migrating your code to the 2.0 rendering_API]]
{{CategoryDeveloper}}

Revision as of 06:28, 20 August 2009

Note: This page is a work-in-progress. Feedback and suggested improvements are welcome. Please join the discussion on moodle.org or use the page comments.

Moodle 2.0


This page lists the old HTML-outputting functions of pre-2.0 lib/weblib.php and their 2.0 equivalents using $OUTPUT functions.

General notes

The principle of the new rendering API is to let the developer build metadata-rich components that represent HTML elements, but may be rendered in many different ways. A menu component, for example, could be rendered as a <select> element, or as a list of radio buttons or check boxes.

The following functions have been arranged in alphabetical order, although some of them are very closely related to each other. The number of occurrences of these function calls at the time of writing are indicated in parentheses.

Functions to migrate

button_to_popup_window (4)

Old code: button_to_popup_window($url, $name, $linkname, $height, $width, $title, $options, $return, $id, $class); New code: $form = new html_form(); $form->button->text = $linkname; $form->button->title = $title; $form->button->id = $id; $form->url = $url; $form->add_class($class); $form->button->add_action(new popup_action('click', $url, $name, $options)); echo $OUTPUT->button($form); Note: popup parameters ($options) must be prepared as an associative array, not a string as previously. Simply reusing the $options param previously passed to button_to_popup_window() will not work. The $height and $width params are also part of the popup params. See lib/deprecatedlib.php for an example of how the legacy function call is handled.

choose_from_menu (192)

Old code: choose_from_menu($options, $name, $selected, $nothing, $script, $nothingvalue, $return, $disabled, $tabindex, $id, $listbox, $multiple, $class); New code: $select = moodle_select::make($options, $name, $selected); // Required $select->nothinglabel = $nothing; $select->nothingvalue = $nothingvalue; $select->disabled = $disabled; $select->tabindex = $tabindex; $select->id = $id; $select->listbox = $listbox; $select->multiple = $multiple; $select->add_classes($class);

echo $OUTPUT->select($select);

choose_from_menu_nested (6)

Old code: choose_from_menu_nested($options, $name, $selected, $nothing, $script, $nothingvalue, $return, $disabled, $tabindex); New code: $select = moodle_select::make($options, $name, $selected); $select->tabindex = $tabindex; $select->disabled = $disabled; $select->nothingvalue = $nothingvalue; $select->nested = true;

echo $OUTPUT->select($select); Notes:

  1. The lang string "choose" is no longer used, in favour of "choosedots".
  2. The $script param is no longer supported. Please use component::add_action() instead.

choose_from_menu_yesno (5)

Old code: choose_from_menu_yesno($name, $selected, $script, $return, $disabled, $tabindex); New code: $select = moodle_select::make_yes_no($name, $selected); $select->disabled = $disabled; $select->tabindex = $tabindex; echo $OUTPUT->select($select); Note: The $script param has been dropped, you need to use component::add_action() instead.

choose_from_radio (6)

close_window_button (34)

Old code: close_window_button($name, $return, $reloadopener); New code: echo $OUTPUT->close_window_button(get_string($name)); Note: You must pass a language string already processed by get_string().

print_continue (91)

Old code: print_continue($link, $return); New code: echo $OUTPUT->continue_button($link);

doc_link (30)

Old code: doc_link($path, $text, $iconpath); New code: echo $OUTPUT->doc_link($path, $text, $iconpath);

helpbutton (391)

Old code: helpbutton($page, $title, $module, $image, $linktext, $text, $return, $imagetext); New code: $helpicon = new help_icon(); $helpicon->page = $page; // required $helpicon->text = $title; // required $helpicon->module = $module; // defaults to 'moodle' $helpicon->linktext = $linktext;

echo $OUTPUT->help_icon($helpicon);

link_to_popup_window (54)

Old code: link_to_popup_window($url, $name, $linkname, $height, $width, $title, $options, $return); New code: $link = html_link::make($url, $linkname); $link->add_action(new popup_action('click', $url, $name, $options)); echo $OUTPUT->link_to_popup($link); Note: popup parameters ($options) must be prepared as an associative array, not a string as previously. Simply reusing the $options param previously passed to link_to_popup_window() will not work. See lib/deprecatedlib.php for an example of how the legacy function call is handled.

notice_yesno (79)

Old code: notice_yesno($message, $linkyes, $linkno, $optionsyes, $optionsno, $methodyes, $methodno); New code (simplest form): echo $OUTPUT->confirm($message, $linkyes, $linkno); New code (complex form): $formcontinue = new html_form(); $formcontinue->url = new moodle_url($linkyes, $optionsyes); $formcontinue->button->text = get_string('yes'); $formcontinue->method = $methodyes;

$formcancel = new html_form(); $formcancel->url = new moodle_url($linkno, $optionsno); $formcancel->button->text = get_string('no'); $formcancel->method = $methodno;

echo $OUTPUT->confirm($message, $formcontinue, $formcancel);

notify (548)

Old code: notify($message, $classes, $align, $return); New code: echo $OUTPUT->notification($message, $classes=); Note: Use a CSS rule for alignment.

popup_form (51)

Old code: popup_form($baseurl, $options, $formid, $selected, $nothing, $help, $helptext, $return, $targetwindow, $selectlabel, $optionsextra, $submitvalue, $disabled, $showbutton); New code: // After converting $options' keys to full URLs: $select = moodle_select::make_popup_form($options, $formid, $submitvalue, $selected); $select->disabled = $disabled; // optional $select->set_label($selectlabel, $select->id); // optional $select->set_help_icon($help, $helptext); // optional

echo $OUTPUT->select($select); Notes: You must convert the $options array so that the index keys represent a full URL: $baseurl . $key . $optionsextra[$key]. See lib/deprecatedlib.php for an example of conversion.

print_arrow (15)

print_box* (380)

Old code: print_box($message, $classes, $ids, $return); print_box_start($classes, $ids, $return); print_box_end(); New code: echo $OUTPUT->box($message, $classes, $ids); echo $OUTPUT->box_start($classes, $ids); echo $OUTPUT->box_end();

print_checkbox (33)

Old code: print_checkbox($name, $value, $checked, $label, $alt, $script, $return); New code: $checkbox = new html_select_option(); $checkbox->value = $value; // Required $checkbox->selected = $checked; $checkbox->text = $label; $checkbox->label->text = $label; $checkbox->alt = $alt;

echo $OUTPUT->checkbox($checkbox, $name); Note: html_select_option is a component that can be rendered as a select <option>, a radio button or a checkbox. It holds sufficient information to render all these elements, except the $name variable which is attached to a moodle_select component. This is why we pass the $name string to $OUTPUT->checkbox().

print_container (153)

Old code: print_container($message, $clearfix, $classes, $idbase, $return); New code: if ($clearfix) {

   $classes .= ' clearfix';

} echo $OUTPUT->container($message, $classes, $idbase);

print_date_selector (11)

print_footer (569)

Old code: print_footer($course, $usercourse, $return); New code: echo $OUTPUT->footer(); Notes: No parameters are required.

print_header (501)

Old code: print_header($title, $heading, $navigation, $focus, $meta, $cache, $button, $menu, $usexml, $bodytags, $return); New code: $PAGE->set_heading($heading); // Required $PAGE->set_title($title); $PAGE->set_cacheable($cache); $PAGE->set_focuscontrol($focus); $PAGE->set_button($button); echo $OUTPUT->header($navigation, $menu); Note: Navigation code is being rewritten, this doc will then be updated with the new usage.

print_header_with_help (0)

print_heading (436)

Old code: print_heading($text, $align, $size, $class, $return, $id); New code: echo $OUTPUT->heading($text, $size, $class, $id); Note: Use a CSS class rule to control alignment.

print_heading_block (9)

print_headline (11)

print_paging_bar (41)

Old code: print_paging_bar($totalcount, $page, $perpage, $baseurl, $pagevar, $nocurr, $return); New code: $pagingbar = new moodle_paging_bar(); $pagingbar->totalcount = $totalcount; // Required $pagingbar->page = $page; // Required $pagingbar->perpage = $perpage; // Required $pagingbar->baseurl = $baseurl; // Required $pagingbar->pagevar = $pagevar; $pagingbar->nocurr = $nocurr; echo $OUTPUT->paging_bar($pagingbar);

print_scale_menu_helpbutton (6)

print_side_block (4)

print_single_button (108)

Old code: print_single_button($link, $options, $label, $method, $notusedanymore, $return, $tooltip, $disabled, $jsconfirmmessage, $formid) New code: $form = new html_form(); $form->url = new moodle_url($link, $options); // Required $form->button = new html_button(); $form->button->text = $label; // Required $form->button->disabled = $disabled; $form->button->title = $tooltip; $form->method = $method; $form->id = $formid;

if ($jsconfirmmessage) {

   $confirmaction = new component_action('click', 'confirm_dialog', array('message' => $jsconfirmmessage));
   $form->button->add_action($confirmaction);

}

$output = $OUTPUT->button($form);

print_spacer (20)

Old code: print_spacer($height, $width, $br, $return); New code: $spacer = new html_image(); $spacer->height = $height; $spacer->width = $width; echo $OUTPUT->spacer($spacer); Note: The $br attribute has been dropped. You can simply add a line break manually if you need one.

print_table (140)

Old code: $table = new stdClass(); $table->class = 'mytable'; $table->head = array('Firstname', 'Lastname'); $table->rowclass = array(); // (other table properties here) $table->data = array(array(...),array(...),array(...)); print_table($table, $return); New code: $table = new html_table(); $table->set_classes('mytable'); // note the new style of setting CSS class $table->head = array('First name', 'Last name'); $table->colclasses = array('name fname','name lname'); $table->rowclasses = array(); // note the change of rowclass[] to rowclasses[] // (other table properties here) $table->data = array(array(...),array(...),array(...)); echo $OUTPUT->table($newtable); Notes: The new html_table object has the same member variables as the one originally used by print_table(), but has additional, required methods. You must map the old $table object to the new html_table object, as demonstrated above and in lib/deprecatedlib.php (see old print_table function).

print_textarea (55)

print_textfield (2)

print_time_selector (9)

print_user_picture (77)

Old code: print_user_picture($user, $courseid, $picture, $size, $return, $link, $target, $alttext); New code (simple): $userpic = new user_picture(); $userpic->user = $user; $userpic->courseid = $courseid; echo $OUTPUT->user_picture($userpic); New code (complex: alternate text, size, different image and popup action): $userpic = new user_picture(); $userpic->user = $user; $userpic->courseid = $courseid; $userpic->size = $size; $userpic->link = $link; $userpic->alttext = $alttext; $userpic->image->src = $picture; $userpic->add_action(new popup_action('click', new moodle_url($target)));

echo $OUTPUT->user_picture($userpic);

update_course_button (0)

update_module_button (94)

Old code: $button = update_module_button($cm->id, $course->id, get_string('modulename', 'workshop')); // passed to print_header_simple() New code: $PAGE->set_button($OUTPUT->update_module_button($cm->id, 'workshop')); Note: $courseid param has been dropped.

update_tag_button (4)

Non-supported functions

These functions have been completely dropped in 2.0, most likely because they were used very little or not at all. All calls to these functions in core should have been replaced.

blocks_print_group

print_file_picture

print_png

print_scale_menu

print_side_block_end

print_side_block_start

print_timer_selector

print_user

update_categories_search_button

update_mymoodle_icon