Problem/Motivation

Originally, there were some problems with the Default Theme Implementations topic on api.drupal.org; most have been fixed, but there's still a bit to be done (see Remaining Tasks and the comments below for more information).

Proposed resolution

Fix up a lot of documentation of theme functions and the Default Theme Implementations topic.

Remaining tasks

The main remaining task is that every *.tpl.php file that is in a module directory (NOT the ones in themes!!) needs to have

* @ingroup themeable

added to its documentation block. See
http://drupal.org/node/1354#templates
for standards.

And as a follow-up, once this is done we should get rid of the theme.php files from Drupal 8 and Drupal 7 branches of the Documentation repository.

User interface changes

None.

API changes

None.

Original report by jhodgdon

The group @themeable in the API needs some work...

http://api.drupal.org/api/group/themeable/7

Issues:
a) there are some things in the themeable group that shouldn't be there (preprocess funcs and maybe others)

b) The @defgroup header could use a better title and perhaps other rewrites. Proposed title: Something conveying the meaning "Things you can override in your theme".

c) There are things not in the group that should be, such as *.tpl.php files.

JohnAlbin is working on a patch.

Comments

johnalbin’s picture

Assigned: Unassigned » johnalbin

Me!

jhodgdon’s picture

Assigned: johnalbin » Unassigned

The doc for that topic should explain:
a) How preprocess works and how to override it
b) How to override a theme function or a .tpl.php file

johnalbin’s picture

Assigned: Unassigned » johnalbin

Waiting for #610408: Create theme.api.php to help consolidate theme-related docs. to be committed before rolling a patch.

I've been working on a bunch of changes. Maybe 30% done at this point.

One point to discuss is the one line descriptions of the theme functions and template files are worded in several different ways. We should use a consistent phrasing like we use "Implements hook_*" for hook functions.

Here's what we currently have in our theme hook one-liners:

  1. This function formats blah blah — Yes, we know already know this function is a function.
  2. Theme the blah blah — While this might be the most accurate, "theme" is definitely a Drupalism and is a bit jargony.
  3. Default theme implementation of blah blah — super, extra jargony! :-p
  4. Generate the HTML output for blah blah — verbose
  5. Returns a blah blah — What? Functions return stuff? I never knew!
  6. Returns code that emits blah blah — wow.
  7. Theme callback for blah blah — "theme callback" is a more accurate term then "theme hook", but callback is jargony.
  8. Theme function for blah blah — this phrase can't be used for template files.
  9. Make a blah blah — meh.
  10. Render a blah blah — jargony.
  11. Present a blah blah
  12. Display a blah blah
  13. Format a blah blah

I'm partial to "Format a" since we're not immediately displaying or presenting anything. We're marking it up and returning it for later presentation.

jhodgdon’s picture

Issue tags: +Coding standards

All function one-line descriptions should start with a verb in 3rd person, like "Formats", "Themes", or "Returns", so regardless of which of the 13 options existing in the code base we choose, it should be slightly modified so that the verb has an S on it. They should not say "This function...", "Default theme implementation of...", or "Theme callback for...".

Given our other standards, I am in favor of one of these:
- Renders a foo.
- Formats a foo.
- Returns an HTML-formatted foo.

JohnAlbin marked both of these as jargon. However, the word "render" in a web programming context is a concise word meaning to convert something to HTML, which is what theme functions do.

Arguments against some of the other choices, beyond JohnAlbin's notes above:
#2 - "theme" is innacurate, since theme('blah', $vars) is what themes it (i.e. lets the theme override the default rendering). These functions define the default rendering of the object -- they don't theme it.
#12 - "display" is innacurate, since the theming functions don't send the information to the browser, they just convert it to HTML.

I'll post something on the coding standards group to see if we can get comments from the community on this...

jhodgdon’s picture

Whatever we decide, we should make up a template that also says what is in the variables, and add it to the doxygen pages. Something like:

/**
 * Returns an HTML-formatted foo.
 *
 * @param $variables
 *    Associative array of information for formatting a foo. Components:
 *    - foo: The foo object that is being formatted.
 *    - show_bar: TRUE to show the bar component, FALSE to omit it.
 *
 * @return
 *   HTML version of a foo.
 */
jhodgdon’s picture

jhodgdon’s picture

OK. JohnAlbin and I discussed this a bit on IRC.

