]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-21198 going back to the original spacer syntax, image component improvements...
authorPetr Skoda <skodak@moodle.org>
Sun, 27 Dec 2009 23:31:46 +0000 (23:31 +0000)
committerPetr Skoda <skodak@moodle.org>
Sun, 27 Dec 2009 23:31:46 +0000 (23:31 +0000)
14 files changed:
blog/external_blogs.php
calendar/lib.php
course/lib.php
course/recent.php
course/search.php
lib/adminlib.php
lib/deprecatedlib.php
lib/outputcomponents.php
lib/outputrenderers.php
mod/hotpot/report/default.php
mod/hotpot/review.php
mod/survey/report.php
mod/survey/view.php
search/stats.php

index 5628a65b2e1a8d871ad8510dce79bb6d053a6a79..9dc71676c5c6f8b4696e9bd82c35e725b4ae0ecd 100644 (file)
@@ -72,14 +72,14 @@ if (!empty($blogs)) {
     $table->head = array(get_string('name'), get_string('url'), get_string('timefetched', 'blog'), get_string('valid', 'blog'), get_string('actions'));
 
     foreach ($blogs as $blog) {
-        $validicon = html_image::make($OUTPUT->pix_url('i/tick_green_big'));
-        $validicon->alt = get_string('feedisvalid', 'blog');
-        $validicon->title = get_string('feedisvalid', 'blog');
-
         if ($blog->failedlastsync) {
-            $validicon->src = $OUTPUT->pix_url('i/cross_red_big');
+            $validicon = html_image::make($OUTPUT->pix_url('i/cross_red_big'));
             $validicon->alt = get_string('feedisinvalid', 'blog');
             $validicon->title = get_string('feedisinvalid', 'blog');
+        } else {
+            $validicon = html_image::make($OUTPUT->pix_url('i/tick_green_big'));
+            $validicon->alt = get_string('feedisvalid', 'blog');
+            $validicon->title = get_string('feedisvalid', 'blog');
         }
 
         $editicon = new moodle_action_icon;
index ce1deadc5aa1d68dd20dd152b51704d99113a412..8e2ee1a547f4d9dc70fc10be4f75546eea2f91b6 100644 (file)
@@ -545,10 +545,7 @@ function calendar_print_event($event, $showactions=true) {
     if (!empty($event->icon)) {
         echo $event->icon;
     } else {
-        $spacer = new html_image();
-        $spacer->height = 16;
-        $spacer->width = 16;
-        echo $OUTPUT->spacer($spacer) . '<br />';
+        echo $OUTPUT->spacer(array('height'=>16, 'width'=>16, 'br'=>true)); // should be done with CSS instead
     }
     echo '</td>';
     echo '<td class="topic">';
index 80fbbaa27cc17c40d762deccb214571aa5e5c289..f680d82a909602c93c348aa889ed4ff40215bfac 100644 (file)
@@ -1349,10 +1349,7 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false,
             }
 
             if ($mod->indent) {
-                $spacer = new html_image();
-                $spacer->height = 12;
-                $spacer->width = 20 * $mod->indent;
-                echo $OUTPUT->spacer($spacer);
+                echo $OUTPUT->spacer(array('height'=>12, 'width'=>(20 * $mod->indent))); // should be done with CSS instead
             }
 
             $extra = '';
@@ -1968,10 +1965,8 @@ function print_category_info($category, $depth, $showcourses = false) {
             $indent = $depth*30;
             $rows = count($courses) + 1;
             echo '<td class="category indentation" rowspan="'.$rows.'" valign="top">';
-            $spacer = new html_image();
-            $spacer->height = 10;
-            $spacer->width = $indent;
-            echo $OUTPUT->spacer($spacer) . '<br />';
+
+            echo $OUTPUT->spacer(array('height'=>10, 'width'=>$indent, 'br'=>true)); // should be done with CSS instead
             echo '</td>';
         }
 
@@ -2024,10 +2019,7 @@ function print_category_info($category, $depth, $showcourses = false) {
         if ($depth) {
             $indent = $depth*20;
             echo '<td class="category indentation" valign="top">';
-            $spacer = new html_image();
-            $spacer->height = 10;
-            $spacer->width = $indent;
-            echo $OUTPUT->spacer($spacer) . '<br />';
+            echo $OUTPUT->spacer(array('height'=>10, 'width'=>$indent, 'br'=>true)); // should be done with CSS instead
             echo '</td>';
         }
 
index 31e8cbcbb0f693449604c98a6891e1d0589230da..f0e7e8c893f969ce2ca382f5104e474e325276c7 100644 (file)
@@ -225,9 +225,7 @@ if (!empty($activities)) {
         if (($activity->type == 'section') && ($param->sortby == 'default')) {
             if ($inbox) {
                 echo $OUTPUT->box_end();
-                $spacer = new html_image();
-                $spacer->height = 30;
-                echo $OUTPUT->spacer($spacer) . '<br />';
+                echo $OUTPUT->spacer(array('height'=>30, 'br'=>true)); // should be done with CSS instead
             }
             echo $OUTPUT->box_start();
             echo "<h2>$activity->name</h2>";
index 011209c11d4b1ade8ce9d7af7a2eca16b538d989..66053e439486e38d006589148706ab21faf91d39 100644 (file)
                 $course->summary .= $displaylist[$course->category];
                 $course->summary .= "</a></p>";
                 print_course($course, $search);
-                $spacer = new html_image();
-                $spacer->height = 5;
-                $spacer->width = 5;
-                echo $OUTPUT->spacer($spacer) . '<br />';
+                echo $OUTPUT->spacer(array('height'=>5, 'width'=>5, 'br'=>true)); // should be done with CSS instead
             }
         } else {
         /// Show editing UI.
index e7e1bbde0f14044c1a0a6f159a9551f142bbdd96..a3baf54b2d810e12b8177640798693aa1e16d5ca 100644 (file)
@@ -6025,22 +6025,21 @@ class admin_setting_managerepository extends admin_setting {
 
             // display up/down link
             $updown = '';
-            $spacer = new html_image();
-            $spacer->height = 15;
-            $spacer->width = 15;
+            $spacer = $OUTPUT->spacer(array('height'=>15, 'width'=>15)); // should be done with CSS instead
+
             if ($updowncount > 1) {
                 $updown .= "<a href=\"$this->baseurl&amp;move=up&amp;type=".$i->get_typename()."\">";
                 $updown .= "<img src=\"" . $OUTPUT->pix_url('t/up') . "\" alt=\"up\" /></a>&nbsp;";
             }
             else {
-                $updown .= $OUTPUT->spacer($spacer);
+                $updown .= $spacer;
             }
             if ($updowncount < count($instances)) {
                 $updown .= "<a href=\"$this->baseurl&amp;move=down&amp;type=".$i->get_typename()."\">";
                 $updown .= "<img src=\"" . $OUTPUT->pix_url('t/down') . "\" alt=\"down\" /></a>";
             }
             else {
-                $updown .= $OUTPUT->spacer($spacer);
+                $updown .= $spacer;
             }
 
             $updowncount++;
index 77b18be65ad3f1d90a4a71dd14526788059eb739..3ebeecf3960bb2ff2caa9aafa646f85ca69a44c2 100644 (file)
@@ -2613,15 +2613,7 @@ function print_spacer($height=1, $width=1, $br=true, $return=false) {
 
     debugging('print_spacer() has been deprecated. Please change your code to use $OUTPUT->spacer().');
 
-    $spacer = new html_image();
-    $spacer->height = $height;
-    $spacer->width = $width;
-
-    $output = $OUTPUT->spacer($spacer);
-
-    if ($br) {
-        $output .= '<br />';
-    }
+    $output = $OUTPUT->spacer(array('height'=>$height, 'width'=>$width, 'br'=>$br));
 
     if ($return) {
         return $output;
index ebd98aaf1c3ba517319c945d7cb8469d4d4a04c9..213c9289be10b74591a6d46fa3c191995aafb7d4 100644 (file)
@@ -1357,6 +1357,14 @@ class html_image extends labelled_html_component {
      * @var string $src The path to the image being used
      */
     public $src;
+    /**
+     * @var int $width of image
+     */
+    public $width;
+    /**
+     * @var int $height of image
+     */
+    public $height;
 
     /**
      * @see lib/html_component#prepare()
@@ -1367,7 +1375,7 @@ class html_image extends labelled_html_component {
             throw new coding_exception('html_image requires a $src value (moodle_url).');
         }
 
-        $this->add_class('image'); //TODO. remove this like somehow
+        // no general class here, use custom class instead or img element directly in css selectors
         parent::prepare($output, $page, $target);
     }
 
index 6bba46774f2d9a5c658e9ffca9573c81ceed9d8a..78ead9f985a2129ef8e24135888f6c10d113ad3d 100644 (file)
@@ -204,6 +204,23 @@ class renderer_base {
         }
         return $output;
     }
+
+    /**
+     * Helper function for applying of html_component options
+     * @param html_component $component
+     * @param array $options
+     * @return void
+     */
+    protected function apply_component_options(html_component $component, array $options = null) {
+        $options = (array)$options;
+        foreach ($options as $key => $value) {
+            if ($key === 'class' or $key === 'classes') {
+                $component->add_classes($value);
+            } else if (array_key_exists($key, $component)) {
+                $component->$key = $value;
+            }
+        }
+    }
 }
 
 
@@ -1123,21 +1140,25 @@ class core_renderer extends renderer_base {
     /**
      * Creates and returns a spacer image with optional line break.
      *
-     * @param html_image $image Subclass of html_component
-     *
+     * @param array $options id, alt, width=1, height=1, etc.
+     *              special options br=false (break after spacer)
      * @return string HTML fragment
      */
-    public function spacer($image) {
-        $image = clone($image);
-
-        if (empty($image->src)) {
-            $image->src = $this->pix_url('spacer')->out(false, array(), false);
+    public function spacer(array $options = null) {
+        $options = (array)$options;
+        if (empty($options['width'])) {
+            $options['width'] = 1;
+        }
+        if (empty($options['height'])) {
+            $options['height'] = 1;
         }
+        $options['class'] = 'spacer';
 
-        $image->prepare($this, $this->page, $this->target);
-        $image->add_class('spacer');
+        $output = $this->image($this->pix_url('spacer'), $options);
 
-        $output = $this->image($image);
+        if (!empty($options['br'])) {
+            $output .= '<br />';
+        }
 
         return $output;
     }
@@ -1145,16 +1166,31 @@ class core_renderer extends renderer_base {
     /**
      * Creates and returns an image.
      *
-     * @param html_image $image Subclass of html_component
+     * @param html_image|moodle_url|string $image_or_url image or url of the image
+     * @param array $options image attributes such as title, id, alt, widht, height
      *
      * @return string HTML fragment
      */
-    public function image($image) {
-        if ($image === false) {
+    public function image($image_or_url, array $options = null) {
+        if ($image_or_url === false) {
             return false;
+
+        } else if ($image_or_url instanceof html_image) {
+            $image = clone($image_or_url);
+
+        } else {
+            if ($image_or_url instanceof moodle_url) {
+                $image = new html_image();
+                $image->src = clone($image_or_url);
+            } else {
+                // must be a string
+                $image = new html_image();
+                $image->src = new moodle_url($image_or_url);
+            }
+
+            $this->apply_component_options($image, $options);
         }
 
-        $image = clone($image);
         $image->prepare($this, $this->page, $this->target);
 
         $this->prepare_event_handlers($image);
@@ -1166,9 +1202,15 @@ class core_renderer extends renderer_base {
                             'title' => $image->title,
                             'id' => $image->id);
 
-        if (!empty($image->height) || !empty($image->width)) {
-            $attributes['style'] .= $this->prepare_legacy_width_and_height($image);
+        // do not use prepare_legacy_width_and_height() here,
+        // xhtml strict allows width&height and inline styles break theming too!
+        if (!empty($image->height)) {
+            $attributes['height'] = $image->height;
+        }
+        if (!empty($image->width)) {
+            $attributes['width'] = $image->width;
         }
+
         return $this->output_empty_tag('img', $attributes);
     }
 
@@ -1189,7 +1231,7 @@ class core_renderer extends renderer_base {
      * $OUTPUT->user_picture($userpic);
      * </pre>
      *
-     * @param object $user_or_userpicture Object with at least fields id, picture, imagealt, firstname, lastname
+     * @param object|user_picture $user_or_userpicture Object with at least fields id, picture, imagealt, firstname, lastname
      *     If any of these are missing, the database is queried. Avoid this
      *     if at all possible, particularly for reports. It is very bad for performance.
      * @param array $options associative array with user picture options, used only if not a user_picture object,
@@ -1199,6 +1241,7 @@ class core_renderer extends renderer_base {
      *     - link=true (make image clickable - the link leads to user profile)
      *     - popup=false (open in popup)
      *     - alttext=true (add image alt attribute)
+     *     - etc.
      * @return string HTML fragment
      */
     public function user_picture(stdClass $user_or_userpicture, array $options = null) {
@@ -1210,13 +1253,7 @@ class core_renderer extends renderer_base {
         } else {
             $userpic = new user_picture();
             $userpic->user = $user_or_userpicture;
-            $options = (array)$options;
-            $allowed = array('courseid', 'size', 'link', 'popup', 'alttext');
-            foreach ($allowed as $key) {
-                if (array_key_exists($key, $options)) {
-                    $userpic->$key = $options[$key];
-                }
-            }
+            $this->apply_component_options($userpic, $options);
         }
 
         $userpic->prepare($this, $this->page, $this->target);
index 6e2de078a89af986d629c127f71423a56b17f8a7..a11a1a6edbbd2d332f01ff571b5bc1db0eddc839 100644 (file)
@@ -352,10 +352,7 @@ class hotpot_default_report {
             $this->print_html_finish($table);
 
             if (($i+1)<$count) {
-                $spacer = new html_image();
-                $spacer->height = 30;
-                $spacer->width = 10;
-                echo $OUTPUT->spacer($spacer) . '<br />';
+                echo $OUTPUT->spacer(array('height'=>30, 'width'=>10, 'br'=>true)); // should be done with CSS instead
             }
         }
     }
index 89b42ffd5501a3d75b140f3ce1f5bd19871980ef..894a3a8d688ac820fb6dbd14c41d675f7fc9e989 100644 (file)
@@ -150,10 +150,7 @@ function hotpot_print_review_buttons(&$course, &$hotpot, &$attempt, $context) {
     }
     print "</td>\n</tr>\n";
     print '<tr><td colspan="'.$colspan.'">';
-    $spacer = new html_image();
-    $spacer->height = 4;
-    $spacer->width = 1;
-    echo $OUTPUT->spacer($spacer);
+    echo $OUTPUT->spacer(array('height'=>4, 'width'=>1)); // should be done with CSS instead
     print "</td></tr>\n";
     print "</table>\n";
 }
index 0347fc592e692092c96f3208b0b9415a573dd88a..72d51eae7bc9b4ded64863a608d28945da89e687 100644 (file)
     }
     echo $OUTPUT->box_end();
 
-    $spacer = new html_image();
-    $spacer->height = 30;
-    $spacer->width = 30;
-    echo $OUTPUT->spacer($spacer) . '<br />';
+    echo $OUTPUT->spacer(array('height'=>30, 'width'=>30, 'br'=>true)); // should be done with CSS instead
 
 
 /// Print the menu across the top
 
                     echo $OUTPUT->table($table);
 
-                    $spacer = new html_image();
-                    $spacer->height = 30;
-                    $spacer->width = 1;
-                    echo $OUTPUT->spacer($spacer);
+                    echo $OUTPUT->spacer(array('height'=>30)); // should be done with CSS instead
                 }
             }
         }
index ae0418bf1b6466b987491e35de37954f8a8648e5..552405b9fc9acec321cb1cb3b687c3bb52b641fe 100644 (file)
         } else {
 
             echo $OUTPUT->box(format_module_intro('survey', $survey, $cm->id), 'generalbox', 'intro');
-            $spacer = new html_image();
-            $spacer->height = 30;
-            echo $OUTPUT->spacer(clone($spacer)) . '<br />';
+            echo $OUTPUT->spacer(array('height'=>30, 'width'=>1, 'br'=>true)); // should be done with CSS instead
 
             $questions = $DB->get_records_list("survey_questions", "id", explode(',', $survey->questions));
             $questionorder = explode(",", $survey->questions);
index c28f73cef3bcd42ce58c69db0e029091562b17b1..72e06a7fd0be8eaf619a680e83933ce32b8d8c03 100644 (file)
@@ -106,9 +106,7 @@ require_once($CFG->dirroot.'/search/lib.php');
         }
 
         echo $OUTPUT->table($admin_table);
-        $spacer = new html_image();
-        $spacer->height = 20;
-        echo $OUTPUT->spacer(clone($spacer)) . '<br />';
+        echo $OUTPUT->spacer(array('height'=>20, 'br'=>true)); // should be done with CSS instead
         echo $OUTPUT->heading($solutionsstr);
 
         unset($admin_table->data);