diff options
Diffstat (limited to 'drupal6_theme_methods.php')
-rw-r--r-- | drupal6_theme_methods.php | 276 |
1 files changed, 276 insertions, 0 deletions
diff --git a/drupal6_theme_methods.php b/drupal6_theme_methods.php new file mode 100644 index 0000000..a606bc9 --- /dev/null +++ b/drupal6_theme_methods.php @@ -0,0 +1,276 @@ +<?php + +/* Drupal 6 methods definitons */ + +/** + * Override or insert PHPTemplate variables into the templates. + */ +function phptemplate_preprocess_page(&$vars) { + $vars['tabs'] = menu_primary_local_tasks(); + $vars['tabs2'] = menu_secondary_local_tasks(); +} + +/** + * Generate the HTML output for a single local task link. + * + * @ingroup themeable + */ + +function b2_silly_clouds_menu_local_task($link, $active = FALSE) { + $active_class = ""; + if ($active) { + $active_class .= "active "; + } + $output = preg_replace('~<a href="([^"]*)"[^>]*>([^<]*)</a>~', + '<span class="'.$active_class.'b2-button-wrapper">'. + '<span class="b2-button-l"></span>'. + '<span class="b2-button-r"></span>'. + '<a href="$1" class="'.$active_class.'b2-button">$2</a></span>', $link); + return '<li>'.$output.'</li>'; +} + +/** + * Return code that emits an feed icon. + * + * @param $url + * The url of the feed. + * @param $title + * A descriptive title of the feed. + */ +function b2_silly_clouds_feed_icon($url, $title) { + return '<a href="'. check_url($url) .'" class="b2-rss-tag-icon" title="' . $title . '"></a>'; +} + +/** + * Add a "Comments" heading above comments except on forum pages. + */ +function b2_silly_clouds_preprocess_comment_wrapper(&$vars) { + if (!isset($vars['content'])) return; + + ob_start();?> +<div class="b2-post"> + <div class="b2-post-body"> + <div class="b2-post-inner b2-article"> + + <?php $result .= ob_get_clean(); + + if ($vars['node']->type != 'forum') { + $result .= '<h2 class="b2-postheader comments">' . t('Comments') . '</h2>'; + } + + ob_start();?> +<div class="b2-postcontent"> + + <?php $result .= ob_get_clean(); + + $result .= $vars['content']; + ob_start();?> + + </div> + <div class="cleared"></div> + + <?php $result .= ob_get_clean(); + + ob_start();?> + + </div> + + <div class="cleared"></div> + </div> + </div> + + <?php $result .= ob_get_clean(); + + $vars['content'] = $result; +} + +/** + * Allow themable wrapping of all breadcrumbs. + */ +function b2_silly_clouds_breadcrumb($breadcrumb) { + if (!empty($breadcrumb)) { + return '<div class="breadcrumb b2-postcontent">'. implode(' | ', $breadcrumb) .'</div>'; + } +} + +function b2_silly_clouds_service_links_node_format($links) { + return '<div class="service-links"><div class="service-label">'. t('Bookmark/Search this post with: ') .'</div>'. art_links_woker($links) .'</div>'; +} + +/** + * Theme a form button. + * + * @ingroup themeable + */ +function b2_silly_clouds_button($element) { + // Make sure not to overwrite classes. + if (isset($element['#attributes']['class'])) { + $element['#attributes']['class'] = 'form-'.$element['#button_type'].' '.$element['#attributes']['class'].' b2-button'; + } + else { + $element['#attributes']['class'] = 'form-'.$element['#button_type'].' b2-button'; + } + + return '<span class="b2-button-wrapper">'. + '<span class="b2-button-l"></span>'. + '<span class="b2-button-r"></span>'. + '<input type="submit" '. (empty($element['#name']) ? '' : 'name="'. $element['#name'] + .'" ') .'id="'. $element['#id'].'" value="'. check_plain($element['#value']) .'" '. drupal_attributes($element['#attributes']).'/>'. + '</span>'; +} + +/** + * Image assist module support. + * Added Artisteer styles in IE +*/ +function b2_silly_clouds_img_assist_page($content, $attributes = NULL) { + $title = drupal_get_title(); + $output = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'."\n"; + $output .= '<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">'."\n"; + $output .= "<head>\n"; + $output .= '<title>'. $title ."</title>\n"; + + // Note on CSS files from Benjamin Shell: + // Stylesheets are a problem with image assist. Image assist works great as a + // TinyMCE plugin, so I want it to LOOK like a TinyMCE plugin. However, it's + // not always a TinyMCE plugin, so then it should like a themed Drupal page. + // Advanced users will be able to customize everything, even TinyMCE, so I'm + // more concerned about everyone else. TinyMCE looks great out-of-the-box so I + // want image assist to look great as well. My solution to this problem is as + // follows: + // If this image assist window was loaded from TinyMCE, then include the + // TinyMCE popups_css file (configurable with the initialization string on the + // page that loaded TinyMCE). Otherwise, load drupal.css and the theme's + // styles. This still leaves out sites that allow users to use the TinyMCE + // plugin AND the Add Image link (visibility of this link is now a setting). + // However, on my site I turned off the text link since I use TinyMCE. I think + // it would confuse users to have an Add Images link AND a button on the + // TinyMCE toolbar. + // + // Note that in both cases the img_assist.css file is loaded last. This + // provides a way to make style changes to img_assist independently of how it + // was loaded. + $output .= drupal_get_html_head(); + $output .= drupal_get_js(); + $output .= "\n<script type=\"text/javascript\"><!-- \n"; + $output .= " if (parent.tinyMCE && parent.tinyMCEPopup && parent.tinyMCEPopup.getParam('popups_css')) {\n"; + $output .= " document.write('<link href=\"' + parent.tinyMCEPopup.getParam('popups_css') + '\" rel=\"stylesheet\" type=\"text/css\">');\n"; + $output .= " } else {\n"; + foreach (drupal_add_css() as $media => $type) { + $paths = array_merge($type['module'], $type['theme']); + foreach (array_keys($paths) as $path) { + // Don't import img_assist.css twice. + if (!strstr($path, 'img_assist.css')) { + $output .= " document.write('<style type=\"text/css\" media=\"{$media}\">@import \"". base_path() . $path ."\";<\/style>');\n"; + } + } + } + $output .= " }\n"; + $output .= "--></script>\n"; + // Ensure that img_assist.js is imported last. + $path = drupal_get_path('module', 'img_assist') .'/img_assist_popup.css'; + $output .= "<style type=\"text/css\" media=\"all\">@import \"". base_path() . $path ."\";</style>\n"; + + $output .= '<link rel="stylesheet" href="'.get_full_path_to_theme().'/style.css" type="text/css" />'."\n"; + $output .= '<!--[if IE 6]><link rel="stylesheet" href="'.get_full_path_to_theme().'/style.ie6.css" type="text/css" /><![endif]-->'."\n"; + $output .= '<!--[if IE 7]><link rel="stylesheet" href="'.get_full_path_to_theme().'/style.ie7.css" type="text/css" /><![endif]-->'."\n"; + + $output .= "</head>\n"; + $output .= '<body'. drupal_attributes($attributes) .">\n"; + + $output .= theme_status_messages(); + + $output .= "\n"; + $output .= $content; + $output .= "\n"; + $output .= '</body>'; + $output .= '</html>'; + return $output; +} + +/** + * Display a node preview for display during node creation and editing. + * + * @param $node + * The node object which is being previewed. + * + * @ingroup themeable + */ +function b2_silly_clouds_node_preview($node) { + $output = '<div class="preview">'; + + $preview_trimmed_version = FALSE; + // Do we need to preview trimmed version of post as well as full version? + if (isset($node->teaser) && isset($node->body)) { + $teaser = trim($node->teaser); + $body = trim(str_replace('<!--break-->', '', $node->body)); + + // Preview trimmed version if teaser and body will appear different; + // also (edge case) if both teaser and body have been specified by the user + // and are actually the same. + if ($teaser != $body || ($body && strpos($node->body, '<!--break-->') === 0)) { + $preview_trimmed_version = TRUE; + } + } + + if ($preview_trimmed_version) { + drupal_set_message(t('The trimmed version of your post shows what your post looks like when promoted to the main page or when exported for syndication.<span class="no-js"> You can insert the delimiter "<!--break-->" (without the quotes) to fine-tune where your post gets split.</span>')); + + $preview_trimmed_version = t('Preview trimmed version'); + $output .= <<< EOT +<div class="b2-post"> + <div class="b2-post-body"> + <div class="b2-post-inner b2-article"> + +<div class="b2-postcontent"> + + <h3> + $preview_trimmed_version + </h3> + + </div> + <div class="cleared"></div> + + + </div> + + <div class="cleared"></div> + </div> + </div> + +EOT; + $output .= node_view(drupal_clone($node), 1, FALSE, 0); + + $preview_full_version = t('Preview full version'); + $output .= <<< EOT +<div class="b2-post"> + <div class="b2-post-body"> + <div class="b2-post-inner b2-article"> + +<div class="b2-postcontent"> + + <h3> + $preview_full_version + </h3> + + </div> + <div class="cleared"></div> + + + </div> + + <div class="cleared"></div> + </div> + </div> + +EOT; + + $output .= node_view($node, 0, FALSE, 0); + } + else { + $output .= node_view($node, 0, FALSE, 0); + } + $output .= "</div>\n"; + + return $output; +}
\ No newline at end of file |