There are one or two theme functions that do not return HTML output, although that is certainly what theme() and theming is meant for. A couple of examples:
http://api.drupal.org/api/function/theme_syslog_format/7 -- this returns formatted output for the syslog file
http://api.drupal.org/api/function/theme_aggregator_page_rss/7 -- this function actually generates *and prints* its output, complete with HTTP header... DEFINITELY not a standard theme function.

So... My call on this would be:

a) Change the doc for the return value of http://api.drupal.org/api/function/theme/7 . It is rather lame as it is, anyway. Instead, it should probably say "An string containing the formatted output (usually HTML)." I think the edge case for those two aggregator functions is not important to mention. And by the way, the main rss.xml file generated in node.module does not use a theme function. And shouldn't.

b) Make the standard for theme functions be:

/**
 * Formats a foo in HTML.
 *
 * @param array $variables
 *    Associative array of information for formatting a foo. Components:
 *    - foo: The foo object that is being formatted.
 *    - show_bar: TRUE to show the bar component, FALSE to omit it.
 *
 * @return
 *   String containing an HTML-formatted foo.
 *
 * @ingroup themeable
 */

With a note that in the few exceptional cases, the "HTML" can be replaced with a description of what kind of format is being generated/returned.

c) In those aggregator "theme" functions, make it VERY clear in the doc that these are not standard theme functions in that they actually generate pages/headers instead of returning strings.

johnalbin’s picture

I completely agree with #7. :-)

sun’s picture

Some thoughts:

1) Specifying @return is superfluous for most theme functions. It should only be stated if the return value is not HTML like everywhere else. Theme functions returning XML instead of HTML or perhaps even plain-text only, may be able to describe this in the function summary already, so explicitly stating @return really only makes sense for edge-cases.

2) If the return value is HTML, the function summary does not need to specify that it's returning HTML. Again, it's the expected default for all theme functions.

3) The description for @param $variables should be unified and kept as short as possible, since it means that we repeat something on purpose - and normally, we would just skip it instead of duplicating (compare $form, $form_state params for form constructors). But since we need to specify its contents, we can't skip it.

So effectively:

/**
 * Formats a foo.
 *
 * @param $variables
 *   An associative array containing:
 *   - foo: The foo object that is being formatted.
 *   - show_bar: TRUE to show the bar component, FALSE to omit it.
 *
 * @ingroup themeable
 */
/**
 * Formats a foo as XML.
 * ...
 */
/**
 * Formats a foo as neutro-calmic hoover element.
 *
 * @param $variables
 *   An associative array containing:
 *   - foo: The foo object that is being formatted.
 *   - show_bar: TRUE to show the bar component, FALSE to omit it.
 *
 * @return
 *   A neutro-calmic hoover element suitable for rendering via foo_hoover(). :)
 *
 * @ingroup themeable
 */

4) On preprocess and process functions: Those should be listed with theme functions starting with D7. The reason is that we actually have a couple of preprocess and process functions that perform essential data preparations for - sometimes common/generic - theme functions. Partially due to performance reasons, partially due to other reasons. I.e. the only way to achieve a different formatting is to add another preprocessor or processor. Therefore, knowing about preprocess and process functions is an important part of the game.

jhodgdon’s picture

I don't think the word "Formats" gets across immediately that the output is HTML. I realize that experienced developers know that theme_xyz() returns HTML, but that may not be obvious to all users of api.drupal.org or readers of function doc.

I am also against omitting @return on functions that have @param. Omitting @return can also mean that there is no return value, in general, and these functions most definitely do have a return value.

sun’s picture

Both "HTML" and "@return" would be needlessly repeated information all over again. We avoid that in general. Information about defaults can happily live in theme().

On "Formats" - it's a uncommon term, yes, but from all known options it is the most precise.

...

Though, a total alternative - apparently even mentioned above already - would be to use the "abbreviated" summary style...

/**
 * Returns HTML for a foo.
 *
 * @param $variables
 *   An associative array containing:
 *   - foo: The foo object that is being formatted.
 *   - show_bar: TRUE to show the bar component, FALSE to omit it.
 *
 * @ingroup themeable
 */
jhodgdon’s picture

I agree about not repeating needless information, but in this case there is no link to theme() that is automatically generated.

Also, I'm not against the term format. I just want to point out that it doesn't imply HTML necessarily.

Just keep in mind that each of these functions stands alone on its own page. It needs to either (a) document its parameters and return value unambigously, or (b) link to a page that documents its parameters and return value.

So... somewhat parallel to what we do for hook implementations, how about making the link to theme() explicit in the one-liner:

