Subversion Repositories PHPX

Rev

Rev 17 | Rev 20 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 17 Rev 19
Line 28... Line 28...
28
   * @var Array[string=>string]
28
   * @var Array[string=>string]
29
   */
29
   */
30
  protected $urns = array();
30
  protected $urns = array();
31
 
31
 
32
  /**
32
  /**
-
 
33
   * <code>true</code> generates form controls for submitting test case
-
 
34
   * results
-
 
35
   *
-
 
36
   * @var bool
-
 
37
   */
-
 
38
  protected $testcase = false;
-
 
39
 
-
 
40
  /**
33
   * The list of language features
41
   * The list of language features
34
   *
42
   *
35
   * @var array[Features]
43
   * @var array[Features]
36
   */
44
   */
37
  protected $items = array();
45
  protected $items = array();
Line 51... Line 59...
51
   */
59
   */
52
  public function __construct($a)
60
  public function __construct($a)
53
  {
61
  {
54
    $aVars = get_class_vars(get_class($this));
62
    $aVars = get_class_vars(get_class($this));
55
   
63
   
-
 
64
56
    while ((list($key, $value) = each($aVars)))
65
    foreach ($aVars as $key => $value)
57
    {
66
    {
58
      if (isset($a[$key]))
67
      if (isset($a[$key]))
59
      {
68
      {
60
        $this->$key = $a[$key];
69
        $this->$key = $a[$key];
61
      }
70
      }
62
    }
71
    }
63
   
72
64
    /* Inform items of ourself so that URNs can be used for links */
73
    /* Inform items of ourself so that URNs can be used for links */
65
    if (is_array($this->items))
74
    if (is_array($this->items))
66
    {
75
    {
67
      foreach ($this->items as &$item)
76
      foreach ($this->items as &$item)
68
      {
77
      {
Line 81... Line 90...
81
        }
90
        }
82
      }
91
      }
83
    }
92
    }
84
  }
93
  }
85
 
94
 
-
 
95
  /*
-
 
96
   * Protected properties may be read, but not written
-
 
97
   */
-
 
98
  public function __get($property)
-
 
99
  {
-
 
100
    if (property_exists(get_class($this), $property))
-
 
101
    {
-
 
102
      return $this->$property;
-
 
103
    }
-
 
104
  }
-
 
105
 
86
  public function printHeaders()
106
  public function printHeaders()
87
  {
107
  {
88
    foreach ($this->versions as $ver)
108
    foreach ($this->versions as $key => $ver)
89
    {
109
    {
-
 
110
      if ($key || $this->testcase)
-
 
111
      {
90
?>
112
?>
91
          <th><?php echo $ver; ?></th>
113
          <th><?php echo $ver; ?></th>
92
<?php
114
<?php
-
 
115
      }
93
    }
116
    }
94
  }
117
  }
95
   
118
   
96
  /**
119
  /**
97
   * Prints the list of features.
120
   * Prints the list of features.
Line 220... Line 243...
220
   */
243
   */
221
  public function __construct($params = array())
244
  public function __construct($params = array())
