]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-19756 MDL-19973 Fixed support of url by user_picture, and improved API for adding...
authornicolasconnault <nicolasconnault>
Fri, 31 Jul 2009 02:39:38 +0000 (02:39 +0000)
committernicolasconnault <nicolasconnault>
Fri, 31 Jul 2009 02:39:38 +0000 (02:39 +0000)
lib/outputlib.php
lib/simpletest/testoutputlib.php

index 8ac1ce9de55321a1d93990b7395d92fef6492497..baaf1a3586c9046de2839adb02d226281c8b58dd 100644 (file)
@@ -2379,7 +2379,7 @@ class moodle_core_renderer extends moodle_renderer_base {
      */
     public function blocks_for_region($region) {
         $blockcontents = $this->page->blocks->get_content_for_region($region, $this);
-        
+
         $output = '';
         foreach ($blockcontents as $bc) {
             if ($bc instanceof block_contents) {
@@ -2727,14 +2727,18 @@ class moodle_core_renderer extends moodle_renderer_base {
 
         $output = $this->image($userpic->image);
 
-        if (!empty($userpic->link) && !empty($userpic->url)) {
+        if (!empty($userpic->url)) {
             $actions = $userpic->get_actions();
-            if (!empty($actions)) {
+            if ($userpic->popup && !empty($actions)) {
                 $link = new html_link();
                 $link->url = $userpic->url;
                 $link->text = fullname($userpic->user);
-                $link->add_action($actions[0]);
-                $output = $this->link_to_popup($link);
+                $link->title = fullname($userpic->user);
+
+                foreach ($actions as $action) {
+                    $link->add_action($action);
+                }
+                $output = $this->link_to_popup($link, $userpic->image);
             } else {
                 $output = $this->link(prepare_url($userpic->url), $output);
             }
@@ -4550,6 +4554,10 @@ class user_picture extends moodle_html_component {
      * @var boolean $alttext add non-blank alt-text to the image. (Default true, set to false for purely
      */
     public $alttext = true;
+    /**
+     * @var boolean $popup Whether or not to open the link in a popup window
+     */
+    public $popup = false;
 
     /**
      * Constructor: sets up the other components in case they are needed
@@ -4610,10 +4618,14 @@ class user_picture extends moodle_html_component {
             $this->user = $DB->get_record('user', array('id' => $this->user), 'id,firstname,lastname,imagealt');
         }
 
-        if (!empty($this->link) && empty($this->url)) {
+        if ($this->url === true) {
             $this->url = new moodle_url('/user/view.php', array('id' => $this->user->id, 'course' => $this->courseid));
         }
 
+        if (!empty($this->url) && $this->popup) {
+            $this->add_action(new popup_action('click', $this->url));
+        }
+
         if (empty($this->size)) {
             $file = 'f2';
             $this->size = 35;
index a7056002b8a1fc1a961a932e16f3343647f77dc5..275bcf58c33d8a1d75087b1cabc491a7aea62ce4 100644 (file)
@@ -1187,4 +1187,23 @@ class moodle_core_renderer_test extends UnitTestCase {
         $this->assert(new ContainsTagWithContents('option', 'value3'), $html);
         $this->assert(new ContainsTagWithContents('option', 'value4'), $html);
     }
+    
+    public function test_userpicture() {
+        global $CFG;
+        // Set up the user with the required fields
+        $user = new stdClass();
+        $user->firstname = 'Test';
+        $user->lastname = 'User';
+        $user->picture = false;
+        $user->imagealt = false;
+        $user->id = 1;
+        $userpic = new user_picture();
+        $userpic->user = $user;
+        $userpic->courseid = 1;
+        $userpic->url = true;
+        // Setting popup to true adds JS for the link to open in a popup
+        $userpic->popup = true;
+        $html = $this->renderer->user_picture($userpic);
+        $this->assert(new ContainsTagWithAttributes('a', array('title' => 'Test User', 'href' => $CFG->wwwroot.'/user/view.php?id=1&course=1')), $html);
+    }
 }