$image->src = $val['large_image_url'];
            $image->alt = $val['large_image_url'];
            $link->url('ad.promo-edit.php?ad_id=' . $key);
            $link->tap = $image->paint();
            $view_me = $link->paint();
        } elseif ($val['source_id'] == 3) {
            $view_me = '<a href="ad.adsense-edit.php?ad_id=' . $key . '">(AdSense code)</a>';
        } elseif ($val['code'] !== null) {
            $view_me = '(PW code)';
        } else {
            $view_me = '-';
        }
        $ad_list[] = array($title, $view_me, $action);
    }
}
$number_o_ads = qty('ad', count($possible_ad_list));
if ($ad_list) {
    $heading_list = array('Ad', 'Action');
    $list->headings($heading_list);
    $list->row_class('ad');
    $list->content($ad_list);
    //	$ad_list_instructions  = '<p>This slot measures <strong>'.$slot_info['max_width'].' &times; '.$slot_info['max_height'].'</strong> pixels. That means <strong>'.$number_o_ads.'</strong> can fit here.</p>'."\n";
    $ad_list_output .= $list->format_headings();
    $ad_list_output .= $list->format_content();
} else {
    $ad_list_output = '<h2>No ad images fit into this slot.</h2>' . "\n";
}
$label_output = '<input type="text" name="label" id="label" value="' . $slot_info['label'] . '"/>';
$code_output = '<input type="text" id="template-code" value="&lt;?=show_ad(\'' . $slot_info['label'] . '\') ?&gt;"';
// Group
$view->group_h2('Ad list');
       $action = null;
       $new = 0;
       $missing = 0;
       if ($info['tones']) {
           foreach ($info['tones'] as $label => $tone_info) {
               if ($tone_info['action'] == 'install' && $tone_info['options']) {
                   $new++;
                   $new_list[] = $tone_info['options'];
               }
               if ($tone_info['action'] == 'missing') {
                   $missing++;
                   $missing_list[] = $tone_info['options'];
               }
           }
           if ($new > 0) {
               $new = qty('tone', $new);
               $new_list = implode('||', $new_list);
               $action .= '<a class="install" href="?id=' . $info['id'] . '&amp;dir=' . $info['directory'] . '&amp;addtone=' . $new_list . '">Install ' . $new . '</a>';
           }
           if ($missing > 0) {
               /*
               					$missing = qty('tone',$missing);
               					$missing_list = implode('||', $missing_list);
               					$action .= '<a class="missing" href="?id='.$info['id'].'&amp;dir='.$info['directory'].'&amp;missing='.$missing_list.'">Missing '.$missing.'</a>';
               */
           }
       }
   }
   $all_themes_output .= <<<EOL
t<li id="theme-{$id}">
t\t<div class="box{$box_css}">
 /**
  * Format success messages for display in main script
  */
 protected function formatSuccessOutput()
 {
     unset($this->successOutput);
     if ($this->success['theme_install'] && $this->success['tone_install']) {
         $count = count($this->success['tone_install']);
         $toneStr = qty('tone', $count);
         $output = 'Theme <b>' . $this->themeMeta['title'] . '</b> and ' . $toneStr . ' have been installed.';
     } elseif ($this->success['theme_install']) {
         $output = 'Theme <b>' . $this->themeMeta['title'] . '</b> has been installed.';
     } elseif ($this->success['tone_install']) {
         array_walk($this->success['tone_install'], 'strfunc_li_wrap');
         $output = 'New tones have been installed:<ul>';
         $output .= implode('', $this->success['tone_install']);
         $output .= '</ul>';
     }
     $this->successOutput = $output;
 }