222
  {
245
  {
223
    $aVars = get_class_vars(__CLASS__);
246
    $aVars = get_class_vars(__CLASS__);
224
   
247
   
225
    while ((list($key, $value) = each($aVars)))
248
    foreach ($aVars as $key => $value)
226
    {
249
    {
227
      if (isset($params[$key]))
250
      if (isset($params[$key]))
228
      {
251
      {
229
        $this->$key = $params[$key];
252
        $this->$key = $params[$key];
230
      }
253
      }
Line 417... Line 440...
417
              array('self', 'shl'),*/
440
              array('self', 'shl'),*/
418
              preg_replace('/&hellip;/', '&#8230;', $this->content)/*)*/;
441
              preg_replace('/&hellip;/', '&#8230;', $this->content)/*)*/;
419
            ?></th>
442
            ?></th>
420
<?php
443
<?php
421
    $versions = $this->versions;
444
    $versions = $this->versions;
-
 
445
    $testcase = false;
422
    if (!is_null($this->list))
446
    if (!is_null($this->list))
423
    {
447
    {
424
      $versions =& $this->list->versions;
448
      $versions =& $this->list->versions;
-
 
449
      $testcase = $this->list->testcase;
425
    }
450
    }
426
451
427
    static $row = 0;
452
    static $row = 0;
428
    $row++;
453
    $row++;
429
   
454
   
Line 433... Line 458...
433
    foreach ($versions as $key => $value)
458
    foreach ($versions as $key => $value)
434
    {
459
    {
435
      $column++;
460
      $column++;
436
      $id = "td$row-$column";
461
      $id = "td$row-$column";
437
      $ver = isset($thisVersions[$key]) ? $thisVersions[$key] : '';
462
      $ver = isset($thisVersions[$key]) ? $thisVersions[$key] : '';
-
 
463
      if ($key || $testcase)
-
 
464
      {
438
?>
465
?>
439
          <td<?php
466
          <td<?php
440
                if (!$key)
467
            if (!$key)
441
                {
468
            {
442
                                                        echo " id='$id'";
469
              echo " id='$id'";
443
                }
470
            }
444
               
471
           
445
            echo $this->getAssumed($ver) . $this->getTested($ver);
472
            echo $this->getAssumed($ver) . $this->getTested($ver);
446
           
473
           
447
            if (!$key)
474
            if (!$key)
448
            {
475
            {
449
              if (!empty($ver))
476
              if (!empty($ver))
Line 457... Line 484...
457
                      FEATURES_ENCODING
484
                      FEATURES_ENCODING
458
                    )
485
                    )
459
                  . '"';
486
                  . '"';
460
              }
487
              }
461
              else
488
              else
462
              {
489
            {
463
                echo ' title="Not applicable: No automated test case'
490
                echo ' title="Not applicable: No automated test case'
464
                  . ' is available for this feature.  If possible, please'
491
                  . ' is available for this feature.  If possible, please'
465
                  . ' click the feature code in the first column to run'
492
                  . ' click the feature code in the first column to run'
466
                  . ' a manual test."';
493
                  . ' a manual test."';
467
              }
494
              }
468
            }
495
            }
-
 
496
            else
-
 
497
          {
-
 
498
              echo ' title="'
-
 
499
                . htmlspecialchars(
-
 
500
                    preg_replace('/<.*?>/', '', $value),
-
 
501
                    ENT_COMPAT, FEATURES_ENCODING)
-
 
502
                . '"';
-
 
503
            }
469
            ?>><?php
504
            ?>><?php
470
            if ($key)
505
            if ($key)
471
            {
506
            {
472
              echo $this->getVer($ver);
507
              echo $this->getVer($ver);
473
             
508
             
Line 476... Line 511...
476
              {
511
              {
477
                echo $ver['footnote'];
512
                echo $ver['footnote'];
478
              }
513
              }
479
            }
514
            }
480
            else
515
            else
481
            {
516
          {
482
              if (!empty($ver))
517
              if (!empty($ver) && $testcase)
483
              {
518
              {
484
                ?><script type="text/javascript">
519
                ?><script type="text/javascript">
485
  // <![CDATA[
520
  // <![CDATA[
486
  var s = test(<?php echo $ver; ?>, '<span title="Supported">+<\/span>',
521
  var s = test(<?php echo $ver; ?>,
-
 
522
    '<input title="Supported" name="<?php echo htmlspecialchars($this->title, ENT_COMPAT, FEATURES_ENCODING); ?>" value="+" readonly>',
487
    '<span title="Not supported">&#8722;<\/span>');
523
    '<input title="Not supported" name="<?php echo htmlspecialchars($this->title, ENT_COMPAT, FEATURES_ENCODING); ?>" value="&#8722;" readonly>');
488
  tryThis("document.write(s);",
524
  jsx.tryThis("document.write(s);",
489
          "document.getElementById('<?php echo $id; ?>').appendChild("
525
          "document.getElementById('<?php echo $id; ?>').appendChild("
490
          + "document.createTextNode(s));");
526
          + "document.createTextNode(s));");
491
  // ]]>
527
  // ]]>
492
</script><?php
528
</script><?php
493
              }
529
              }
494
              else
530
              else
495
              {
531
            {
496
                echo '<abbr>N/A</abbr>';
532
                echo '<abbr>N/A</abbr>';
497
              }
533
              }
498
            }
534
            }
499
            ?></td>
535
            ?></td>
500
<?php
536
<?php
-
 
537
      }
501
    }
538
    }
502
?>
539
?>
503
        </tr>
540
        </tr>
504
<?php
541
<?php
505
  }
542
  }