Blame view

pma/js/get_image.js.php 4.25 KB
a1684257   Administrator   first commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
  <?php
  /* vim: set expandtab sw=4 ts=4 sts=4: */
  /**
   * Provides the functionality for retreiving images
   * which may be actual images or an icon from a sprite
   *
   * @package PhpMyAdmin
   */
  chdir('..');
  
  // Send correct type:
  header('Content-Type: text/javascript; charset=UTF-8');
  header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 3600) . ' GMT');
  
  // Avoid loading the full common.inc.php because this would add many
  // non-js-compatible stuff like DOCTYPE
  define('PMA_MINIMUM_COMMON', true);
  require_once './libraries/common.inc.php';
  
  // Get the data for the sprites, if it's available
  if (is_readable($_SESSION['PMA_Theme']->getPath() . '/sprites.lib.php')) {
      include $_SESSION['PMA_Theme']->getPath() . '/sprites.lib.php';
  }
  $sprites = array();
  if (function_exists('PMA_sprites')) {
      $sprites = PMA_sprites();
  }
  // We only need the keys from the array of sprites data,
  // since they contain the (partial) class names
  $keys = array();
  foreach ($sprites as $key => $value) {
      $keys[] = "'$key'";
  }
  
  ?>
  /**
   * Returns an HTML IMG tag for a particular image from a theme,
   * which may be an actual file or an icon from a sprite
   *
   * @param string image      The name of the file to get
   * @param string alternate  Used to set 'alt' and 'title' attributes of the image
   * @param object attributes An associative array of other attributes
   *
   * @return Object The requested image, this object has two methods:
   *                  .toString()        - Returns the IMG tag for the requested image
   *                  .attr(name)        - Returns a particular attribute of the IMG
   *                                       tag given it's name
   *                  .attr(name, value) - Sets a particular attribute of the IMG
   *                                       tag to the given value
   *                And one property:
   *                  .isSprite          - Whether the image is a sprite or not
   */
  function PMA_getImage(image, alternate, attributes) {
      var in_array = function (needle, haystack) {
          for (i in haystack) {
              if (haystack[i] == needle) {
                  return true;
              }
          }
          return false;
      };
      var sprites = [
          <?php echo implode($keys, ",\n        ") . "\n"; ?>
      ];
      // custom image object, it will eventually be returned by this functions
      var retval = {
          data: {
              // this is private
              alt: '',
              title: '',
              src: 'themes/dot.gif'
          },
          isSprite: true,
          attr: function (name, value) {
              if (value == undefined) {
                  if (this.data[name] == undefined) {
                      return '';
                  } else {
                      return this.data[name];
                  }
              } else {
                  this.data[name] = value;
              }
          },
          toString: function () {
              var retval = '<' + 'img';
              for (var i in this.data) {
                  retval += ' ' + i + '="' + this.data[i] + '"';
              }
              retval += ' /' + '>';
              return retval;
          }
      };
      // initialise missing parameters
      if (attributes == undefined) {
          attributes = {};
      }
      if (alternate == undefined) {
          alternate = '';
      }
      // set alt
      if (attributes.alt != undefined) {
          retval.attr('alt', attributes.alt);
      } else {
          retval.attr('alt', alternate);
      }
      // set title
      if (attributes.title != undefined) {
          retval.attr('title', attributes.title);
      } else {
          retval.attr('title', alternate);
      }
      // set src
      var klass = image.replace('.gif', '').replace('.png', '');
      if (in_array(klass, sprites)) {
          // it's an icon from a sprite
          retval.attr('class', 'icon ic_' + klass);
      } else {
          // it's an image file
          retval.isSprite = false;
          retval.attr('src', "<?php echo $_SESSION['PMA_Theme']->getImgPath(); ?>" + image);
      }
      // set all other attrubutes
      for (var i in attributes) {
          if (i == 'src') {
              // do not allow to override the 'src' attribute
              continue;
          } else if (i == 'class') {
              retval.attr(i, retval.attr('class') + ' ' + attributes[i]);
          } else {
              retval.attr(i, attributes[i]);
          }
      }
  
      return retval;
  };