]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-21198 OUTPUT->action_icon improvements, refactoring and fixing conversion regressions
authorPetr Skoda <skodak@moodle.org>
Sat, 2 Jan 2010 13:17:54 +0000 (13:17 +0000)
committerPetr Skoda <skodak@moodle.org>
Sat, 2 Jan 2010 13:17:54 +0000 (13:17 +0000)
19 files changed:
admin/filters.php
blocks/global_navigation_tree/block_global_navigation_tree.php
blocks/rss_client/managefeeds.php
blocks/settings_navigation_tree/block_settings_navigation_tree.php
blog/external_blogs.php
blog/locallib.php
grade/edit/tree/lib.php
grade/export/keymanager.php
grade/import/keymanager.php
grade/lib.php
grade/report/grader/lib.php
lib/deprecatedlib.php
lib/outputactions.php
lib/outputcomponents.php
lib/outputrenderers.php
lib/weblib.php
repository/filepicker.php
user/index.php
user/portfoliologs.php

index 9249be943b93d7c12699fc2060f9811f627b496f..4cd44867147106914e7599a765ae59e15b72d713 100644 (file)
 
 /// Display helper functions ===================================================
 
-function action_url($filterpath, $action) {
+function filters_action_url($filterpath, $action) {
     global $returnurl;
     return $returnurl . '?sesskey=' . sesskey() . '&amp;filterpath=' .
             urlencode($filterpath) . '&amp;action=' . $action;
 }
 
-function action_icon($url, $icon, $straction) {
-    global $CFG, $OUTPUT;
-    return '<a href="' . $url . '" title="' . $straction . '">' .
-            '<img src="' . $OUTPUT->pix_url('t/' . $icon) . '" alt="' . $straction . '" /></a> ';
-}
-
 function get_table_row($filterinfo, $isfirstrow, $islastactive, $applytostrings) {
     global $CFG, $OUTPUT, $activechoices, $applytochoices, $filternames;
     $row = array();
@@ -249,7 +243,7 @@ function get_table_row($filterinfo, $isfirstrow, $islastactive, $applytostrings)
     }
 
     // Disable/off/on
-    $select = html_select::make_popup_form(action_url($filter, 'setstate'), 'newstate', $activechoices, 'active' . basename($filter), $filterinfo->active);
+    $select = html_select::make_popup_form(filters_action_url($filter, 'setstate'), 'newstate', $activechoices, 'active' . basename($filter), $filterinfo->active);
     $select->nothinglabel = false;
     $select->form->button->text = get_string('save', 'admin');
     $row[] = $OUTPUT->select($select);
@@ -259,12 +253,12 @@ function get_table_row($filterinfo, $isfirstrow, $islastactive, $applytostrings)
     $spacer = '<img src="' . $OUTPUT->pix_url('spacer') . '" class="iconsmall" alt="" /> ';
     if ($filterinfo->active != TEXTFILTER_DISABLED) {
         if (!$isfirstrow) {
-            $updown .= action_icon(action_url($filter, 'up'), 'up', get_string('up'));
+            $updown .= $OUTPUT->action_icon(filters_action_url($filter, 'up'), get_string('up'), 't/up');
         } else {
             $updown .= $spacer;
         }
         if (!$islastactive) {
-            $updown .= action_icon(action_url($filter, 'down'), 'down', get_string('down'));
+            $updown .= $OUTPUT->action_icon(filters_action_url($filter, 'down'), get_string('down'), 't/down');
         } else {
             $updown .= $spacer;
         }
@@ -272,7 +266,7 @@ function get_table_row($filterinfo, $isfirstrow, $islastactive, $applytostrings)
     $row[] = $updown;
 
     // Apply to strings.
-    $select = html_select::make_popup_form(action_url($filter, 'setapplyto'), 'stringstoo', $applytochoices, 'applyto' . basename($filter), $applytostrings);
+    $select = html_select::make_popup_form(filters_action_url($filter, 'setapplyto'), 'stringstoo', $applytochoices, 'applyto' . basename($filter), $applytostrings);
     $select->nothinglabel = false;
     $select->disabled = $filterinfo->active == TEXTFILTER_DISABLED;
     $select->form->button->text = get_string('save', 'admin');
@@ -288,7 +282,7 @@ function get_table_row($filterinfo, $isfirstrow, $islastactive, $applytostrings)
 
     // Delete
     if (substr($filter, 0, 4) != 'mod/') {
-        $row[] = '<a href="' . action_url($filter, 'delete') . '">' . get_string('delete') . '</a>';
+        $row[] = '<a href="' . filters_action_url($filter, 'delete') . '">' . get_string('delete') . '</a>';
     } else {
         $row[] = '';
     }
index 9f7a65966b045ce85f51cfc69dd88097e8bebd24..b5c54e4d36b94e774ba97dd2bbc793ef6212f87a 100644 (file)
@@ -159,33 +159,21 @@ class block_global_navigation_tree extends block_tree {
         // Grab the items to display
         $this->content->items = array($this->page->navigation);
 
-        $reloadicon = new moodle_action_icon();
-        $reloadicon->link->url = $this->page->url;
-        $reloadicon->link->url->param('regenerate','navigation');
-        $reloadicon->link->add_class('customcommand');
-        $reloadicon->image->src = $OUTPUT->pix_url('t/reload');
-        $reloadicon->image->alt = get_string('reload');
-        $reloadicon->title = get_string('reload');
-        $this->content->footer .= $OUTPUT->action_icon($reloadicon);
+        $this->content->footer .= $OUTPUT->action_icon($this->page->url, get_string('reload'), array('class'=>'customcommand'), 't/reload');
 
         if (empty($this->config->enablesidebarpopout) || $this->config->enablesidebarpopout == 'yes') {
             user_preference_allow_ajax_update('nav_in_tab_panel_globalnav'.block_global_navigation_tree::$navcount, PARAM_INT);
 
-            $moveicon = new moodle_action_icon();
-            $moveicon->link->add_classes('moveto customcommand requiresjs');
-            $moveicon->link->url = $this->page->url;
+            $movelink = new html_link($this->page->url);
+            $movelink->add_classes('moveto customcommand requiresjs');
             if ($this->docked) {
-                $moveicon->image->src = $OUTPUT->pix_url('t/movetoblock');
-                $moveicon->image->alt = $toggleblockdisplay;
-                $moveicon->image->title = $toggleblockdisplay;
-                $moveicon->link->url->param('undock', $this->instance->id);
+                $movelink->url->param('undock', $this->instance->id);
+                $moveicon = $OUTPUT->action_icon($movelink, $toggleblockdisplay, 't/movetoblock');
             } else {
-                $moveicon->image->src = $OUTPUT->pix_url('t/movetosidetab');
-                $moveicon->image->alt = $togglesidetabdisplay;
-                $moveicon->image->title = $togglesidetabdisplay;
-                $moveicon->link->url->param('dock', $this->instance->id);
+                $movelink->url->param('dock', $this->instance->id);
+                $moveicon = $OUTPUT->action_icon($movelink, $toggleblockdisplay, 't/movetosidetab');
             }
-            $this->content->footer .= $OUTPUT->action_icon($moveicon);
+            $this->content->footer .= $moveicon;
         }
 
         // Set content generated to true so that we know it has been done
index 6d6364efde00dd75f80dd7204fa507f414b8ac81..650b41feb0787f0fb4632b1045206da1b38e13e4 100644 (file)
@@ -117,21 +117,15 @@ foreach($feeds as $feed) {
         '<div class="url">' . $OUTPUT->link($feed->url, $feed->url) .'</div>' .
         '<div class="description">' . $feed->description . '</div>';
 
-    $editaction = new moodle_action_icon();
-    $editaction->link->url = $CFG->wwwroot .'/blocks/rss_client/editfeed.php?rssid=' . $feed->id . $extraparams;
-    $editaction->link->title = get_string('edit');
-    $editaction->image->src = $OUTPUT->pix_url('t/edit');
-    $editaction->image->alt = get_string('edit');
-
-    $deleteaction = new moodle_action_icon();
-    $deleteaction->link->url = $CFG->wwwroot .'/blocks/rss_client/managefeeds.php?deleterssid=' . $feed->id .
-            '&sesskey=' . sesskey() . $extraparams;
-    $deleteaction->link->title = get_string('delete');
-    $deleteaction->image->src = $OUTPUT->pix_url('t/delete');
-    $deleteaction->image->alt = get_string('delete');
-    $deleteaction->link->add_confirm_action(get_string('deletefeedconfirm', 'block_rss_client'));
-
-    $feedicons = $OUTPUT->action_icon($editaction) . ' ' . $OUTPUT->action_icon($deleteaction);
+    $editurl = $CFG->wwwroot .'/blocks/rss_client/editfeed.php?rssid=' . $feed->id . $extraparams;
+    $editaction = $OUTPUT->action_icon($editurl, get_string('edit'), 't/edit');
+
+    $deleteurl = $CFG->wwwroot .'/blocks/rss_client/managefeeds.php?deleterssid=' . $feed->id . '&sesskey=' . sesskey() . $extraparams;
+    $deletelink = new html_link($deleteurl);
+    $deletelink->add_confirm_action(get_string('deletefeedconfirm', 'block_rss_client'));
+    $deleteaction = $OUTPUT->action_icon($deletelink, get_string('delete'), 't/delete');
+
+    $feedicons = $editaction . ' ' . $deleteaction;
 
     $table->add_data(array($feedinfo, $feedicons));
 }
index d2a8783e60b790f839d8d3fe498dad055c5ba534..6b976197d31c23d525342d412a328c7e1dbc2fb2 100644 (file)
@@ -140,35 +140,23 @@ class block_settings_navigation_tree extends block_tree {
                 $this->content->footer = '';
             }
 
-            $reloadicon = new moodle_action_icon();
-            $url = $this->page->url;
-            $url->param('regenerate','navigation');
-            $reloadicon->link->url = $url;
-            $reloadicon->link->add_class('customcommand');
-            $reloadicon->image->src = $OUTPUT->pix_url('t/reload');
-            $reloadicon->image->alt = get_string('reload');
-            $reloadicon->title = get_string('reload');
+            $reloadicon = $OUTPUT->action_icon($this->page->url, get_string('reload'), 't/reload', array('class'=>'customcommand'));
 
-            $this->content->footer .= $OUTPUT->action_icon($reloadicon);
+            $this->content->footer .= $reloadicon;
 
             if (!empty($this->config->enablesidebarpopout) && $this->config->enablesidebarpopout == 'yes') {
                 user_preference_allow_ajax_update('nav_in_tab_panel_settingsnav'.block_settings_navigation_tree::$navcount, PARAM_INT);
 
-                $moveicon = new moodle_action_icon();
-                $moveicon->link->add_classes('moveto customcommand requiresjs');
-                $moveicon->link->url = $this->page->url;
+                $movelink = new html_link($this->page->url);
+                $movelink->add_classes('moveto customcommand requiresjs');
                 if ($this->docked) {
-                    $moveicon->image->src = $OUTPUT->pix_url('t/movetoblock');
-                    $moveicon->image->alt = $toggleblockdisplay;
-                    $moveicon->image->title = $toggleblockdisplay;
-                    $moveicon->link->url->param('undock', $this->instance->id);
+                    $movelink->url->param('undock', $this->instance->id);
+                    $moveicon = $OUTPUT->action_icon($movelink, $toggleblockdisplay, 't/movetoblock');
                 } else {
-                    $moveicon->image->src = $OUTPUT->pix_url('t/movetosidetab');
-                    $moveicon->image->alt = $togglesidetabdisplay;
-                    $moveicon->image->title = $togglesidetabdisplay;
-                    $moveicon->link->url->param('dock', $this->instance->id);
+                    $movelink->url->param('dock', $this->instance->id);
+                    $moveicon = $OUTPUT->action_icon($movelink, $toggleblockdisplay, 't/movetosidetab');
                 }
-                $this->content->footer .= $OUTPUT->action_icon($moveicon);
+                $this->content->footer .= $moveicon;
             }
         }
 
index c69f802868521d02f8313d659449d9471568407d..92a165db42e2cbae3dd31c0a72ca52c0a4d3e5d2 100644 (file)
@@ -78,20 +78,14 @@ if (!empty($blogs)) {
             $validicon = $OUTPUT->image('i/tick_green_big', array('alt'=>get_string('feedisvalid', 'blog'), 'title'=>get_string('feedisvalid', 'blog')));
         }
 
-        $editicon = new moodle_action_icon;
-        $editicon->link->url = new moodle_url($CFG->wwwroot.'/blog/external_blog_edit.php', array('id' => $blog->id));
-        $editicon->link->title = get_string('editexternalblog', 'blog');
-        $editicon->image->src = $OUTPUT->pix_url('t/edit');
-        $editicon->image->alt = get_string('editexternalblog', 'blog');
-
-        $deleteicon = new moodle_action_icon;
-        $deleteicon->link->url = new moodle_url($CFG->wwwroot.'/blog/external_blogs.php', array('delete' => $blog->id, 'sesskey' => sesskey()));
-        $deleteicon->link->title = get_string('deleteexternalblog', 'blog');
-        $deleteicon->image->src = $OUTPUT->pix_url('t/delete');
-        $deleteicon->image->alt = get_string('deleteexternalblog', 'blog');
-        $deleteicon->add_confirm_action(get_string('externalblogdeleteconfirm', 'blog'));
-        $icons = $OUTPUT->action_icon($editicon) . $OUTPUT->action_icon($deleteicon);
-        $table->data[] = html_table_row::make(array($blog->name, $blog->url, userdate($blog->timefetched), $validicon, $icons));
+        $editurl = new moodle_url($CFG->wwwroot.'/blog/external_blog_edit.php', array('id' => $blog->id));
+        $editicon = $OUTPUT->action_icon($editurl, get_string('editexternalblog', 'blog'), 't/edit');
+
+        $deletelink = new html_link(new moodle_url($CFG->wwwroot.'/blog/external_blog_edit.php', array('id' => $blog->id, 'sesskey'=>sesskey())));
+        $deletelink->add_confirm_action(get_string('externalblogdeleteconfirm', 'blog'));
+        $deleteicon = $OUTPUT->action_icon($deletelink, get_string('deleteexternalblog', 'blog'), 't/delete');
+
+        $table->data[] = html_table_row::make(array($blog->name, $blog->url, userdate($blog->timefetched), $validicon, $editicon . $deleteicon));
     }
     echo $OUTPUT->table($table);
 }