/**
  * theme() hook for a foo.
  *
  * @param $variables
  *   An associative array containing:
  *   - foo: The foo object that is being formatted.
  *   - show_bar: TRUE to show the bar component, FALSE to omit it.
  *
  * @ingroup themeable
  */
  function theme_foo($variables) {}

I personally don't like the term "theme hook", but it's used all over the place in d.o theming handbook doc, so I think we're stuck with it...

I'm definitely open to other wording here, but I think putting theme() in the one-line description would take care of (a) making it concise (b) not repeating information (c) linking to theme() (d) documenting param/return. All in one small package.

Let's see, here are some other wording possibilities I can think of right at the moment:
1) theme() hook for a foo.
2) Formats a foo for theme().
3) Implements theme() for a foo.

Thoughts?

sun’s picture

"@ingroup themeable" is the link to any missing, not duplicated default information about theme functions already...?

jhodgdon’s picture

I dont' agree. The themeable group page has descriptive information, not function doc. It doesn't have @param, @return, etc.

sun’s picture

well, http://api.drupal.org/api/group/themeable/7 needs a major overhaul anyway. ;) Why not clarify in the very first line(s)?

There's much more to know about default behaviors of theme hooks/functions. You can look up theme_foo() just to find out that theme_foo() is not even invoked on your site, because there is an override or the theme registry has been altered. Not documented for theme_foo(), but instead, once for all theme functions (hopefully) for the group.

That said, we should consider to move some of the existing docs from theme() to the group. Groups are our new topics/chapters, explaining the high-level API, without going into function-level detail. AFAIK, the best example we have is http://api.drupal.org/api/group/ajax/7

jhodgdon’s picture

A group page is not function doc. A function doc page like theme() is function doc.

IMO, all functions need to have function doc: @param, @return. Either directly or one link away.

This should either be on each individual function or on theme(). And they all should link to theme() anyway, IMO.

I do agree that the themeable group needs updates -- that is, after all, the title of this issue. But it is not function doc, and shouldn't be used as a substitute function doc.

sun’s picture

Is theme() the proper relation at all?

theme() is for module developers to invoke and trigger formatting. Theme functions just happen to be called by theme(), but if I look up theme(), then I clearly need information about invoking theme() itself -- not information about basics of the theme system and common knowledge about theme functions. Such high-level information belongs into the group.

In other words: Different purpose, different audience?

jhodgdon’s picture

I see your point, sort of...

What do you suggest then? For hook implementations, we have these dummy hook function pages in *.api.php that list the function arguments and returns. Should we make a similar dummy function called maybe theme_hook() that documents the standard args/return for theme hooks?

sun’s picture

Actually, from all suggestions I tend to like #11 more and more (which actually was your suggestion, but just happened to slip in one of your examples ;).

The abbreviated form technically kills all 3 known issues in one shot: 1) No "Formats" or other weird term, 2) States that it returns something, and 3) even states what it returns (HTML/XML/etc.)

Of course, I'd still consider this for "standard theme functions" only... the "Returns foo as neutro-calmic hoover element" edge-case should have a @return directive + most probably also requires a more elaborative explanation as function description... ;)

jhodgdon’s picture

I can get behind #11, and I completely agree that any non-HTML functions need to be more explicit.

johnalbin’s picture

Status: Active » Needs review
StatusFileSize
new137.54 KB

Ok. I've done a light re-write of @themeable, getting rid of a lot of text. This text is supposed to be about themeable functions/templates, not about how the theme system works.

This (137 KB! Holy crap!) patch also:

  • Adds several theme functions that weren't in @themeable
  • Adds several templates that weren't in @themeable
  • Redoes all of the theme function docblock short descriptions to use "Returns HTML for…". Unless the function doesn't return HTML; in which case, both the short description and the @return statement specify what is returned instead of HTML.
  • Redoes all of the @file short descriptions for templates to use "HTML for…". I figured the "Returns" bit doesn't work since templates don't return anything, they just are.
  • Makes sure that all theme functions that take variables have @params.
  • Removes @return statements for theme functions that return HTML.
  • Uses "theming hooks" instead of "theme hooks" in any docs. This helps distinguish that these hooks don't belong to themes as "theme hooks" seems to imply; instead they are "theming hooks" that are controlled by the system (and defined by modules).

It only touches docblocks and a few code comments. No code changes at all.

johnalbin’s picture

StatusFileSize
new137.27 KB

I forgot to mention, there are 2 exceptions to the theme function docblocks, because the theme functions are mis-written, IMO:

