? seo_friend.admin.css
Index: seo_friend.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/seo_friend/seo_friend.admin.inc,v
retrieving revision 1.1.2.1
diff -u -p -r1.1.2.1 seo_friend.admin.inc
--- seo_friend.admin.inc	8 Jul 2009 17:35:55 -0000	1.1.2.1
+++ seo_friend.admin.inc	13 Jul 2009 14:25:05 -0000
@@ -399,6 +399,7 @@ function seo_friend_reports() {
  * SEO-related modules.
  */
 function seo_friend_main_report() {
+  _seo_friend_add_admin_css();
   $report_list = module_invoke_all('seo_reports');
   asort($report_list);
   $output = '<strong>'.t('SEO Reports').'</strong>';
@@ -427,14 +428,19 @@ function seo_friend_main_report() {
   foreach ($seo_modules as $module => $module_data) {
     if (module_exists($module)) {
       $msg = t('This module is installed.');
+      $class = 'ok';
     }
     else {
       $msg = seo_friend_module_not_found($module);
+      $class = 'warning';
     }
     $project_page = seo_friend_get_project_page_link($module);
-    $rows[] = array($module, $module_data['description'], $msg, $project_page);
+    $rows[] = array(
+      'class' => $class,
+      'data' => array(array('data' => $module, 'class' => 'row-status'), $module_data['description'], $msg, $project_page),
+    );
   }
-  $output .= theme_table(array('module', 'description', 'status', 'project page'), $rows);
+  $output .= theme('table', array('Module', 'Description', 'Status', 'Project Page'), $rows, array('class' => 'system-status-report seo-friend-admin'));
 
   // notify if more modules should be added
   $output .= '<p><strong>'.t('Add More SEO-Related Modules').'</strong><br/>';
@@ -468,7 +474,8 @@ function seo_friend_nodewords_report() {
     }
     $header = array('nid', 'status', 'title', 'meta tags', 'edit');
     foreach ($nodes as $node) {
-      $row = array($node->nid, seo_friend_get_node_status($node), l($node->title, 'node/'.$node->nid));
+      $class = 'ok';
+      $row = array(array('data' => $node->nid, 'class' => 'row-status'), seo_friend_get_node_status($node), l($node->title, 'node/'.$node->nid));
       $node_tags = $meta_tags[$node->nid];
       if (is_array($node_tags)) {
         $rows2 = array();
@@ -480,26 +487,31 @@ function seo_friend_nodewords_report() {
             $dup_array = $content[$tag_name][$tag_content];
             $duplicates = seo_friend_get_duplicates($dup_array, $node->nid);
             if ($duplicates) {
+              $class = 'error';
               $has_duplicates = TRUE;
             }
           }
           $rows2[] = array($tag_name, check_plain($tag_content), $duplicates);
         }
-        $row[] = theme_table(array('tag', 'value', 'duplicates'), $rows2);
+        $row[] = theme('table', array('tag', 'value', 'duplicates'), $rows2);
       }
       else {
+        $class = 'warning';
         $row[] = t('ALL TAGS MISSING');
       }
       $row[] = l('Edit', 'node/'.$node->nid.'/edit');
+      $row = array('data' => $row);
+      $row['class'] = $class;
       $rows[] = $row;
     }
     if ($has_duplicates) {
       $dup_msg = seo_friend_duplicate_message();
+      drupal_set_message($dup_msg, 'error');
     }
-    $overview = '<p><strong>'.t('Here is the meta tag content you have set up
-        with nodewords. Search for MISSING to see which nodes are missing meta 
-        tag content.').$dup_msg.'</strong></p>';
-    return $overview.theme_table($header, $rows);
+    $overview = '<p><strong>'. t('Here is the meta tag content you have set up with nodewords. Search for MISSING to see which nodes are missing meta tag content.') .'</strong></p>';
+
+    _seo_friend_add_admin_css();
+    return $overview . theme('table', $header, $rows, array('class' => 'seo-friend-admin'));
   }
   else {
     return seo_friend_module_not_found('nodewords');
@@ -544,7 +556,10 @@ function seo_friend_page_title_report() 
         if ($duplicates) {
           $has_duplicates = TRUE;
         }
-        $data[] = array($node->nid, seo_friend_get_node_status($node), l($node->title, 'node/'.$node->nid), check_plain($page_title), $duplicates, l('Edit', 'node/'.$node->nid.'/edit'));
+        $data[] = array(
+          'class' => $duplicates ? 'error' : 'ok',
+          'data' => array(array('data' => $node->nid, 'class' => 'row-status'), seo_friend_get_node_status($node), l($node->title, 'node/'.$node->nid), check_plain($page_title), $duplicates, l('Edit', 'node/'.$node->nid.'/edit')),
+        );
       }
       else {
         // figure out what default page title pattern is used
@@ -554,16 +569,20 @@ function seo_friend_page_title_report() 
         }
         $page_title_msg = t('Auto-created from pattern: @pattern', array('@pattern'=>$pattern));
 
-        $data[] = array($node->nid, seo_friend_get_node_status($node), l($node->title, 'node/'.$node->nid), $page_title_msg, $node_title_dups, l('Edit', 'node/'.$node->nid.'/edit'));
+        $data[] = array(
+          'class' => $duplicates ? 'error' : 'ok',
+          'data' => array(array('data' => $node->nid, 'class' => 'row-status'), seo_friend_get_node_status($node), l($node->title, 'node/'.$node->nid), $page_title_msg, $node_title_dups, l('Edit', 'node/'.$node->nid.'/edit')),
+        );
       }
     }
     if ($has_duplicates) {
       $dup_msg = seo_friend_duplicate_message('nodes', 'page title');
+      drupal_set_message($dup_msg, 'error');
     }