index 9da02c7a83f12b8f5ccab64d908c4e212adb2aff..c718a02cf374cb40a662a9bd7d2b01770308cb3c 100644 (file)
@@ -237,11 +237,9 @@ class blog_entry {
             foreach ($blogassociations as $assocrec) {
                 $contextrec = $DB->get_record('context', array('id' => $assocrec->contextid));
                 if ($contextrec->contextlevel ==  CONTEXT_COURSE) {
-                    $associcon = new moodle_action_icon();
-                    $associcon->link->url = new moodle_url($CFG->wwwroot.'/course/view.php', array('id' => $contextrec->instanceid));
-                    $associcon->image->src = $OUTPUT->pix_url('i/course');
-                    $associcon->linktext = $DB->get_field('course', 'shortname', array('id' => $contextrec->instanceid));
-                    $assocstr .= $OUTPUT->action_icon($associcon);
+                    $url = new moodle_url($CFG->wwwroot.'/course/view.php', array('id' => $contextrec->instanceid));
+                    $text = $DB->get_field('course', 'shortname', array('id' => $contextrec->instanceid)); //TODO: performance!!!!
+                    $assocstr .= $OUTPUT->action_icon($associconurl, $text, 'i/course');
                     $hascourseassocs = true;
                     $assoctype = get_string('course');
                 }
@@ -260,11 +258,9 @@ class blog_entry {
                     $modinfo = $DB->get_record('course_modules', array('id' => $contextrec->instanceid));
                     $modname = $DB->get_field('modules', 'name', array('id' => $modinfo->module));
 
-                    $associcon = new moodle_action_icon();
-                    $associcon->link->url = new moodle_url($CFG->wwwroot.'/mod/'.$modname.'/view.php', array('id' => $modinfo->id));
-                    $associcon->image->src = $OUTPUT->pix_url('icon', $modname);
-                    $associcon->linktext = $DB->get_field($modname, 'name', array('id' => $modinfo->instance));
-                    $assocstr .= $OUTPUT->action_icon($associcon);
+                    $url = new moodle_url($CFG->wwwroot.'/mod/'.$modname.'/view.php', array('id' => $modinfo->id));
+                    $text = $DB->get_field($modname, 'name', array('id' => $modinfo->instance)); //TODO: performance!!!!
+                    $assocstr .= $OUTPUT->action_icon($associconurl, $text, $OUTPUT->pix_url('icon', $modname));
                     $assocstr .= ', ';
                     $assoctype = get_string('modulename', $modname);
 
index 0ad6c417d51167ffcffc73580984b0fbc4ee7031..ef3e5a5a53bd964c4a2ec0160fe2499740ab7206 100755 (executable)
@@ -135,22 +135,12 @@ class grade_edit_tree {
 
         if ($element['type'] == 'item' or ($element['type'] == 'category' and $element['depth'] > 1)) {
             if ($this->element_deletable($element)) {
-                $actionicon = new moodle_action_icon();
-                $actionicon->link->url = new moodle_url('index.php', array('id' => $COURSE->id, 'action' => 'delete', 'eid' => $eid, 'sesskey' => sesskey()));
-                $actionicon->image->src = $OUTPUT->pix_url('t/delete');
-                $actionicon->image->alt = get_string('delete');
-                $actionicon->image->title = get_string('delete');
-                $actionicon->image->add_class('iconsmall');
-                $actions .= $OUTPUT->action_icon($actionicon);
+                $aurl = new moodle_url('index.php', array('id' => $COURSE->id, 'action' => 'delete', 'eid' => $eid, 'sesskey' => sesskey()));
+                $actions .= $OUTPUT->action_icon($aurl, get_string('delete'), 't/delete', array('class'=>'iconsmall'));
             }
 
-            $actionicon = new moodle_action_icon();
-            $actionicon->link->url = new moodle_url('index.php', array('id' => $COURSE->id, 'action' => 'moveselect', 'eid' => $eid, 'sesskey' => sesskey()));
-            $actionicon->image->src = $OUTPUT->pix_url('t/move');
-            $actionicon->image->alt = get_string('move');
-            $actionicon->image->title = get_string('move');
-            $actionicon->image->add_class('iconsmall');
-            $actions .= $OUTPUT->action_icon($actionicon);
+            $aurl = new moodle_url('index.php', array('id' => $COURSE->id, 'action' => 'moveselect', 'eid' => $eid, 'sesskey' => sesskey()));
+            $actions .= $OUTPUT->action_icon($aurl, get_string('move'), 't/move', array('class'=>'iconsmall'));
         }
 
         $actions .= $this->gtree->get_hiding_icon($element, $this->gpr);
@@ -218,19 +208,14 @@ class grade_edit_tree {
                     $strmovehere = get_string('movehere');
                     $actions = ''; // no action icons when moving
 
-                    $moveicon = new moodle_action_icon();
-                    $moveicon->link->url = new moodle_url('index.php', array('id' => $COURSE->id, 'action' => 'move', 'eid' => $this->moving, 'moveafter' => $child_eid, 'sesskey' => sesskey()));
+                    $aurl = new moodle_url('index.php', array('id' => $COURSE->id, 'action' => 'move', 'eid' => $this->moving, 'moveafter' => $child_eid, 'sesskey' => sesskey()));
                     if ($first) {
-                        $moveicon->link->url->params($first);
+                        $aurl->params($first);
                     }
-                    $moveicon->image->add_class('movetarget');
-                    $moveicon->image->src = $OUTPUT->pix_url('movehere');
-                    $moveicon->image->alt = $strmovehere;
-                    $moveicon->image->title = $strmovehere;
 
                     $cell = new html_table_cell();
                     $cell->colspan = 12;
-                    $cell->text = $OUTPUT->action_icon($moveicon);
+                    $cell->text = $OUTPUT->action_icon($aurl, $strmovehere, 'movehere', array('class'=>'movetarget'));
 
                     $moveto = html_table_row::make(array($cell));
                 }
index 84f0f246db8a124db57e677d60d617cae8056cd4..d09d9c635135db970dcf0ab55f2670d09ca96946 100644 (file)
@@ -53,26 +53,16 @@ if ($keys) {
         $line[1] = $key->iprestriction;
         $line[2] = empty($key->validuntil) ? get_string('always') : userdate($key->validuntil);
 
-        $icon = new moodle_action_icon();
-        $icon->link->url = new moodle_url('key.php');
+        $url = new moodle_url('key.php');
         if (!empty($key->id)) {
-            $icon->link->url->param('id', $key->id);
+            $url->param('id', $key->id);
         }
-        $icon->image->add_class('iconsmall');
-
-        $editicon = clone($icon);
-        $editicon->image->src = $OUTPUT->pix_url('t/edit');
-        $editicon->image->title = $stredit;
-        $editicon->image->alt = $stredit;
-        $buttons = $OUTPUT->action_icon($editicon);
-
-        $deleteicon = clone($icon);
-        $deleteicon->image->src = $OUTPUT->pix_url('t/delete');
-        $deleteicon->image->title = $strdelete;
-        $deleteicon->image->alt = $strdelete;
-        $deleteicon->link->url->param('delete', 1);
-        $deleteicon->link->url->param('sesskey', sesskey());
-        $buttons .= $OUTPUT->action_icon($deleteicon);
+
+        $buttons = $OUTPUT->action_icon($url, $stredit, 't/edit', array('class'=>'iconsmall'));
+
+        $url->param('delete', 1);
+        $url->param('sesskey', sesskey());
+        $buttons .= $OUTPUT->action_icon($url, $strdelete, 't/delete', array('class'=>'iconsmall'));
 
         $line[3] = $buttons;
         $data[] = $line;
index 8d6ff0fef9d15372c92cadd0dd8adbe22f6636e5..46c4b7fbb5fe59cd9de133c30b918377f06f68e6 100644 (file)
@@ -53,23 +53,13 @@ if ($keys = $DB->get_records_select('user_private_key', "script='grade/import' A
         $line[1] = $key->iprestriction;
         $line[2] = empty($key->validuntil) ? get_string('always') : userdate($key->validuntil);
 
-        $icon = new moodle_action_icon();
-        $icon->link->url = new moodle_url('key.php', array('id' => $key->id));
-        $icon->image->add_class('iconsmall');
-
-        $editicon = clone($icon);
-        $editicon->image->src = $OUTPUT->pix_url('t/edit');
-        $editicon->image->title = $stredit;
-        $editicon->image->alt = $stredit;
-        $buttons = $OUTPUT->action_icon($editicon);
-
-        $deleteicon = clone($icon);
-        $deleteicon->image->src = $OUTPUT->pix_url('t/delete');
-        $deleteicon->image->title = $strdelete;
-        $deleteicon->image->alt = $strdelete;
-        $deleteicon->link->url->param('delete', 1);
-        $deleteicon->link->url->param('sesskey', sesskey());
-        $buttons .= $OUTPUT->action_icon($deleteicon);
+        $url = new moodle_url('key.php', array('id' => $key->id));
+
+        $buttons = $OUTPUT->action_icon($url, $stredit, 't/edit');
+
+        $url->param('delete', 1);
+        $url->param('sesskey', sesskey());
+        $buttons .= $OUTPUT->action_icon($url, $strdelete, 't/delete');
 
         $line[3] = $buttons;
         $data[] = $line;
index d835ba9da492ce8a6a8c93d9b84a404868056dbf..9593542be56fd0d4f073f17d2d96ada7c38a890a 100644 (file)
@@ -1456,14 +1456,7 @@ class grade_structure {
         }
 
         if ($url) {
-            $url = $gpr->add_url_params($url);
-            $editicon = new moodle_action_icon();
-            $editicon->link->url = $url;
-            $editicon->image->src = $OUTPUT->pix_url('t/edit');
-            $editicon->image->alt = $stredit;
-            $editicon->image->title = $stredit;
-            $editicon->image->add_class('iconsmall');
-            return $OUTPUT->action_icon($editicon);
+            return $OUTPUT->action_icon($gpr->add_url_params($url), $stredit, 't/edit', array('class'=>'iconsmall'));
 
         } else {
             return '';
@@ -1490,37 +1483,29 @@ class grade_structure {
         $strshow = get_string('showverbose', 'grades', $strparams);
         $strhide = get_string('hideverbose', 'grades', $strparams);
 
-        $hideicon = new moodle_action_icon();
-        $hideicon->image->add_class('iconsmall');
-        $hideicon->link->add_class('hide');
-        $hideicon->link->url = new moodle_url($CFG->wwwroot.'/grade/edit/tree/action.php',
-                array('id' => $this->courseid, 'sesskey' => sesskey(), 'eid' => $element['eid']));
+        $url = new moodle_url($CFG->wwwroot.'/grade/edit/tree/action.php', array('id' => $this->courseid, 'sesskey' => sesskey(), 'eid' => $element['eid']));
+        $url = $gpr->add_url_params($url);
 
         if ($element['object']->is_hidden()) {
-            $icon = 'show';
+            $type = 'show';
             $tooltip = $strshow;
 
             // Change the icon and add a tooltip showing the date
             if ($element['type'] != 'category' and $element['object']->get_hidden() > 1) {
-                $icon = 'hiddenuntil';
+                $type = 'hiddenuntil';
                 $tooltip = get_string('hiddenuntildate', 'grades',
                         userdate($element['object']->get_hidden()));
             }
 
-            $hideicon->link->url->param('action', 'show');
-            $hideicon->image->src = $OUTPUT->pix_url('t/' . $icon);
-            $hideicon->image->alt = $strshow;
-            $hideicon->image->title = $tooltip;
+            $url->param('action', 'show');
+            $hideicon = $OUTPUT->action_icon($url, $title, 't/'.$type, array('alt'=>$strshow, 'class'=>'iconsmall'));
 
         } else {
-            $hideicon->link->url->param('action', 'hide');
-            $hideicon->image->src = $OUTPUT->pix_url('t/hide');
-            $hideicon->image->alt = $strhide;
-            $hideicon->image->title = $strhide;
+            $url->param('action', 'hide');
+            $hideicon = $OUTPUT->action_icon($url, $strhide, 't/hide', array('class'=>'iconsmall'));
         }
 
-        $hideicon->link->url = $gpr->add_url_params($hideicon->link->url);
-        return $OUTPUT->action_icon($hideicon);
+        return $hideicon;
     }
 
     /**
@@ -1538,13 +1523,8 @@ class grade_structure {
         $strunlock = get_string('unlockverbose', 'grades', $strparams);
         $strlock = get_string('lockverbose', 'grades', $strparams);
 
-        $lockicon = new moodle_action_icon();
-        $lockicon->link->url = new moodle_url($CFG->wwwroot.'/grade/edit/tree/action.php', array(
-                'id' => $this->courseid,
-                'sesskey' => sesskey(),
-                'eid' => $element['eid']));
-        $lockicon->link->url = $gpr->add_url_params($lockicon->link->url);
-        $lockicon->image->add_class('iconsmall');
+        $url = new moodle_url($CFG->wwwroot.'/grade/edit/tree/action.php', array('id' => $this->courseid, 'sesskey' => sesskey(), 'eid' => $element['eid']));
+        $url = $gpr->add_url_params($url);
 
         // Don't allow an unlocking action for a grade whose grade item is locked: just print a state icon
         if ($element['type'] == 'grade' && $element['object']->grade_item->is_locked()) {
@@ -1553,42 +1533,34 @@ class grade_structure {
             $strnonunlockable = get_string('nonunlockableverbose', 'grades', $strparamobj);
 
             $action = $OUTPUT->image('t/unlock_gray', array('alt'=>$strnonunlockable, 'title'=>$strnonunlockable, 'class'=>'iconsmall'));
-            $action = $OUTPUT->image($lockicon);
+
         } else if ($element['object']->is_locked()) {
-            $icon = 'unlock';
+            $type = 'unlock';
             $tooltip = $strunlock;
 
             // Change the icon and add a tooltip showing the date
             if ($element['type'] != 'category' and $element['object']->get_locktime() > 1) {
-                $icon = 'locktime';
+                $type = 'locktime';
                 $tooltip = get_string('locktimedate', 'grades',
                         userdate($element['object']->get_locktime()));
             }
 
-            if (!has_capability('moodle/grade:manage', $this->context) and
-                !has_capability('moodle/grade:unlock', $this->context)) {
-                return '';
+            if (!has_capability('moodle/grade:manage', $this->context) and !has_capability('moodle/grade:unlock', $this->context)) {
+                $action = '';
+            } else {
+                $url->param('action', 'unlock');
+                $action = $OUTPUT->action_icon($url, $tooltip, 't/'.$type, array('alt'=>$strunlock, 'class'=>'smallicon'));
             }
-            $lockicon->link->url->param('action', 'unlock');
-            $lockicon->link->add_class('lock');
-            $lockicon->image->src = $OUTPUT->pix_url('t/'.$icon);
-            $lockicon->image->alt = $strunlock;
-            $lockicon->image->title = $tooltip;
-            $action  = $OUTPUT->action_icon($lockicon);
 
         } else {
-            if (!has_capability('moodle/grade:manage', $this->context) and
-                !has_capability('moodle/grade:lock', $this->context)) {
-                return '';
+            if (!has_capability('moodle/grade:manage', $this->context) and !has_capability('moodle/grade:lock', $this->context)) {
+                $action = '';
+            } else {
+                $url->param('action', 'lock');
+                $action = $OUTPUT->action_icon($url, $strlock, 't/lock', array('class'=>'smallicon'));
             }
-
-            $lockicon->link->url->param('action', 'lock');
-            $lockicon->link->add_class('lock');
-            $lockicon->image->src = $OUTPUT->pix_url('t/lock');
-            $lockicon->image->alt = $strlock;
-            $lockicon->image->title = $strlock;
-            $action  = $OUTPUT->action_icon($lockicon);
         }
+
         return $action;
     }
 
@@ -1624,16 +1596,9 @@ class grade_structure {
                     $icon = 't/calc_off';
                 }
 
-                $calcicon = new moodle_action_icon();
-                $calcicon->link->url = new moodle_url($CFG->wwwroot.'/grade/edit/tree/calculation.php',
-                        array('courseid' => $this->courseid, 'id' => $object->id));
-
-                $calcicon->link->url = $gpr->add_url_params($calcicon->link->url);
-                $calcicon->image->src = $OUTPUT->pix_url($icon);
-                $calcicon->add_class('iconsmall');
-                $calcicon->alt = $streditcalculation;
-                $calcicon->title = $streditcalculation;
-                return $OUTPUT->action_icon($calcicon) . "\n";
+                $url = new moodle_url($CFG->wwwroot.'/grade/edit/tree/calculation.php', array('courseid' => $this->courseid, 'id' => $object->id));
+                $url = $gpr->add_url_params($url);
+                return $OUTPUT->action_icon($url, $streditcalculation, $icon, array('class'=>'smallicon')) . "\n";
             }
         }
 
@@ -2255,19 +2220,12 @@ function grade_button($type, $courseid, $object) {
     $strdelete = get_string('delete');
     $stredit   = get_string('edit');
 
-    $icon = new moodle_action_icon();
-
     if ($type == 'delete') {
-        $icon->link->url = new moodle_url('index.php', array('id' => $courseid, $objectidstring => $object->id, 'action' => 'delete', 'sesskey' => sesskey()));
+        $url = new moodle_url('index.php', array('id' => $courseid, $objectidstring => $object->id, 'action' => 'delete', 'sesskey' => sesskey()));
     } else if ($type == 'edit') {
-        $icon->link->url = new moodle_url('edit.php', array('courseid' => $courseid, 'id' => $object->id));
+        $url = new moodle_url('edit.php', array('courseid' => $courseid, 'id' => $object->id));
     }
 
-    $icon->image->src = $OUTPUT->pix_url('t/'.$type);
-    $icon->image->add_class('iconsmall');
-    $icon->image->title = ${'str'.$type};
-    $icon->image->alt = ${'str'.$type};
-
-    return $OUTPUT->action_icon($icon);
+    return $OUTPUT->action_icon($url, ${'str'.$type}, 't/'.$type, array('class'=>'iconsmall'));
 
 }
index fd9bf018e689fc41815114e1930d4392c4bdf30f..6f2e0d5b2d2fb3e03cbf0b20a1bba6e50fbbeb76 100644 (file)
@@ -502,14 +502,10 @@ class grade_report_grader extends grade_report {
 
         $string = ${'str' . $showhide};
 
-        $toggleicon = new moodle_action_icon();
-        $toggleicon->image->src = $OUTPUT->pix_url($imagename);
-        $toggleicon->image->add_class('iconsmall');
-        $toggleicon->alt = $string;
-        $toggleicon->title = $string;
-        $toggleicon->link->url = $this->baseurl->out(false, array('toggle' => $toggleaction, 'toggle_type' => $type), false);
+        $aurl = clone($this->baseurl);
+        $url->params(array('toggle' => $toggleaction, 'toggle_type' => $type));
 
-        $retval = $OUTPUT->container($OUTPUT->action_icon($toggleicon, 'gradertoggle'));
+        $retval = $OUTPUT->container($OUTPUT->action_icon($url, $string, $imagename, array('class'=>'iconsmall'))); // TODO: this container looks wrong here
 
         return $retval;
     }
@@ -614,12 +610,8 @@ class grade_report_grader extends grade_report {
                 $userreportcell->header = true;
                 $a->user = fullname($user);
                 $strgradesforuser = get_string('gradesforuser', 'grades', $a);
-                $userreporticon = new moodle_action_icon();
-                $userreporticon->link->url = new moodle_url($CFG->wwwroot.'/grade/report/'.$CFG->grade_profilereport.'/index.php', array('userid' => $user->id, 'id' => $this->course->id));
-                $userreporticon->image->add_class('iconsmall');
-                $userreporticon->image->src = $OUTPUT->pix_url('t/grades');
-                $userreporticon->image->alt = $strgradesforuser;
-                $userreportcell->text = $OUTPUT->action_icon($userreporticon);
+                $url = new moodle_url($CFG->wwwroot.'/grade/report/'.$CFG->grade_profilereport.'/index.php', array('userid' => $user->id, 'id' => $this->course->id));
+                $userreportcell->text = $OUTPUT->action_icon($url, $strgradesforuser, 't/grades', array('class'=>'iconsmall'));
                 $userrow->cells[] = $userreportcell;
             }
 
@@ -1414,22 +1406,21 @@ class grade_report_grader extends grade_report {
             $strswitchplus  = $this->get_lang_string('gradesonly', 'grades');
             $strswitchwhole = $this->get_lang_string('fullmode', 'grades');
 
-            $contractexpandicon = new moodle_action_icon();
-            $contractexpandicon->link->url = new moodle_url($this->gpr->get_return_url(null, array('target'=>$element['eid'], 'action'=>'switch_minus', 'sesskey'=>sesskey())));
-            $contractexpandicon->image->add_class('iconsmall');
-            $contractexpandicon->image->src = $OUTPUT->pix_url('t/switch_minus');
-            $contractexpandicon->image->alt = $strswitchminus;
+            $url = new moodle_url($this->gpr->get_return_url(null, array('target'=>$element['eid'], 'sesskey'=>sesskey())));
 
             if (in_array($element['object']->id, $this->collapsed['aggregatesonly'])) {
-                $contractexpandicon->image->src = $OUTPUT->pix_url('t/switch_plus');
-                $contractexpandicon->image->alt = $strswitchplus;
-                $contractexpandicon->link->url->param('action', 'switch_plus');
-            } elseif (in_array($element['object']->id, $this->collapsed['gradesonly'])) {
+                $url->param('action', 'switch_plus');
+                $icon = $OUTPUT->action_icon($url, $strswitchplus, 't/switch_plus', array('class'=>'iconsmall'));
+
+            } else if (in_array($element['object']->id, $this->collapsed['gradesonly'])) {
+                $url->param('action', 'switch_whole');
+                $icon = $OUTPUT->action_icon($url, $strswitchwhole, 't/switch_whole', array('class'=>'iconsmall'));
                 $contractexpandicon->image->src = $OUTPUT->pix_url('t/switch_whole');
-                $contractexpandicon->image->alt = $strswitchwhole;
-                $contractexpandicon->link->url->param('action', 'switch_whole');
+
+            } else {
+                $url->param('action', 'switch_minus');
+                $icon = $OUTPUT->action_icon($url, $strswitchminus, 't/switch_minus', array('class'=>'iconsmall'));
             }
-            $icon = $OUTPUT->action_icon($contractexpandicon);
         }
         return $icon;
     }
index dbdbdee1a973cb7adaaf22e3196b22f9a710b4a6..ed0eb4604345ec3a9c14fe56120190ca56395749 100644 (file)
@@ -2947,7 +2947,7 @@ function print_arrow($direction='up', $strsort=null, $return=false) {
  * @param string $iconpath The path to the icon to be displayed
  * @return string Either the link or an empty string
  */
-function doc_link($path='', $text='', $iconpath='') {
+function doc_link($path='', $text='', $iconpath='ignored') {
     global $CFG, $OUTPUT;
 
     debugging('doc_link() has been deprecated. Please change your code to use $OUTPUT->doc_link().');
@@ -2956,7 +2956,7 @@ function doc_link($path='', $text='', $iconpath='') {
         return '';
     }
 
-    return $OUTPUT->doc_link($path, $text, $iconpath);
+    return $OUTPUT->doc_link($path, $text);
 }
 
 /**
index a6b44a91cf578e71c2103edd005e0d9673343b83..b5681e26f5e620441f64e60c32df08f7151cf4c0 100644 (file)
@@ -115,7 +115,11 @@ class popup_action extends component_action {
         global $CFG;
         $this->name = $name;
 
-        $url = new moodle_url($url);
+        if ($url instanceof moodle_url) {
+            $url = clone($url);
+        } else {
+            $url = new moodle_url($url);
+        }
 
         if ($this->name) {
             $_name = $this->name;
index 8572aa64437166fab7ee660ce199e43ae41145d0..a3eaa7a74eac2210455103c0cbd03882d605fead 100644 (file)
@@ -2088,65 +2088,6 @@ class help_icon extends html_image {
 }
 
 
-/**
- * Component representing an icon linking to a Moodle page.
- *
- * @copyright 2009 Nicolas Connault
- * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- * @since     Moodle 2.0
- */
-class moodle_action_icon extends labelled_html_component {
-    /**
-     * @var string $linktext Optional text to display next to the icon
-     */
-    public $linktext;
-    /**
-     * @var html_image $image The icon
-     */
-    public $image;
-    /**
-     * @var html_link $link The link
-     */
-    public $link;
-
-    /**
-     * Constructor: sets up the other components in case they are needed
-     * @return void
-     */
-    public function __construct() {
-        $this->image = new html_image();
-        $this->link = new html_link();
-    }
-
-    /**
-     * @see lib/html_component#prepare()
-     * @return void
-     */
-    public function prepare(renderer_base $output, moodle_page $page, $target) {
-        $this->image->add_class('action-icon');
-
-        if (!empty($this->actions)) {
-            foreach ($this->actions as $action) {
-                $this->link->add_action($action);
-            }
-            unset($this->actions);
-        }
-
-        parent::prepare($output, $page, $target);
-
-        if (empty($this->image->src)) {
-            throw new coding_exception('moodle_action_icon->image->src must not be empty');
-        }
-
-        if (empty($this->image->alt) && !empty($this->linktext)) {
-            $this->image->alt = $this->linktext;
-        } else if (empty($this->image->alt)) {
-            debugging('moodle_action_icon->image->alt should not be empty.', DEBUG_DEVELOPER);
-        }
-    }
-}
-
-
 /**
  * This class represents how a block appears on a page.
  *
index 59df7501ce1760f4bb3ae2d5058dcfd05c2826a9..76294e9afe37696b7e2c1dde8c3cc0dac99a07b1 100644 (file)
@@ -1099,47 +1099,67 @@ class core_renderer extends renderer_base {
      * Also contains an icon by default. Shown to teachers and admin only.
      * @param string $path The page link after doc root and language, no leading slash.
      * @param string $text The text to be displayed for the link
-     * @param string $iconpath The path to the icon to be displayed
-     */
-    public function doc_link($path, $text=false, $iconpath=false) {
-        global $CFG, $OUTPUT;
-        $icon = new moodle_action_icon();
-        $icon->linktext = $text;
-        $icon->image->alt = $text;
-        $icon->image->add_class('iconhelp');
-        $icon->link->url = new moodle_url(get_docs_url($path));
-
-        if (!empty($iconpath)) {
-            $icon->image->src = $iconpath;
-        } else {
-            $icon->image->src = $this->pix_url('docs')->out(false, array(), false);
-        }
+     * @retrun string
+     */
+    public function doc_link($path, $text) {
+        global $CFG;
+
+        $options = array('class'=>'iconhelp', 'alt'=>$text);
+        $url = new moodle_url(get_docs_url($path));
+
+        $icon = $this->icon('docs', $options);
+
+        $link = new html_link($url, $icon.$text);
 
         if (!empty($CFG->doctonewwindow)) {
-            $icon->add_action(new popup_action('click', $icon->link->url));
+            $link->add_action(new popup_action('click', $url));
         }
 
-        return $this->action_icon($icon);
-
+        return $this->link($link);
     }
 
     /**
      * Given a moodle_action_icon object, outputs an image linking to an action (URL or AJAX).
      *
-     * @param moodle_action_icon $icon A moodle_action_icon object
+     * @param mixed $link A html_link object or a string URL (text param required in second case)
+     * @param string $title link title and also image alt if no alt specified in $options
+     * @param html_image|moodle_url|string $image_or_url image or url of the image,
+     *        it is also possible to use short pix name for core images
+     * @param array $options image attributes such as title, id, alt, widht, height
+     * @param bool $linktext show title next to image in link
      * @return string HTML fragment
      */
-    public function action_icon(moodle_action_icon $icon) {
-        $icon = clone($icon);
-        $icon->prepare($this, $this->page, $this->target);
-        $imageoutput = $this->image($icon->image);
+    public function action_icon($url_or_link, $title, $image_or_url, array $options = null, $linktext=false) {
+        $options = (array)$options;
+        if (empty($options['class'])) {
+            // let ppl override the class via $options
+            $options['class'] = 'action-icon';
+        }
 
-        if ($icon->linktext) {
-            $imageoutput .= $icon->linktext;
+        if (empty($title)) {
+            debugging('$title should not be empty in action_icon() call');
+        }
+
+        if (!$linktext) {
+            $options['alt'] = $itle;
+        }
+
+        $icon = $this->icon($image_or_url, $options);
+
+        if ($linktext) {
+            $icon = $icon.$itle;
+        }
+
+        if ($url_or_link instanceof html_link) {
+            $link = clone($url_or_link);
+            $link->text = ($icon);
+            $url = $link->url;
+        } else {
+            $link = new html_link($url, $icon);
         }
-        $icon->link->text = $imageoutput;
+        $link->add_action(new popup_action('click', $url));
 
-        return $this->link($icon->link);
+        return $this->link($link);
     }
 
     /*
index bf572d8b390196b7969062c8e17611b01109c874..d73113ce388ee6e9921841ed9f8526943e859e84 100644 (file)
@@ -773,7 +773,7 @@ function close_window($delay = 0, $reloadopener = false) {
  * @param string $iconpath The path to the icon to be displayed
  * @return string The link to user documentation for this current page
  */
-function page_doc_link($text='', $iconpath='') {
+function page_doc_link($text='') {
     global $CFG, $PAGE, $OUTPUT;
 
     if (empty($CFG->docroot) || during_initial_install()) {
@@ -787,7 +787,7 @@ function page_doc_link($text='', $iconpath='') {
     if (!$path) {
         return '';
     }
-    return $OUTPUT->doc_link($path, $text, $iconpath);
+    return $OUTPUT->doc_link($path, $text);
 }
 
 
index 5c9d1f396c55e02a4d4b0330f742d87da1ca0502..a3cd3ee698b56b727ad11ff5e5d58ac070f37cc6 100755 (executable)
@@ -307,16 +307,14 @@ case 'plugins':
     echo '<ul>';
     foreach($repos as $repo) {
         $info = $repo->get_meta();
-        $icon = new moodle_action_icon();
-        $icon->image->src = $info->icon;
-        $icon->image->style = 'height: 16px; width: 16px;';
-        $icon->link->url = clone($url);
-        $icon->link->url->params(array('action' => 'list', 'repo_id' => $info->id, 'draftpath'=>$draftpath));
-        $icon->linktext = $info->name;
+
+        $aurl = clone($url);
+        $aurl->params(array('action' => 'list', 'repo_id' => $info->id, 'draftpath'=>$draftpath));
+
         if ($env == 'filemanager' && $info->type == 'draft') {
             continue;
         }
-        echo '<li>' . $OUTPUT->action_icon($icon) . '</li>';
+        echo '<li>' . $OUTPUT->action_icon($aurl, $info->name, $info->icon, array('class'=>'smallicon')) . '</li>'; // no hardcoded styles!
     }
     echo '</ul>';
     echo '</div>';
index f4f5bd89932964f1b9f7d511bc341e614a3efb7d..66e6ff687becdc9d70704415f6f4e151c8f21c11 100644 (file)
 
                 $contentheading = $group->name;
                 if (has_capability('moodle/course:managegroups', $context)) {
-                    $editgroupaction = new moodle_action_icon();
-                    $editgroupaction->link->url = new moodle_url($CFG->wwwroot.'/group/group.php', array('id' => $group->id, 'courseid' => $group->courseid));
-                    $editgroupaction->link->title = get_string('editgroupprofile');
-                    $editgroupaction->image->src = $OUTPUT->pix_url('t/edit');
-                    $editgroupaction->image->alt = get_string('editgroupprofile');
-
-                    $contentheading .= '&nbsp;' . $OUTPUT->action_icon($editgroupaction);
+                    $aurl = new moodle_url($CFG->wwwroot.'/group/group.php', array('id' => $group->id, 'courseid' => $group->courseid));
+                    $contentheading .= '&nbsp;' . $OUTPUT->action_icon($aurl, get_string('editgroupprofile'), 't/edit');
                 }
 
                 $group->description = file_rewrite_pluginfile_urls($group->description, 'pluginfile.php', $context->id, 'course_group_description', $group->id);
index 3bf126949177954acead2f93981a0af9c05f642e..fce36a8373c0413f23b2c6d1a472df9bfd0b996b 100644 (file)
@@ -84,22 +84,12 @@ if (count($queued) > 0) {
         $e = portfolio_exporter::rewaken_object($q->id);
         $e->verify_rewaken(true);
         $queued = $e->get('queued');
-        $base = $CFG->wwwroot . '/portfolio/add.php?id=' . $q->id . '&logreturn=1&sesskey=' . sesskey();
-        $iconstr = '';
+        $baseurl = new moodle_url($CFG->wwwroot . '/portfolio/add.php', array('id'=>$q->id, 'logreturn'=>1, 'sesskey'=>sesskey()));
 
-        $cancel = new moodle_action_icon();
-        $cancel->link->url = new moodle_url($base . '&cancel=1');
-        $cancel->image->src = $OUTPUT->pix_url('t/stop');
-        $cancel->linktext = get_string('cancel');
-
-        $iconstr = $OUTPUT->action_icon($cancel);
+        $iconstr = $OUTPUT->action_icon(new moodle_url($baseurl, array('cancel'=>1)), get_string('cancel'), 't/stop');
 
         if (!$e->get('queued') && $e->get('expirytime') > $now) {
-            $continue = new moodle_action_icon();
-            $continue->link->url = new moodle_url($base);
-            $continue->image->src = $OUTPUT->pix_url('t/go');
-            $continue->linktext = get_string('continue');
-            $iconstr .= '&nbsp;' . $OUTPUT->action_icon($continue);
+            $iconstr .= '&nbsp;' . $OUTPUT->action_icon($baseurl, get_string('continue'), 't/go');
         }
         $table->data[] = array(
             $e->get('caller')->display_name(),