TODO: update the "Migrating themes from Drupal 4.6 to Drupal HEAD"-page in
the Drupal handbook!
TODO: update the themes in the contributions repository.
Changes include:
* parsing of the primary/secondary links has been moved out of phptemplate and into theme_get_setting.
* unnecessary and XHTML-invalidating duplicate div#help removed from themes/bluemarine/page.tpl.php (this is already generated by theme_help)
* weird generation of the "edit primary/secondary links" messages removed from bluemarine and placed in theme.inc
* unnecessary changes to themes/bluemarine/style.css rolled back (the phptemplate bluemarine had an older version of style.css than the one in core)
* chameleon updated to work with new link scheme (passes links through theme_links)
- Converted the Bluemarine theme from XTemplate to PHPTemplate.
- Moved the the Pushbutton theme and the Xtemplate engine to the contributions repository.
* Less logic in theme code.
* Encourages use of the menu system.
* Easier to find where a title or breadcrumb comes from in other people's code because there are less places to look. Look in menu and then grep for the appropriate set function. Looking for calls to theme_page() is hard because there are too many of them.
* Very slightly more efficient.
1) Clean up the text analyser: make it handle UTF-8 and all sorts of characters. The word splitter now does intelligent splitting into words and supports all Unicode characters. It has smart handling of acronyms, URLs, dates, ...
2) It now indexes the filtered output, which means it can take advantage of HTML tags. Meaningful tags (headers, strong, em, ...) are analysed and used to boost certain words scores. This has the side-effect of allowing the indexing of PHP nodes.
3) Link analyser for node links. The HTML analyser also checks for links. If they point to a node on the current site (handles path aliases) then the link's words are counted as part of the target node. This helps bring out commonly linked FAQs and answers to the top of the results.
4) Index comments along with the node. This means that the search can make a difference between a single node/comment about 'X' and a whole thread about 'X'. It also makes the search results much shorter and more relevant (before this patch, comments were even shown first).
5) We now keep track of total counts as well as a per item count for a word. This allows us to divide the word score by the total before adding up the scores for different words, and automatically makes noisewords have less influence than rare words. This dramatically improves the relevancy of multiword searches. This also makes the disadvantage of now using OR searching instead of AND searching less problematic.
6) Includes support for text preprocessors through a hook. This is required to index Chinese and Japanese, because these languages do not use spaces between words. An external utility can be used to split these into words through a simple wrapper module. Other uses could be spell checking (although it would have no UI).
7) Indexing is now regulated: only a certain amount of items will be indexed per cron run. This prevents PHP from running out of memory or timing out. This also makes the reindexing required for this patch automatic. I also added an index coverage estimate to the search admin screen.
8) Code cleanup! Moved all the search stuff from common.inc into search.module, rewired some hooks and simplified the functions used. The search form and results now also use valid XHTML and form_ functions. The search admin was moved from search/configure to admin/search for consistency.
9) Improved search output: we also show much more info per item: date, author, node type, amount of comments and a cool dynamic excerpt à la Google. The search form is now much more simpler and the help is only displayed as tips when no search results are found.
10) By moving all search logic to SQL, I was able to add a pager to the search results. This improves usability and performance dramatically.
- Fixed separate styles: added theme_get_styles() and the xtemplate {styles} tag to make sure stylesheets get included in the right order (drupal-specific, template-specific, style-specific).
- Fixing missing class on screenshots.
- Renamed drupal_get_theme_setting() and drupal_get_theme_settings() to theme_get_setting() and theme_get_settings().
+ removes 'toggle_search' from the features array in chameleon.theme
+ merges changes to bluemarine from just a couple of hours before template patch was committed
- Restoring background coloring for the watchdog logs (was broken)
- Making watchdog backgrounds lighter, makes it easier on the eyes and improves readability.
- Adjusted the spacing between items on the frontpage a bit to be clearer.
- Fixed the vertical stretching of table rows with form controls in them.
http://drupal.org/files/issues/error_messages_list.png (issue #9138).
drupal_set_message() has been changed to group message by type and a
helper function, theme_status_message(), is added to display the messages.
Chameleon and Xtemplate have been updated to use this new function.
- Updated CHANGELOG.txt.
stand out a bit better by using green-ish and red-ish colors, resp.
for 'success' and 'failure'.
- Small change to the way context-sensitive help texts are emitted -
the pages wouldn't validate in the presence of help texts with
block-level elements.
+ Changed menu.inc to generate two separate lists instead of nested lists:
that seems to be the only alternative to get rid of absolute positioning.
+ Changed the tabs code to be more sexy and put the code in misc/drupal.css
so all themes are automagically updated.
CHANGES
-------
+ Introduced tabs. First, we extended the menu system to support tabs. Next, a tab was added for every link that was (1) an administrative action other than the implicit 'view' (2) relevant to that particular page only. This is illustrated by the fact that all tabs are verbs and that clicking a page's tab leads you to a subpage of that page.
+ Flattened the administration menu. The tabs helped simplify the navigation menu as I could separate 'actions' from 'navigation'. In addition, I removed the 'administer > configuration'-menu, renamed 'blocks' to 'sidebars' which I hope is a bit more descriptive, and made a couple more changes. Earlier, we already renamed 'taxonomy' to 'categorization' and we move 'statistics' under 'logs'.
+ Grouped settings. All settings have been grouped under 'administer > settings'.
TODO
----
+ Update core themes: only Xtemplate default supports tabs and even those look ugly. Need help.
+ Update contributed modules. The menu() hook changed drastically. Updating your code adhere the new menu() function should be 90% of the work. Moreover, ensure that your modue's admin links are still valid and that URLs to node get updated to the new scheme ('node/view/x' -> 'node/x').
made it possible to enforce a username/e-mail address. Based on
James Seng's work there are now 3 radio buttons:
( ) Anonymous users may not enter contact information
( ) Anonymous users may leave contact information
( ) Anonymous users must leave contact information
- Fixed a bug in the default theme_comment_view() function.
- Added permalinks for comments. Requested by Michael and Christina.
Maintainers of contributed themes might want to add permalinks too.
TODO:
- Fix the interaction design of the submission form: the page you are
directed to and the validation of the contact information.
- Changing the comment viewing options appears to be broken?
and assigns the classes to header and footer. Also renamed a few elements to
make them more logical/consistent. Plus added search id around search area,
and a few other minor improvements.
+ Added a 'created' field to the users table and renamed the 'timestamp'
fied to 'changed' (cfr. node table). Update.php will try to determine
a 'created' timestamp for existing users.
+ The profile module no longer uses serialized data but has its own set
of tables. Known existing profile data is migrated by these new tables.
TODO: migrate the birthday field.
+ The profile fields can be grouped, and within each group, profile fields
can be sorted using weights.
+ The profile pages can be themed.
+ The profiles can be browsed based on certain properties/settings.
+ Change the _user hook: (i) 'private_view' and 'public_view' are merged
into 'view' as there are no private fields and (ii) 'edit_form' has
been renamed to 'edit'.
+ Avatar handling has been refactored and is now part of the user module.
The users table has a dedicted 'picture' field.
+ Simplified the way themes should use display/visualize pictures or
avatars.
+ Made it possible for administrators to replace or delete avatars.
+ ...
I hope this make for a good base to build on collectively.
in the header icon is missing. The path for this image is in the XHTML
file, when the images were moved out of the "image" directory, the XHTML
file was not updated.
in a subdirectory. This makes it easier to clone/fork an existing theme.
Modified patch by MegaGrunt.
- Added some help text, reorganized the Xtemplate configuration page, added
<legend>/<fieldset> tags, fixed a logo bug.
- Adds drupal_set_header() and drupal_get_headers().
- Cache now stores custom headers.
- Replace theme_head() with drupal_get_html_head(), added drupal_set_html_head().
- Added RSS autodiscover links to node, blog and taxonomy pages.
- Added support for new tags:
+ Optinal feed image: <image> tag.
+ Dublin core dates: <dc:date> <dcterms:created>, <dcterms:issued>,
<dcterms:modified>.
- Usability improvements:
+ On the administration page, made the feed/bundle titles link
to the feeds/bundles' pages. On the feed/bundle's page, made
the 'Last updated' field link to the administration page.
+ Moved the 'syndication' menu one level down.
- Updated some content sensitive help.
- Further improved themeability.
- Fixed some invalid HTML.
+ Added some a new theme fucntions to the aggregator to make it possible to
theme the aggregator page.
+ Removed the <table> and much hardcoded CSS as well as theme("box")-es.
+ Added the aggregator's theme functions to Doxygen's themeable group.
+ Added breadcrumb trails to the aggregator pages.
+ Updated the core themes to take advantages of the improved themeability.
Screenshot:
http://buytaert.net/temporary/aggregator-makeover.jpg
Contributed themes and modules need to be updated:
- modules: status() is no more; use drupal_set_message() instead.
- themes: use drupal_get_message() to check for status messages and
visualize them.
+ block_list() (in block.module): returns an array of block objects for
$region.
+ theme_blocks() (in theme.inc): uses block_list() and theme("block") to
actually render them.
Advantages:
+ Decouples blocks content and layout, allows block_list() to be used
for non-output purposes (think "pull").
+ Unifies naming in theme.inc: render_blocks()) didn't really fit there.
+ Puts block_list() in blocks.module where it logically belongs.
- Removed some cruft from the Xtemplate theme. Patch by Ax.
* Made all theme functions return their output.
* Removed sidebar configuration options. (Sidebar placement is not configured
through the block configuration screen.)
* Made all functions return their output.
* Made theme compatible with three column layouts.
* Fixed problem where blocks were not being rendered properly.
Some TODO's:
* The sidebars of theme Marvin and theme UnConeD look unstyled.
* CSS-ify theme UnConeD so we can remove the class around the functions.
* Rewrite theme_init() not to use a class and simplify theme()
accordingly.
- Improvement: removed a left-over from Drupal 4.2.0 (dead code).
- Improvement: replaced hard-coded XHTML around the XML icons with class="xml-icon".
- Improvement: removed the custom navigation menus shown at the top of the "user information page" and integrated them in the new navigation block. The "my account" link in the navigation menu will unfold. Also removed the "delete account" link/functionality (for now).
- Improvement: fix for "magic quotes" settings. Patch by Steven. I also removed check_php_settings().
- Improvement: block themability improvements. Modified patch from Ax and Steve/CodeMonkeyX.
- Fixed bug #2617: editing user information does not work. Patch by Kjartan.
> no changes in presentation, just a structure changes
>
> - removed inline styles from .xtmpl
> - removed duplicated #header class reference, renamed second one to #content as context$
> - simplified some CSS selectors (tested on IE and mozilla, please test on Opera, if pos$
> - some .class -> #class
Note: tested on Opera; couldn't spot any differences.
PostgreSQL and MSSQL database scheme as well.
- Made sure the update script updates the correct tables when database
prefixing is enabled. Patch by Bart Jansens.
- Improved the breadcrumb navigation of the book and the forum module as per
Keith Instone's suggestions.
- Updated page titles (or block titles) and links to match. Suggested by
Keith Instone.
- Added missing 'thread' field to the comment table of the MySQL database scheme.
Fixes bug #2590.
2) Beautified the forum module views; rewritten to use the table() rendering functions, X HTML-ified the emitted code, added additional CSS tags, and removed hard-coded markup. This improves themeabality; it should be able to mimic the view and color scheme of, say, http://www.phpbb.com/.
3) Reorganized forms and links (interactive elements) to improve usability. Also ensured that the link names and page titles match.
4) Temporary removed container functionality: this simplified the work and eliminated some usability issues.
- Applied modified version of mathias' 0073 patch: node form name.
$params["options"] is now an array so some contrib modules might
need minor changes.
- Applied mathhias' 0074 patch: missing access check on who is new
block.
- Bugfix: block patch fix. Patch by Gerhard.
- Bugfix: fixed broken URL in ping. Patch by Gerhard.
(This should fix the problems shown on http://www.blo.gs/info.php?id=1515.)
- Improvement: added better password generator. Patch #1 by Al. Fixes bug
#1935.
- Improvement: performance improvement to the blog module. Patch by Marco.
- Improvement: renamed some theme functions of the forum module for sake of consistency/readability. Patch #2 by Kristjan.
- Improvement: usability improvements to the Xtemplate theme. Patch #3 by Kristjan.
- Improvement: CSS'ified the book module pages. Patch #3 by Al. (I simplified the "l
ocation" part. Al's approach gave you a bit more power but I'm not sure anyone wants
to change that. Besides, this will change as soon we integrate the menu system so I kept it easy for now.)
- added a subtle lineheight to nodes and #message
- removed specific link colors for taxonomy terms and node links. Found it confusing, specially in context with a:visited color.
- added a gray background, border and padding for <pre> tag, to make Drupal documentation pages more nicer.
- nested search form into <div>s in order to validate as XHTML Strict. Modified patch by Alastair.
- incorporated all of Alastair's patches to replace px-based padidngs with em-ones
- fixed the footer font size and Y-centered it
- removed class from seach <form>, put it in the surrounding <div> instead
- added class for submit
- simplified the search box's CSS, it is looking much more cleaner now
==> This fix requires to run update.php!
- Bugfix: made sessions work without warnings when register_globals is turned off. The solution is to use $_SESSION instead of session_register(). This fixes critical bug #1797. Patch by Marco.
- Bugfix: sometimes error messages where being discarded when previewing a node. Patch by Craig Courtney.
- Bugfix: fixed charset problems. This fixes critical bug #1549. Patch '0023.charset.patch' by Al.
- Code improvements: removed some dead code from the comment module. Patch by Marco.
- Documentation improvements: polished the node module help texts and form descriptions. Patch '0019.node.module.help.patch' by Al.
- CSS improvements all over the map! Patch '0021.more.css.patch' by Al.
- GUI improvements: improved the position of Druplicon in the admin menu. Patch '0020.admin.logo.patch' by Al.
- GUI improvements: new logos for theme Marvin and theme UnConeD. Logos by Kristjan Jansen.
- GUI improvements: small changes to the output emitted by the profile module. Suggestions by Steven Wittens.
- GUI improvements: small fixes to Xtemplate. Patch '0022.xtemplate.css.patch' by Al.
TODO:
- Some modules such as the buddy list module and the annotation module in the contributions repository are also using session_register(). They should be updated. We should setup a task on Drupal.
- There is code emitting '<div align="right">' which doesn't validate.
- Does our XML feeds validate with the charset changes?
- The forum module's SQL doesn't work properly on PostgreSQL.
to avoid XSS attacks! Patch by Al, Moshe, Marco, Kjartan and me.
- Bugfix: the admin module does now import drupal.css prior to admin.css.
Patch by me.
- Bugfix: the admin module was still emitting a <base href=""> tag. I
removed this as it is been taken care of by theme_head(); Patch by me.
- Bugfix: made the tracker module's pager only consider published pages.
Patch by Moshe.
- Bugfix: cured some typos in the comment module's help function. Patch by
Marco.
- Bugfix: fixed a typo in the pager_display() that caused optional
attributes to be discarded.
- Bugfix: made the Xtemplate emit empty boxes like any other theme does.
Patch by Al.
- Bugfix: fixed broken link on the statistics module's log page.
Reported by Kjartan.
- CSS improvements: made the HTML output emitted by the tracker module
look nicer. Patch by Moshe and Al.
- CSS improvements: added CSS classes for form elements. Patch by Al.
- CSS improvements: added a vertical gap between the last form item and the
submit button. Patch by Al. Note that Opera 6 is not picking up this
CSS but apparently others browsers such as Konqueror do.
- Xtemplate improvements: changed the color of the selected day in the
archive module's calendar. Patch by Al.
- Usability improvements: made the "birthday" field of the profile module
look nicer. Patch by Al.
------
- TODO: it might be a good idea to emit the following meta tag in the
theme_head() function:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
Currently, some themes (and modules!) emit this while others don't. This
would also make it possible to change the charset site-wide.
- TODO: now we added support for td.dark and td.light to drupal.css, maybe
it can be removed from admin.css as well as xtemplate.css?
- Fixed a typo in the MSSQL database scheme. Patch by Michael Frankowski.
- Removed dependency on "register_globals = on"! Patches by Michael Frankowski.
Notes:
+ Updated the patches to use $foo["bar"] instead of $foo['bar'].
+ Updated the INSTALL and CHANGELOG files as well.
- Tiny improvement to the "./scripts/code-clean.sh" script.
- <div> is not allowed within <span>.
- Reworked the header: the alignment/wrapping of the primary and secondary links actually works now and is a tad simpler.
- Removed all instances of '$user->nodes'.
- Committed Moshe's taxonomy patch - minus the node_compact_list() bit. It needs a bit more thought/work. This patch changes the links of taxonomy pages/feeds so update your custom code and themes accordingly!
Themes should now use "taxonomy_link("taxonomy terms", $node)" to get an array of taxonomy term links. The old construct is deprecated and should be changed.
// old theme blob:
if (function_exists("taxonomy_node_get_terms")) {
foreach (taxonomy_node_get_terms($node->nid) as $term) {
$terms[] = l($term->name, NULL, array(), "or=$term->tid");
}
}
// new theme blob:
if (module_exist("taxonomy")) {
$terms = taxonomy_link("taxonomy terms", $node);
}
// old URL:
http://foo.com/index.php?or=1,2
// new URL:
http://foo.com/?q=taxonomy/page/or/1,2
- Bad usage of css ID's: they may be used for a single element only,
but were used as #node, #block, which can occur multiple times in a
single page.
- Moved HTML from theme to template - thats what templates are all
about!
- Added support for head() hook
- Added support for diffentiating between boxes and blocks.
- Typo: secundary -> secondary
"This patch to theme.inc adds the ability for modules to insert HTML
into the <HEAD> section of all web pages. The additional modules in
this directory [ed: blog.module] demonstate possible uses for the
new _head() hook."
+ Changed the db_query() API.
+ Wrapped all links in l(), lm(), la(), ..., drupal_url() functions.
+ XHTML-ified some HTML.
+ Wrapped a lot of text in the administrative pages in a t()
function.
+ Replaced all $REQUEST_URI/$PATH_INFOs by request_uri().
+ Small bugfixes (eg. bug in book_export_html() and clean-ups (eg.
RSS code).
+ Fixed some bugs in the taxonomy module (eg. tree making bug), added
new functionality (eg. new APIs for use by other modules), included
Moshe's taxonomy extensions, and some documentation udpates.
+ ...
for the meta system. The patches add some extra functionality to the
comment system (for example, comments can be set read-only) and fix a
couple of small problems.
+ I integrated the required SQL updates from the varius *.mysql files
into the "update.php" script. Upgrading should be easy ...
+ I did not apply/commit the "user.diff" as requested by Marco ...
+ I didn't know what to do with "forum.module" and "forum2.module":
what do you want me to do with it Marco? Which one should go in?
+ Can we remove "node_index()" now; both from "node.module" and the
themes?
+ Thanks Marco!
Committing Changes by Moshe Weitzman:
- admin_user_account(), user_edit(), and user_view() no longer have any
hard code for authentication modules. instead authentication modules
implement the _user hook.
- fixed a couple 'help' typos.
- linked the 'REGISTER' text in the login block to the register page.
this page now advertises DA better if site employs DA.
- admins may now edit everything about a user account (was a feature
request).
- user #1 may now login immediately, in addition to receiving his
password via email.
Other changes:
- modules and themes are now enabled/disabled in the administrative /
settings / modules | themes pages. Requires SQL update and things must
be enabled before your site returns to normal. TODO: enable all
functionality. (For now just do UPDATE system SET status = 1;)
- removed $themes from conf.php.
- added a $theme->system() function where theme can specify settings.
All themes in the Drupal CVS have been updated to use this.
- added _system hook to modules. TODO: update modules to use this.
- changed strange use of sprintf to the usual strtr. The disadvantage of
sprintf is that it requires translations to keep the string order,
which may not be possible in all languages.
- an invalid/nonexisting theme in a user profile will now fallback to the
BaseTheme instead of crashing.
In all themes, except Marvin which already had $title, I put the $title first, because it's usually the thing the page is about:
"The future of weblogs? - Drop.org"
"Your account settings - Drop.org"
rather than the other way around, right?
+ Some improvements to make it look better on Windows. I don't
have Windows though so I can't really test it.
+ Fixed the character encoding and the doctype, and polished on
the XML well-formedness of the theme.
as this breaks revisions.
- modified link_node() to take a third parameter $main, which will be passed on
to _link hooks. This lets modules decide which links a node will get when
shown on the main page, or when not.
- updated themes to use the new syntax.
as this breaks revisions.
- modified link_node() to take a third parameter $main, which will be passed on
to _link hooks. This lets modules decide which links a node will get when
shown on the main page, or when not.
- updated themes to use the new syntax.