-    $overview = '<p><strong>'.t('Here is the title content you have set up
-        with page_title.').$dup_msg.'</strong></p>';
+    $overview = '<p><strong>'. t('Here is the title content you have set up with page_title.') .'</strong></p>';
     $header = array('nid', 'status', 'node title', 'page title', 'duplicates', 'edit');
-    return $overview.theme_table($header, $data);
+    _seo_friend_add_admin_css();
+    return $overview . theme('table', $header, $data, array('class' => 'seo-friend-admin'));
   }
   else {
     return seo_friend_module_not_found('page_title');
@@ -619,7 +638,7 @@ function seo_friend_nodewords_bypath_rep
         $duplicates = seo_friend_get_duplicates($meta_content[$meta_tag][$meta_value], $id);
         $meta[] = array($meta_tag, check_plain($meta_value), $duplicates);
       }
-      $meta_tags = theme_table(array('id', 'meta tags', 'duplicates'), $meta);
+      $meta_tags = theme('table', array('id', 'meta tags', 'duplicates'), $meta);
       $edit = l('Edit', 'admin/content/nodewords/path/'.$id.'/edit');
 
       // check if there are multiple paths
@@ -629,7 +648,7 @@ function seo_friend_nodewords_bypath_rep
         foreach ($tmp as $path) {
           $rows[] = array($path);
         }
-        $show_path = theme_table(array(''), $rows);
+        $show_path = theme('table', array(''), $rows);
       }
       else {
         $show_path = $paths[$id];
@@ -639,10 +658,10 @@ function seo_friend_nodewords_bypath_rep
     $header = array('rule id', 'rule name', 'paths', 'meta tags', 'edit');
     if ($multiple) {
       $mult_msg = seo_friend_duplicate_message('paths');
+      drupal_set_message($mult_msg, 'error');
     }
-    $overview = '<p><strong>'.t('Here is the meta tag content you have set up
-        with nodewords_bypath.').$mult_msg.'</strong></p>';
-    $output = $overview.theme_table($header, $show);
+    $overview = '<p><strong>'. t('Here is the meta tag content you have set up with nodewords_bypath.') .'</strong></p>';
+    $output = $overview . theme('table', $header, $show);
 
     // list of links that could add meta data for
     $results = db_query("
@@ -679,7 +698,7 @@ function seo_friend_nodewords_bypath_rep
           any of these pages. You can add new meta tags here: ').
         l('nodewords_bypath add page', 'admin/content/nodewords/path/new').
         '</strong></p>';
-      $output .= $overview . theme_table($header, $rows);
+      $output .= $overview . theme('table', $header, $rows);
     }
 
     return $output;
@@ -696,10 +715,8 @@ function seo_friend_nodewords_bypath_rep
  * @param $type The type of duplicate content, e.g. 'meta tag' or 'page title'.
  */
 function seo_friend_duplicate_message($pages = 'nodes', $type = 'meta tag') {
-  return '<p style="color:red">'.t('You currently are using the same @type 
-      content for multiple @pages. For optimal SEO, it is recommended that each 
-      page should have its own @type content.', 
-      array('@type'=>$type, '@pages'=>$pages)).'</p>';
+  return t('You currently are using the same @type content for multiple @pages. For optimal SEO, it is recommended that each page should have its own @type content.',
+      array('@type'=>$type, '@pages'=>$pages));
 }
 
 /**
@@ -719,3 +736,6 @@ function seo_friend_get_all_nodes() {
   return $nodes;
 } // function seo_friend_get_all_nodes
 
+function _seo_friend_add_admin_css() {
+  drupal_add_css(drupal_get_path('module', 'seo_friend') .'/seo_friend.admin.css', 'module', 'all', FALSE);
+}
Index: seo_friend.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/seo_friend/seo_friend.module,v
retrieving revision 1.1.2.4
diff -u -p -r1.1.2.4 seo_friend.module
--- seo_friend.module	12 Jul 2009 20:24:52 -0000	1.1.2.4
+++ seo_friend.module	13 Jul 2009 14:25:05 -0000
@@ -206,7 +206,7 @@ function seo_friend_seo_modules() {
         'description'=>'Provides a shared API for replacement of textual
         placeholders with actual data',
         ),
-      'google_analytics' => array(
+      'googleanalytics' => array(
         'title'=>'Google Analytics', 
         'description'=>'Adds Google Analytics javascript tracking code to all
         your site\'s pages',
@@ -299,7 +299,7 @@ function seo_friend_get_seo_info_block()
       else {
         $rows[] = array(t('nodewords is not installed'));
       }
-      return theme_table(array(), $rows);
+      return theme('table', array(), $rows);
     }
   }
 }
@@ -671,7 +671,7 @@ function seo_friend_page_match($key, $pa
 function seo_friend_referrers_report() {
 
   $result = db_result(db_query("SHOW TABLES LIKE 'accesslog'"));
-  if (! $result) {
+  if (! $result || !module_exists('statistics')) {
     return t('You currently do not have access logging turned on. To turn on, go to your !page page and enable the Statistics module.', array('!page' => l('admin/build/modules', 'admin/build/modules')));
   }
 