theme_menu_local_tasks(): #599706: Allow to alter local tasks/actions
theme_table_select_header_cell(): #768490: theme_table_select_header_cell() is not really a theme function

Oh, looks like I need to re-roll since #767872: theme_node_log_message() has never, ever been used was just committed! So here's the re-rolled patch.

aspilicious’s picture

+++ includes/common.inc
@@ -5410,7 +5410,7 @@ function element_get_visible_children(array $elements) {
 /**
- * Provide theme registration for themes across .inc files.
+ * Register theme hooks across .inc files and specify default values for variables.
  */
+++ includes/form.inc
@@ -2502,8 +2472,14 @@ function theme_container($variables) {
+ *     table row's HTML attributes; see theme_table().

+++ includes/theme.inc
@@ -2370,7 +2242,7 @@ function template_preprocess_page(&$variables) {
+ * Process variables for html.tpl.php.
  *

@@ -2417,7 +2289,7 @@ function template_process_html(&$variables) {
-  // Build a list of suggested theme hooks or body classes in order of
+  // Build a list of suggested theming hooks or body classes in order of
+++ includes/theme.inc
@@ -2583,3 +2459,82 @@ function template_preprocess_region(&$variables) {
+  // Set the name to a formatted name that is safe for printing and
+  // that won't break tables by being too long. Keep an unshortened,

+++ includes/theme.maintenance.inc
@@ -226,10 +231,13 @@ function theme_update_page($variables) {
+ * Returns HTML for a report of the results from an operation run via authorize.php.
+++ modules/comment/comment.module
@@ -568,10 +568,8 @@ function comment_new_page_count($num_comments, $new_replies, $node) {
+ * Returns HTML for a list of recent comments to be displayed in the comment block.

+++ modules/dashboard/dashboard.module
@@ -425,13 +419,11 @@ function theme_dashboard_region($variables) {
+ * Returns HTML for a set of disabled blocks, for display in dashboard customization mode.
  *
+++ modules/dashboard/dashboard.module
@@ -447,12 +439,11 @@ function theme_dashboard_disabled_blocks($variables) {
+ * Returns HTML for a disabled block, for display in dashboard customization mode.
+++ modules/field/modules/options/options.module
@@ -366,8 +366,15 @@ function options_field_widget_error($element, $error, $form, &$form_state) {
+ * Returns HTML for the label for the empty value for options that are not required.

+++ modules/node/content_types.inc
@@ -54,6 +54,17 @@ function node_overview_types() {
+/**
+ * Returns HTML for a node type description for the content type admin overview page.
+++ modules/poll/poll-bar--block.tpl.php
@@ -3,8 +3,7 @@
+ * HTML for the results bar for a single choice in a poll when displayed in a block.

Returns HTML .... (I guess)

+++ modules/profile/profile-listing.tpl.php
@@ -3,11 +3,7 @@
+ * HTML for a user and their profile data for member listing pages.

Same..

For the other examples above:
- Your patch needs a lot more wrapping
- Use always 3th person verbs

109 critical left. Go review some!

johnalbin’s picture

Thanks for the review, Bram! But I'm not sure what you want me to correct.

Your patch needs a lot more wrapping

Meaning what?

Use always 3th person verbs

Meaning I use verb like "returns"? That's the standard, isn't it? Hooks use "Implements" and we're trying to get theme functions to use "Returns". Or did you mean something else?

As for why the template files use "HTML for a…" instead of "Returns HTML for a…", I explained my reasoning in #21 above. But its up for discussion.

johnalbin’s picture

StatusFileSize
new137.35 KB

I said all theme functions not returning HTML have @return statements, but I forgot theme_syslog_format(). This patch corrects that.

jhodgdon’s picture

Status: Needs review » Needs work

Style problems with this patch:

a) All function doc should start with a 2nd-person verb. Such as:

 /**
- * Provide theme registration for themes across .inc files.
+ * Register theme hooks across .inc files and specify default values for variables.
  */
 function drupal_common_theme() {

Register -> Registers, specify -> specifies.

Another one:

 /**
  * Preprocess the rendered tree for theme_menu_tree.
  *
- * @ingroup themeable
+ * @see theme_menu_tree()
  */
 function template_preprocess_menu_tree(&$variables) {

Also on this one, theme_menu_tree -> theme_menu_tree(). The parens turn this into a link. Once you do that, you can remove the @see below.

Here's another one:

+ * Initialize the theme system given already loaded information.

There are quite a few other functions that also need fixing up in this way...

b)

+ *   - filename: The .info file for this theme. The 'path' to the theme will be
+ *     in this file's directory. (Required)
+ *   - owner: The path to the .theme file or the .engine file to load for the
+ *     theme. (Required)
+ *   - stylesheet: The primary stylesheet for the theme. (Optional)
+ *   - engine: The name of theme engine to use. (Optional)

In most existing functions where things are marked required/optional, we put the (optional) at the beginning rather than the end. Something like

+ *   - stylesheet: (optional) The primary stylesheet for the theme.

c)

  * @param $registry
- *   A registry array as returned by _theme_build_registry()
+ *   A registry array as returned by _theme_build_registry().
  * @return
- *   The theme registry array stored in memory
+ *   The theme registry array stored in memory.
  */

There should be a blank line between @param section and @return.

That's about where I stopped reviewing for style...

jhodgdon’s picture

I am also not sure I like some of the wording....

a)

 * @defgroup themeable Theming hooks

In the Handbook, these are referred to over and over as "Theme hooks" not "Theming hooks". Let's stay consistent. This wording is also used later in the group text (sometimes spelled as "themeing hooks").

b)

+ * Default template implementations are stored in the module's directory and are
+ * named HOOK.tpl.php.

Should we also mention that they can be in a theme subdirectory (is that accurate?)?

c)

   * named THEMENAME_HOOK. For example, for Drupal's default theme (Garland) to
+ * implement the 'table' hook, it would need to create a garland_table()
+ * function.

Shouldn't this say "or a table.tpl.php file"?

d)

- * @} End of "defgroup themeable".
+ * @}

Why take out the doc of what @} is ending?

e)

 /**
  * Generate the themed output.
  *

This is the first line for the theme() function. It's awkward to me with "the" in there... Maybe it should just be:
Generates themed output.

jhodgdon’s picture

Beyond all of that... Is this the standard we agreed upon for documenting theme functions and templates, and actually did we agree at all?

Our standards page is not agreeing with what is in this patch:
http://drupal.org/node/1354#themeable

sun’s picture

@jhodgdon: You sounded like you'd agree? I think we've reached a very sensible and solid consensus here.

We therefore should update that documentation chapter. Also, would it make sense to split all the theme hook docblock changes from the main themeable group documentation? The former can probably go in quickly, while the latter usually needs a couple of reviews and re-rolls. We could do both in this very issue, no need for a separate one.

jhodgdon’s picture

OK... #11 is the consensus, you're correct. I will update the doc page. Sorry, I was confused (Monday morning). :)

jhodgdon’s picture

So, scratch #28 - invalid, and I have updated the doxygen section.

#26 and #27 still need to be addressed.

johnalbin’s picture

Status: Needs work » Needs review
StatusFileSize
new86.61 KB

Ok. I've implemented all the suggestions in #26 and #27 in my working copy, but I've also decided to split this patch up into chunks like Sun suggests.

First patch: Fix all the theme function docs.
Second patch: Fix all the template docs.
Third patch: Fix other theme docs.

The first two patches should go quickly. Here's the first patch. It:

  1. Adds several theme functions that weren't in @themeable.
  2. Removes @themeable from functions that shouldn't need it.
  3. Moves the preprocess functions for theme_username to the bottom of theme.inc so that they are no longer inside the @ingroup themeable {@ @} grouping.
  4. Changes all of the theme function docblock short descriptions to use "Returns HTML for…" (also makes sure they are on one line). Unless the function doesn't return HTML; in which case, both the short description and the @return statement specify what is returned instead of HTML.
  5. Adds @param documentation for all theme functions that were missing it.
  6. Removes @return statements for theme functions that return HTML.

That's still a lot to review (86KB down from 137KB), but the patch is more focused and should be easier to review.

jhodgdon’s picture

Status: Needs review » Reviewed & tested by the community

Wow. Let's get this in. Great work, JohnAlbin!

dries’s picture

Status: Reviewed & tested by the community » Fixed

Committed to CVS HEAD. Thanks.

jhodgdon’s picture

Status: Fixed » Active

We need to leave this open for the two other patches mentioned in #32.

jhodgdon’s picture

Version: 7.x-dev » 8.x-dev
Issue tags: +Novice, +Needs backport to D7

I'm reviving this issue.

I would like to get rid of the theme.php files in the Documetation git repository, which have a bunch of lovely stuff like:

/**
 * Implemented using the aggregator-feed-source.tpl.php template.
 *
 * @see aggregator-feed-source.tpl.php
 */
function theme_aggregator_feed_source($variables) {
  // This function is never used; see the corresponding template file instead.
}

In order to do that and not lose what those theme.php files were trying to do, we need to get:

@ingroup themeable 

into all *.tpl.php files in modules -- but not overrides of these files that are part of themes.

This would be a good Novice issue, and I think it should be backported to Drupal 7.

I'll update the issue summary with a pointer to this comment.

jhodgdon’s picture

Issue summary is updated...

Also I'm provisionally un-assigning this since John hasn't done anything on it for a while. John: Feel free to claim it again, but keep in mind it's a great issue for a novice contributor. :)

jhodgdon’s picture

Issue summary: View changes

Add an issue summary

rootwork’s picture

Assigned: johnalbin » rootwork

Soooo...based on jhodgdon's comment in #37 I'm assigning this to myself for the code sprint day -- I hope I'm not stepping on anyone's toes :)

rootwork’s picture

Status: Active » Needs review
StatusFileSize
new7.88 KB

Here is a patch that updates all the .tpl.php files that weren't already updated.

rootwork’s picture

Assigned: rootwork » Unassigned

Setting this back to unassigned since the test passed. Still needs review, of course.

jhodgdon’s picture

Status: Needs review » Needs work

Thanks! Looks good.

Let's see. I can list what is currently in the themeable group here (without this patch):
http://api.drupal.org/api/drupal/core!modules!system!theme.api.php/group...
Hm. Only 10 files...

A quick ls | grep finds 35 .tpl.php files that probably should be listed in core/modules, and I think these ones are missing from the patch:
modules/system/page.tpl.php
modules/system/region.tpl.php

There are also 3 test-related tpl.php files that I are omitted and I think should be, so that is it. Let's get those two in. Thanks!

rootwork’s picture

Status: Needs work » Needs review
StatusFileSize
new8.57 KB

Rerolled patch with the two files I missed.

jhodgdon’s picture

Status: Needs review » Reviewed & tested by the community

Thanks, looks good! I'll get this committed sometime soon. It affects a bunch of files so I will need to check the review queue and not clobber any critical patches.

rootwork’s picture

Status: Reviewed & tested by the community » Needs review

Awesome! Glad I could help, even if it was with this silly little patch :)

rootwork’s picture

Status: Needs review » Reviewed & tested by the community

Oops. Fixing status back.

jhodgdon’s picture

Status: Reviewed & tested by the community » Needs work

The patch no longer applies :(

patching file core/modules/system/page.tpl.php
Hunk #1 FAILED at 64.
1 out of 1 hunk FAILED -- saving rejects to file core/modules/system/page.tpl.php.rej
jhodgdon’s picture

This patch needs a reroll.

rootwork’s picture

Status: Needs work » Needs review
Issue tags: +drupaldelphia2012
StatusFileSize
new6.64 KB

I think I did this correctly...at the very least this little issue is giving me lots of practice with git and core patches!

disasm’s picture

Status: Needs review » Needs work
+++ b/core/modules/comment/comment-wrapper.tpl.php
@@ -33,6 +33,8 @@
+ * @ingroup themable

I'm not a 100% sure, but looking at other modules such as core/modules/user/user.module, I think this should be themeable not themable. This will need fixed for all of the lines.

killtheliterate’s picture

Status: Needs work » Needs review
StatusFileSize
new6.63 KB

Re-rolled. Applies cleanly at ea1b955.

killtheliterate’s picture

StatusFileSize
new6.02 KB
new6.65 KB

Addresses #49.

jhodgdon’s picture

Status: Needs review » Reviewed & tested by the community

Looks good! I'll get this committed shortly. Thanks all!

jhodgdon’s picture

Version: 8.x-dev » 6.x-dev
Status: Reviewed & tested by the community » Patch (to be ported)
Issue tags: +Needs backport to D6

Thanks again -- committed to 7.x and 8.x. I'll go take care of this follow-up now too:
#1490474: Remove theme.php files [when template files have right @ingroup]

We do need to backport this to 6.x though. Probably it will involve starting over and adding the @ingroup themeable to all of the modules/*/*.tpl.php files manually rather than trying to use this patch.

jhodgdon’s picture

Issue summary: View changes

add task to list

jhodgdon’s picture

Version: 6.x-dev » 7.x-dev
Status: Patch (to be ported) » Closed (fixed)

I am cleaning up old 6.x documentation issues. At this point, we are not spending effort fixing them. Sorry.

This one was 8/7 first so setting back to that.