[Pkg-drupal-commits] r1911 - in /branches/drupal6: ./ debian/ includes/ misc/ misc/farbtastic/ modules/aggregator/ modules/block/ modules/blog/ modules/blogapi/ modules/book/ modules/color/ modules/comment/ modules/contact/ modules/dblog/ modules/filter/ modules/forum/ modules/help/ modules/locale/ modules/menu/ modules/node/ modules/openid/ modules/path/ modules/php/ modules/ping/ modules/poll/ modules/profile/ modules/search/ modules/statistics/ modules/syslog/ modules/system/ modules/taxonomy/ modules/throttle/ modules/tracker/ modules/translation/ modules/trigger/ modules/update/ modules/upload/ modules/user/ themes/bluemarine/ themes/chameleon/ themes/chameleon/marvin/ themes/garland/ themes/garland/minnelli/ themes/pushbutton/

luigi at users.alioth.debian.org luigi at users.alioth.debian.org
Mon Aug 11 17:16:46 UTC 2008


Author: luigi
Date: Mon Aug 11 17:16:46 2008
New Revision: 1911

URL: http://svn.debian.org/wsvn/pkg-drupal/?sc=1&rev=1911
Log:
New upstream release

Modified:
    branches/drupal6/.htaccess
    branches/drupal6/CHANGELOG.txt
    branches/drupal6/INSTALL.txt
    branches/drupal6/MAINTAINERS.txt
    branches/drupal6/debian/changelog
    branches/drupal6/includes/actions.inc
    branches/drupal6/includes/bootstrap.inc
    branches/drupal6/includes/common.inc
    branches/drupal6/includes/database.inc
    branches/drupal6/includes/database.pgsql.inc
    branches/drupal6/includes/file.inc
    branches/drupal6/includes/form.inc
    branches/drupal6/includes/locale.inc
    branches/drupal6/includes/mail.inc
    branches/drupal6/includes/menu.inc
    branches/drupal6/includes/theme.inc
    branches/drupal6/includes/xmlrpc.inc
    branches/drupal6/includes/xmlrpcs.inc
    branches/drupal6/install.php
    branches/drupal6/misc/drupal.js
    branches/drupal6/misc/farbtastic/farbtastic.js
    branches/drupal6/misc/jquery.js
    branches/drupal6/misc/tabledrag.js
    branches/drupal6/modules/aggregator/aggregator.admin.inc
    branches/drupal6/modules/aggregator/aggregator.info
    branches/drupal6/modules/aggregator/aggregator.module
    branches/drupal6/modules/block/block.admin.inc
    branches/drupal6/modules/block/block.info
    branches/drupal6/modules/block/block.module
    branches/drupal6/modules/blog/blog.info
    branches/drupal6/modules/blog/blog.module
    branches/drupal6/modules/blogapi/blogapi.info
    branches/drupal6/modules/book/book.admin.inc
    branches/drupal6/modules/book/book.info
    branches/drupal6/modules/book/book.module
    branches/drupal6/modules/color/color.info
    branches/drupal6/modules/comment/comment.admin.inc
    branches/drupal6/modules/comment/comment.info
    branches/drupal6/modules/comment/comment.module
    branches/drupal6/modules/comment/comment.tpl.php
    branches/drupal6/modules/contact/contact.info
    branches/drupal6/modules/contact/contact.module
    branches/drupal6/modules/dblog/dblog.info
    branches/drupal6/modules/dblog/dblog.module
    branches/drupal6/modules/filter/filter.info
    branches/drupal6/modules/filter/filter.module
    branches/drupal6/modules/forum/forum.info
    branches/drupal6/modules/forum/forum.install
    branches/drupal6/modules/forum/forum.module
    branches/drupal6/modules/help/help.info
    branches/drupal6/modules/help/help.module
    branches/drupal6/modules/locale/locale.info
    branches/drupal6/modules/locale/locale.module
    branches/drupal6/modules/menu/menu.info
    branches/drupal6/modules/menu/menu.module
    branches/drupal6/modules/node/node.admin.inc
    branches/drupal6/modules/node/node.info
    branches/drupal6/modules/node/node.install
    branches/drupal6/modules/node/node.module
    branches/drupal6/modules/node/node.pages.inc
    branches/drupal6/modules/openid/openid.info
    branches/drupal6/modules/openid/openid.module
    branches/drupal6/modules/openid/openid.pages.inc
    branches/drupal6/modules/path/path.info
    branches/drupal6/modules/path/path.module
    branches/drupal6/modules/php/php.info
    branches/drupal6/modules/ping/ping.info
    branches/drupal6/modules/poll/poll.info
    branches/drupal6/modules/poll/poll.module
    branches/drupal6/modules/profile/profile.info
    branches/drupal6/modules/profile/profile.module
    branches/drupal6/modules/search/search.info
    branches/drupal6/modules/search/search.module
    branches/drupal6/modules/statistics/statistics.info
    branches/drupal6/modules/syslog/syslog.info
    branches/drupal6/modules/syslog/syslog.module
    branches/drupal6/modules/system/admin.css
    branches/drupal6/modules/system/system.admin.inc
    branches/drupal6/modules/system/system.info
    branches/drupal6/modules/system/system.install
    branches/drupal6/modules/system/system.module
    branches/drupal6/modules/taxonomy/taxonomy.info
    branches/drupal6/modules/taxonomy/taxonomy.module
    branches/drupal6/modules/throttle/throttle.info
    branches/drupal6/modules/tracker/tracker.info
    branches/drupal6/modules/tracker/tracker.module
    branches/drupal6/modules/translation/translation.info
    branches/drupal6/modules/trigger/trigger.info
    branches/drupal6/modules/trigger/trigger.module
    branches/drupal6/modules/update/update.fetch.inc
    branches/drupal6/modules/update/update.info
    branches/drupal6/modules/upload/upload.info
    branches/drupal6/modules/user/user.info
    branches/drupal6/modules/user/user.module
    branches/drupal6/themes/bluemarine/bluemarine.info
    branches/drupal6/themes/chameleon/chameleon.info
    branches/drupal6/themes/chameleon/marvin/marvin.info
    branches/drupal6/themes/garland/garland.info
    branches/drupal6/themes/garland/minnelli/minnelli.info
    branches/drupal6/themes/pushbutton/pushbutton.info

Modified: branches/drupal6/.htaccess
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/.htaccess?rev=1911&op=diff
==============================================================================
--- branches/drupal6/.htaccess (original)
+++ branches/drupal6/.htaccess Mon Aug 11 17:16:46 2008
@@ -13,8 +13,13 @@
 # Follow symbolic links in this directory.
 Options +FollowSymLinks
 
-# Customized error messages.
+# Make Drupal handle any 404 errors.
 ErrorDocument 404 /index.php
+
+# Force simple error message for requests for non-existent favicon.ico.
+<Files favicon.ico>
+  ErrorDocument 404 "The requested file favicon.ico was not found.
+</Files>
 
 # Set the default handler.
 DirectoryIndex index.php
@@ -94,10 +99,11 @@
   # uncomment the following line:
   # RewriteBase /
 
-  # Rewrite URLs of the form 'index.php?q=x'.
+  # Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
+  RewriteCond %{REQUEST_URI} !=/favicon.ico
   RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
 </IfModule>
 
-# $Id: .htaccess,v 1.90 2007/10/05 14:43:23 dries Exp $
+# $Id: .htaccess,v 1.90.2.1 2008/07/08 09:33:14 goba Exp $

Modified: branches/drupal6/CHANGELOG.txt
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/CHANGELOG.txt?rev=1911&op=diff
==============================================================================
--- branches/drupal6/CHANGELOG.txt (original)
+++ branches/drupal6/CHANGELOG.txt Mon Aug 11 17:16:46 2008
@@ -1,4 +1,24 @@
-// $Id: CHANGELOG.txt,v 1.253.2.3 2008/02/13 14:25:42 goba Exp $
+// $Id: CHANGELOG.txt,v 1.253.2.9 2008/07/09 21:48:27 goba Exp $
+
+Drupal 6.3, 2008-07-09
+----------------------
+- fixed security issues, (Cross site scripting, cross site request forgery, session fixation and SQL injection), see SA-2008-044
+- slightly modified installation process to prevent file ownership issues on shared hosts
+- improved PostgreSQL compatibility (rewritten queries; custom blocks)
+- upgraded to jQuery 1.2.6
+- performance improvements to search, menu handling and form API caches
+- fixed Views compatibility issues (Views for Drupal 6 requires Drupal 6.3+)
+- fixed a variety of small bugs.
+
+Drupal 6.2, 2008-04-09 
+----------------------
+- fixed a variety of small bugs
+- fixed a security issue (Access bypasses), see SA-2008-026
+
+Drupal 6.1, 2008-02-27
+----------------------
+- fixed a variety of small bugs.
+- fixed a security issue (Cross site scripting), see SA-2008-018
 
 Drupal 6.0, 2008-02-13
 ----------------------
@@ -100,6 +120,11 @@
 - Removed old system updates. Updates from Drupal versions prior to 5.x will
   require upgrading to 5.x before upgrading to 6.x.
 
+Drupal 5.8, 2008-07-09
+----------------------
+- fixed a variety of small bugs.
+- fixed security issues, (Cross site scripting, cross site request forgery, and session fixation), see SA-2008-044
+
 Drupal 5.7, 2008-01-28
 ----------------------
 - fixed the input format configuration page.

Modified: branches/drupal6/INSTALL.txt
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/INSTALL.txt?rev=1911&op=diff
==============================================================================
--- branches/drupal6/INSTALL.txt (original)
+++ branches/drupal6/INSTALL.txt Mon Aug 11 17:16:46 2008
@@ -1,4 +1,4 @@
-// $Id: INSTALL.txt,v 1.61.2.2 2008/02/07 20:46:56 goba Exp $
+// $Id: INSTALL.txt,v 1.61.2.4 2008/07/09 19:15:59 goba Exp $
 
 CONTENTS OF THIS FILE
 ---------------------
@@ -28,8 +28,8 @@
 a variety of operating systems and web servers, see "Local server setup"
 (http://drupal.org/node/157602) in the Drupal handbook.
 
-OPTIONAL REQUIREMENTS
----------------------
+OPTIONAL TASKS
+--------------
 
 - To use XML-based services such as the Blogger API and RSS syndication,
   you will need PHP's XML extension. This extension is enabled by default.
@@ -74,13 +74,27 @@
    http://drupal.org/project/translations and download the package. Extract
    the contents to the same directory where you extracted Drupal into.
 
-2. GRANT WRITE PERMISSIONS ON CONFIGURATION FILE
+2. CREATE THE CONFIGURATION FILE AND GRANT WRITE PERMISSIONS
 
    Drupal comes with a default.settings.php file in the sites/default
-   directory. The installer will create a copy of this file filled with
-   the details you provide through the install process, in the same
-   directory. Give the web server write privileges to the sites/default
-   directory with the command (from the installation directory):
+   directory. The installer uses this file as a template to create your
+   settings file using the details you provide through the install process.
+   To avoid problems when upgrading, Drupal is not packaged with an actual
+   settings file. You must create a file named settings.php. You may do so
+   by making a copy of default.settings.php (or create an empty file with
+   this name in the same directory). For example, (from the installation
+   directory) make a copy of the default.settings.php file with the command:
+
+     cp sites/default/default.settings.php sites/default/settings.php
+
+   Next, give the web server write privileges to the sites/default/settings.php
+   file with the command (from the installation directory):
+
+     chmod o+w sites/default/settings.php
+
+  So that the files directory can be created automatically, give the web server
+  write privileges to the sites/default directory with the command (from the
+  installation directory):
 
      chmod o+w sites/default
 
@@ -117,11 +131,17 @@
      mkdir sites/default/files
      chmod o+w sites/default/files
 
-   The install script will attempt to write-protect the sites/default
-   directory after creating the settings.php file. If you make manual
-   changes to that file later, be sure to protect it again after making
-   your modifications. Failure to remove write permissions to that file
-   is a security risk. Although the default location for the settings.php
+   The install script will attempt to write-protect the settings.php file and
+   the sites/default directory after saving your configuration. However, you
+   may need to manually write-protect them using the commands (from the
+   installation directory):
+
+     chmod a-w sites/default/settings.php
+     chmod a-w sites/default
+
+   If you make manual changes to the file later, be sure to protect it again
+   after making your modifications. Failure to remove write permissions to that
+   file is a security risk. Although the default location for the settings.php
    file is at sites/default/settings.php, it may be in another location
    if you use the multi-site setup, as explained below.
 
@@ -182,7 +202,7 @@
    unexpected problems on an existing site. If you modify the file system path
    on an existing site, remember to copy all files from the original location
    to the new location.
-   
+
    Some administrators suggest making the documentation files, especially
    CHANGELOG.txt, non-readable so that the exact version of Drupal you are
    running is slightly more difficult to determine. If you wish to implement

Modified: branches/drupal6/MAINTAINERS.txt
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/MAINTAINERS.txt?rev=1911&op=diff
==============================================================================
--- branches/drupal6/MAINTAINERS.txt (original)
+++ branches/drupal6/MAINTAINERS.txt Mon Aug 11 17:16:46 2008
@@ -1,4 +1,4 @@
-// $Id: MAINTAINERS.txt,v 1.19 2008/02/04 10:26:49 goba Exp $
+// $Id: MAINTAINERS.txt,v 1.19.2.1 2008/05/15 22:13:42 dries Exp $
 
 List of maintainers
 --------------------------------------------------------------------------------
@@ -14,7 +14,6 @@
                         do much other than throw the odd patch in.
       "orphan"        : no current maintainer, but maybe you could take
                         the role as you write new code?
-- W: website with status or information
 
 --------------------------------------------------------------------------------
 

Modified: branches/drupal6/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/debian/changelog?rev=1911&op=diff
==============================================================================
--- branches/drupal6/debian/changelog (original)
+++ branches/drupal6/debian/changelog Mon Aug 11 17:16:46 2008
@@ -1,3 +1,11 @@
+drupal6 (6.3-1) UNRELEASED; urgency=low
+
+  * (NOT RELEASED YET)
+  
+  * New upstream release
+
+ -- Luigi Gangitano <luigi at debian.org>  Mon, 11 Aug 2008 19:16:04 +0200
+
 drupal6 (6.0-1) UNRELEASED; urgency=low
 
   [ Luigi Gangitano ]

Modified: branches/drupal6/includes/actions.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/includes/actions.inc?rev=1911&op=diff
==============================================================================
--- branches/drupal6/includes/actions.inc (original)
+++ branches/drupal6/includes/actions.inc Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: actions.inc,v 1.8 2007/12/31 14:51:04 goba Exp $
+// $Id: actions.inc,v 1.8.2.1 2008/04/23 18:06:36 dries Exp $
 
 /**
  * @file
@@ -43,7 +43,7 @@
   static $stack;
   $stack++;
   if ($stack > variable_get('actions_max_stack', 35)) {
-    watchdog('actions', 'Stack overflow: too many calls to actions_do(). Aborting to prevent infinite recursion.', WATCHDOG_ERROR);
+    watchdog('actions', 'Stack overflow: too many calls to actions_do(). Aborting to prevent infinite recursion.', array(), WATCHDOG_ERROR);
     return;
   }
   $actions = array();

Modified: branches/drupal6/includes/bootstrap.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/includes/bootstrap.inc?rev=1911&op=diff
==============================================================================
--- branches/drupal6/includes/bootstrap.inc (original)
+++ branches/drupal6/includes/bootstrap.inc Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: bootstrap.inc,v 1.206.2.2 2008/02/11 14:36:21 goba Exp $
+// $Id: bootstrap.inc,v 1.206.2.3 2008/07/09 19:15:59 goba Exp $
 
 /**
  * @file
@@ -279,6 +279,11 @@
 
   if (file_exists('./'. conf_path() .'/settings.php')) {
     include_once './'. conf_path() .'/settings.php';
+  }
+
+  // Ignore the placeholder url from default.settings.php.
+  if (isset($db_url) && $db_url == 'mysql://username:password@localhost/databasename') {
+    $db_url = '';
   }
 
   if (isset($base_url)) {

Modified: branches/drupal6/includes/common.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/includes/common.inc?rev=1911&op=diff
==============================================================================
--- branches/drupal6/includes/common.inc (original)
+++ branches/drupal6/includes/common.inc Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: common.inc,v 1.756.2.4 2008/02/13 14:25:42 goba Exp $
+// $Id: common.inc,v 1.756.2.20 2008/07/09 21:48:27 goba Exp $
 
 /**
  * @file
@@ -260,7 +260,7 @@
  *
  * Usually the redirected URL is constructed from this function's input
  * parameters. However you may override that behavior by setting a
- * <em>destination</em> in either the $_REQUEST-array (i.e. by using
+ * destination in either the $_REQUEST-array (i.e. by using
  * the query string of an URI) or the $_REQUEST['edit']-array (i.e. by
  * using a hidden form field). This is used to direct the user back to
  * the proper page after completing a form. For example, after editing
@@ -571,8 +571,8 @@
  * - 1 = Log errors to database and to screen.
  */
 function drupal_error_handler($errno, $message, $filename, $line, $context) {
-  // If the @ error suppression operator was used, error_reporting is
-  // temporarily set to 0.
+  // If the @ error suppression operator was used, error_reporting will have
+  // been temporarily set to 0.
   if (error_reporting() == 0) {
     return;
   }
@@ -1225,27 +1225,27 @@
  *   '<front>' may also be given and will generate the site's base URL.
  * @param $options
  *   An associative array of additional options, with the following keys:
- *     'query'
+ *   - 'query'
  *       A query string to append to the link, or an array of query key/value
  *       properties.
- *     'fragment'
+ *   - 'fragment'
  *       A fragment identifier (or named anchor) to append to the link.
  *       Do not include the '#' character.
- *     'absolute' (default FALSE)
+ *   - 'absolute' (default FALSE)
  *       Whether to force the output to be an absolute link (beginning with
  *       http:). Useful for links that will be displayed outside the site, such
  *       as in an RSS feed.
- *     'alias' (default FALSE)
+ *   - 'alias' (default FALSE)
  *       Whether the given path is an alias already.
- *     'external'
+ *   - 'external'
  *       Whether the given path is an external URL.
- *     'language'
+ *   - 'language'
  *       An optional language object. Used to build the URL to link to and
  *       look up the proper alias for the link.
- *     'base_url'
+ *   - 'base_url'
  *       Only used internally, to modify the base URL when a language dependent
  *       URL requires so.
- *     'prefix'
+ *   - 'prefix'
  *       Only used internally, to modify the path when a language dependent URL
  *       requires so.
  * @return
@@ -1406,23 +1406,23 @@
  *       used as is.
  * @param $options
  *   An associative array of additional options, with the following keys:
- *     'attributes'
+ *     - 'attributes'
  *       An associative array of HTML attributes to apply to the anchor tag.
- *     'query'
+ *     - 'query'
  *       A query string to append to the link, or an array of query key/value
  *       properties.
- *     'fragment'
+ *     - 'fragment'
  *       A fragment identifier (named anchor) to append to the link.
  *       Do not include the '#' character.
- *     'absolute' (default FALSE)
+ *     - 'absolute' (default FALSE)
  *       Whether to force the output to be an absolute link (beginning with
  *       http:). Useful for links that will be displayed outside the site, such
  *       as in an RSS feed.
- *     'html' (default FALSE)
+ *     - 'html' (default FALSE)
  *       Whether the title is HTML, or just plain-text. For example for making
  *       an image a link, this must be set to TRUE, or else you will see the
  *       escaped HTML.
- *     'alias' (default FALSE)
+ *     - 'alias' (default FALSE)
  *       Whether the given path is an alias already.
  * @return
  *   an HTML string containing a link to the given path.
@@ -1584,11 +1584,6 @@
 /**
  * Adds a CSS file to the stylesheet queue.
  *
- * Themes may replace module-defined CSS files by adding a stylesheet with the
- * same filename. For example, themes/garland/system-menus.css would replace
- * modules/system/system-menus.css. This allows themes to override complete
- * CSS files, rather than specific selectors, when necessary.
- *
  * @param $path
  *   (optional) The path to the CSS file relative to the base_path(), e.g.,
  *   /modules/devel/devel.css.
@@ -1597,6 +1592,7 @@
  *   name, for example: system-menus.css rather than simply menus.css. Themes
  *   can override module-supplied CSS files based on their filenames, and this
  *   prefixing helps prevent confusing name collisions for theme developers.
+ *   See drupal_get_css where the overrides are performed.
  *
  *   If the direction of the current language is right-to-left (Hebrew,
  *   Arabic, etc.), the function will also look for an RTL CSS file and append
@@ -1605,10 +1601,6 @@
  *   file added to the list, if exists in the same directory. This CSS file
  *   should contain overrides for properties which should be reversed or
  *   otherwise different in a right-to-left display.
- *
- *   If the original CSS file is being overridden by a theme, the theme is
- *   responsible for supplying an accompanying RTL CSS file to replace the
- *   module's.
  * @param $type
  *   (optional) The type of stylesheet that is being added. Types are: module
  *   or theme.
@@ -1651,30 +1643,6 @@
     if (!isset($css[$media])) {
       $css[$media] = array('module' => array(), 'theme' => array());
     }
-
-    // If a theme is adding the current stylesheet, check for any existing CSS files
-    // with the same name. If they exist, remove them and allow the theme's own CSS
-    // file to replace it.
-    if ($type == 'theme') {
-      foreach ($css[$media]['module'] as $old_path => $old_preprocess) {
-        // Match by style sheet name.
-        if (basename($path) == basename($old_path)) {
-          unset($css[$media]['module'][$old_path]);
-
-          // If the current language is RTL and the CSS file had an RTL variant,
-          // pull out the original. The theme must provide its own RTL style.
-          if (defined('LANGUAGE_RTL') && $language->direction == LANGUAGE_RTL) {
-            $rtl_old_path = str_replace('.css', '-rtl.css', $old_path);
-            if (isset($css[$media]['module'][$rtl_old_path])) {
-              unset($css[$media]['module'][$rtl_old_path]);
-            }
-          }
-          // Set the preprocess state of the current module, then exit the search loop.
-          $preprocess = $old_preprocess;
-          break;
-        }
-      }
-    }
     $css[$media][$type][$path] = $preprocess;
 
     // If the current language is RTL, add the CSS file with RTL overrides.
@@ -1692,9 +1660,18 @@
 /**
  * Returns a themed representation of all stylesheets that should be attached to the page.
  *
- * It loads the CSS in order, with 'core' CSS first, then 'module' CSS, then
- * 'theme' CSS files. This ensures proper cascading of styles for easy
- * overriding in modules and themes.
+ * It loads the CSS in order, with 'module' first, then 'theme' afterwards.
+ * This ensures proper cascading of styles so themes can easily override
+ * module styles through CSS selectors.
+ *
+ * Themes may replace module-defined CSS files by adding a stylesheet with the
+ * same filename. For example, themes/garland/system-menus.css would replace
+ * modules/system/system-menus.css. This allows themes to override complete
+ * CSS files, rather than specific selectors, when necessary.
+ *
+ * If the original CSS file is being overridden by a theme, the theme is
+ * responsible for supplying an accompanying RTL CSS file to replace the
+ * module's.
  *
  * @param $css
  *   (optional) An array of CSS files. If no array is provided, the default
@@ -1724,20 +1701,37 @@
     // If CSS preprocessing is off, we still need to output the styles.
     // Additionally, go through any remaining styles if CSS preprocessing is on and output the non-cached ones.
     foreach ($types as $type => $files) {
+      if ($type == 'module') {
+        // Setup theme overrides for module styles.
+        $theme_styles = array();
+        foreach (array_keys($css[$media]['theme']) as $theme_style) {
+          $theme_styles[] = basename($theme_style);
+        }
+      }
       foreach ($types[$type] as $file => $preprocess) {
-        if (!$preprocess || !($is_writable && $preprocess_css)) {
-          // If a CSS file is not to be preprocessed and it's a module CSS file, it needs to *always* appear at the *top*,
-          // regardless of whether preprocessing is on or off.
-          if (!$preprocess && $type == 'module') {
-            $no_module_preprocess .= '<link type="text/css" rel="stylesheet" media="'. $media .'" href="'. base_path() . $file . $query_string .'" />'."\n";
-          }
-          // If a CSS file is not to be preprocessed and it's a theme CSS file, it needs to *always* appear at the *bottom*,
-          // regardless of whether preprocessing is on or off.
-          else if (!$preprocess && $type == 'theme') {
-            $no_theme_preprocess .= '<link type="text/css" rel="stylesheet" media="'. $media .'" href="'. base_path() . $file . $query_string .'" />'."\n";
-          }
-          else {
-            $output .= '<link type="text/css" rel="stylesheet" media="'. $media .'" href="'. base_path() . $file . $query_string .'" />'."\n";
+        // If the theme supplies its own style using the name of the module style, skip its inclusion.
+        // This includes any RTL styles associated with its main LTR counterpart.
+        if ($type == 'module' && in_array(str_replace('-rtl.css', '.css', basename($file)), $theme_styles)) {
+          // Unset the file to prevent its inclusion when CSS aggregation is enabled.
+          unset($types[$type][$file]);
+          continue;
+        }
+        // Only include the stylesheet if it exists.
+        if (file_exists($file)) {
+          if (!$preprocess || !($is_writable && $preprocess_css)) {
+            // If a CSS file is not to be preprocessed and it's a module CSS file, it needs to *always* appear at the *top*,
+            // regardless of whether preprocessing is on or off.
+            if (!$preprocess && $type == 'module') {
+              $no_module_preprocess .= '<link type="text/css" rel="stylesheet" media="'. $media .'" href="'. base_path() . $file . $query_string .'" />'."\n";
+            }
+            // If a CSS file is not to be preprocessed and it's a theme CSS file, it needs to *always* appear at the *bottom*,
+            // regardless of whether preprocessing is on or off.
+            else if (!$preprocess && $type == 'theme') {
+              $no_theme_preprocess .= '<link type="text/css" rel="stylesheet" media="'. $media .'" href="'. base_path() . $file . $query_string .'" />'."\n";
+            }
+            else {
+              $output .= '<link type="text/css" rel="stylesheet" media="'. $media .'" href="'. base_path() . $file . $query_string .'" />'."\n";
+            }
           }
         }
       }
@@ -2019,10 +2013,10 @@
  * are added to the page. Then, all settings are output, followed by 'inline'
  * JavaScript code. If running update.php, all preprocessing is disabled.
  *
- * @parameter $scope
+ * @param $scope
  *   (optional) The scope for which the JavaScript rules should be returned.
  *   Defaults to 'header'.
- * @parameter $javascript
+ * @param $javascript
  *   (optional) An array with all JavaScript code. Defaults to the default
  *   JavaScript array for the given scope.
  * @return
@@ -2723,7 +2717,7 @@
   $elements += array('#title' => NULL, '#description' => NULL);
   if (!isset($elements['#children'])) {
     $children = element_children($elements);
-    /* Render all the children that use a theme function */
+    // Render all the children that use a theme function.
     if (isset($elements['#theme']) && empty($elements['#theme_used'])) {
       $elements['#theme_used'] = TRUE;
 
@@ -2747,7 +2741,7 @@
         $elements[$key] = isset($previous[$key]) ? $previous[$key] : NULL;
       }
     }
-    /* render each of the children using drupal_render and concatenate them */
+    // Render each of the children using drupal_render and concatenate them.
     if (!isset($content) || $content === '') {
       foreach ($children as $key) {
         $content .= drupal_render($elements[$key]);
@@ -3085,8 +3079,8 @@
  *   The module for which the tables will be created.
  * @return
  *   An array of arrays with the following key/value pairs:
- *      success: a boolean indicating whether the query succeeded
- *      query: the SQL query(s) executed, passed through check_plain()
+ *    - success: a boolean indicating whether the query succeeded.
+ *    - query: the SQL query(s) executed, passed through check_plain().
  */
 function drupal_install_schema($module) {
   $schema = drupal_get_schema_unprocessed($module);
@@ -3110,8 +3104,8 @@
  *   The module for which the tables will be removed.
  * @return
  *   An array of arrays with the following key/value pairs:
- *      success: a boolean indicating whether the query succeeded
- *      query: the SQL query(s) executed, passed through check_plain()
+ *    - success: a boolean indicating whether the query succeeded.
+ *    - query: the SQL query(s) executed, passed through check_plain().
  */
 function drupal_uninstall_schema($module) {
   $schema = drupal_get_schema_unprocessed($module);
@@ -3236,6 +3230,11 @@
     $update = array($update);
   }
 
+  $schema = drupal_get_schema($table);
+  if (empty($schema)) {
+    return FALSE;
+  }
+  
   // Convert to an object if needed.
   if (is_array($object)) {
     $object = (object) $object;
@@ -3243,11 +3242,6 @@
   }
   else {
     $array = FALSE;
-  }
-
-  $schema = drupal_get_schema($table);
-  if (empty($schema)) {
-    return FALSE;
   }
 
   $fields = $defs = $values = $serials = $placeholders = array();
@@ -3318,16 +3312,17 @@
         $object->$field = db_last_insert_id($table, $field);
       }
     }
-
-    // If we began with an array, convert back so we don't surprise the caller.
-    if ($array) {
-      $object = (array) $object;
-    }
-
-    return $return;
-  }
-
-  return FALSE;
+  }
+  else {
+    $return = FALSE;
+  }
+
+  // If we began with an array, convert back so we don't surprise the caller.
+  if ($array) {
+    $object = (array) $object;
+  }
+
+  return $return;
 }
 
 /**
@@ -3518,7 +3513,7 @@
  * Flush all cached data on the site.
  *
  * Empties cache tables, rebuilds the menu cache and theme registries, and
- * exposes a hook for other modules to clear their own cache data as well.
+ * invokes a hook so that other modules' cache data can be cleared as well.
  */
 function drupal_flush_all_caches() {
   // Change query-strings on css/js files to enforce reload for all users.
@@ -3526,6 +3521,7 @@
 
   drupal_clear_css_cache();
   drupal_clear_js_cache();
+  system_theme_data();
   drupal_rebuild_theme_registry();
   menu_rebuild();
   node_types_rebuild();

Modified: branches/drupal6/includes/database.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/includes/database.inc?rev=1911&op=diff
==============================================================================
--- branches/drupal6/includes/database.inc (original)
+++ branches/drupal6/includes/database.inc Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: database.inc,v 1.92.2.1 2008/02/08 22:44:59 goba Exp $
+// $Id: database.inc,v 1.92.2.2 2008/07/09 21:48:28 goba Exp $
 
 /**
  * @file
@@ -210,6 +210,11 @@
       return (int) array_shift($args); // We don't need db_escape_string as numbers are db-safe
     case '%s':
       return db_escape_string(array_shift($args));
+    case '%n':
+      // Numeric values have arbitrary precision, so can't be treated as float.
+      // is_numeric() allows hex values (0xFF), but they are not valid.
+      $value = trim(array_shift($args));
+      return is_numeric($value) && !preg_match('/x/i', $value) ? $value : '0';
     case '%%':
       return '%';
     case '%f':
@@ -238,7 +243,7 @@
 /**
  * Indicates the place holders that should be replaced in _db_query_callback().
  */
-define('DB_QUERY_REGEXP', '/(%d|%s|%%|%f|%b)/');
+define('DB_QUERY_REGEXP', '/(%d|%s|%%|%f|%b|%n)/');
 
 /**
  * Helper function for db_rewrite_sql.
@@ -551,16 +556,14 @@
     case 'char':
     case 'text':
     case 'datetime':
-      return '\'%s\'';
+      return "'%s'";
 
     case 'numeric':
-      // For 'numeric' values, we use '%s', not '\'%s\'' as with
-      // string types, because numeric values should not be enclosed
-      // in quotes in queries (though they can be, at least on mysql
-      // and pgsql).  Numerics should only have [0-9.+-] and
-      // presumably no db's "escape string" function will mess with
-      // those characters.
-      return '%s';
+      // Numeric values are arbitrary precision numbers.  Syntacically, numerics
+      // should be specified directly in SQL. However, without single quotes
+      // the %s placeholder does not protect against non-numeric characters such
+      // as spaces which would expose us to SQL injection.
+      return '%n';
 
     case 'serial':
     case 'int':

Modified: branches/drupal6/includes/database.pgsql.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/includes/database.pgsql.inc?rev=1911&op=diff
==============================================================================
--- branches/drupal6/includes/database.pgsql.inc (original)
+++ branches/drupal6/includes/database.pgsql.inc Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: database.pgsql.inc,v 1.68.2.1 2008/02/07 10:17:26 goba Exp $
+// $Id: database.pgsql.inc,v 1.68.2.2 2008/07/08 09:50:03 goba Exp $
 
 /**
  * @file
@@ -418,10 +418,14 @@
  * @return SQL query with the DISTINCT wrapper surrounding the given table.field.
  */
 function db_distinct_field($table, $field, $query) {
-  $field_to_select = 'DISTINCT ON ('. $table .'.'. $field .") $table.$field";
-  // (?<!text) is a negative look-behind (no need to rewrite queries that already use DISTINCT).
-  $query = preg_replace('/(SELECT.*)(?:'. $table .'\.|\s)(?<!DISTINCT\()(?<!DISTINCT\('. $table .'\.)'. $field .'(.*FROM )/AUsi', '\1 '. $field_to_select .'\2', $query);
-  $query = preg_replace('/(ORDER BY )(?!'. $table .'\.'. $field .')/', '\1'."$table.$field, ", $query);
+  if (!preg_match('/FROM\s+\S+\s+AS/si', $query)
+  && !preg_match('/DISTINCT\s+ON\s*\(\s*(' . $table . '\s*\.\s*)?' . $field . '\s*\)/si', $query)
+  && !preg_match('/DISTINCT[ (]' . $field . '/si', $query)
+  && preg_match('/(.*FROM\s+)(.*?\s)(\s*(WHERE|GROUP|HAVING|ORDER|LIMIT|FOR).*)/Asi', $query, $m)) {
+    $query = $m[1];
+    $query .= preg_replace('/([\{\w+\}]+)\s+(' . $table . ')\s/Usi', '(SELECT DISTINCT ON (' . $field . ') * FROM \1) \2 ', $m[2]);
+    $query .= $m[3];
+  }
   return $query;
 }
 

Modified: branches/drupal6/includes/file.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/includes/file.inc?rev=1911&op=diff
==============================================================================
--- branches/drupal6/includes/file.inc (original)
+++ branches/drupal6/includes/file.inc Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: file.inc,v 1.121.2.1 2008/02/07 18:20:37 goba Exp $
+// $Id: file.inc,v 1.121.2.2 2008/04/23 18:18:09 dries Exp $
 
 /**
  * @file
@@ -884,7 +884,7 @@
   $files = array();
 
   if (is_dir($dir) && $handle = opendir($dir)) {
-    while ($file = readdir($handle)) {
+    while (false !== ($file = readdir($handle))) {
       if (!in_array($file, $nomask) && $file[0] != '.') {
         if (is_dir("$dir/$file") && $recurse) {
           // Give priority to files in this folder by merging them in after any subdirectory files.

Modified: branches/drupal6/includes/form.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/includes/form.inc?rev=1911&op=diff
==============================================================================
--- branches/drupal6/includes/form.inc (original)
+++ branches/drupal6/includes/form.inc Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: form.inc,v 1.265.2.4 2008/02/11 14:45:57 goba Exp $
+// $Id: form.inc,v 1.265.2.7 2008/06/25 09:58:09 dries Exp $
 
 /**
  * @defgroup forms Form builder functions
@@ -232,11 +232,12 @@
  * Store a form in the cache
  */
 function form_set_cache($form_build_id, $form, $form_state) {
-  $expire = max(ini_get('session.cookie_lifetime'), 86400);
-
-  cache_set('form_'. $form_build_id, $form, 'cache_form', $expire);
+  // 6 hours cache life time for forms should be plenty.
+  $expire = 21600;
+
+  cache_set('form_'. $form_build_id, $form, 'cache_form', time() + $expire);
   if (!empty($form_state['storage'])) {
-    cache_set('storage_'. $form_build_id, $form_state['storage'], 'cache_form', $expire);
+    cache_set('storage_'. $form_build_id, $form_state['storage'], 'cache_form', time() + $expire);
   }
 }
 
@@ -1270,20 +1271,30 @@
 }
 
 /**
- * Use this function to make changes to form values in the form validate
- * phase, so they will be available in the submit phase in $form_state.
- *
- * Specifically, if $form['#parents'] is array('foo', 'bar')
- * and $value is 'baz' then this function will make
- * $form_state['values']['foo']['bar'] to be 'baz'.
- *
- * @param $form
- *   The form item. Keys used: #parents, #value
+ * Change submitted form values during the form processing cycle.
+ *
+ * Use this function to change the submitted value of a form item in the
+ * validation phase so that it persists in $form_state through to the
+ * submission handlers in the submission phase.
+ *
+ * Since $form_state['values'] can either be a flat array of values, or a tree
+ * of nested values, some care must be taken when using this function.
+ * Specifically, $form_item['#parents'] is an array that describes the branch of
+ * the tree whose value should be updated. For example, if we wanted to update
+ * $form_state['values']['one']['two'] to 'new value', we'd pass in
+ * $form_item['#parents'] = array('one', 'two') and $value = 'new value'.
+ *
+ * @param $form_item
+ *   The form item that should have its value updated. Keys used: #parents,
+ *   #value. In most cases you can just pass in the right element from the $form
+ *   array.
  * @param $value
- *   The value for the form item.
- */
-function form_set_value($form, $value, &$form_state) {
-  _form_set_value($form_state['values'], $form, $form['#parents'], $value);
+ *   The new value for the form item.
+ * @param $form_state
+ *   The array where the value change should be recorded.
+ */
+function form_set_value($form_item, $value, &$form_state) {
+  _form_set_value($form_state['values'], $form_item, $form_item['#parents'], $value);
 }
 
 /**
@@ -1293,7 +1304,7 @@
  * in $form_state['values'] if needed. Then we insert the value into
  * the right array.
  */
-function _form_set_value(&$form_values, $form, $parents, $value) {
+function _form_set_value(&$form_values, $form_item, $parents, $value) {
   $parent = array_shift($parents);
   if (empty($parents)) {
     $form_values[$parent] = $value;
@@ -1302,7 +1313,7 @@
     if (!isset($form_values[$parent])) {
       $form_values[$parent] = array();
     }
-    _form_set_value($form_values[$parent], $form, $parents, $value);
+    _form_set_value($form_values[$parent], $form_item, $parents, $value);
   }
 }
 
@@ -1489,7 +1500,7 @@
     }
   }
 
-  return '<fieldset'. drupal_attributes($element['#attributes']) .'>'. ($element['#title'] ? '<legend>'. $element['#title'] .'</legend>' : '') . (isset($element['#description']) && $element['#description'] ? '<div class="description">'. $element['#description'] .'</div>' : '') . (!empty($element['#children']) ? $element['#children'] : '') . $element['#value'] ."</fieldset>\n";
+  return '<fieldset'. drupal_attributes($element['#attributes']) .'>'. ($element['#title'] ? '<legend>'. $element['#title'] .'</legend>' : '') . (isset($element['#description']) && $element['#description'] ? '<div class="description">'. $element['#description'] .'</div>' : '') . (!empty($element['#children']) ? $element['#children'] : '') . (isset($element['#value']) ? $element['#value'] : '') ."</fieldset>\n";
 }
 
 /**

Modified: branches/drupal6/includes/locale.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/includes/locale.inc?rev=1911&op=diff
==============================================================================
--- branches/drupal6/includes/locale.inc (original)
+++ branches/drupal6/includes/locale.inc Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: locale.inc,v 1.174 2008/01/09 21:36:13 goba Exp $
+// $Id: locale.inc,v 1.174.2.1 2008/07/09 21:48:28 goba Exp $
 
 /**
  * @file
@@ -868,16 +868,36 @@
  */
 
 /**
- * Delete a language string.
- */
-function locale_translate_delete($lid) {
-  db_query('DELETE FROM {locales_source} WHERE lid = %d', $lid);
-  db_query('DELETE FROM {locales_target} WHERE lid = %d', $lid);
+ * String deletion confirmation page.
+ */
+function locale_translate_delete_page($lid) {
+  if ($source = db_fetch_object(db_query('SELECT * FROM {locales_source} WHERE lid = %d', $lid))) {
+    return drupal_get_form('locale_translate_delete_form', $source);
+  }
+  else {
+    return drupal_not_found();
+  }
+}
+
+/**
+ * User interface for the string deletion confirmation screen.
+ */
+function locale_translate_delete_form(&$form_state, $source) {
+  $form['lid'] = array('#type' => 'value', '#value' => $source->lid);
+  return confirm_form($form, t('Are you sure you want to delete the string "%source"?', array('%source' => $source->source)), 'admin/build/translate/search', t('Deleting the string will remove all translations of this string in all languages. This action cannot be undone.'), t('Delete'), t('Cancel'));
+}
+
+/**
+ * Process string deletion submissions.
+ */
+function locale_translate_delete_form_submit($form, &$form_state) {
+  db_query('DELETE FROM {locales_source} WHERE lid = %d', $form_state['values']['lid']);
+  db_query('DELETE FROM {locales_target} WHERE lid = %d', $form_state['values']['lid']);
   // Force JavaScript translation file recreation for all languages.
   _locale_invalidate_js();
   cache_clear_all('locale:', 'cache', TRUE);
   drupal_set_message(t('The string has been removed.'));
-  drupal_goto('admin/build/translate/search');
+  $form_state['redirect'] = 'admin/build/translate/search';
 }
 /**
  * @} End of "locale-translate-delete"

Modified: branches/drupal6/includes/mail.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/includes/mail.inc?rev=1911&op=diff
==============================================================================
--- branches/drupal6/includes/mail.inc (original)
+++ branches/drupal6/includes/mail.inc Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: mail.inc,v 1.8 2008/01/25 17:04:00 goba Exp $
+// $Id: mail.inc,v 1.8.2.3 2008/05/19 08:19:00 goba Exp $
 
 /**
  * Compose and optionally send an e-mail message.
@@ -187,6 +187,8 @@
       // Note: e-mail uses CRLF for line-endings, but PHP's API requires LF.
       // They will appear correctly in the actual e-mail that is sent.
       str_replace("\r", '', $message['body']),
+      // For headers, PHP's API suggests that we use CRLF normally,
+      // but some MTAs incorrecly replace LF with CRLF. See #234403.
       join("\n", $mimeheaders)
     );
   }
@@ -270,8 +272,8 @@
   $string = _filter_htmlcorrector(filter_xss($string, $allowed_tags));
 
   // Apply inline styles.
-  $string = preg_replace('!</?(em|i)>!i', '/', $string);
-  $string = preg_replace('!</?(strong|b)>!i', '*', $string);
+  $string = preg_replace('!</?(em|i)((?> +)[^>]*)?>!i', '/', $string);
+  $string = preg_replace('!</?(strong|b)((?> +)[^>]*)?>!i', '*', $string);
 
   // Replace inline <a> tags with the text of link and a footnote.
   // 'See <a href="http://drupal.org">the Drupal site</a>' becomes

Modified: branches/drupal6/includes/menu.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/includes/menu.inc?rev=1911&op=diff
==============================================================================
--- branches/drupal6/includes/menu.inc (original)
+++ branches/drupal6/includes/menu.inc Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: menu.inc,v 1.255.2.7 2008/02/12 22:33:51 goba Exp $
+// $Id: menu.inc,v 1.255.2.17 2008/07/09 15:23:50 goba Exp $
 
 /**
  * @file
@@ -175,14 +175,13 @@
  * Returns the ancestors (and relevant placeholders) for any given path.
  *
  * For example, the ancestors of node/12345/edit are:
- *
- * node/12345/edit
- * node/12345/%
- * node/%/edit
- * node/%/%
- * node/12345
- * node/%
- * node
+ * - node/12345/edit
+ * - node/12345/%
+ * - node/%/edit
+ * - node/%/%
+ * - node/12345
+ * - node/%
+ * - node
  *
  * To generate these, we will use binary numbers. Each bit represents a
  * part of the path. If the bit is 1, then it represents the original
@@ -515,7 +514,7 @@
   if (!empty($item['description'])) {
     $original_description = $item['description'];
     $item['description'] = t($item['description']);
-    if ($link_translate && $item['options']['attributes']['title'] == $original_description) {
+    if ($link_translate && isset($item['options']['attributes']['title']) && $item['options']['attributes']['title'] == $original_description) {
       $item['localized_options']['attributes']['title'] = $item['description'];
     }
   }
@@ -571,8 +570,11 @@
   $router_item['href'] = implode('/', $link_map);
   $router_item['options'] = array();
   _menu_check_access($router_item, $map);
-
-  _menu_item_localize($router_item, $map);
+  
+  // For performance, don't localize an item the user can't access.
+  if ($router_item['access']) {
+    _menu_item_localize($router_item, $map);
+  }
 
   return $map;
 }
@@ -609,18 +611,18 @@
 
 /**
  * This function is similar to _menu_translate() but does link-specific
- * preparation such as always calling to_arg functions
+ * preparation such as always calling to_arg functions.
  *
  * @param $item
  *   A menu link
  * @return
  *   Returns the map of path arguments with objects loaded as defined in the
- *   $item['load_functions'].
- *   $item['access'] becomes TRUE if the item is accessible, FALSE otherwise.
- *   $item['href'] is generated from link_path, possibly by to_arg functions.
- *   $item['title'] is generated from link_title, and may be localized.
- *   $item['options'] is unserialized; it is also changed within the call here 
- *   to $item['localized_options'] by _menu_item_localize().
+ *   $item['load_functions']:
+ *   - $item['access'] becomes TRUE if the item is accessible, FALSE otherwise.
+ *   - $item['href'] is generated from link_path, possibly by to_arg functions.
+ *   - $item['title'] is generated from link_title, and may be localized.
+ *   - $item['options'] is unserialized; it is also changed within the call
+ *     here to $item['localized_options'] by _menu_item_localize().
  */
 function _menu_link_translate(&$item) {
   $item['options'] = unserialize($item['options']);
@@ -650,8 +652,10 @@
       }
       _menu_check_access($item, $map);
     }
-
-    _menu_item_localize($item, $map, TRUE);
+    // For performance, don't localize a link the user can't access.
+    if ($item['access']) {
+      _menu_item_localize($item, $map, TRUE);
+    }
   }
   
   // Allow other customizations - e.g. adding a page-specific query string to the
@@ -682,7 +686,7 @@
  *   The expected position for $type object. For node/%node this is 1, for
  *   comment/reply/%node this is 2. Defaults to 1.
  * @param $path
- *   See @menu_get_item for more on this. Defaults to the current path.
+ *   See menu_get_item() for more on this. Defaults to the current path.
  */
 function menu_get_object($type = 'node', $position = 1, $path = NULL) {
   $router_item = menu_get_item($path);
@@ -773,16 +777,22 @@
 
   // Use $mlid as a flag for whether the data being loaded is for the whole tree.
   $mlid = isset($item['mlid']) ? $item['mlid'] : 0;
-  // Generate the cache ID.
-  $cid = 'links:'. $menu_name .':all:'. $mlid;
+  // Generate a cache ID (cid) specific for this $menu_name and $item.
+  $cid = 'links:'. $menu_name .':all-cid:'. $mlid;
 
   if (!isset($tree[$cid])) {
     // If the static variable doesn't have the data, check {cache_menu}.
     $cache = cache_get($cid, 'cache_menu');
     if ($cache && isset($cache->data)) {
-      $data = $cache->data;
-    }
-    else {
+      // If the cache entry exists, it will just be the cid for the actual data.
+      // This avoids duplication of large amounts of data.
+      $cache = cache_get($cache->data, 'cache_menu');
+      if ($cache && isset($cache->data)) {
+        $data = $cache->data;
+      }
+    }
+    // If the tree data was not in the cache, $data will be NULL.
+    if (!isset($data)) {
       // Build and run the query, and build the tree.
       if ($mlid) {
         // The tree is for a single item, so we need to match the values in its
@@ -814,8 +824,13 @@
         ORDER BY p1 ASC, p2 ASC, p3 ASC, p4 ASC, p5 ASC, p6 ASC, p7 ASC, p8 ASC, p9 ASC", $args), $parents);
       $data['node_links'] = array();
       menu_tree_collect_node_links($data['tree'], $data['node_links']);
-      // Cache the data.
-      cache_set($cid, $data, 'cache_menu');
+      // Cache the data, if it is not already in the cache.
+      $tree_cid = _menu_tree_cid($menu_name, $data);
+      if (!cache_get($tree_cid, 'cache_menu')) {
+        cache_set($tree_cid, $data, 'cache_menu');
+      }
+      // Cache the cid of the (shared) data using the menu and item-specific cid.
+      cache_set($cid, $tree_cid, 'cache_menu');
     }
     // Check access for the current user to each item in the tree.
     menu_tree_check_access($data['tree'], $data['node_links']);
@@ -845,16 +860,22 @@
 
   // Load the menu item corresponding to the current page.
   if ($item = menu_get_item()) {
-    // Generate the cache ID.
-    $cid = 'links:'. $menu_name .':page:'. $item['href'] .':'. (int)$item['access'];
+    // Generate a cache ID (cid) specific for this page.
+    $cid = 'links:'. $menu_name .':page-cid:'. $item['href'] .':'. (int)$item['access'];
 
     if (!isset($tree[$cid])) {
       // If the static variable doesn't have the data, check {cache_menu}.
       $cache = cache_get($cid, 'cache_menu');
       if ($cache && isset($cache->data)) {
-        $data = $cache->data;
-      }
-      else {
+        // If the cache entry exists, it will just be the cid for the actual data.
+        // This avoids duplication of large amounts of data.
+        $cache = cache_get($cache->data, 'cache_menu');
+        if ($cache && isset($cache->data)) {
+          $data = $cache->data;
+        }
+      }
+      // If the tree data was not in the cache, $data will be NULL.
+      if (!isset($data)) {
         // Build and run the query, and build the tree.
         if ($item['access']) {
           // Check whether a menu link exists that corresponds to the current path.
@@ -910,8 +931,13 @@
           ORDER BY p1 ASC, p2 ASC, p3 ASC, p4 ASC, p5 ASC, p6 ASC, p7 ASC, p8 ASC, p9 ASC", $args), $parents);
         $data['node_links'] = array();
         menu_tree_collect_node_links($data['tree'], $data['node_links']);
-        // Cache the data.
-        cache_set($cid, $data, 'cache_menu');
+        // Cache the data, if it is not already in the cache.
+        $tree_cid = _menu_tree_cid($menu_name, $data);
+        if (!cache_get($tree_cid, 'cache_menu')) {
+          cache_set($tree_cid, $data, 'cache_menu');
+        }
+        // Cache the cid of the (shared) data using the page-specific cid.
+        cache_set($cid, $tree_cid, 'cache_menu');
       }
       // Check access for the current user to each item in the tree.
       menu_tree_check_access($data['tree'], $data['node_links']);
@@ -921,6 +947,13 @@
   }
 
   return array();
+}
+
+/**
+ * Helper function - compute the real cache ID for menu tree data.
+ */
+function _menu_tree_cid($menu_name, $data) {
+  return 'links:'. $menu_name .':tree-data:'. md5(serialize($data));
 }
 
 /**
@@ -1229,6 +1262,14 @@
       $l = $item['link']['localized_options'];
       $l['href'] = $item['link']['href'];
       $l['title'] = $item['link']['title'];
+      if ($item['link']['in_active_trail']) {
+        if (empty($l['attributes']['class'])) {
+          $l['attributes']['class'] = 'active-trail';
+        }
+        else {
+          $l['attributes']['class'] .= ' active-trail'; 
+        }
+      }
       // Keyed with unique menu id to generate classes from theme_links().
       $links['menu-'. $item['link']['mlid']] = $l;
     }
@@ -1486,10 +1527,10 @@
         $curr = FALSE;
       }
       else {
-        // Move to the child link if it's in the active trail.
-        if ($curr['below'] && $curr['link']['in_active_trail']) {
+        // Add the link if it's in the active trail, then move to the link below.
+        if ($curr['link']['in_active_trail']) {
           $trail[] = $curr['link'];
-          $tree = $curr['below'];
+          $tree = $curr['below'] ? $curr['below'] : array();
         }
         list($key, $curr) = each($tree);
       }
@@ -1630,7 +1671,6 @@
       $menu = $cache->data;
     }
     else {
-      db_query('DELETE FROM {menu_router}');
       // We need to manually call each module so that we can know which module
       // a given item came from.
       $callbacks = array();
@@ -1646,7 +1686,6 @@
       // Alter the menu as defined in modules, keys are like user/%user.
       drupal_alter('menu', $callbacks);
       $menu = _menu_router_build($callbacks);
-      cache_set('router:', $menu, 'cache_menu');
     }
   }
   return $menu;
@@ -1708,8 +1747,7 @@
   }
   $placeholders = db_placeholders($menu, 'varchar');
   $paths = array_keys($menu);
-  // Updated items and customized items which router paths are gone need new
-  // router paths.
+  // Updated and customized items whose router paths are gone need new ones.
   $result = db_query("SELECT ml.link_path, ml.mlid, ml.router_path, ml.updated FROM {menu_links} ml WHERE ml.updated = 1 OR (router_path NOT IN ($placeholders) AND external = 0 AND customized = 1)", $paths);
   while ($item = db_fetch_array($result)) {
     $router_path = _menu_find_router_path($menu, $item['link_path']);
@@ -1720,7 +1758,7 @@
       db_query("UPDATE {menu_links} SET router_path = '%s', updated = %d WHERE mlid = %d", $router_path, $updated, $item['mlid']);
     }
   }
-  // Find any items where their router path does not exist any more.
+  // Find any item whose router path does not exist any more.
   $result = db_query("SELECT * FROM {menu_links} WHERE router_path NOT IN ($placeholders) AND external = 0 AND updated = 0 AND customized = 0 ORDER BY depth DESC", $paths);
   // Remove all such items. Starting from those with the greatest depth will
   // minimize the amount of re-parenting done by menu_link_delete().
@@ -1782,14 +1820,14 @@
  *
  * @param $item
  *   An array representing a menu link item. The only mandatory keys are
- *   link_path and link_title. Possible keys are
- *     menu_name   default is navigation
- *     weight      default is 0
- *     expanded    whether the item is expanded.
- *     options     An array of options, @see l for more.
- *     mlid        Set to an existing value, or 0 or NULL to insert a new link.
- *     plid        The mlid of the parent.
- *     router_path The path of the relevant router item.
+ *   link_path and link_title. Possible keys are:
+ *   - menu_name   default is navigation
+ *   - weight      default is 0
+ *   - expanded    whether the item is expanded.
+ *   - options     An array of options, @see l for more.
+ *   - mlid        Set to an existing value, or 0 or NULL to insert a new link.
+ *   - plid        The mlid of the parent.
+ *   - router_path The path of the relevant router item.
  */
 function menu_link_save(&$item) {
   $menu = menu_router_build();
@@ -2227,6 +2265,13 @@
   }
   array_multisort($sort, SORT_NUMERIC, $menu);
 
+  if (!$menu) {
+    // We must have a serious error - there is no data to save.
+    watchdog('php', 'Menu router rebuild failed - some paths may not work correctly.', array(), WATCHDOG_ERROR);
+    return array();
+  }
+  // Delete the existing router since we have some data to replace it.
+  db_query('DELETE FROM {menu_router}');
   // Apply inheritance rules.
   foreach ($menu as $path => $v) {
     $item = &$menu[$path];
@@ -2248,9 +2293,10 @@
         if (!isset($item['tab_root']) && !$parent['_tab']) {
           $item['tab_root'] = $parent_path;
         }
-        // If a callback is not found, we try to find the first parent that
-        // has a callback.
-        if (!isset($item['access callback']) && isset($parent['access callback'])) {
+        // If an access callback is not found for a default local task we use
+        // the callback from the parent, since we expect them to be identical.
+        // In all other cases, the access parameters must be specified.
+        if (($item['type'] == MENU_DEFAULT_LOCAL_TASK) && !isset($item['access callback']) && isset($parent['access callback'])) {
           $item['access callback'] = $parent['access callback'];
           if (!isset($item['access arguments']) && isset($parent['access arguments'])) {
             $item['access arguments'] = $parent['access arguments'];
@@ -2328,6 +2374,7 @@
   $masks = array_keys($masks);
   rsort($masks);
   variable_set('menu_masks', $masks);
+  cache_set('router:', $menu, 'cache_menu');
   return $menu;
 }
 

Modified: branches/drupal6/includes/theme.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/includes/theme.inc?rev=1911&op=diff
==============================================================================
--- branches/drupal6/includes/theme.inc (original)
+++ branches/drupal6/includes/theme.inc Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: theme.inc,v 1.415 2008/01/27 19:47:06 goba Exp $
+// $Id: theme.inc,v 1.415.2.9 2008/07/09 21:48:28 goba Exp $
 
 /**
  * @file
@@ -330,8 +330,13 @@
           if (function_exists($prefix .'_preprocess')) {
             $info['preprocess functions'][] = $prefix .'_preprocess';
           }
+
           if (function_exists($prefix .'_preprocess_'. $hook)) {
             $info['preprocess functions'][] = $prefix .'_preprocess_'. $hook;
+          }
+
+          if (!empty($info['original hook']) && function_exists($prefix .'_preprocess_'. $info['original hook'])) {
+            $info['preprocess functions'][] = $prefix .'_preprocess_'. $info['original hook'];
           }
         }
       }
@@ -343,6 +348,9 @@
       }
       elseif (isset($cache[$hook]['preprocess functions']) && is_array($cache[$hook]['preprocess functions'])) {
         $info['preprocess functions'] = array_merge($cache[$hook]['preprocess functions'], $info['preprocess functions']);
+      }
+      elseif (isset($info['original hook']) && isset($cache[$info['original hook']]['preprocess functions']) && is_array($cache[$info['original hook']]['preprocess functions'])) {
+        $info['preprocess functions'] = array_merge($cache[$info['original hook']]['preprocess functions'], $info['preprocess functions']);
       }
       $result[$hook]['preprocess functions'] = $info['preprocess functions'];
     }
@@ -434,9 +442,7 @@
     foreach ($themes as $theme) {
       foreach ($theme->info['stylesheets'] as $media => $stylesheets) {
         foreach ($stylesheets as $stylesheet => $path) {
-          if (file_exists($path)) {
-            $theme->stylesheets[$media][$stylesheet] = $path;
-          }
+          $theme->stylesheets[$media][$stylesheet] = $path;
         }
       }
       foreach ($theme->info['scripts'] as $script => $path) {
@@ -725,6 +731,7 @@
             $templates[$new_hook] = array(
               'function' => $match,
               'arguments' => $info['arguments'],
+              'original hook' => $hook,
             );
           }
         }
@@ -817,6 +824,7 @@
             'template' => $file,
             'path' => dirname($files[$match]->filename),
             'arguments' => $info['arguments'],
+            'original hook' => $hook,
           );
         }
       }
@@ -999,7 +1007,7 @@
  * defaults for the template in case they are not filled in. If the default
  * implementation is a function, by convention it is named theme_HOOK().
  *
- * Each module should provide a default implementation for themes that
+ * Each module should provide a default implementation for theme_hooks that
  * it registers. This implementation may be either a function or a template;
  * if it is a function it must be specified via hook_theme(). By convention,
  * default implementations of theme hooks are named theme_HOOK. Default
@@ -1103,10 +1111,10 @@
       if ($i == $num_links) {
         $class .= ' last';
       }
-      if (isset($link['href']) && $link['href'] == $_GET['q']) {
+      if (isset($link['href']) && ($link['href'] == $_GET['q'] || ($link['href'] == '<front>' && drupal_is_front_page()))) {
         $class .= ' active';
       }
-      $output .= '<li class="'. $class .'">';
+      $output .= '<li'. drupal_attributes(array('class' => $class)) .'>';
 
       if (isset($link['href'])) {
         // Pass in $link as $options, they share the same keys.
@@ -1454,9 +1462,9 @@
 
 /**
  * Return code that emits an XML icon.
- * 
+ *
  * For most use cases, this function has been superseded by theme_feed_icon().
- * 
+ *
  * @see theme_feed_icon()
  * @param $url
  *   The url of the feed.
@@ -1552,7 +1560,7 @@
     }
 
     if (user_access('access user profiles')) {
-      $output = l($name, 'user/'. $object->uid, array('title' => t('View user profile.')));
+      $output = l($name, 'user/'. $object->uid, array('attributes' => array('title' => t('View user profile.'))));
     }
     else {
       $output = check_plain($name);
@@ -1564,7 +1572,7 @@
     // aggregator modules). This clause enables modules to display
     // the true author of the content.
     if (!empty($object->homepage)) {
-      $output = l($object->name, $object->homepage, array('rel' => 'nofollow'));
+      $output = l($object->name, $object->homepage, array('attributes' => array('rel' => 'nofollow')));
     }
     else {
       $output = check_plain($object->name);

Modified: branches/drupal6/includes/xmlrpc.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/includes/xmlrpc.inc?rev=1911&op=diff
==============================================================================
--- branches/drupal6/includes/xmlrpc.inc (original)
+++ branches/drupal6/includes/xmlrpc.inc Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: xmlrpc.inc,v 1.47 2008/01/09 21:52:43 goba Exp $
+// $Id: xmlrpc.inc,v 1.47.2.2 2008/04/14 18:01:19 dries Exp $
 
 /**
  * @file
@@ -256,7 +256,7 @@
     case 'value':
       // If no type is indicated, the type is string
       // We take special care for empty values
-      if (trim($xmlrpc_message->current_tag_contents) != '' || $xmlrpc_message->last_open == 'value') {
+      if (trim($xmlrpc_message->current_tag_contents) != '' || (isset($xmlrpc_message->last_open) && ($xmlrpc_message->last_open == 'value'))) {
         $value = (string)$xmlrpc_message->current_tag_contents;
         $value_flag = TRUE;
       }
@@ -465,7 +465,7 @@
  */
 function xmlrpc_errno() {
   $error = xmlrpc_error();
-  return $error->code;
+  return ($error != NULL ? $error->code : NULL);
 }
 
 /**
@@ -473,5 +473,5 @@
  */
 function xmlrpc_error_msg() {
   $error = xmlrpc_error();
-  return $error->message;
-}
+  return ($error != NULL ? $error->message : NULL);
+}

Modified: branches/drupal6/includes/xmlrpcs.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/includes/xmlrpcs.inc?rev=1911&op=diff
==============================================================================
--- branches/drupal6/includes/xmlrpcs.inc (original)
+++ branches/drupal6/includes/xmlrpcs.inc Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: xmlrpcs.inc,v 1.24 2007/12/31 08:54:36 dries Exp $
+// $Id: xmlrpcs.inc,v 1.24.2.1 2008/04/28 10:04:52 dries Exp $
 
 /**
  * The main entry point for XML-RPC requests.
@@ -149,7 +149,7 @@
   }
   // Has this method been mapped to a Drupal function by us or by modules?
   if (!isset($xmlrpc_server->callbacks[$methodname])) {
-    return xmlrpc_error(-32601, t('Server error. Requested method %methodname not specified.', array("%methodname" => $xmlrpc_server->message->methodname)));
+    return xmlrpc_error(-32601, t('Server error. Requested method @methodname not specified.', array("@methodname" => $xmlrpc_server->message->methodname)));
   }
   $method = $xmlrpc_server->callbacks[$methodname];
   $signature = $xmlrpc_server->signatures[$methodname];
@@ -203,7 +203,7 @@
   }
 
   if (!function_exists($method)) {
-    return xmlrpc_error(-32601, t('Server error. Requested function %method does not exist.', array("%method" => $method)));
+    return xmlrpc_error(-32601, t('Server error. Requested function @method does not exist.', array("@method" => $method)));
   }
   // Call the mapped function
   return call_user_func_array($method, $args);
@@ -288,10 +288,10 @@
 function xmlrpc_server_method_signature($methodname) {
   $xmlrpc_server = xmlrpc_server_get();
   if (!isset($xmlrpc_server->callbacks[$methodname])) {
-    return xmlrpc_error(-32601, t('Server error. Requested method %methodname not specified.', array("%methodname" => $methodname)));
+    return xmlrpc_error(-32601, t('Server error. Requested method @methodname not specified.', array("@methodname" => $methodname)));
   }
   if (!is_array($xmlrpc_server->signatures[$methodname])) {
-    return xmlrpc_error(-32601, t('Server error. Requested method %methodname signature not specified.', array("%methodname" => $methodname)));
+    return xmlrpc_error(-32601, t('Server error. Requested method @methodname signature not specified.', array("@methodname" => $methodname)));
   }
   // We array of types
   $return = array();

Modified: branches/drupal6/install.php
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/install.php?rev=1911&op=diff
==============================================================================
--- branches/drupal6/install.php (original)
+++ branches/drupal6/install.php Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: install.php,v 1.113.2.2 2008/02/08 22:00:45 goba Exp $
+// $Id: install.php,v 1.113.2.3 2008/07/09 19:15:59 goba Exp $
 
 require_once './includes/install.inc';
 
@@ -98,6 +98,13 @@
 
   // Tasks come after the database is set up
   if (!$task) {
+    global $db_url;
+
+    if (!$verify && !empty($db_url)) {
+      // Do not install over a configured settings.php.
+      install_already_done_error();
+    }
+
     // Check the installation requirements for Drupal and this profile.
     install_check_requirements($profile, $verify);
 
@@ -188,14 +195,6 @@
   // We always need this because we want to run form_get_errors.
   include_once './includes/form.inc';
   install_task_list('database');
-
-  if ($db_url == 'mysql://username:password@localhost/databasename') {
-    $db_user = $db_pass = $db_path = '';
-  }
-  elseif (!empty($db_url)) {
-    // Do not install over a configured settings.php.
-    install_already_done_error();
-  }
 
   $output = drupal_get_form('install_settings_form', $profile, $install_locale, $settings_file, $db_url, $db_type, $db_prefix, $db_user, $db_pass, $db_host, $db_port, $db_path);
   drupal_set_title(st('Database configuration'));
@@ -869,21 +868,21 @@
     $conf_path = './'. conf_path(FALSE, TRUE);
     $settings_file = $conf_path .'/settings.php';
     $file = $conf_path;
+    $exists = FALSE;
     // Verify that the directory exists.
     if (drupal_verify_install_file($conf_path, FILE_EXIST, 'dir')) {
-      // Check to see if a settings.php already exists.
+      // Check to make sure a settings.php already exists.
+      $file = $settings_file;
       if (drupal_verify_install_file($settings_file, FILE_EXIST)) {
+        $exists = TRUE;
         // If it does, make sure it is writable.
         $writable = drupal_verify_install_file($settings_file, FILE_READABLE|FILE_WRITABLE);
-        $file = $settings_file;
-      }
-      else {
-        // If not, make sure the directory is.
-        $writable = drupal_verify_install_file($conf_path, FILE_READABLE|FILE_WRITABLE, 'dir');
-      }
-    }
-
-    if (!$writable) {
+      }
+    }
+    if (!$exists) {
+      drupal_set_message(st('The @drupal installer requires that you create %file as part of the installation process, and then make it writable. If you are unsure how to grant file permissions, please consult the <a href="@handbook_url">on-line handbook</a>.', array('@drupal' => drupal_install_profile_name(), '%file' => $file, '@handbook_url' => 'http://drupal.org/server-permissions')), 'error');
+    }
+    elseif (!$writable) {
       drupal_set_message(st('The @drupal installer requires write permissions to %file during the installation process. If you are unsure how to grant file permissions, please consult the <a href="@handbook_url">on-line handbook</a>.', array('@drupal' => drupal_install_profile_name(), '%file' => $file, '@handbook_url' => 'http://drupal.org/server-permissions')), 'error');
     }
   }

Modified: branches/drupal6/misc/drupal.js
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/misc/drupal.js?rev=1911&op=diff
==============================================================================
--- branches/drupal6/misc/drupal.js (original)
+++ branches/drupal6/misc/drupal.js Mon Aug 11 17:16:46 2008
@@ -1,4 +1,4 @@
-// $Id: drupal.js,v 1.41.2.1 2008/02/06 12:18:04 goba Exp $
+// $Id: drupal.js,v 1.41.2.3 2008/06/25 09:06:57 goba Exp $
 
 var Drupal = Drupal || { 'settings': {}, 'behaviors': {}, 'themes': {}, 'locale': {} };
 
@@ -51,7 +51,8 @@
   str = String(str);
   var replace = { '&': '&amp;', '"': '&quot;', '<': '&lt;', '>': '&gt;' };
   for (var character in replace) {
-    str = str.replace(character, replace[character]);
+    var regex = new RegExp(character, 'g');
+    str = str.replace(regex, replace[character]);
   }
   return str;
 };
@@ -267,7 +268,7 @@
 // Global Killswitch on the <html> element
 if (Drupal.jsEnabled) {
   // Global Killswitch on the <html> element
-  document.documentElement.className = 'js';
+  $(document.documentElement).addClass('js');
   // 'js enabled' cookie
   document.cookie = 'has_js=1; path=/';
   // Attach all behaviors.

Modified: branches/drupal6/misc/farbtastic/farbtastic.js
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/misc/farbtastic/farbtastic.js?rev=1911&op=diff
==============================================================================
--- branches/drupal6/misc/farbtastic/farbtastic.js (original)
+++ branches/drupal6/misc/farbtastic/farbtastic.js Mon Aug 11 17:16:46 2008
@@ -1,4 +1,4 @@
-// $Id: farbtastic.js,v 1.4 2007/06/01 09:05:45 unconed Exp $
+// $Id: farbtastic.js,v 1.4.2.1 2008/06/25 09:34:17 goba Exp $
 // Farbtastic 1.2
 
 jQuery.fn.farbtastic = function (callback) {
@@ -104,49 +104,49 @@
     var x, y;
     var el = event.target || event.srcElement;
     var reference = fb.wheel;
-
-    if (typeof event.offsetX != 'undefined') {
-      // Use offset coordinates and find common offsetParent
-      var pos = { x: event.offsetX, y: event.offsetY };
-
-      // Send the coordinates upwards through the offsetParent chain.
-      var e = el;
-      while (e) {
-        e.mouseX = pos.x;
-        e.mouseY = pos.y;
-        pos.x += e.offsetLeft;
-        pos.y += e.offsetTop;
-        e = e.offsetParent;
+    
+    // If the offset from the relative element is undefined calculate it.
+    if ( typeof event.offsetX == 'undefined' && typeof event.offsetY == 'undefined' ) {
+      var offset = $(event.target).offset(false);
+      event.offsetX = event.pageX - offset.left;
+      event.offsetY = event.pageY - offset.top;
+    }
+    
+    // Use offset coordinates and find common offsetParent
+    var pos = { x: event.offsetX, y: event.offsetY };
+
+    // Send the coordinates upwards through the offsetParent chain.
+    var e = el;
+    while (e) {
+      e.mouseX = pos.x;
+      e.mouseY = pos.y;
+      pos.x += e.offsetLeft;
+      pos.y += e.offsetTop;
+      e = e.offsetParent;
+    }
+
+    // Look for the coordinates starting from the wheel widget.
+    var e = reference;
+    var offset = { x: 0, y: 0 };
+    while (e) {
+      if (typeof e.mouseX != 'undefined') {
+        x = e.mouseX - offset.x;
+        y = e.mouseY - offset.y;
+        break;
       }
-
-      // Look for the coordinates starting from the wheel widget.
-      var e = reference;
-      var offset = { x: 0, y: 0 };
-      while (e) {
-        if (typeof e.mouseX != 'undefined') {
-          x = e.mouseX - offset.x;
-          y = e.mouseY - offset.y;
-          break;
-        }
-        offset.x += e.offsetLeft;
-        offset.y += e.offsetTop;
-        e = e.offsetParent;
-      }
-
-      // Reset stored coordinates
-      e = el;
-      while (e) {
-        e.mouseX = undefined;
-        e.mouseY = undefined;
-        e = e.offsetParent;
-      }
-    }
-    else {
-      // Use absolute coordinates
-      var pos = fb.absolutePosition(reference);
-      x = (event.pageX || 0*(event.clientX + $('html').get(0).scrollLeft)) - pos.x;
-      y = (event.pageY || 0*(event.clientY + $('html').get(0).scrollTop)) - pos.y;
-    }
+      offset.x += e.offsetLeft;
+      offset.y += e.offsetTop;
+      e = e.offsetParent;
+    }
+
+    // Reset stored coordinates
+    e = el;
+    while (e) {
+      e.mouseX = undefined;
+      e.mouseY = undefined;
+      e = e.offsetParent;
+    }
+
     // Subtract distance to middle
     return { x: x - fb.width / 2, y: y - fb.width / 2 };
   };
@@ -238,20 +238,6 @@
     else if (typeof fb.callback == 'function') {
       fb.callback.call(fb, fb.color);
     }
-  };
-
-  /**
-   * Get absolute position of element
-   */
-  fb.absolutePosition = function (el) {
-    var r = { x: el.offsetLeft, y: el.offsetTop };
-    // Resolve relative to offsetParent
-    if (el.offsetParent) {
-      var tmp = fb.absolutePosition(el.offsetParent);
-      r.x += tmp.x;
-      r.y += tmp.y;
-    }
-    return r;
   };
 
   /* Various color utility functions */

Modified: branches/drupal6/misc/jquery.js
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/misc/jquery.js?rev=1911&op=diff
==============================================================================
--- branches/drupal6/misc/jquery.js (original)
+++ branches/drupal6/misc/jquery.js Mon Aug 11 17:16:46 2008
@@ -1,13 +1,13 @@
-// $Id: jquery.js,v 1.12.2.1 2008/02/06 12:18:04 goba Exp $
+// $Id: jquery.js,v 1.12.2.3 2008/06/25 09:38:39 goba Exp $ 
 
 /*
- * jQuery 1.2.3 - New Wave Javascript
+ * jQuery 1.2.6 - New Wave Javascript
  *
  * Copyright (c) 2008 John Resig (jquery.com)
  * Dual licensed under the MIT (MIT-LICENSE.txt)
  * and GPL (GPL-LICENSE.txt) licenses.
  *
- * Date: 2008-02-06 00:21:25 -0500 (Wed, 06 Feb 2008)
- * Rev: 4663
+ * Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008)
+ * Rev: 5685
  */
-eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(J(){7(1e.3N)L w=1e.3N;L E=1e.3N=J(a,b){K 1B E.2l.4T(a,b)};7(1e.$)L D=1e.$;1e.$=E;L u=/^[^<]*(<(.|\\s)+>)[^>]*$|^#(\\w+)$/;L G=/^.[^:#\\[\\.]*$/;E.1n=E.2l={4T:J(d,b){d=d||T;7(d.15){6[0]=d;6.M=1;K 6}N 7(1o d=="25"){L c=u.2O(d);7(c&&(c[1]||!b)){7(c[1])d=E.4a([c[1]],b);N{L a=T.5J(c[3]);7(a)7(a.2w!=c[3])K E().2s(d);N{6[0]=a;6.M=1;K 6}N d=[]}}N K 1B E(b).2s(d)}N 7(E.1q(d))K 1B E(T)[E.1n.21?"21":"3U"](d);K 6.6E(d.1k==1M&&d||(d.5h||d.M&&d!=1e&&!d.15&&d[0]!=10&&d[0].15)&&E.2I(d)||[d])},5h:"1.2.3",87:J(){K 6.M},M:0,22:J(a){K a==10?E.2I(6):6[a]},2F:J(b){L a=E(b);a.54=6;K a},6E:J(a){6.M=0;1M.2l.1g.1i(6,a);K 6},R:J(a,b){K E.R(6,a,b)},4X:J(b){L a=-1;6.R(J(i){7(6==b)a=i});K a},1J:J(c,a,b){L d=c;7(c.1k==4e)7(a==10)K 6.M&&E[b||"1J"](6[0],c)||10;N{d={};d[c]=a}K 6.R(J(i){Q(c 1p d)E.1J(b?6.W:6,c,E.1l(6,d[c],b,i,c))})},1j:J(b,a){7((b==\'27\'||b==\'1R\')&&2M(a)<0)a=10;K 6.1J(b,a,"2o")},1u:J(b){7(1o b!="3V"&&b!=V)K 6.4x().3t((6[0]&&6[0].2i||T).5r(b));L a="";E.R(b||6,J(){E.R(6.3p,J(){7(6.15!=8)a+=6.15!=1?6.6K:E.1n.1u([6])})});K a},5m:J(b){7(6[0])E(b,6[0].2i).5k().3o(6[0]).2c(J(){L a=6;2b(a.1C)a=a.1C;K a}).3t(6);K 6},8w:J(a){K 6.R(J(){E(6).6z().5m(a)})},8p:J(a){K 6.R(J(){E(6).5m(a)})},3t:J(){K 6.3O(18,P,S,J(a){7(6.15==1)6.38(a)})},6q:J(){K 6.3O(18,P,P,J(a){7(6.15==1)6.3o(a,6.1C)})},6o:J(){K 6.3O(18,S,S,J(a){6.1a.3o(a,6)})},5a:J(){K 6.3O(18,S,P,J(a){6.1a.3o(a,6.2B)})},3h:J(){K 6.54||E([])},2s:J(b){L c=E.2c(6,J(a){K E.2s(b,a)});K 6.2F(/[^+>] [^+>]/.17(b)||b.1f("..")>-1?E.57(c):c)},5k:J(e){L f=6.2c(J(){7(E.14.1d&&!E.3E(6)){L a=6.69(P),4Y=T.3s("1x");4Y.38(a);K E.4a([4Y.3d])[0]}N K 6.69(P)});L d=f.2s("*").4R().R(J(){7(6[F]!=10)6[F]=V});7(e===P)6.2s("*").4R().R(J(i){7(6.15==3)K;L c=E.O(6,"2R");Q(L a 1p c)Q(L b 1p c[a])E.16.1b(d[i],a,c[a][b],c[a][b].O)});K f},1E:J(b){K 6.2F(E.1q(b)&&E.3y(6,J(a,i){K b.1P(a,i)})||E.3e(b,6))},56:J(b){7(b.1k==4e)7(G.17(b))K 6.2F(E.3e(b,6,P));N b=E.3e(b,6);L a=b.M&&b[b.M-1]!==10&&!b.15;K 6.1E(J(){K a?E.33(6,b)<0:6!=b})},1b:J(a){K!a?6:6.2F(E.37(6.22(),a.1k==4e?E(a).22():a.M!=10&&(!a.12||E.12(a,"3u"))?a:[a]))},3H:J(a){K a?E.3e(a,6).M>0:S},7j:J(a){K 6.3H("."+a)},5O:J(b){7(b==10){7(6.M){L c=6[0];7(E.12(c,"2k")){L e=c.3T,5I=[],11=c.11,2X=c.U=="2k-2X";7(e<0)K V;Q(L i=2X?e:0,2f=2X?e+1:11.M;i<2f;i++){L d=11[i];7(d.2p){b=E.14.1d&&!d.9J.1A.9y?d.1u:d.1A;7(2X)K b;5I.1g(b)}}K 5I}N K(6[0].1A||"").1r(/\\r/g,"")}K 10}K 6.R(J(){7(6.15!=1)K;7(b.1k==1M&&/5u|5t/.17(6.U))6.3k=(E.33(6.1A,b)>=0||E.33(6.31,b)>=0);N 7(E.12(6,"2k")){L a=b.1k==1M?b:[b];E("98",6).R(J(){6.2p=(E.33(6.1A,a)>=0||E.33(6.1u,a)>=0)});7(!a.M)6.3T=-1}N 6.1A=b})},3q:J(a){K a==10?(6.M?6[0].3d:V):6.4x().3t(a)},6S:J(a){K 6.5a(a).1V()},6Z:J(i){K 6.2K(i,i+1)},2K:J(){K 6.2F(1M.2l.2K.1i(6,18))},2c:J(b){K 6.2F(E.2c(6,J(a,i){K b.1P(a,i,a)}))},4R:J(){K 6.1b(6.54)},O:J(d,b){L a=d.23(".");a[1]=a[1]?"."+a[1]:"";7(b==V){L c=6.5n("8P"+a[1]+"!",[a[0]]);7(c==10&&6.M)c=E.O(6[0],d);K c==V&&a[1]?6.O(a[0]):c}N K 6.1N("8K"+a[1]+"!",[a[0],b]).R(J(){E.O(6,d,b)})},35:J(a){K 6.R(J(){E.35(6,a)})},3O:J(g,f,h,d){L e=6.M>1,3n;K 6.R(J(){7(!3n){3n=E.4a(g,6.2i);7(h)3n.8D()}L b=6;7(f&&E.12(6,"1O")&&E.12(3n[0],"4v"))b=6.3S("1U")[0]||6.38(6.2i.3s("1U"));L c=E([]);E.R(3n,J(){L a=e?E(6).5k(P)[0]:6;7(E.12(a,"1m")){c=c.1b(a)}N{7(a.15==1)c=c.1b(E("1m",a).1V());d.1P(b,a)}});c.R(6A)})}};E.2l.4T.2l=E.2l;J 6A(i,a){7(a.3Q)E.3P({1c:a.3Q,3l:S,1H:"1m"});N E.5g(a.1u||a.6x||a.3d||"");7(a.1a)a.1a.34(a)}E.1s=E.1n.1s=J(){L b=18[0]||{},i=1,M=18.M,5c=S,11;7(b.1k==8d){5c=b;b=18[1]||{};i=2}7(1o b!="3V"&&1o b!="J")b={};7(M==1){b=6;i=0}Q(;i<M;i++)7((11=18[i])!=V)Q(L a 1p 11){7(b===11[a])6w;7(5c&&11[a]&&1o 11[a]=="3V"&&b[a]&&!11[a].15)b[a]=E.1s(b[a],11[a]);N 7(11[a]!=10)b[a]=11[a]}K b};L F="3N"+(1B 3v()).3L(),6t=0,5b={};L H=/z-?4X|86-?84|1w|6k|7Z-?1R/i;E.1s({7Y:J(a){1e.$=D;7(a)1e.3N=w;K E},1q:J(a){K!!a&&1o a!="25"&&!a.12&&a.1k!=1M&&/J/i.17(a+"")},3E:J(a){K a.1F&&!a.1h||a.28&&a.2i&&!a.2i.1h},5g:J(a){a=E.3g(a);7(a){L b=T.3S("6f")[0]||T.1F,1m=T.3s("1m");1m.U="1u/4m";7(E.14.1d)1m.1u=a;N 1m.38(T.5r(a));b.38(1m);b.34(1m)}},12:J(b,a){K b.12&&b.12.2E()==a.2E()},1T:{},O:J(c,d,b){c=c==1e?5b:c;L a=c[F];7(!a)a=c[F]=++6t;7(d&&!E.1T[a])E.1T[a]={};7(b!=10)E.1T[a][d]=b;K d?E.1T[a][d]:a},35:J(c,b){c=c==1e?5b:c;L a=c[F];7(b){7(E.1T[a]){2V E.1T[a][b];b="";Q(b 1p E.1T[a])1Q;7(!b)E.35(c)}}N{1S{2V c[F]}1X(e){7(c.52)c.52(F)}2V E.1T[a]}},R:J(c,a,b){7(b){7(c.M==10){Q(L d 1p c)7(a.1i(c[d],b)===S)1Q}N Q(L i=0,M=c.M;i<M;i++)7(a.1i(c[i],b)===S)1Q}N{7(c.M==10){Q(L d 1p c)7(a.1P(c[d],d,c[d])===S)1Q}N Q(L i=0,M=c.M,1A=c[0];i<M&&a.1P(1A,i,1A)!==S;1A=c[++i]){}}K c},1l:J(b,a,c,i,d){7(E.1q(a))a=a.1P(b,i);K a&&a.1k==51&&c=="2o"&&!H.17(d)?a+"2S":a},1t:{1b:J(c,b){E.R((b||"").23(/\\s+/),J(i,a){7(c.15==1&&!E.1t.3Y(c.1t,a))c.1t+=(c.1t?" ":"")+a})},1V:J(c,b){7(c.15==1)c.1t=b!=10?E.3y(c.1t.23(/\\s+/),J(a){K!E.1t.3Y(b,a)}).6a(" "):""},3Y:J(b,a){K E.33(a,(b.1t||b).3X().23(/\\s+/))>-1}},68:J(b,c,a){L e={};Q(L d 1p c){e[d]=b.W[d];b.W[d]=c[d]}a.1P(b);Q(L d 1p c)b.W[d]=e[d]},1j:J(d,e,c){7(e=="27"||e=="1R"){L b,46={43:"4W",4U:"1Z",19:"3D"},3c=e=="27"?["7O","7M"]:["7J","7I"];J 5E(){b=e=="27"?d.7H:d.7F;L a=0,2N=0;E.R(3c,J(){a+=2M(E.2o(d,"7E"+6,P))||0;2N+=2M(E.2o(d,"2N"+6+"5X",P))||0});b-=24.7C(a+2N)}7(E(d).3H(":4d"))5E();N E.68(d,46,5E);K 24.2f(0,b)}K E.2o(d,e,c)},2o:J(e,k,j){L d;J 3x(b){7(!E.14.2d)K S;L a=T.4c.4K(b,V);K!a||a.4M("3x")==""}7(k=="1w"&&E.14.1d){d=E.1J(e.W,"1w");K d==""?"1":d}7(E.14.2z&&k=="19"){L c=e.W.50;e.W.50="0 7r 7o";e.W.50=c}7(k.1D(/4g/i))k=y;7(!j&&e.W&&e.W[k])d=e.W[k];N 7(T.4c&&T.4c.4K){7(k.1D(/4g/i))k="4g";k=k.1r(/([A-Z])/g,"-$1").2h();L h=T.4c.4K(e,V);7(h&&!3x(e))d=h.4M(k);N{L f=[],2C=[];Q(L a=e;a&&3x(a);a=a.1a)2C.4J(a);Q(L i=0;i<2C.M;i++)7(3x(2C[i])){f[i]=2C[i].W.19;2C[i].W.19="3D"}d=k=="19"&&f[2C.M-1]!=V?"2H":(h&&h.4M(k))||"";Q(L i=0;i<f.M;i++)7(f[i]!=V)2C[i].W.19=f[i]}7(k=="1w"&&d=="")d="1"}N 7(e.4n){L g=k.1r(/\\-(\\w)/g,J(a,b){K b.2E()});d=e.4n[k]||e.4n[g];7(!/^\\d+(2S)?$/i.17(d)&&/^\\d/.17(d)){L l=e.W.26,3K=e.3K.26;e.3K.26=e.4n.26;e.W.26=d||0;d=e.W.7f+"2S";e.W.26=l;e.3K.26=3K}}K d},4a:J(l,h){L k=[];h=h||T;7(1o h.3s==\'10\')h=h.2i||h[0]&&h[0].2i||T;E.R(l,J(i,d){7(!d)K;7(d.1k==51)d=d.3X();7(1o d=="25"){d=d.1r(/(<(\\w+)[^>]*?)\\/>/g,J(b,a,c){K c.1D(/^(aa|a6|7e|a5|4D|7a|a0|3m|9W|9U|9S)$/i)?b:a+"></"+c+">"});L f=E.3g(d).2h(),1x=h.3s("1x");L e=!f.1f("<9P")&&[1,"<2k 74=\'74\'>","</2k>"]||!f.1f("<9M")&&[1,"<73>","</73>"]||f.1D(/^<(9G|1U|9E|9B|9x)/)&&[1,"<1O>","</1O>"]||!f.1f("<4v")&&[2,"<1O><1U>","</1U></1O>"]||(!f.1f("<9w")||!f.1f("<9v"))&&[3,"<1O><1U><4v>","</4v></1U></1O>"]||!f.1f("<7e")&&[2,"<1O><1U></1U><6V>","</6V></1O>"]||E.14.1d&&[1,"1x<1x>","</1x>"]||[0,"",""];1x.3d=e[1]+d+e[2];2b(e[0]--)1x=1x.5o;7(E.14.1d){L g=!f.1f("<1O")&&f.1f("<1U")<0?1x.1C&&1x.1C.3p:e[1]=="<1O>"&&f.1f("<1U")<0?1x.3p:[];Q(L j=g.M-1;j>=0;--j)7(E.12(g[j],"1U")&&!g[j].3p.M)g[j].1a.34(g[j]);7(/^\\s/.17(d))1x.3o(h.5r(d.1D(/^\\s*/)[0]),1x.1C)}d=E.2I(1x.3p)}7(d.M===0&&(!E.12(d,"3u")&&!E.12(d,"2k")))K;7(d[0]==10||E.12(d,"3u")||d.11)k.1g(d);N k=E.37(k,d)});K k},1J:J(d,e,c){7(!d||d.15==3||d.15==8)K 10;L f=E.3E(d)?{}:E.46;7(e=="2p"&&E.14.2d)d.1a.3T;7(f[e]){7(c!=10)d[f[e]]=c;K d[f[e]]}N 7(E.14.1d&&e=="W")K E.1J(d.W,"9u",c);N 7(c==10&&E.14.1d&&E.12(d,"3u")&&(e=="9r"||e=="9o"))K d.9m(e).6K;N 7(d.28){7(c!=10){7(e=="U"&&E.12(d,"4D")&&d.1a)6Q"U 9i 9h\'t 9g 9e";d.9b(e,""+c)}7(E.14.1d&&/6O|3Q/.17(e)&&!E.3E(d))K d.4z(e,2);K d.4z(e)}N{7(e=="1w"&&E.14.1d){7(c!=10){d.6k=1;d.1E=(d.1E||"").1r(/6M\\([^)]*\\)/,"")+(2M(c).3X()=="96"?"":"6M(1w="+c*6L+")")}K d.1E&&d.1E.1f("1w=")>=0?(2M(d.1E.1D(/1w=([^)]*)/)[1])/6L).3X():""}e=e.1r(/-([a-z])/95,J(a,b){K b.2E()});7(c!=10)d[e]=c;K d[e]}},3g:J(a){K(a||"").1r(/^\\s+|\\s+$/g,"")},2I:J(b){L a=[];7(1o b!="93")Q(L i=0,M=b.M;i<M;i++)a.1g(b[i]);N a=b.2K(0);K a},33:J(b,a){Q(L i=0,M=a.M;i<M;i++)7(a[i]==b)K i;K-1},37:J(a,b){7(E.14.1d){Q(L i=0;b[i];i++)7(b[i].15!=8)a.1g(b[i])}N Q(L i=0;b[i];i++)a.1g(b[i]);K a},57:J(a){L c=[],2r={};1S{Q(L i=0,M=a.M;i<M;i++){L b=E.O(a[i]);7(!2r[b]){2r[b]=P;c.1g(a[i])}}}1X(e){c=a}K c},3y:J(c,a,d){L b=[];Q(L i=0,M=c.M;i<M;i++)7(!d&&a(c[i],i)||d&&!a(c[i],i))b.1g(c[i]);K b},2c:J(d,a){L c=[];Q(L i=0,M=d.M;i<M;i++){L b=a(d[i],i);7(b!==V&&b!=10){7(b.1k!=1M)b=[b];c=c.71(b)}}K c}});L v=8Y.8W.2h();E.14={5K:(v.1D(/.+(?:8T|8S|8R|8O)[\\/: ]([\\d.]+)/)||[])[1],2d:/77/.17(v),2z:/2z/.17(v),1d:/1d/.17(v)&&!/2z/.17(v),48:/48/.17(v)&&!/(8L|77)/.17(v)};L y=E.14.1d?"6H":"75";E.1s({8I:!E.14.1d||T.6F=="79",46:{"Q":"8F","8E":"1t","4g":y,75:y,6H:y,3d:"3d",1t:"1t",1A:"1A",2Y:"2Y",3k:"3k",8C:"8B",2p:"2p",8A:"8z",3T:"3T",6C:"6C",28:"28",12:"12"}});E.R({6B:J(a){K a.1a},8y:J(a){K E.4u(a,"1a")},8x:J(a){K E.2Z(a,2,"2B")},8v:J(a){K E.2Z(a,2,"4t")},8u:J(a){K E.4u(a,"2B")},8t:J(a){K E.4u(a,"4t")},8s:J(a){K E.5i(a.1a.1C,a)},8r:J(a){K E.5i(a.1C)},6z:J(a){K E.12(a,"8q")?a.8o||a.8n.T:E.2I(a.3p)}},J(c,d){E.1n[c]=J(b){L a=E.2c(6,d);7(b&&1o b=="25")a=E.3e(b,a);K 6.2F(E.57(a))}});E.R({6y:"3t",8m:"6q",3o:"6o",8l:"5a",8k:"6S"},J(c,b){E.1n[c]=J(){L a=18;K 6.R(J(){Q(L i=0,M=a.M;i<M;i++)E(a[i])[b](6)})}});E.R({8j:J(a){E.1J(6,a,"");7(6.15==1)6.52(a)},8i:J(a){E.1t.1b(6,a)},8h:J(a){E.1t.1V(6,a)},8g:J(a){E.1t[E.1t.3Y(6,a)?"1V":"1b"](6,a)},1V:J(a){7(!a||E.1E(a,[6]).r.M){E("*",6).1b(6).R(J(){E.16.1V(6);E.35(6)});7(6.1a)6.1a.34(6)}},4x:J(){E(">*",6).1V();2b(6.1C)6.34(6.1C)}},J(a,b){E.1n[a]=J(){K 6.R(b,18)}});E.R(["8f","5X"],J(i,c){L b=c.2h();E.1n[b]=J(a){K 6[0]==1e?E.14.2z&&T.1h["5e"+c]||E.14.2d&&1e["8e"+c]||T.6F=="79"&&T.1F["5e"+c]||T.1h["5e"+c]:6[0]==T?24.2f(24.2f(T.1h["5d"+c],T.1F["5d"+c]),24.2f(T.1h["5L"+c],T.1F["5L"+c])):a==10?(6.M?E.1j(6[0],b):V):6.1j(b,a.1k==4e?a:a+"2S")}});L C=E.14.2d&&4s(E.14.5K)<8c?"(?:[\\\\w*4r-]|\\\\\\\\.)":"(?:[\\\\w\\8b-\\8a*4r-]|\\\\\\\\.)",6v=1B 4q("^>\\\\s*("+C+"+)"),6u=1B 4q("^("+C+"+)(#)("+C+"+)"),6s=1B 4q("^([#.]?)("+C+"*)");E.1s({6r:{"":J(a,i,m){K m[2]=="*"||E.12(a,m[2])},"#":J(a,i,m){K a.4z("2w")==m[2]},":":{89:J(a,i,m){K i<m[3]-0},88:J(a,i,m){K i>m[3]-0},2Z:J(a,i,m){K m[3]-0==i},6Z:J(a,i,m){K m[3]-0==i},3j:J(a,i){K i==0},3J:J(a,i,m,r){K i==r.M-1},6n:J(a,i){K i%2==0},6l:J(a,i){K i%2},"3j-4p":J(a){K a.1a.3S("*")[0]==a},"3J-4p":J(a){K E.2Z(a.1a.5o,1,"4t")==a},"83-4p":J(a){K!E.2Z(a.1a.5o,2,"4t")},6B:J(a){K a.1C},4x:J(a){K!a.1C},82:J(a,i,m){K(a.6x||a.81||E(a).1u()||"").1f(m[3])>=0},4d:J(a){K"1Z"!=a.U&&E.1j(a,"19")!="2H"&&E.1j(a,"4U")!="1Z"},1Z:J(a){K"1Z"==a.U||E.1j(a,"19")=="2H"||E.1j(a,"4U")=="1Z"},80:J(a){K!a.2Y},2Y:J(a){K a.2Y},3k:J(a){K a.3k},2p:J(a){K a.2p||E.1J(a,"2p")},1u:J(a){K"1u"==a.U},5u:J(a){K"5u"==a.U},5t:J(a){K"5t"==a.U},59:J(a){K"59"==a.U},3I:J(a){K"3I"==a.U},58:J(a){K"58"==a.U},6j:J(a){K"6j"==a.U},6i:J(a){K"6i"==a.U},2G:J(a){K"2G"==a.U||E.12(a,"2G")},4D:J(a){K/4D|2k|6h|2G/i.17(a.12)},3Y:J(a,i,m){K E.2s(m[3],a).M},7X:J(a){K/h\\d/i.17(a.12)},7W:J(a){K E.3y(E.3G,J(b){K a==b.Y}).M}}},6g:[/^(\\[) *@?([\\w-]+) *([!*$^~=]*) *(\'?"?)(.*?)\\4 *\\]/,/^(:)([\\w-]+)\\("?\'?(.*?(\\(.*?\\))?[^(]*?)"?\'?\\)/,1B 4q("^([:.#]*)("+C+"+)")],3e:J(a,c,b){L d,2m=[];2b(a&&a!=d){d=a;L f=E.1E(a,c,b);a=f.t.1r(/^\\s*,\\s*/,"");2m=b?c=f.r:E.37(2m,f.r)}K 2m},2s:J(t,p){7(1o t!="25")K[t];7(p&&p.15!=1&&p.15!=9)K[];p=p||T;L d=[p],2r=[],3J,12;2b(t&&3J!=t){L r=[];3J=t;t=E.3g(t);L o=S;L g=6v;L m=g.2O(t);7(m){12=m[1].2E();Q(L i=0;d[i];i++)Q(L c=d[i].1C;c;c=c.2B)7(c.15==1&&(12=="*"||c.12.2E()==12))r.1g(c);d=r;t=t.1r(g,"");7(t.1f(" ")==0)6w;o=P}N{g=/^([>+~])\\s*(\\w*)/i;7((m=g.2O(t))!=V){r=[];L l={};12=m[2].2E();m=m[1];Q(L j=0,3f=d.M;j<3f;j++){L n=m=="~"||m=="+"?d[j].2B:d[j].1C;Q(;n;n=n.2B)7(n.15==1){L h=E.O(n);7(m=="~"&&l[h])1Q;7(!12||n.12.2E()==12){7(m=="~")l[h]=P;r.1g(n)}7(m=="+")1Q}}d=r;t=E.3g(t.1r(g,""));o=P}}7(t&&!o){7(!t.1f(",")){7(p==d[0])d.4l();2r=E.37(2r,d);r=d=[p];t=" "+t.6e(1,t.M)}N{L k=6u;L m=k.2O(t);7(m){m=[0,m[2],m[3],m[1]]}N{k=6s;m=k.2O(t)}m[2]=m[2].1r(/\\\\/g,"");L f=d[d.M-1];7(m[1]=="#"&&f&&f.5J&&!E.3E(f)){L q=f.5J(m[2]);7((E.14.1d||E.14.2z)&&q&&1o q.2w=="25"&&q.2w!=m[2])q=E(\'[@2w="\'+m[2]+\'"]\',f)[0];d=r=q&&(!m[3]||E.12(q,m[3]))?[q]:[]}N{Q(L i=0;d[i];i++){L a=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];7(a=="*"&&d[i].12.2h()=="3V")a="3m";r=E.37(r,d[i].3S(a))}7(m[1]==".")r=E.55(r,m[2]);7(m[1]=="#"){L e=[];Q(L i=0;r[i];i++)7(r[i].4z("2w")==m[2]){e=[r[i]];1Q}r=e}d=r}t=t.1r(k,"")}}7(t){L b=E.1E(t,r);d=r=b.r;t=E.3g(b.t)}}7(t)d=[];7(d&&p==d[0])d.4l();2r=E.37(2r,d);K 2r},55:J(r,m,a){m=" "+m+" ";L c=[];Q(L i=0;r[i];i++){L b=(" "+r[i].1t+" ").1f(m)>=0;7(!a&&b||a&&!b)c.1g(r[i])}K c},1E:J(t,r,h){L d;2b(t&&t!=d){d=t;L p=E.6g,m;Q(L i=0;p[i];i++){m=p[i].2O(t);7(m){t=t.7V(m[0].M);m[2]=m[2].1r(/\\\\/g,"");1Q}}7(!m)1Q;7(m[1]==":"&&m[2]=="56")r=G.17(m[3])?E.1E(m[3],r,P).r:E(r).56(m[3]);N 7(m[1]==".")r=E.55(r,m[2],h);N 7(m[1]=="["){L g=[],U=m[3];Q(L i=0,3f=r.M;i<3f;i++){L a=r[i],z=a[E.46[m[2]]||m[2]];7(z==V||/6O|3Q|2p/.17(m[2]))z=E.1J(a,m[2])||\'\';7((U==""&&!!z||U=="="&&z==m[5]||U=="!="&&z!=m[5]||U=="^="&&z&&!z.1f(m[5])||U=="$="&&z.6e(z.M-m[5].M)==m[5]||(U=="*="||U=="~=")&&z.1f(m[5])>=0)^h)g.1g(a)}r=g}N 7(m[1]==":"&&m[2]=="2Z-4p"){L e={},g=[],17=/(-?)(\\d*)n((?:\\+|-)?\\d*)/.2O(m[3]=="6n"&&"2n"||m[3]=="6l"&&"2n+1"||!/\\D/.17(m[3])&&"7U+"+m[3]||m[3]),3j=(17[1]+(17[2]||1))-0,d=17[3]-0;Q(L i=0,3f=r.M;i<3f;i++){L j=r[i],1a=j.1a,2w=E.O(1a);7(!e[2w]){L c=1;Q(L n=1a.1C;n;n=n.2B)7(n.15==1)n.4k=c++;e[2w]=P}L b=S;7(3j==0){7(j.4k==d)b=P}N 7((j.4k-d)%3j==0&&(j.4k-d)/3j>=0)b=P;7(b^h)g.1g(j)}r=g}N{L f=E.6r[m[1]];7(1o f=="3V")f=f[m[2]];7(1o f=="25")f=6c("S||J(a,i){K "+f+";}");r=E.3y(r,J(a,i){K f(a,i,m,r)},h)}}K{r:r,t:t}},4u:J(b,c){L d=[];L a=b[c];2b(a&&a!=T){7(a.15==1)d.1g(a);a=a[c]}K d},2Z:J(a,e,c,b){e=e||1;L d=0;Q(;a;a=a[c])7(a.15==1&&++d==e)1Q;K a},5i:J(n,a){L r=[];Q(;n;n=n.2B){7(n.15==1&&(!a||n!=a))r.1g(n)}K r}});E.16={1b:J(f,i,g,e){7(f.15==3||f.15==8)K;7(E.14.1d&&f.53!=10)f=1e;7(!g.2D)g.2D=6.2D++;7(e!=10){L h=g;g=J(){K h.1i(6,18)};g.O=e;g.2D=h.2D}L j=E.O(f,"2R")||E.O(f,"2R",{}),1v=E.O(f,"1v")||E.O(f,"1v",J(){L a;7(1o E=="10"||E.16.5f)K a;a=E.16.1v.1i(18.3R.Y,18);K a});1v.Y=f;E.R(i.23(/\\s+/),J(c,b){L a=b.23(".");b=a[0];g.U=a[1];L d=j[b];7(!d){d=j[b]={};7(!E.16.2y[b]||E.16.2y[b].4j.1P(f)===S){7(f.3F)f.3F(b,1v,S);N 7(f.6b)f.6b("4i"+b,1v)}}d[g.2D]=g;E.16.2a[b]=P});f=V},2D:1,2a:{},1V:J(e,h,f){7(e.15==3||e.15==8)K;L i=E.O(e,"2R"),29,4X;7(i){7(h==10||(1o h=="25"&&h.7T(0)=="."))Q(L g 1p i)6.1V(e,g+(h||""));N{7(h.U){f=h.2q;h=h.U}E.R(h.23(/\\s+/),J(b,a){L c=a.23(".");a=c[0];7(i[a]){7(f)2V i[a][f.2D];N Q(f 1p i[a])7(!c[1]||i[a][f].U==c[1])2V i[a][f];Q(29 1p i[a])1Q;7(!29){7(!E.16.2y[a]||E.16.2y[a].4h.1P(e)===S){7(e.67)e.67(a,E.O(e,"1v"),S);N 7(e.66)e.66("4i"+a,E.O(e,"1v"))}29=V;2V i[a]}}})}Q(29 1p i)1Q;7(!29){L d=E.O(e,"1v");7(d)d.Y=V;E.35(e,"2R");E.35(e,"1v")}}},1N:J(g,c,d,f,h){c=E.2I(c||[]);7(g.1f("!")>=0){g=g.2K(0,-1);L a=P}7(!d){7(6.2a[g])E("*").1b([1e,T]).1N(g,c)}N{7(d.15==3||d.15==8)K 10;L b,29,1n=E.1q(d[g]||V),16=!c[0]||!c[0].36;7(16)c.4J(6.4Z({U:g,2L:d}));c[0].U=g;7(a)c[0].65=P;7(E.1q(E.O(d,"1v")))b=E.O(d,"1v").1i(d,c);7(!1n&&d["4i"+g]&&d["4i"+g].1i(d,c)===S)b=S;7(16)c.4l();7(h&&E.1q(h)){29=h.1i(d,b==V?c:c.71(b));7(29!==10)b=29}7(1n&&f!==S&&b!==S&&!(E.12(d,\'a\')&&g=="4V")){6.5f=P;1S{d[g]()}1X(e){}}6.5f=S}K b},1v:J(c){L a;c=E.16.4Z(c||1e.16||{});L b=c.U.23(".");c.U=b[0];L f=E.O(6,"2R")&&E.O(6,"2R")[c.U],42=1M.2l.2K.1P(18,1);42.4J(c);Q(L j 1p f){L d=f[j];42[0].2q=d;42[0].O=d.O;7(!b[1]&&!c.65||d.U==b[1]){L e=d.1i(6,42);7(a!==S)a=e;7(e===S){c.36();c.44()}}}7(E.14.1d)c.2L=c.36=c.44=c.2q=c.O=V;K a},4Z:J(c){L a=c;c=E.1s({},a);c.36=J(){7(a.36)a.36();a.7S=S};c.44=J(){7(a.44)a.44();a.7R=P};7(!c.2L)c.2L=c.7Q||T;7(c.2L.15==3)c.2L=a.2L.1a;7(!c.4S&&c.5w)c.4S=c.5w==c.2L?c.7P:c.5w;7(c.64==V&&c.63!=V){L b=T.1F,1h=T.1h;c.64=c.63+(b&&b.2v||1h&&1h.2v||0)-(b.62||0);c.7N=c.7L+(b&&b.2x||1h&&1h.2x||0)-(b.60||0)}7(!c.3c&&((c.4f||c.4f===0)?c.4f:c.5Z))c.3c=c.4f||c.5Z;7(!c.7b&&c.5Y)c.7b=c.5Y;7(!c.3c&&c.2G)c.3c=(c.2G&1?1:(c.2G&2?3:(c.2G&4?2:0)));K c},2y:{21:{4j:J(){5M();K},4h:J(){K}},3C:{4j:J(){7(E.14.1d)K S;E(6).2j("4P",E.16.2y.3C.2q);K P},4h:J(){7(E.14.1d)K S;E(6).3w("4P",E.16.2y.3C.2q);K P},2q:J(a){7(I(a,6))K P;18[0].U="3C";K E.16.1v.1i(6,18)}},3B:{4j:J(){7(E.14.1d)K S;E(6).2j("4O",E.16.2y.3B.2q);K P},4h:J(){7(E.14.1d)K S;E(6).3w("4O",E.16.2y.3B.2q);K P},2q:J(a){7(I(a,6))K P;18[0].U="3B";K E.16.1v.1i(6,18)}}}};E.1n.1s({2j:J(c,a,b){K c=="4H"?6.2X(c,a,b):6.R(J(){E.16.1b(6,c,b||a,b&&a)})},2X:J(d,b,c){K 6.R(J(){E.16.1b(6,d,J(a){E(6).3w(a);K(c||b).1i(6,18)},c&&b)})},3w:J(a,b){K 6.R(J(){E.16.1V(6,a,b)})},1N:J(c,a,b){K 6.R(J(){E.16.1N(c,a,6,P,b)})},5n:J(c,a,b){7(6[0])K E.16.1N(c,a,6[0],S,b);K 10},2g:J(){L b=18;K 6.4V(J(a){6.4N=0==6.4N?1:0;a.36();K b[6.4N].1i(6,18)||S})},7D:J(a,b){K 6.2j(\'3C\',a).2j(\'3B\',b)},21:J(a){5M();7(E.2Q)a.1P(T,E);N E.3A.1g(J(){K a.1P(6,E)});K 6}});E.1s({2Q:S,3A:[],21:J(){7(!E.2Q){E.2Q=P;7(E.3A){E.R(E.3A,J(){6.1i(T)});E.3A=V}E(T).5n("21")}}});L x=S;J 5M(){7(x)K;x=P;7(T.3F&&!E.14.2z)T.3F("5W",E.21,S);7(E.14.1d&&1e==3b)(J(){7(E.2Q)K;1S{T.1F.7B("26")}1X(3a){3z(18.3R,0);K}E.21()})();7(E.14.2z)T.3F("5W",J(){7(E.2Q)K;Q(L i=0;i<T.4L.M;i++)7(T.4L[i].2Y){3z(18.3R,0);K}E.21()},S);7(E.14.2d){L a;(J(){7(E.2Q)K;7(T.39!="5V"&&T.39!="1y"){3z(18.3R,0);K}7(a===10)a=E("W, 7a[7A=7z]").M;7(T.4L.M!=a){3z(18.3R,0);K}E.21()})()}E.16.1b(1e,"3U",E.21)}E.R(("7y,7x,3U,7w,5d,4H,4V,7v,"+"7G,7u,7t,4P,4O,7s,2k,"+"58,7K,7q,7p,3a").23(","),J(i,b){E.1n[b]=J(a){K a?6.2j(b,a):6.1N(b)}});L I=J(a,c){L b=a.4S;2b(b&&b!=c)1S{b=b.1a}1X(3a){b=c}K b==c};E(1e).2j("4H",J(){E("*").1b(T).3w()});E.1n.1s({3U:J(g,d,c){7(E.1q(g))K 6.2j("3U",g);L e=g.1f(" ");7(e>=0){L i=g.2K(e,g.M);g=g.2K(0,e)}c=c||J(){};L f="4Q";7(d)7(E.1q(d)){c=d;d=V}N{d=E.3m(d);f="61"}L h=6;E.3P({1c:g,U:f,1H:"3q",O:d,1y:J(a,b){7(b=="1W"||b=="5U")h.3q(i?E("<1x/>").3t(a.4b.1r(/<1m(.|\\s)*?\\/1m>/g,"")).2s(i):a.4b);h.R(c,[a.4b,b,a])}});K 6},7n:J(){K E.3m(6.5T())},5T:J(){K 6.2c(J(){K E.12(6,"3u")?E.2I(6.7m):6}).1E(J(){K 6.31&&!6.2Y&&(6.3k||/2k|6h/i.17(6.12)||/1u|1Z|3I/i.17(6.U))}).2c(J(i,c){L b=E(6).5O();K b==V?V:b.1k==1M?E.2c(b,J(a,i){K{31:c.31,1A:a}}):{31:c.31,1A:b}}).22()}});E.R("5S,6d,5R,6D,5Q,6m".23(","),J(i,o){E.1n[o]=J(f){K 6.2j(o,f)}});L B=(1B 3v).3L();E.1s({22:J(d,b,a,c){7(E.1q(b)){a=b;b=V}K E.3P({U:"4Q",1c:d,O:b,1W:a,1H:c})},7l:J(b,a){K E.22(b,V,a,"1m")},7k:J(c,b,a){K E.22(c,b,a,"3i")},7i:J(d,b,a,c){7(E.1q(b)){a=b;b={}}K E.3P({U:"61",1c:d,O:b,1W:a,1H:c})},85:J(a){E.1s(E.4I,a)},4I:{2a:P,U:"4Q",2U:0,5P:"4o/x-7h-3u-7g",5N:P,3l:P,O:V,6p:V,3I:V,49:{3M:"4o/3M, 1u/3M",3q:"1u/3q",1m:"1u/4m, 4o/4m",3i:"4o/3i, 1u/4m",1u:"1u/a7",4G:"*/*"}},4F:{},3P:J(s){L f,2W=/=\\?(&|$)/g,1z,O;s=E.1s(P,s,E.1s(P,{},E.4I,s));7(s.O&&s.5N&&1o s.O!="25")s.O=E.3m(s.O);7(s.1H=="4E"){7(s.U.2h()=="22"){7(!s.1c.1D(2W))s.1c+=(s.1c.1D(/\\?/)?"&":"?")+(s.4E||"7d")+"=?"}N 7(!s.O||!s.O.1D(2W))s.O=(s.O?s.O+"&":"")+(s.4E||"7d")+"=?";s.1H="3i"}7(s.1H=="3i"&&(s.O&&s.O.1D(2W)||s.1c.1D(2W))){f="4E"+B++;7(s.O)s.O=(s.O+"").1r(2W,"="+f+"$1");s.1c=s.1c.1r(2W,"="+f+"$1");s.1H="1m";1e[f]=J(a){O=a;1W();1y();1e[f]=10;1S{2V 1e[f]}1X(e){}7(h)h.34(g)}}7(s.1H=="1m"&&s.1T==V)s.1T=S;7(s.1T===S&&s.U.2h()=="22"){L i=(1B 3v()).3L();L j=s.1c.1r(/(\\?|&)4r=.*?(&|$)/,"$a4="+i+"$2");s.1c=j+((j==s.1c)?(s.1c.1D(/\\?/)?"&":"?")+"4r="+i:"")}7(s.O&&s.U.2h()=="22"){s.1c+=(s.1c.1D(/\\?/)?"&":"?")+s.O;s.O=V}7(s.2a&&!E.5H++)E.16.1N("5S");7((!s.1c.1f("a3")||!s.1c.1f("//"))&&s.1H=="1m"&&s.U.2h()=="22"){L h=T.3S("6f")[0];L g=T.3s("1m");g.3Q=s.1c;7(s.7c)g.a2=s.7c;7(!f){L l=S;g.9Z=g.9Y=J(){7(!l&&(!6.39||6.39=="5V"||6.39=="1y")){l=P;1W();1y();h.34(g)}}}h.38(g);K 10}L m=S;L k=1e.78?1B 78("9X.9V"):1B 76();k.9T(s.U,s.1c,s.3l,s.6p,s.3I);1S{7(s.O)k.4C("9R-9Q",s.5P);7(s.5C)k.4C("9O-5A-9N",E.4F[s.1c]||"9L, 9K 9I 9H 5z:5z:5z 9F");k.4C("X-9C-9A","76");k.4C("9z",s.1H&&s.49[s.1H]?s.49[s.1H]+", */*":s.49.4G)}1X(e){}7(s.6Y)s.6Y(k);7(s.2a)E.16.1N("6m",[k,s]);L c=J(a){7(!m&&k&&(k.39==4||a=="2U")){m=P;7(d){6I(d);d=V}1z=a=="2U"&&"2U"||!E.6X(k)&&"3a"||s.5C&&E.6J(k,s.1c)&&"5U"||"1W";7(1z=="1W"){1S{O=E.6W(k,s.1H)}1X(e){1z="5x"}}7(1z=="1W"){L b;1S{b=k.5q("6U-5A")}1X(e){}7(s.5C&&b)E.4F[s.1c]=b;7(!f)1W()}N E.5v(s,k,1z);1y();7(s.3l)k=V}};7(s.3l){L d=53(c,13);7(s.2U>0)3z(J(){7(k){k.9t();7(!m)c("2U")}},s.2U)}1S{k.9s(s.O)}1X(e){E.5v(s,k,V,e)}7(!s.3l)c();J 1W(){7(s.1W)s.1W(O,1z);7(s.2a)E.16.1N("5Q",[k,s])}J 1y(){7(s.1y)s.1y(k,1z);7(s.2a)E.16.1N("5R",[k,s]);7(s.2a&&!--E.5H)E.16.1N("6d")}K k},5v:J(s,a,b,e){7(s.3a)s.3a(a,b,e);7(s.2a)E.16.1N("6D",[a,s,e])},5H:0,6X:J(r){1S{K!r.1z&&9q.9p=="59:"||(r.1z>=6T&&r.1z<9n)||r.1z==6R||r.1z==9l||E.14.2d&&r.1z==10}1X(e){}K S},6J:J(a,c){1S{L b=a.5q("6U-5A");K a.1z==6R||b==E.4F[c]||E.14.2d&&a.1z==10}1X(e){}K S},6W:J(r,b){L c=r.5q("9k-U");L d=b=="3M"||!b&&c&&c.1f("3M")>=0;L a=d?r.9j:r.4b;7(d&&a.1F.28=="5x")6Q"5x";7(b=="1m")E.5g(a);7(b=="3i")a=6c("("+a+")");K a},3m:J(a){L s=[];7(a.1k==1M||a.5h)E.R(a,J(){s.1g(3r(6.31)+"="+3r(6.1A))});N Q(L j 1p a)7(a[j]&&a[j].1k==1M)E.R(a[j],J(){s.1g(3r(j)+"="+3r(6))});N s.1g(3r(j)+"="+3r(a[j]));K s.6a("&").1r(/%20/g,"+")}});E.1n.1s({1G:J(c,b){K c?6.2e({1R:"1G",27:"1G",1w:"1G"},c,b):6.1E(":1Z").R(J(){6.W.19=6.5s||"";7(E.1j(6,"19")=="2H"){L a=E("<"+6.28+" />").6y("1h");6.W.19=a.1j("19");7(6.W.19=="2H")6.W.19="3D";a.1V()}}).3h()},1I:J(b,a){K b?6.2e({1R:"1I",27:"1I",1w:"1I"},b,a):6.1E(":4d").R(J(){6.5s=6.5s||E.1j(6,"19");6.W.19="2H"}).3h()},6N:E.1n.2g,2g:J(a,b){K E.1q(a)&&E.1q(b)?6.6N(a,b):a?6.2e({1R:"2g",27:"2g",1w:"2g"},a,b):6.R(J(){E(6)[E(6).3H(":1Z")?"1G":"1I"]()})},9f:J(b,a){K 6.2e({1R:"1G"},b,a)},9d:J(b,a){K 6.2e({1R:"1I"},b,a)},9c:J(b,a){K 6.2e({1R:"2g"},b,a)},9a:J(b,a){K 6.2e({1w:"1G"},b,a)},99:J(b,a){K 6.2e({1w:"1I"},b,a)},97:J(c,a,b){K 6.2e({1w:a},c,b)},2e:J(l,k,j,h){L i=E.6P(k,j,h);K 6[i.2P===S?"R":"2P"](J(){7(6.15!=1)K S;L g=E.1s({},i);L f=E(6).3H(":1Z"),4A=6;Q(L p 1p l){7(l[p]=="1I"&&f||l[p]=="1G"&&!f)K E.1q(g.1y)&&g.1y.1i(6);7(p=="1R"||p=="27"){g.19=E.1j(6,"19");g.32=6.W.32}}7(g.32!=V)6.W.32="1Z";g.40=E.1s({},l);E.R(l,J(c,a){L e=1B E.2t(4A,g,c);7(/2g|1G|1I/.17(a))e[a=="2g"?f?"1G":"1I":a](l);N{L b=a.3X().1D(/^([+-]=)?([\\d+-.]+)(.*)$/),1Y=e.2m(P)||0;7(b){L d=2M(b[2]),2A=b[3]||"2S";7(2A!="2S"){4A.W[c]=(d||1)+2A;1Y=((d||1)/e.2m(P))*1Y;4A.W[c]=1Y+2A}7(b[1])d=((b[1]=="-="?-1:1)*d)+1Y;e.45(1Y,d,2A)}N e.45(1Y,a,"")}});K P})},2P:J(a,b){7(E.1q(a)||(a&&a.1k==1M)){b=a;a="2t"}7(!a||(1o a=="25"&&!b))K A(6[0],a);K 6.R(J(){7(b.1k==1M)A(6,a,b);N{A(6,a).1g(b);7(A(6,a).M==1)b.1i(6)}})},94:J(b,c){L a=E.3G;7(b)6.2P([]);6.R(J(){Q(L i=a.M-1;i>=0;i--)7(a[i].Y==6){7(c)a[i](P);a.72(i,1)}});7(!c)6.5p();K 6}});L A=J(b,c,a){7(!b)K 10;c=c||"2t";L q=E.O(b,c+"2P");7(!q||a)q=E.O(b,c+"2P",a?E.2I(a):[]);K q};E.1n.5p=J(a){a=a||"2t";K 6.R(J(){L q=A(6,a);q.4l();7(q.M)q[0].1i(6)})};E.1s({6P:J(b,a,c){L d=b&&b.1k==92?b:{1y:c||!c&&a||E.1q(b)&&b,2u:b,3Z:c&&a||a&&a.1k!=91&&a};d.2u=(d.2u&&d.2u.1k==51?d.2u:{90:8Z,9D:6T}[d.2u])||8X;d.5y=d.1y;d.1y=J(){7(d.2P!==S)E(6).5p();7(E.1q(d.5y))d.5y.1i(6)};K d},3Z:{70:J(p,n,b,a){K b+a*p},5j:J(p,n,b,a){K((-24.8V(p*24.8U)/2)+0.5)*a+b}},3G:[],3W:V,2t:J(b,c,a){6.11=c;6.Y=b;6.1l=a;7(!c.47)c.47={}}});E.2t.2l={4y:J(){7(6.11.30)6.11.30.1i(6.Y,[6.2J,6]);(E.2t.30[6.1l]||E.2t.30.4G)(6);7(6.1l=="1R"||6.1l=="27")6.Y.W.19="3D"},2m:J(a){7(6.Y[6.1l]!=V&&6.Y.W[6.1l]==V)K 6.Y[6.1l];L r=2M(E.1j(6.Y,6.1l,a));K r&&r>-8Q?r:2M(E.2o(6.Y,6.1l))||0},45:J(c,b,d){6.5B=(1B 3v()).3L();6.1Y=c;6.3h=b;6.2A=d||6.2A||"2S";6.2J=6.1Y;6.4B=6.4w=0;6.4y();L e=6;J t(a){K e.30(a)}t.Y=6.Y;E.3G.1g(t);7(E.3W==V){E.3W=53(J(){L a=E.3G;Q(L i=0;i<a.M;i++)7(!a[i]())a.72(i--,1);7(!a.M){6I(E.3W);E.3W=V}},13)}},1G:J(){6.11.47[6.1l]=E.1J(6.Y.W,6.1l);6.11.1G=P;6.45(0,6.2m());7(6.1l=="27"||6.1l=="1R")6.Y.W[6.1l]="8N";E(6.Y).1G()},1I:J(){6.11.47[6.1l]=E.1J(6.Y.W,6.1l);6.11.1I=P;6.45(6.2m(),0)},30:J(a){L t=(1B 3v()).3L();7(a||t>6.11.2u+6.5B){6.2J=6.3h;6.4B=6.4w=1;6.4y();6.11.40[6.1l]=P;L b=P;Q(L i 1p 6.11.40)7(6.11.40[i]!==P)b=S;7(b){7(6.11.19!=V){6.Y.W.32=6.11.32;6.Y.W.19=6.11.19;7(E.1j(6.Y,"19")=="2H")6.Y.W.19="3D"}7(6.11.1I)6.Y.W.19="2H";7(6.11.1I||6.11.1G)Q(L p 1p 6.11.40)E.1J(6.Y.W,p,6.11.47[p])}7(b&&E.1q(6.11.1y))6.11.1y.1i(6.Y);K S}N{L n=t-6.5B;6.4w=n/6.11.2u;6.4B=E.3Z[6.11.3Z||(E.3Z.5j?"5j":"70")](6.4w,n,0,1,6.11.2u);6.2J=6.1Y+((6.3h-6.1Y)*6.4B);6.4y()}K P}};E.2t.30={2v:J(a){a.Y.2v=a.2J},2x:J(a){a.Y.2x=a.2J},1w:J(a){E.1J(a.Y.W,"1w",a.2J)},4G:J(a){a.Y.W[a.1l]=a.2J+a.2A}};E.1n.5L=J(){L b=0,3b=0,Y=6[0],5l;7(Y)8M(E.14){L d=Y.1a,41=Y,1K=Y.1K,1L=Y.2i,5D=2d&&4s(5K)<8J&&!/a1/i.17(v),2T=E.1j(Y,"43")=="2T";7(Y.6G){L c=Y.6G();1b(c.26+24.2f(1L.1F.2v,1L.1h.2v),c.3b+24.2f(1L.1F.2x,1L.1h.2x));1b(-1L.1F.62,-1L.1F.60)}N{1b(Y.5G,Y.5F);2b(1K){1b(1K.5G,1K.5F);7(48&&!/^t(8H|d|h)$/i.17(1K.28)||2d&&!5D)2N(1K);7(!2T&&E.1j(1K,"43")=="2T")2T=P;41=/^1h$/i.17(1K.28)?41:1K;1K=1K.1K}2b(d&&d.28&&!/^1h|3q$/i.17(d.28)){7(!/^8G|1O.*$/i.17(E.1j(d,"19")))1b(-d.2v,-d.2x);7(48&&E.1j(d,"32")!="4d")2N(d);d=d.1a}7((5D&&(2T||E.1j(41,"43")=="4W"))||(48&&E.1j(41,"43")!="4W"))1b(-1L.1h.5G,-1L.1h.5F);7(2T)1b(24.2f(1L.1F.2v,1L.1h.2v),24.2f(1L.1F.2x,1L.1h.2x))}5l={3b:3b,26:b}}J 2N(a){1b(E.2o(a,"a8",P),E.2o(a,"a9",P))}J 1b(l,t){b+=4s(l)||0;3b+=4s(t)||0}K 5l}})();',62,631,'||||||this|if||||||||||||||||||||||||||||||||||||||function|return|var|length|else|data|true|for|each|false|document|type|null|style||elem||undefined|options|nodeName||browser|nodeType|event|test|arguments|display|parentNode|add|url|msie|window|indexOf|push|body|apply|css|constructor|prop|script|fn|typeof|in|isFunction|replace|extend|className|text|handle|opacity|div|complete|status|value|new|firstChild|match|filter|documentElement|show|dataType|hide|attr|offsetParent|doc|Array|trigger|table|call|break|height|try|cache|tbody|remove|success|catch|start|hidden||ready|get|split|Math|string|left|width|tagName|ret|global|while|map|safari|animate|max|toggle|toLowerCase|ownerDocument|bind|select|prototype|cur||curCSS|selected|handler|done|find|fx|duration|scrollLeft|id|scrollTop|special|opera|unit|nextSibling|stack|guid|toUpperCase|pushStack|button|none|makeArray|now|slice|target|parseFloat|border|exec|queue|isReady|events|px|fixed|timeout|delete|jsre|one|disabled|nth|step|name|overflow|inArray|removeChild|removeData|preventDefault|merge|appendChild|readyState|error|top|which|innerHTML|multiFilter|rl|trim|end|json|first|checked|async|param|elems|insertBefore|childNodes|html|encodeURIComponent|createElement|append|form|Date|unbind|color|grep|setTimeout|readyList|mouseleave|mouseenter|block|isXMLDoc|addEventListener|timers|is|password|last|runtimeStyle|getTime|xml|jQuery|domManip|ajax|src|callee|getElementsByTagName|selectedIndex|load|object|timerId|toString|has|easing|curAnim|offsetChild|args|position|stopPropagation|custom|props|orig|mozilla|accepts|clean|responseText|defaultView|visible|String|charCode|float|teardown|on|setup|nodeIndex|shift|javascript|currentStyle|application|child|RegExp|_|parseInt|previousSibling|dir|tr|state|empty|update|getAttribute|self|pos|setRequestHeader|input|jsonp|lastModified|_default|unload|ajaxSettings|unshift|getComputedStyle|styleSheets|getPropertyValue|lastToggle|mouseout|mouseover|GET|andSelf|relatedTarget|init|visibility|click|absolute|index|container|fix|outline|Number|removeAttribute|setInterval|prevObject|classFilter|not|unique|submit|file|after|windowData|deep|scroll|client|triggered|globalEval|jquery|sibling|swing|clone|results|wrapAll|triggerHandler|lastChild|dequeue|getResponseHeader|createTextNode|oldblock|checkbox|radio|handleError|fromElement|parsererror|old|00|Modified|startTime|ifModified|safari2|getWH|offsetTop|offsetLeft|active|values|getElementById|version|offset|bindReady|processData|val|contentType|ajaxSuccess|ajaxComplete|ajaxStart|serializeArray|notmodified|loaded|DOMContentLoaded|Width|ctrlKey|keyCode|clientTop|POST|clientLeft|clientX|pageX|exclusive|detachEvent|removeEventListener|swap|cloneNode|join|attachEvent|eval|ajaxStop|substr|head|parse|textarea|reset|image|zoom|odd|ajaxSend|even|before|username|prepend|expr|quickClass|uuid|quickID|quickChild|continue|textContent|appendTo|contents|evalScript|parent|defaultValue|ajaxError|setArray|compatMode|getBoundingClientRect|styleFloat|clearInterval|httpNotModified|nodeValue|100|alpha|_toggle|href|speed|throw|304|replaceWith|200|Last|colgroup|httpData|httpSuccess|beforeSend|eq|linear|concat|splice|fieldset|multiple|cssFloat|XMLHttpRequest|webkit|ActiveXObject|CSS1Compat|link|metaKey|scriptCharset|callback|col|pixelLeft|urlencoded|www|post|hasClass|getJSON|getScript|elements|serialize|black|keyup|keypress|solid|change|mousemove|mouseup|dblclick|resize|focus|blur|stylesheet|rel|doScroll|round|hover|padding|offsetHeight|mousedown|offsetWidth|Bottom|Top|keydown|clientY|Right|pageY|Left|toElement|srcElement|cancelBubble|returnValue|charAt|0n|substring|animated|header|noConflict|line|enabled|innerText|contains|only|weight|ajaxSetup|font|size|gt|lt|uFFFF|u0128|417|Boolean|inner|Height|toggleClass|removeClass|addClass|removeAttr|replaceAll|insertAfter|prependTo|contentWindow|contentDocument|wrap|iframe|children|siblings|prevAll|nextAll|prev|wrapInner|next|parents|maxLength|maxlength|readOnly|readonly|reverse|class|htmlFor|inline|able|boxModel|522|setData|compatible|with|1px|ie|getData|10000|ra|it|rv|PI|cos|userAgent|400|navigator|600|slow|Function|Object|array|stop|ig|NaN|fadeTo|option|fadeOut|fadeIn|setAttribute|slideToggle|slideUp|changed|slideDown|be|can|property|responseXML|content|1223|getAttributeNode|300|method|protocol|location|action|send|abort|cssText|th|td|cap|specified|Accept|With|colg|Requested|fast|tfoot|GMT|thead|1970|Jan|attributes|01|Thu|leg|Since|If|opt|Type|Content|embed|open|area|XMLHTTP|hr|Microsoft|onreadystatechange|onload|meta|adobeair|charset|http|1_|img|br|plain|borderLeftWidth|borderTopWidth|abbr'.split('|'),0,{}))
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(H(){J w=1b.4M,3m$=1b.$;J D=1b.4M=1b.$=H(a,b){I 2B D.17.5j(a,b)};J u=/^[^<]*(<(.|\\s)+>)[^>]*$|^#(\\w+)$/,62=/^.[^:#\\[\\.]*$/,12;D.17=D.44={5j:H(d,b){d=d||S;G(d.16){7[0]=d;7.K=1;I 7}G(1j d=="23"){J c=u.2D(d);G(c&&(c[1]||!b)){G(c[1])d=D.4h([c[1]],b);N{J a=S.61(c[3]);G(a){G(a.2v!=c[3])I D().2q(d);I D(a)}d=[]}}N I D(b).2q(d)}N G(D.1D(d))I D(S)[D.17.27?"27":"43"](d);I 7.6Y(D.2d(d))},5w:"1.2.6",8G:H(){I 7.K},K:0,3p:H(a){I a==12?D.2d(7):7[a]},2I:H(b){J a=D(b);a.5n=7;I a},6Y:H(a){7.K=0;2p.44.1p.1w(7,a);I 7},P:H(a,b){I D.P(7,a,b)},5i:H(b){J a=-1;I D.2L(b&&b.5w?b[0]:b,7)},1K:H(c,a,b){J d=c;G(c.1q==56)G(a===12)I 7[0]&&D[b||"1K"](7[0],c);N{d={};d[c]=a}I 7.P(H(i){R(c 1n d)D.1K(b?7.V:7,c,D.1i(7,d[c],b,i,c))})},1g:H(b,a){G((b==\'2h\'||b==\'1Z\')&&3d(a)<0)a=12;I 7.1K(b,a,"2a")},1r:H(b){G(1j b!="49"&&b!=U)I 7.4E().3v((7[0]&&7[0].2z||S).5F(b));J a="";D.P(b||7,H(){D.P(7.3t,H(){G(7.16!=8)a+=7.16!=1?7.76:D.17.1r([7])})});I a},5z:H(b){G(7[0])D(b,7[0].2z).5y().39(7[0]).2l(H(){J a=7;1B(a.1x)a=a.1x;I a}).3v(7);I 7},8Y:H(a){I 7.P(H(){D(7).6Q().5z(a)})},8R:H(a){I 7.P(H(){D(7).5z(a)})},3v:H(){I 7.3W(19,M,Q,H(a){G(7.16==1)7.3U(a)})},6F:H(){I 7.3W(19,M,M,H(a){G(7.16==1)7.39(a,7.1x)})},6E:H(){I 7.3W(19,Q,Q,H(a){7.1d.39(a,7)})},5q:H(){I 7.3W(19,Q,M,H(a){7.1d.39(a,7.2H)})},3l:H(){I 7.5n||D([])},2q:H(b){J c=D.2l(7,H(a){I D.2q(b,a)});I 7.2I(/[^+>] [^+>]/.11(b)||b.1h("..")>-1?D.4r(c):c)},5y:H(e){J f=7.2l(H(){G(D.14.1f&&!D.4n(7)){J a=7.6o(M),5h=S.3h("1v");5h.3U(a);I D.4h([5h.4H])[0]}N I 7.6o(M)});J d=f.2q("*").5c().P(H(){G(7[E]!=12)7[E]=U});G(e===M)7.2q("*").5c().P(H(i){G(7.16==3)I;J c=D.L(7,"3w");R(J a 1n c)R(J b 1n c[a])D.W.1e(d[i],a,c[a][b],c[a][b].L)});I f},1E:H(b){I 7.2I(D.1D(b)&&D.3C(7,H(a,i){I b.1k(a,i)})||D.3g(b,7))},4Y:H(b){G(b.1q==56)G(62.11(b))I 7.2I(D.3g(b,7,M));N b=D.3g(b,7);J a=b.K&&b[b.K-1]!==12&&!b.16;I 7.1E(H(){I a?D.2L(7,b)<0:7!=b})},1e:H(a){I 7.2I(D.4r(D.2R(7.3p(),1j a==\'23\'?D(a):D.2d(a))))},3F:H(a){I!!a&&D.3g(a,7).K>0},7T:H(a){I 7.3F("."+a)},6e:H(b){G(b==12){G(7.K){J c=7[0];G(D.Y(c,"2A")){J e=c.64,63=[],15=c.15,2V=c.O=="2A-2V";G(e<0)I U;R(J i=2V?e:0,2f=2V?e+1:15.K;i<2f;i++){J d=15[i];G(d.2W){b=D.14.1f&&!d.at.2x.an?d.1r:d.2x;G(2V)I b;63.1p(b)}}I 63}N I(7[0].2x||"").1o(/\\r/g,"")}I 12}G(b.1q==4L)b+=\'\';I 7.P(H(){G(7.16!=1)I;G(b.1q==2p&&/5O|5L/.11(7.O))7.4J=(D.2L(7.2x,b)>=0||D.2L(7.34,b)>=0);N G(D.Y(7,"2A")){J a=D.2d(b);D("9R",7).P(H(){7.2W=(D.2L(7.2x,a)>=0||D.2L(7.1r,a)>=0)});G(!a.K)7.64=-1}N 7.2x=b})},2K:H(a){I a==12?(7[0]?7[0].4H:U):7.4E().3v(a)},7b:H(a){I 7.5q(a).21()},79:H(i){I 7.3s(i,i+1)},3s:H(){I 7.2I(2p.44.3s.1w(7,19))},2l:H(b){I 7.2I(D.2l(7,H(a,i){I b.1k(a,i,a)}))},5c:H(){I 7.1e(7.5n)},L:H(d,b){J a=d.1R(".");a[1]=a[1]?"."+a[1]:"";G(b===12){J c=7.5C("9z"+a[1]+"!",[a[0]]);G(c===12&&7.K)c=D.L(7[0],d);I c===12&&a[1]?7.L(a[0]):c}N I 7.1P("9u"+a[1]+"!",[a[0],b]).P(H(){D.L(7,d,b)})},3b:H(a){I 7.P(H(){D.3b(7,a)})},3W:H(g,f,h,d){J e=7.K>1,3x;I 7.P(H(){G(!3x){3x=D.4h(g,7.2z);G(h)3x.9o()}J b=7;G(f&&D.Y(7,"1T")&&D.Y(3x[0],"4F"))b=7.3H("22")[0]||7.3U(7.2z.3h("22"));J c=D([]);D.P(3x,H(){J a=e?D(7).5y(M)[0]:7;G(D.Y(a,"1m"))c=c.1e(a);N{G(a.16==1)c=c.1e(D("1m",a).21());d.1k(b,a)}});c.P(6T)})}};D.17.5j.44=D.17;H 6T(i,a){G(a.4d)D.3Y({1a:a.4d,31:Q,1O:"1m"});N D.5u(a.1r||a.6O||a.4H||"");G(a.1d)a.1d.37(a)}H 1z(){I+2B 8J}D.1l=D.17.1l=H(){J b=19[0]||{},i=1,K=19.K,4x=Q,15;G(b.1q==8I){4x=b;b=19[1]||{};i=2}G(1j b!="49"&&1j b!="H")b={};G(K==i){b=7;--i}R(;i<K;i++)G((15=19[i])!=U)R(J c 1n 15){J a=b[c],2w=15[c];G(b===2w)6M;G(4x&&2w&&1j 2w=="49"&&!2w.16)b[c]=D.1l(4x,a||(2w.K!=U?[]:{}),2w);N G(2w!==12)b[c]=2w}I b};J E="4M"+1z(),6K=0,5r={},6G=/z-?5i|8B-?8A|1y|6B|8v-?1Z/i,3P=S.3P||{};D.1l({8u:H(a){1b.$=3m$;G(a)1b.4M=w;I D},1D:H(a){I!!a&&1j a!="23"&&!a.Y&&a.1q!=2p&&/^[\\s[]?H/.11(a+"")},4n:H(a){I a.1C&&!a.1c||a.2j&&a.2z&&!a.2z.1c},5u:H(a){a=D.3k(a);G(a){J b=S.3H("6w")[0]||S.1C,1m=S.3h("1m");1m.O="1r/4t";G(D.14.1f)1m.1r=a;N 1m.3U(S.5F(a));b.39(1m,b.1x);b.37(1m)}},Y:H(b,a){I b.Y&&b.Y.2r()==a.2r()},1Y:{},L:H(c,d,b){c=c==1b?5r:c;J a=c[E];G(!a)a=c[E]=++6K;G(d&&!D.1Y[a])D.1Y[a]={};G(b!==12)D.1Y[a][d]=b;I d?D.1Y[a][d]:a},3b:H(c,b){c=c==1b?5r:c;J a=c[E];G(b){G(D.1Y[a]){2U D.1Y[a][b];b="";R(b 1n D.1Y[a])1X;G(!b)D.3b(c)}}N{1U{2U c[E]}1V(e){G(c.5l)c.5l(E)}2U D.1Y[a]}},P:H(d,a,c){J e,i=0,K=d.K;G(c){G(K==12){R(e 1n d)G(a.1w(d[e],c)===Q)1X}N R(;i<K;)G(a.1w(d[i++],c)===Q)1X}N{G(K==12){R(e 1n d)G(a.1k(d[e],e,d[e])===Q)1X}N R(J b=d[0];i<K&&a.1k(b,i,b)!==Q;b=d[++i]){}}I d},1i:H(b,a,c,i,d){G(D.1D(a))a=a.1k(b,i);I a&&a.1q==4L&&c=="2a"&&!6G.11(d)?a+"2X":a},1F:{1e:H(c,b){D.P((b||"").1R(/\\s+/),H(i,a){G(c.16==1&&!D.1F.3T(c.1F,a))c.1F+=(c.1F?" ":"")+a})},21:H(c,b){G(c.16==1)c.1F=b!=12?D.3C(c.1F.1R(/\\s+/),H(a){I!D.1F.3T(b,a)}).6s(" "):""},3T:H(b,a){I D.2L(a,(b.1F||b).6r().1R(/\\s+/))>-1}},6q:H(b,c,a){J e={};R(J d 1n c){e[d]=b.V[d];b.V[d]=c[d]}a.1k(b);R(J d 1n c)b.V[d]=e[d]},1g:H(d,e,c){G(e=="2h"||e=="1Z"){J b,3X={30:"5x",5g:"1G",18:"3I"},35=e=="2h"?["5e","6k"]:["5G","6i"];H 5b(){b=e=="2h"?d.8f:d.8c;J a=0,2C=0;D.P(35,H(){a+=3d(D.2a(d,"57"+7,M))||0;2C+=3d(D.2a(d,"2C"+7+"4b",M))||0});b-=29.83(a+2C)}G(D(d).3F(":4j"))5b();N D.6q(d,3X,5b);I 29.2f(0,b)}I D.2a(d,e,c)},2a:H(f,l,k){J e,V=f.V;H 3E(b){G(!D.14.2k)I Q;J a=3P.54(b,U);I!a||a.52("3E")==""}G(l=="1y"&&D.14.1f){e=D.1K(V,"1y");I e==""?"1":e}G(D.14.2G&&l=="18"){J d=V.50;V.50="0 7Y 7W";V.50=d}G(l.1I(/4i/i))l=y;G(!k&&V&&V[l])e=V[l];N G(3P.54){G(l.1I(/4i/i))l="4i";l=l.1o(/([A-Z])/g,"-$1").3y();J c=3P.54(f,U);G(c&&!3E(f))e=c.52(l);N{J g=[],2E=[],a=f,i=0;R(;a&&3E(a);a=a.1d)2E.6h(a);R(;i<2E.K;i++)G(3E(2E[i])){g[i]=2E[i].V.18;2E[i].V.18="3I"}e=l=="18"&&g[2E.K-1]!=U?"2F":(c&&c.52(l))||"";R(i=0;i<g.K;i++)G(g[i]!=U)2E[i].V.18=g[i]}G(l=="1y"&&e=="")e="1"}N G(f.4g){J h=l.1o(/\\-(\\w)/g,H(a,b){I b.2r()});e=f.4g[l]||f.4g[h];G(!/^\\d+(2X)?$/i.11(e)&&/^\\d/.11(e)){J j=V.1A,66=f.65.1A;f.65.1A=f.4g.1A;V.1A=e||0;e=V.aM+"2X";V.1A=j;f.65.1A=66}}I e},4h:H(l,h){J k=[];h=h||S;G(1j h.3h==\'12\')h=h.2z||h[0]&&h[0].2z||S;D.P(l,H(i,d){G(!d)I;G(d.1q==4L)d+=\'\';G(1j d=="23"){d=d.1o(/(<(\\w+)[^>]*?)\\/>/g,H(b,a,c){I c.1I(/^(aK|4f|7E|aG|4T|7A|aB|3n|az|ay|av)$/i)?b:a+"></"+c+">"});J f=D.3k(d).3y(),1v=h.3h("1v");J e=!f.1h("<au")&&[1,"<2A 7w=\'7w\'>","</2A>"]||!f.1h("<ar")&&[1,"<7v>","</7v>"]||f.1I(/^<(aq|22|am|ak|ai)/)&&[1,"<1T>","</1T>"]||!f.1h("<4F")&&[2,"<1T><22>","</22></1T>"]||(!f.1h("<af")||!f.1h("<ad"))&&[3,"<1T><22><4F>","</4F></22></1T>"]||!f.1h("<7E")&&[2,"<1T><22></22><7q>","</7q></1T>"]||D.14.1f&&[1,"1v<1v>","</1v>"]||[0,"",""];1v.4H=e[1]+d+e[2];1B(e[0]--)1v=1v.5T;G(D.14.1f){J g=!f.1h("<1T")&&f.1h("<22")<0?1v.1x&&1v.1x.3t:e[1]=="<1T>"&&f.1h("<22")<0?1v.3t:[];R(J j=g.K-1;j>=0;--j)G(D.Y(g[j],"22")&&!g[j].3t.K)g[j].1d.37(g[j]);G(/^\\s/.11(d))1v.39(h.5F(d.1I(/^\\s*/)[0]),1v.1x)}d=D.2d(1v.3t)}G(d.K===0&&(!D.Y(d,"3V")&&!D.Y(d,"2A")))I;G(d[0]==12||D.Y(d,"3V")||d.15)k.1p(d);N k=D.2R(k,d)});I k},1K:H(d,f,c){G(!d||d.16==3||d.16==8)I 12;J e=!D.4n(d),40=c!==12,1f=D.14.1f;f=e&&D.3X[f]||f;G(d.2j){J g=/5Q|4d|V/.11(f);G(f=="2W"&&D.14.2k)d.1d.64;G(f 1n d&&e&&!g){G(40){G(f=="O"&&D.Y(d,"4T")&&d.1d)7p"O a3 a1\'t 9V 9U";d[f]=c}G(D.Y(d,"3V")&&d.7i(f))I d.7i(f).76;I d[f]}G(1f&&e&&f=="V")I D.1K(d.V,"9T",c);G(40)d.9Q(f,""+c);J h=1f&&e&&g?d.4G(f,2):d.4G(f);I h===U?12:h}G(1f&&f=="1y"){G(40){d.6B=1;d.1E=(d.1E||"").1o(/7f\\([^)]*\\)/,"")+(3r(c)+\'\'=="9L"?"":"7f(1y="+c*7a+")")}I d.1E&&d.1E.1h("1y=")>=0?(3d(d.1E.1I(/1y=([^)]*)/)[1])/7a)+\'\':""}f=f.1o(/-([a-z])/9H,H(a,b){I b.2r()});G(40)d[f]=c;I d[f]},3k:H(a){I(a||"").1o(/^\\s+|\\s+$/g,"")},2d:H(b){J a=[];G(b!=U){J i=b.K;G(i==U||b.1R||b.4I||b.1k)a[0]=b;N 1B(i)a[--i]=b[i]}I a},2L:H(b,a){R(J i=0,K=a.K;i<K;i++)G(a[i]===b)I i;I-1},2R:H(a,b){J i=0,T,2S=a.K;G(D.14.1f){1B(T=b[i++])G(T.16!=8)a[2S++]=T}N 1B(T=b[i++])a[2S++]=T;I a},4r:H(a){J c=[],2o={};1U{R(J i=0,K=a.K;i<K;i++){J b=D.L(a[i]);G(!2o[b]){2o[b]=M;c.1p(a[i])}}}1V(e){c=a}I c},3C:H(c,a,d){J b=[];R(J i=0,K=c.K;i<K;i++)G(!d!=!a(c[i],i))b.1p(c[i]);I b},2l:H(d,a){J c=[];R(J i=0,K=d.K;i<K;i++){J b=a(d[i],i);G(b!=U)c[c.K]=b}I c.7d.1w([],c)}});J v=9B.9A.3y();D.14={5B:(v.1I(/.+(?:9y|9x|9w|9v)[\\/: ]([\\d.]+)/)||[])[1],2k:/75/.11(v),2G:/2G/.11(v),1f:/1f/.11(v)&&!/2G/.11(v),42:/42/.11(v)&&!/(9s|75)/.11(v)};J y=D.14.1f?"7o":"72";D.1l({71:!D.14.1f||S.70=="6Z",3X:{"R":"9n","9k":"1F","4i":y,72:y,7o:y,9h:"9f",9e:"9d",9b:"99"}});D.P({6W:H(a){I a.1d},97:H(a){I D.4S(a,"1d")},95:H(a){I D.3a(a,2,"2H")},91:H(a){I D.3a(a,2,"4l")},8Z:H(a){I D.4S(a,"2H")},8X:H(a){I D.4S(a,"4l")},8W:H(a){I D.5v(a.1d.1x,a)},8V:H(a){I D.5v(a.1x)},6Q:H(a){I D.Y(a,"8U")?a.8T||a.8S.S:D.2d(a.3t)}},H(c,d){D.17[c]=H(b){J a=D.2l(7,d);G(b&&1j b=="23")a=D.3g(b,a);I 7.2I(D.4r(a))}});D.P({6P:"3v",8Q:"6F",39:"6E",8P:"5q",8O:"7b"},H(c,b){D.17[c]=H(){J a=19;I 7.P(H(){R(J i=0,K=a.K;i<K;i++)D(a[i])[b](7)})}});D.P({8N:H(a){D.1K(7,a,"");G(7.16==1)7.5l(a)},8M:H(a){D.1F.1e(7,a)},8L:H(a){D.1F.21(7,a)},8K:H(a){D.1F[D.1F.3T(7,a)?"21":"1e"](7,a)},21:H(a){G(!a||D.1E(a,[7]).r.K){D("*",7).1e(7).P(H(){D.W.21(7);D.3b(7)});G(7.1d)7.1d.37(7)}},4E:H(){D(">*",7).21();1B(7.1x)7.37(7.1x)}},H(a,b){D.17[a]=H(){I 7.P(b,19)}});D.P(["6N","4b"],H(i,c){J b=c.3y();D.17[b]=H(a){I 7[0]==1b?D.14.2G&&S.1c["5t"+c]||D.14.2k&&1b["5s"+c]||S.70=="6Z"&&S.1C["5t"+c]||S.1c["5t"+c]:7[0]==S?29.2f(29.2f(S.1c["4y"+c],S.1C["4y"+c]),29.2f(S.1c["2i"+c],S.1C["2i"+c])):a==12?(7.K?D.1g(7[0],b):U):7.1g(b,a.1q==56?a:a+"2X")}});H 25(a,b){I a[0]&&3r(D.2a(a[0],b,M),10)||0}J C=D.14.2k&&3r(D.14.5B)<8H?"(?:[\\\\w*3m-]|\\\\\\\\.)":"(?:[\\\\w\\8F-\\8E*3m-]|\\\\\\\\.)",6L=2B 4v("^>\\\\s*("+C+"+)"),6J=2B 4v("^("+C+"+)(#)("+C+"+)"),6I=2B 4v("^([#.]?)("+C+"*)");D.1l({6H:{"":H(a,i,m){I m[2]=="*"||D.Y(a,m[2])},"#":H(a,i,m){I a.4G("2v")==m[2]},":":{8D:H(a,i,m){I i<m[3]-0},8C:H(a,i,m){I i>m[3]-0},3a:H(a,i,m){I m[3]-0==i},79:H(a,i,m){I m[3]-0==i},3o:H(a,i){I i==0},3S:H(a,i,m,r){I i==r.K-1},6D:H(a,i){I i%2==0},6C:H(a,i){I i%2},"3o-4u":H(a){I a.1d.3H("*")[0]==a},"3S-4u":H(a){I D.3a(a.1d.5T,1,"4l")==a},"8z-4u":H(a){I!D.3a(a.1d.5T,2,"4l")},6W:H(a){I a.1x},4E:H(a){I!a.1x},8y:H(a,i,m){I(a.6O||a.8x||D(a).1r()||"").1h(m[3])>=0},4j:H(a){I"1G"!=a.O&&D.1g(a,"18")!="2F"&&D.1g(a,"5g")!="1G"},1G:H(a){I"1G"==a.O||D.1g(a,"18")=="2F"||D.1g(a,"5g")=="1G"},8w:H(a){I!a.3R},3R:H(a){I a.3R},4J:H(a){I a.4J},2W:H(a){I a.2W||D.1K(a,"2W")},1r:H(a){I"1r"==a.O},5O:H(a){I"5O"==a.O},5L:H(a){I"5L"==a.O},5p:H(a){I"5p"==a.O},3Q:H(a){I"3Q"==a.O},5o:H(a){I"5o"==a.O},6A:H(a){I"6A"==a.O},6z:H(a){I"6z"==a.O},2s:H(a){I"2s"==a.O||D.Y(a,"2s")},4T:H(a){I/4T|2A|6y|2s/i.11(a.Y)},3T:H(a,i,m){I D.2q(m[3],a).K},8t:H(a){I/h\\d/i.11(a.Y)},8s:H(a){I D.3C(D.3O,H(b){I a==b.T}).K}}},6x:[/^(\\[) *@?([\\w-]+) *([!*$^~=]*) *(\'?"?)(.*?)\\4 *\\]/,/^(:)([\\w-]+)\\("?\'?(.*?(\\(.*?\\))?[^(]*?)"?\'?\\)/,2B 4v("^([:.#]*)("+C+"+)")],3g:H(a,c,b){J d,1t=[];1B(a&&a!=d){d=a;J f=D.1E(a,c,b);a=f.t.1o(/^\\s*,\\s*/,"");1t=b?c=f.r:D.2R(1t,f.r)}I 1t},2q:H(t,o){G(1j t!="23")I[t];G(o&&o.16!=1&&o.16!=9)I[];o=o||S;J d=[o],2o=[],3S,Y;1B(t&&3S!=t){J r=[];3S=t;t=D.3k(t);J l=Q,3j=6L,m=3j.2D(t);G(m){Y=m[1].2r();R(J i=0;d[i];i++)R(J c=d[i].1x;c;c=c.2H)G(c.16==1&&(Y=="*"||c.Y.2r()==Y))r.1p(c);d=r;t=t.1o(3j,"");G(t.1h(" ")==0)6M;l=M}N{3j=/^([>+~])\\s*(\\w*)/i;G((m=3j.2D(t))!=U){r=[];J k={};Y=m[2].2r();m=m[1];R(J j=0,3i=d.K;j<3i;j++){J n=m=="~"||m=="+"?d[j].2H:d[j].1x;R(;n;n=n.2H)G(n.16==1){J g=D.L(n);G(m=="~"&&k[g])1X;G(!Y||n.Y.2r()==Y){G(m=="~")k[g]=M;r.1p(n)}G(m=="+")1X}}d=r;t=D.3k(t.1o(3j,""));l=M}}G(t&&!l){G(!t.1h(",")){G(o==d[0])d.4s();2o=D.2R(2o,d);r=d=[o];t=" "+t.6v(1,t.K)}N{J h=6J;J m=h.2D(t);G(m){m=[0,m[2],m[3],m[1]]}N{h=6I;m=h.2D(t)}m[2]=m[2].1o(/\\\\/g,"");J f=d[d.K-1];G(m[1]=="#"&&f&&f.61&&!D.4n(f)){J p=f.61(m[2]);G((D.14.1f||D.14.2G)&&p&&1j p.2v=="23"&&p.2v!=m[2])p=D(\'[@2v="\'+m[2]+\'"]\',f)[0];d=r=p&&(!m[3]||D.Y(p,m[3]))?[p]:[]}N{R(J i=0;d[i];i++){J a=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];G(a=="*"&&d[i].Y.3y()=="49")a="3n";r=D.2R(r,d[i].3H(a))}G(m[1]==".")r=D.5m(r,m[2]);G(m[1]=="#"){J e=[];R(J i=0;r[i];i++)G(r[i].4G("2v")==m[2]){e=[r[i]];1X}r=e}d=r}t=t.1o(h,"")}}G(t){J b=D.1E(t,r);d=r=b.r;t=D.3k(b.t)}}G(t)d=[];G(d&&o==d[0])d.4s();2o=D.2R(2o,d);I 2o},5m:H(r,m,a){m=" "+m+" ";J c=[];R(J i=0;r[i];i++){J b=(" "+r[i].1F+" ").1h(m)>=0;G(!a&&b||a&&!b)c.1p(r[i])}I c},1E:H(t,r,h){J d;1B(t&&t!=d){d=t;J p=D.6x,m;R(J i=0;p[i];i++){m=p[i].2D(t);G(m){t=t.8r(m[0].K);m[2]=m[2].1o(/\\\\/g,"");1X}}G(!m)1X;G(m[1]==":"&&m[2]=="4Y")r=62.11(m[3])?D.1E(m[3],r,M).r:D(r).4Y(m[3]);N G(m[1]==".")r=D.5m(r,m[2],h);N G(m[1]=="["){J g=[],O=m[3];R(J i=0,3i=r.K;i<3i;i++){J a=r[i],z=a[D.3X[m[2]]||m[2]];G(z==U||/5Q|4d|2W/.11(m[2]))z=D.1K(a,m[2])||\'\';G((O==""&&!!z||O=="="&&z==m[5]||O=="!="&&z!=m[5]||O=="^="&&z&&!z.1h(m[5])||O=="$="&&z.6v(z.K-m[5].K)==m[5]||(O=="*="||O=="~=")&&z.1h(m[5])>=0)^h)g.1p(a)}r=g}N G(m[1]==":"&&m[2]=="3a-4u"){J e={},g=[],11=/(-?)(\\d*)n((?:\\+|-)?\\d*)/.2D(m[3]=="6D"&&"2n"||m[3]=="6C"&&"2n+1"||!/\\D/.11(m[3])&&"8q+"+m[3]||m[3]),3o=(11[1]+(11[2]||1))-0,d=11[3]-0;R(J i=0,3i=r.K;i<3i;i++){J j=r[i],1d=j.1d,2v=D.L(1d);G(!e[2v]){J c=1;R(J n=1d.1x;n;n=n.2H)G(n.16==1)n.4q=c++;e[2v]=M}J b=Q;G(3o==0){G(j.4q==d)b=M}N G((j.4q-d)%3o==0&&(j.4q-d)/3o>=0)b=M;G(b^h)g.1p(j)}r=g}N{J f=D.6H[m[1]];G(1j f=="49")f=f[m[2]];G(1j f=="23")f=6u("Q||H(a,i){I "+f+";}");r=D.3C(r,H(a,i){I f(a,i,m,r)},h)}}I{r:r,t:t}},4S:H(b,c){J a=[],1t=b[c];1B(1t&&1t!=S){G(1t.16==1)a.1p(1t);1t=1t[c]}I a},3a:H(a,e,c,b){e=e||1;J d=0;R(;a;a=a[c])G(a.16==1&&++d==e)1X;I a},5v:H(n,a){J r=[];R(;n;n=n.2H){G(n.16==1&&n!=a)r.1p(n)}I r}});D.W={1e:H(f,i,g,e){G(f.16==3||f.16==8)I;G(D.14.1f&&f.4I)f=1b;G(!g.24)g.24=7.24++;G(e!=12){J h=g;g=7.3M(h,H(){I h.1w(7,19)});g.L=e}J j=D.L(f,"3w")||D.L(f,"3w",{}),1H=D.L(f,"1H")||D.L(f,"1H",H(){G(1j D!="12"&&!D.W.5k)I D.W.1H.1w(19.3L.T,19)});1H.T=f;D.P(i.1R(/\\s+/),H(c,b){J a=b.1R(".");b=a[0];g.O=a[1];J d=j[b];G(!d){d=j[b]={};G(!D.W.2t[b]||D.W.2t[b].4p.1k(f)===Q){G(f.3K)f.3K(b,1H,Q);N G(f.6t)f.6t("4o"+b,1H)}}d[g.24]=g;D.W.26[b]=M});f=U},24:1,26:{},21:H(e,h,f){G(e.16==3||e.16==8)I;J i=D.L(e,"3w"),1L,5i;G(i){G(h==12||(1j h=="23"&&h.8p(0)=="."))R(J g 1n i)7.21(e,g+(h||""));N{G(h.O){f=h.2y;h=h.O}D.P(h.1R(/\\s+/),H(b,a){J c=a.1R(".");a=c[0];G(i[a]){G(f)2U i[a][f.24];N R(f 1n i[a])G(!c[1]||i[a][f].O==c[1])2U i[a][f];R(1L 1n i[a])1X;G(!1L){G(!D.W.2t[a]||D.W.2t[a].4A.1k(e)===Q){G(e.6p)e.6p(a,D.L(e,"1H"),Q);N G(e.6n)e.6n("4o"+a,D.L(e,"1H"))}1L=U;2U i[a]}}})}R(1L 1n i)1X;G(!1L){J d=D.L(e,"1H");G(d)d.T=U;D.3b(e,"3w");D.3b(e,"1H")}}},1P:H(h,c,f,g,i){c=D.2d(c);G(h.1h("!")>=0){h=h.3s(0,-1);J a=M}G(!f){G(7.26[h])D("*").1e([1b,S]).1P(h,c)}N{G(f.16==3||f.16==8)I 12;J b,1L,17=D.1D(f[h]||U),W=!c[0]||!c[0].32;G(W){c.6h({O:h,2J:f,32:H(){},3J:H(){},4C:1z()});c[0][E]=M}c[0].O=h;G(a)c[0].6m=M;J d=D.L(f,"1H");G(d)b=d.1w(f,c);G((!17||(D.Y(f,\'a\')&&h=="4V"))&&f["4o"+h]&&f["4o"+h].1w(f,c)===Q)b=Q;G(W)c.4s();G(i&&D.1D(i)){1L=i.1w(f,b==U?c:c.7d(b));G(1L!==12)b=1L}G(17&&g!==Q&&b!==Q&&!(D.Y(f,\'a\')&&h=="4V")){7.5k=M;1U{f[h]()}1V(e){}}7.5k=Q}I b},1H:H(b){J a,1L,38,5f,4m;b=19[0]=D.W.6l(b||1b.W);38=b.O.1R(".");b.O=38[0];38=38[1];5f=!38&&!b.6m;4m=(D.L(7,"3w")||{})[b.O];R(J j 1n 4m){J c=4m[j];G(5f||c.O==38){b.2y=c;b.L=c.L;1L=c.1w(7,19);G(a!==Q)a=1L;G(1L===Q){b.32();b.3J()}}}I a},6l:H(b){G(b[E]==M)I b;J d=b;b={8o:d};J c="8n 8m 8l 8k 2s 8j 47 5d 6j 5E 8i L 8h 8g 4K 2y 5a 59 8e 8b 58 6f 8a 88 4k 87 86 84 6d 2J 4C 6c O 82 81 35".1R(" ");R(J i=c.K;i;i--)b[c[i]]=d[c[i]];b[E]=M;b.32=H(){G(d.32)d.32();d.80=Q};b.3J=H(){G(d.3J)d.3J();d.7Z=M};b.4C=b.4C||1z();G(!b.2J)b.2J=b.6d||S;G(b.2J.16==3)b.2J=b.2J.1d;G(!b.4k&&b.4K)b.4k=b.4K==b.2J?b.6c:b.4K;G(b.58==U&&b.5d!=U){J a=S.1C,1c=S.1c;b.58=b.5d+(a&&a.2e||1c&&1c.2e||0)-(a.6b||0);b.6f=b.6j+(a&&a.2c||1c&&1c.2c||0)-(a.6a||0)}G(!b.35&&((b.47||b.47===0)?b.47:b.5a))b.35=b.47||b.5a;G(!b.59&&b.5E)b.59=b.5E;G(!b.35&&b.2s)b.35=(b.2s&1?1:(b.2s&2?3:(b.2s&4?2:0)));I b},3M:H(a,b){b.24=a.24=a.24||b.24||7.24++;I b},2t:{27:{4p:H(){55();I},4A:H(){I}},3D:{4p:H(){G(D.14.1f)I Q;D(7).2O("53",D.W.2t.3D.2y);I M},4A:H(){G(D.14.1f)I Q;D(7).4e("53",D.W.2t.3D.2y);I M},2y:H(a){G(F(a,7))I M;a.O="3D";I D.W.1H.1w(7,19)}},3N:{4p:H(){G(D.14.1f)I Q;D(7).2O("51",D.W.2t.3N.2y);I M},4A:H(){G(D.14.1f)I Q;D(7).4e("51",D.W.2t.3N.2y);I M},2y:H(a){G(F(a,7))I M;a.O="3N";I D.W.1H.1w(7,19)}}}};D.17.1l({2O:H(c,a,b){I c=="4X"?7.2V(c,a,b):7.P(H(){D.W.1e(7,c,b||a,b&&a)})},2V:H(d,b,c){J e=D.W.3M(c||b,H(a){D(7).4e(a,e);I(c||b).1w(7,19)});I 7.P(H(){D.W.1e(7,d,e,c&&b)})},4e:H(a,b){I 7.P(H(){D.W.21(7,a,b)})},1P:H(c,a,b){I 7.P(H(){D.W.1P(c,a,7,M,b)})},5C:H(c,a,b){I 7[0]&&D.W.1P(c,a,7[0],Q,b)},2m:H(b){J c=19,i=1;1B(i<c.K)D.W.3M(b,c[i++]);I 7.4V(D.W.3M(b,H(a){7.4Z=(7.4Z||0)%i;a.32();I c[7.4Z++].1w(7,19)||Q}))},7X:H(a,b){I 7.2O(\'3D\',a).2O(\'3N\',b)},27:H(a){55();G(D.2Q)a.1k(S,D);N D.3A.1p(H(){I a.1k(7,D)});I 7}});D.1l({2Q:Q,3A:[],27:H(){G(!D.2Q){D.2Q=M;G(D.3A){D.P(D.3A,H(){7.1k(S)});D.3A=U}D(S).5C("27")}}});J x=Q;H 55(){G(x)I;x=M;G(S.3K&&!D.14.2G)S.3K("69",D.27,Q);G(D.14.1f&&1b==1S)(H(){G(D.2Q)I;1U{S.1C.7V("1A")}1V(3e){3B(19.3L,0);I}D.27()})();G(D.14.2G)S.3K("69",H(){G(D.2Q)I;R(J i=0;i<S.4W.K;i++)G(S.4W[i].3R){3B(19.3L,0);I}D.27()},Q);G(D.14.2k){J a;(H(){G(D.2Q)I;G(S.3f!="68"&&S.3f!="1J"){3B(19.3L,0);I}G(a===12)a=D("V, 7A[7U=7S]").K;G(S.4W.K!=a){3B(19.3L,0);I}D.27()})()}D.W.1e(1b,"43",D.27)}D.P(("7R,7Q,43,85,4y,4X,4V,7P,"+"7O,7N,89,53,51,7M,2A,"+"5o,7L,7K,8d,3e").1R(","),H(i,b){D.17[b]=H(a){I a?7.2O(b,a):7.1P(b)}});J F=H(a,c){J b=a.4k;1B(b&&b!=c)1U{b=b.1d}1V(3e){b=c}I b==c};D(1b).2O("4X",H(){D("*").1e(S).4e()});D.17.1l({67:D.17.43,43:H(g,d,c){G(1j g!=\'23\')I 7.67(g);J e=g.1h(" ");G(e>=0){J i=g.3s(e,g.K);g=g.3s(0,e)}c=c||H(){};J f="2P";G(d)G(D.1D(d)){c=d;d=U}N{d=D.3n(d);f="6g"}J h=7;D.3Y({1a:g,O:f,1O:"2K",L:d,1J:H(a,b){G(b=="1W"||b=="7J")h.2K(i?D("<1v/>").3v(a.4U.1o(/<1m(.|\\s)*?\\/1m>/g,"")).2q(i):a.4U);h.P(c,[a.4U,b,a])}});I 7},aL:H(){I D.3n(7.7I())},7I:H(){I 7.2l(H(){I D.Y(7,"3V")?D.2d(7.aH):7}).1E(H(){I 7.34&&!7.3R&&(7.4J||/2A|6y/i.11(7.Y)||/1r|1G|3Q/i.11(7.O))}).2l(H(i,c){J b=D(7).6e();I b==U?U:b.1q==2p?D.2l(b,H(a,i){I{34:c.34,2x:a}}):{34:c.34,2x:b}}).3p()}});D.P("7H,7G,7F,7D,7C,7B".1R(","),H(i,o){D.17[o]=H(f){I 7.2O(o,f)}});J B=1z();D.1l({3p:H(d,b,a,c){G(D.1D(b)){a=b;b=U}I D.3Y({O:"2P",1a:d,L:b,1W:a,1O:c})},aE:H(b,a){I D.3p(b,U,a,"1m")},aD:H(c,b,a){I D.3p(c,b,a,"3z")},aC:H(d,b,a,c){G(D.1D(b)){a=b;b={}}I D.3Y({O:"6g",1a:d,L:b,1W:a,1O:c})},aA:H(a){D.1l(D.60,a)},60:{1a:5Z.5Q,26:M,O:"2P",2T:0,7z:"4R/x-ax-3V-aw",7x:M,31:M,L:U,5Y:U,3Q:U,4Q:{2N:"4R/2N, 1r/2N",2K:"1r/2K",1m:"1r/4t, 4R/4t",3z:"4R/3z, 1r/4t",1r:"1r/as",4w:"*/*"}},4z:{},3Y:H(s){s=D.1l(M,s,D.1l(M,{},D.60,s));J g,2Z=/=\\?(&|$)/g,1u,L,O=s.O.2r();G(s.L&&s.7x&&1j s.L!="23")s.L=D.3n(s.L);G(s.1O=="4P"){G(O=="2P"){G(!s.1a.1I(2Z))s.1a+=(s.1a.1I(/\\?/)?"&":"?")+(s.4P||"7u")+"=?"}N G(!s.L||!s.L.1I(2Z))s.L=(s.L?s.L+"&":"")+(s.4P||"7u")+"=?";s.1O="3z"}G(s.1O=="3z"&&(s.L&&s.L.1I(2Z)||s.1a.1I(2Z))){g="4P"+B++;G(s.L)s.L=(s.L+"").1o(2Z,"="+g+"$1");s.1a=s.1a.1o(2Z,"="+g+"$1");s.1O="1m";1b[g]=H(a){L=a;1W();1J();1b[g]=12;1U{2U 1b[g]}1V(e){}G(i)i.37(h)}}G(s.1O=="1m"&&s.1Y==U)s.1Y=Q;G(s.1Y===Q&&O=="2P"){J j=1z();J k=s.1a.1o(/(\\?|&)3m=.*?(&|$)/,"$ap="+j+"$2");s.1a=k+((k==s.1a)?(s.1a.1I(/\\?/)?"&":"?")+"3m="+j:"")}G(s.L&&O=="2P"){s.1a+=(s.1a.1I(/\\?/)?"&":"?")+s.L;s.L=U}G(s.26&&!D.4O++)D.W.1P("7H");J n=/^(?:\\w+:)?\\/\\/([^\\/?#]+)/;G(s.1O=="1m"&&O=="2P"&&n.11(s.1a)&&n.2D(s.1a)[1]!=5Z.al){J i=S.3H("6w")[0];J h=S.3h("1m");h.4d=s.1a;G(s.7t)h.aj=s.7t;G(!g){J l=Q;h.ah=h.ag=H(){G(!l&&(!7.3f||7.3f=="68"||7.3f=="1J")){l=M;1W();1J();i.37(h)}}}i.3U(h);I 12}J m=Q;J c=1b.7s?2B 7s("ae.ac"):2B 7r();G(s.5Y)c.6R(O,s.1a,s.31,s.5Y,s.3Q);N c.6R(O,s.1a,s.31);1U{G(s.L)c.4B("ab-aa",s.7z);G(s.5S)c.4B("a9-5R-a8",D.4z[s.1a]||"a7, a6 a5 a4 5N:5N:5N a2");c.4B("X-9Z-9Y","7r");c.4B("9W",s.1O&&s.4Q[s.1O]?s.4Q[s.1O]+", */*":s.4Q.4w)}1V(e){}G(s.7m&&s.7m(c,s)===Q){s.26&&D.4O--;c.7l();I Q}G(s.26)D.W.1P("7B",[c,s]);J d=H(a){G(!m&&c&&(c.3f==4||a=="2T")){m=M;G(f){7k(f);f=U}1u=a=="2T"&&"2T"||!D.7j(c)&&"3e"||s.5S&&D.7h(c,s.1a)&&"7J"||"1W";G(1u=="1W"){1U{L=D.6X(c,s.1O,s.9S)}1V(e){1u="5J"}}G(1u=="1W"){J b;1U{b=c.5I("7g-5R")}1V(e){}G(s.5S&&b)D.4z[s.1a]=b;G(!g)1W()}N D.5H(s,c,1u);1J();G(s.31)c=U}};G(s.31){J f=4I(d,13);G(s.2T>0)3B(H(){G(c){c.7l();G(!m)d("2T")}},s.2T)}1U{c.9P(s.L)}1V(e){D.5H(s,c,U,e)}G(!s.31)d();H 1W(){G(s.1W)s.1W(L,1u);G(s.26)D.W.1P("7C",[c,s])}H 1J(){G(s.1J)s.1J(c,1u);G(s.26)D.W.1P("7F",[c,s]);G(s.26&&!--D.4O)D.W.1P("7G")}I c},5H:H(s,a,b,e){G(s.3e)s.3e(a,b,e);G(s.26)D.W.1P("7D",[a,s,e])},4O:0,7j:H(a){1U{I!a.1u&&5Z.9O=="5p:"||(a.1u>=7e&&a.1u<9N)||a.1u==7c||a.1u==9K||D.14.2k&&a.1u==12}1V(e){}I Q},7h:H(a,c){1U{J b=a.5I("7g-5R");I a.1u==7c||b==D.4z[c]||D.14.2k&&a.1u==12}1V(e){}I Q},6X:H(a,c,b){J d=a.5I("9J-O"),2N=c=="2N"||!c&&d&&d.1h("2N")>=0,L=2N?a.9I:a.4U;G(2N&&L.1C.2j=="5J")7p"5J";G(b)L=b(L,c);G(c=="1m")D.5u(L);G(c=="3z")L=6u("("+L+")");I L},3n:H(a){J s=[];G(a.1q==2p||a.5w)D.P(a,H(){s.1p(3u(7.34)+"="+3u(7.2x))});N R(J j 1n a)G(a[j]&&a[j].1q==2p)D.P(a[j],H(){s.1p(3u(j)+"="+3u(7))});N s.1p(3u(j)+"="+3u(D.1D(a[j])?a[j]():a[j]));I s.6s("&").1o(/%20/g,"+")}});D.17.1l({1N:H(c,b){I c?7.2g({1Z:"1N",2h:"1N",1y:"1N"},c,b):7.1E(":1G").P(H(){7.V.18=7.5D||"";G(D.1g(7,"18")=="2F"){J a=D("<"+7.2j+" />").6P("1c");7.V.18=a.1g("18");G(7.V.18=="2F")7.V.18="3I";a.21()}}).3l()},1M:H(b,a){I b?7.2g({1Z:"1M",2h:"1M",1y:"1M"},b,a):7.1E(":4j").P(H(){7.5D=7.5D||D.1g(7,"18");7.V.18="2F"}).3l()},78:D.17.2m,2m:H(a,b){I D.1D(a)&&D.1D(b)?7.78.1w(7,19):a?7.2g({1Z:"2m",2h:"2m",1y:"2m"},a,b):7.P(H(){D(7)[D(7).3F(":1G")?"1N":"1M"]()})},9G:H(b,a){I 7.2g({1Z:"1N"},b,a)},9F:H(b,a){I 7.2g({1Z:"1M"},b,a)},9E:H(b,a){I 7.2g({1Z:"2m"},b,a)},9D:H(b,a){I 7.2g({1y:"1N"},b,a)},9M:H(b,a){I 7.2g({1y:"1M"},b,a)},9C:H(c,a,b){I 7.2g({1y:a},c,b)},2g:H(k,j,i,g){J h=D.77(j,i,g);I 7[h.36===Q?"P":"36"](H(){G(7.16!=1)I Q;J f=D.1l({},h),p,1G=D(7).3F(":1G"),46=7;R(p 1n k){G(k[p]=="1M"&&1G||k[p]=="1N"&&!1G)I f.1J.1k(7);G(p=="1Z"||p=="2h"){f.18=D.1g(7,"18");f.33=7.V.33}}G(f.33!=U)7.V.33="1G";f.45=D.1l({},k);D.P(k,H(c,a){J e=2B D.28(46,f,c);G(/2m|1N|1M/.11(a))e[a=="2m"?1G?"1N":"1M":a](k);N{J b=a.6r().1I(/^([+-]=)?([\\d+-.]+)(.*)$/),2b=e.1t(M)||0;G(b){J d=3d(b[2]),2M=b[3]||"2X";G(2M!="2X"){46.V[c]=(d||1)+2M;2b=((d||1)/e.1t(M))*2b;46.V[c]=2b+2M}G(b[1])d=((b[1]=="-="?-1:1)*d)+2b;e.3G(2b,d,2M)}N e.3G(2b,a,"")}});I M})},36:H(a,b){G(D.1D(a)||(a&&a.1q==2p)){b=a;a="28"}G(!a||(1j a=="23"&&!b))I A(7[0],a);I 7.P(H(){G(b.1q==2p)A(7,a,b);N{A(7,a).1p(b);G(A(7,a).K==1)b.1k(7)}})},9X:H(b,c){J a=D.3O;G(b)7.36([]);7.P(H(){R(J i=a.K-1;i>=0;i--)G(a[i].T==7){G(c)a[i](M);a.7n(i,1)}});G(!c)7.5A();I 7}});J A=H(b,c,a){G(b){c=c||"28";J q=D.L(b,c+"36");G(!q||a)q=D.L(b,c+"36",D.2d(a))}I q};D.17.5A=H(a){a=a||"28";I 7.P(H(){J q=A(7,a);q.4s();G(q.K)q[0].1k(7)})};D.1l({77:H(b,a,c){J d=b&&b.1q==a0?b:{1J:c||!c&&a||D.1D(b)&&b,2u:b,41:c&&a||a&&a.1q!=9t&&a};d.2u=(d.2u&&d.2u.1q==4L?d.2u:D.28.5K[d.2u])||D.28.5K.74;d.5M=d.1J;d.1J=H(){G(d.36!==Q)D(7).5A();G(D.1D(d.5M))d.5M.1k(7)};I d},41:{73:H(p,n,b,a){I b+a*p},5P:H(p,n,b,a){I((-29.9r(p*29.9q)/2)+0.5)*a+b}},3O:[],48:U,28:H(b,c,a){7.15=c;7.T=b;7.1i=a;G(!c.3Z)c.3Z={}}});D.28.44={4D:H(){G(7.15.2Y)7.15.2Y.1k(7.T,7.1z,7);(D.28.2Y[7.1i]||D.28.2Y.4w)(7);G(7.1i=="1Z"||7.1i=="2h")7.T.V.18="3I"},1t:H(a){G(7.T[7.1i]!=U&&7.T.V[7.1i]==U)I 7.T[7.1i];J r=3d(D.1g(7.T,7.1i,a));I r&&r>-9p?r:3d(D.2a(7.T,7.1i))||0},3G:H(c,b,d){7.5V=1z();7.2b=c;7.3l=b;7.2M=d||7.2M||"2X";7.1z=7.2b;7.2S=7.4N=0;7.4D();J e=7;H t(a){I e.2Y(a)}t.T=7.T;D.3O.1p(t);G(D.48==U){D.48=4I(H(){J a=D.3O;R(J i=0;i<a.K;i++)G(!a[i]())a.7n(i--,1);G(!a.K){7k(D.48);D.48=U}},13)}},1N:H(){7.15.3Z[7.1i]=D.1K(7.T.V,7.1i);7.15.1N=M;7.3G(0,7.1t());G(7.1i=="2h"||7.1i=="1Z")7.T.V[7.1i]="9m";D(7.T).1N()},1M:H(){7.15.3Z[7.1i]=D.1K(7.T.V,7.1i);7.15.1M=M;7.3G(7.1t(),0)},2Y:H(a){J t=1z();G(a||t>7.15.2u+7.5V){7.1z=7.3l;7.2S=7.4N=1;7.4D();7.15.45[7.1i]=M;J b=M;R(J i 1n 7.15.45)G(7.15.45[i]!==M)b=Q;G(b){G(7.15.18!=U){7.T.V.33=7.15.33;7.T.V.18=7.15.18;G(D.1g(7.T,"18")=="2F")7.T.V.18="3I"}G(7.15.1M)7.T.V.18="2F";G(7.15.1M||7.15.1N)R(J p 1n 7.15.45)D.1K(7.T.V,p,7.15.3Z[p])}G(b)7.15.1J.1k(7.T);I Q}N{J n=t-7.5V;7.4N=n/7.15.2u;7.2S=D.41[7.15.41||(D.41.5P?"5P":"73")](7.4N,n,0,1,7.15.2u);7.1z=7.2b+((7.3l-7.2b)*7.2S);7.4D()}I M}};D.1l(D.28,{5K:{9l:9j,9i:7e,74:9g},2Y:{2e:H(a){a.T.2e=a.1z},2c:H(a){a.T.2c=a.1z},1y:H(a){D.1K(a.T.V,"1y",a.1z)},4w:H(a){a.T.V[a.1i]=a.1z+a.2M}}});D.17.2i=H(){J b=0,1S=0,T=7[0],3q;G(T)ao(D.14){J d=T.1d,4a=T,1s=T.1s,1Q=T.2z,5U=2k&&3r(5B)<9c&&!/9a/i.11(v),1g=D.2a,3c=1g(T,"30")=="3c";G(T.7y){J c=T.7y();1e(c.1A+29.2f(1Q.1C.2e,1Q.1c.2e),c.1S+29.2f(1Q.1C.2c,1Q.1c.2c));1e(-1Q.1C.6b,-1Q.1C.6a)}N{1e(T.5X,T.5W);1B(1s){1e(1s.5X,1s.5W);G(42&&!/^t(98|d|h)$/i.11(1s.2j)||2k&&!5U)2C(1s);G(!3c&&1g(1s,"30")=="3c")3c=M;4a=/^1c$/i.11(1s.2j)?4a:1s;1s=1s.1s}1B(d&&d.2j&&!/^1c|2K$/i.11(d.2j)){G(!/^96|1T.*$/i.11(1g(d,"18")))1e(-d.2e,-d.2c);G(42&&1g(d,"33")!="4j")2C(d);d=d.1d}G((5U&&(3c||1g(4a,"30")=="5x"))||(42&&1g(4a,"30")!="5x"))1e(-1Q.1c.5X,-1Q.1c.5W);G(3c)1e(29.2f(1Q.1C.2e,1Q.1c.2e),29.2f(1Q.1C.2c,1Q.1c.2c))}3q={1S:1S,1A:b}}H 2C(a){1e(D.2a(a,"6V",M),D.2a(a,"6U",M))}H 1e(l,t){b+=3r(l,10)||0;1S+=3r(t,10)||0}I 3q};D.17.1l({30:H(){J a=0,1S=0,3q;G(7[0]){J b=7.1s(),2i=7.2i(),4c=/^1c|2K$/i.11(b[0].2j)?{1S:0,1A:0}:b.2i();2i.1S-=25(7,\'94\');2i.1A-=25(7,\'aF\');4c.1S+=25(b,\'6U\');4c.1A+=25(b,\'6V\');3q={1S:2i.1S-4c.1S,1A:2i.1A-4c.1A}}I 3q},1s:H(){J a=7[0].1s;1B(a&&(!/^1c|2K$/i.11(a.2j)&&D.1g(a,\'30\')==\'93\'))a=a.1s;I D(a)}});D.P([\'5e\',\'5G\'],H(i,b){J c=\'4y\'+b;D.17[c]=H(a){G(!7[0])I;I a!=12?7.P(H(){7==1b||7==S?1b.92(!i?a:D(1b).2e(),i?a:D(1b).2c()):7[c]=a}):7[0]==1b||7[0]==S?46[i?\'aI\':\'aJ\']||D.71&&S.1C[c]||S.1c[c]:7[0][c]}});D.P(["6N","4b"],H(i,b){J c=i?"5e":"5G",4f=i?"6k":"6i";D.17["5s"+b]=H(){I 7[b.3y()]()+25(7,"57"+c)+25(7,"57"+4f)};D.17["90"+b]=H(a){I 7["5s"+b]()+25(7,"2C"+c+"4b")+25(7,"2C"+4f+"4b")+(a?25(7,"6S"+c)+25(7,"6S"+4f):0)}})})();',62,669,'|||||||this|||||||||||||||||||||||||||||||||||if|function|return|var|length|data|true|else|type|each|false|for|document|elem|null|style|event||nodeName|||test|undefined||browser|options|nodeType|fn|display|arguments|url|window|body|parentNode|add|msie|css|indexOf|prop|typeof|call|extend|script|in|replace|push|constructor|text|offsetParent|cur|status|div|apply|firstChild|opacity|now|left|while|documentElement|isFunction|filter|className|hidden|handle|match|complete|attr|ret|hide|show|dataType|trigger|doc|split|top|table|try|catch|success|break|cache|height||remove|tbody|string|guid|num|global|ready|fx|Math|curCSS|start|scrollTop|makeArray|scrollLeft|max|animate|width|offset|tagName|safari|map|toggle||done|Array|find|toUpperCase|button|special|duration|id|copy|value|handler|ownerDocument|select|new|border|exec|stack|none|opera|nextSibling|pushStack|target|html|inArray|unit|xml|bind|GET|isReady|merge|pos|timeout|delete|one|selected|px|step|jsre|position|async|preventDefault|overflow|name|which|queue|removeChild|namespace|insertBefore|nth|removeData|fixed|parseFloat|error|readyState|multiFilter|createElement|rl|re|trim|end|_|param|first|get|results|parseInt|slice|childNodes|encodeURIComponent|append|events|elems|toLowerCase|json|readyList|setTimeout|grep|mouseenter|color|is|custom|getElementsByTagName|block|stopPropagation|addEventListener|callee|proxy|mouseleave|timers|defaultView|password|disabled|last|has|appendChild|form|domManip|props|ajax|orig|set|easing|mozilla|load|prototype|curAnim|self|charCode|timerId|object|offsetChild|Width|parentOffset|src|unbind|br|currentStyle|clean|float|visible|relatedTarget|previousSibling|handlers|isXMLDoc|on|setup|nodeIndex|unique|shift|javascript|child|RegExp|_default|deep|scroll|lastModified|teardown|setRequestHeader|timeStamp|update|empty|tr|getAttribute|innerHTML|setInterval|checked|fromElement|Number|jQuery|state|active|jsonp|accepts|application|dir|input|responseText|click|styleSheets|unload|not|lastToggle|outline|mouseout|getPropertyValue|mouseover|getComputedStyle|bindReady|String|padding|pageX|metaKey|keyCode|getWH|andSelf|clientX|Left|all|visibility|container|index|init|triggered|removeAttribute|classFilter|prevObject|submit|file|after|windowData|inner|client|globalEval|sibling|jquery|absolute|clone|wrapAll|dequeue|version|triggerHandler|oldblock|ctrlKey|createTextNode|Top|handleError|getResponseHeader|parsererror|speeds|checkbox|old|00|radio|swing|href|Modified|ifModified|lastChild|safari2|startTime|offsetTop|offsetLeft|username|location|ajaxSettings|getElementById|isSimple|values|selectedIndex|runtimeStyle|rsLeft|_load|loaded|DOMContentLoaded|clientTop|clientLeft|toElement|srcElement|val|pageY|POST|unshift|Bottom|clientY|Right|fix|exclusive|detachEvent|cloneNode|removeEventListener|swap|toString|join|attachEvent|eval|substr|head|parse|textarea|reset|image|zoom|odd|even|before|prepend|exclude|expr|quickClass|quickID|uuid|quickChild|continue|Height|textContent|appendTo|contents|open|margin|evalScript|borderTopWidth|borderLeftWidth|parent|httpData|setArray|CSS1Compat|compatMode|boxModel|cssFloat|linear|def|webkit|nodeValue|speed|_toggle|eq|100|replaceWith|304|concat|200|alpha|Last|httpNotModified|getAttributeNode|httpSuccess|clearInterval|abort|beforeSend|splice|styleFloat|throw|colgroup|XMLHttpRequest|ActiveXObject|scriptCharset|callback|fieldset|multiple|processData|getBoundingClientRect|contentType|link|ajaxSend|ajaxSuccess|ajaxError|col|ajaxComplete|ajaxStop|ajaxStart|serializeArray|notmodified|keypress|keydown|change|mouseup|mousedown|dblclick|focus|blur|stylesheet|hasClass|rel|doScroll|black|hover|solid|cancelBubble|returnValue|wheelDelta|view|round|shiftKey|resize|screenY|screenX|relatedNode|mousemove|prevValue|originalTarget|offsetHeight|keyup|newValue|offsetWidth|eventPhase|detail|currentTarget|cancelable|bubbles|attrName|attrChange|altKey|originalEvent|charAt|0n|substring|animated|header|noConflict|line|enabled|innerText|contains|only|weight|font|gt|lt|uFFFF|u0128|size|417|Boolean|Date|toggleClass|removeClass|addClass|removeAttr|replaceAll|insertAfter|prependTo|wrap|contentWindow|contentDocument|iframe|children|siblings|prevAll|wrapInner|nextAll|outer|prev|scrollTo|static|marginTop|next|inline|parents|able|cellSpacing|adobeair|cellspacing|522|maxLength|maxlength|readOnly|400|readonly|fast|600|class|slow|1px|htmlFor|reverse|10000|PI|cos|compatible|Function|setData|ie|ra|it|rv|getData|userAgent|navigator|fadeTo|fadeIn|slideToggle|slideUp|slideDown|ig|responseXML|content|1223|NaN|fadeOut|300|protocol|send|setAttribute|option|dataFilter|cssText|changed|be|Accept|stop|With|Requested|Object|can|GMT|property|1970|Jan|01|Thu|Since|If|Type|Content|XMLHTTP|th|Microsoft|td|onreadystatechange|onload|cap|charset|colg|host|tfoot|specified|with|1_|thead|leg|plain|attributes|opt|embed|urlencoded|www|area|hr|ajaxSetup|meta|post|getJSON|getScript|marginLeft|img|elements|pageYOffset|pageXOffset|abbr|serialize|pixelLeft'.split('|'),0,{}))

Modified: branches/drupal6/misc/tabledrag.js
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/misc/tabledrag.js?rev=1911&op=diff
==============================================================================
--- branches/drupal6/misc/tabledrag.js (original)
+++ branches/drupal6/misc/tabledrag.js Mon Aug 11 17:16:46 2008
@@ -1,4 +1,4 @@
-// $Id: tabledrag.js,v 1.13.2.1 2008/02/08 18:54:10 goba Exp $
+// $Id: tabledrag.js,v 1.13.2.3 2008/06/12 19:13:25 dries Exp $
 
 /**
  * Drag and drop table rows with field manipulation.
@@ -87,49 +87,53 @@
 
   // Add mouse bindings to the document. The self variable is passed along
   // as event handlers do not have direct access to the tableDrag object.
-  $(document).bind('mousemove', function(event) { self.dragRow(event, self); return false; });
-  $(document).bind('mouseup', function(event) { self.dropRow(event, self); });
+  $(document).bind('mousemove', function(event) { return self.dragRow(event, self); });
+  $(document).bind('mouseup', function(event) { return self.dropRow(event, self); });
 };
 
 /**
  * Hide the columns containing form elements according to the settings for
  * this tableDrag instance.
  */
-Drupal.tableDrag.prototype.hideColumns = function() {
+Drupal.tableDrag.prototype.hideColumns = function(){
   for (var group in this.tableSettings) {
     // Find the first field in this group.
     for (var d in this.tableSettings[group]) {
-      if ($('.' + this.tableSettings[group][d]['target'], this.table).size()) {
+      var field = $('.' + this.tableSettings[group][d]['target'] + ':first', this.table);
+      if (field.size() && this.tableSettings[group][d]['hidden']) {
         var hidden = this.tableSettings[group][d]['hidden'];
-        var field = $('.' + this.tableSettings[group][d]['target'] + ':first', this.table);
-        var cell = field.parents('td:first, th:first');
+        var cell = field.parents('td:first');
         break;
       }
     }
+
     // Hide the column containing this field.
     if (hidden && cell[0] && cell.css('display') != 'none') {
       // Add 1 to our indexes. The nth-child selector is 1 based, not 0 based.
-      var columnIndex = $('td', field.parents('tr:first')).index(cell.get(0)) + 1;
-      var headerIndex = $('td:not(:hidden)', field.parents('tr:first')).index(cell.get(0)) + 1;
-      $('tbody tr', this.table).each(function() {
-        // Find and hide the cell in the table body.
-        var cell = $('td:nth-child('+ columnIndex +')', this);
-        if (cell.size()) {
-          cell.css('display', 'none');
-        }
-        // We might be dealing with a row spanning the entire table.
-        // Reduce the colspan on the first cell to prevent the cell from
-        // overshooting the table.
-        else {
-          cell = $('td:first', this);
-          cell.attr('colspan', cell.attr('colspan') - 1);
-        }
-      });
-      $('thead tr', this.table).each(function() {
-        // Remove table header cells entirely (Safari doesn't hide properly).
-        var th = $('th:nth-child('+ headerIndex +')', this);
-        if (th.size()) {
-          th.remove();
+      var columnIndex = $('td', cell.parent()).index(cell.get(0)) + 1;
+      var headerIndex = $('td:not(:hidden)', cell.parent()).index(cell.get(0)) + 1;
+      $('tr', this.table).each(function(){
+        var row = $(this);
+        var parentTag = row.parent().get(0).tagName.toLowerCase();
+        var index = (parentTag == 'thead') ? headerIndex : columnIndex;
+
+        // Adjust the index to take into account colspans.
+        row.children().each(function(n) {
+          if (n < index) {
+            index -= (this.colSpan && this.colSpan > 1) ? this.colSpan - 1 : 0;
+          }
+        });
+        if (index > 0) {
+          cell = row.children(':nth-child(' + index + ')');
+          if (cell[0].colSpan > 1) {
+            // If this cell has a colspan, simply reduce it.
+            cell[0].colSpan = cell[0].colSpan - 1;
+          }
+          else {
+            // Hide table body cells, but remove table header cells entirely
+            // (Safari doesn't hide properly).
+            parentTag == 'thead' ? cell.remove() : cell.css('display', 'none');
+          }
         }
       });
     }
@@ -411,6 +415,8 @@
       self.dragObject.indentMousePos.x += self.indentAmount * indentChange * self.rtl;
       self.indentCount = Math.max(self.indentCount, self.rowObject.indents);
     }
+
+    return false;
   }
 };
 

Modified: branches/drupal6/modules/aggregator/aggregator.admin.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/aggregator/aggregator.admin.inc?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/aggregator/aggregator.admin.inc (original)
+++ branches/drupal6/modules/aggregator/aggregator.admin.inc Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: aggregator.admin.inc,v 1.7 2008/01/10 22:47:17 goba Exp $
+// $Id: aggregator.admin.inc,v 1.7.2.1 2008/04/25 21:11:57 goba Exp $
 
 /**
  * @file
@@ -117,10 +117,10 @@
     }
     // Check for duplicate titles.
     if (isset($form_state['values']['fid'])) {
-      $result = db_query("SELECT title, url FROM {aggregator_feed} WHERE (title = '%s' OR url='%s') AND fid != %d", $form_state['values']['title'], $form_state['values']['url'], $form_state['values']['fid']);
+      $result = db_query("SELECT title, url FROM {aggregator_feed} WHERE (title = '%s' OR url = '%s') AND fid <> %d", $form_state['values']['title'], $form_state['values']['url'], $form_state['values']['fid']);
     }
     else {
-      $result = db_query("SELECT title, url FROM {aggregator_feed} WHERE title = '%s' OR url='%s'", $form_state['values']['title'], $form_state['values']['url']);
+      $result = db_query("SELECT title, url FROM {aggregator_feed} WHERE title = '%s' OR url = '%s'", $form_state['values']['title'], $form_state['values']['url']);
     }
     while ($feed = db_fetch_object($result)) {
       if (strcasecmp($feed->title, $form_state['values']['title']) == 0) {
@@ -286,7 +286,7 @@
   if ($form_state['values']['op'] == t('Save')) {
     // Check for duplicate titles
     if (isset($form_state['values']['cid'])) {
-      $category = db_fetch_object(db_query("SELECT cid FROM {aggregator_category} WHERE title = '%s' AND cid != %d", $form_state['values']['title'], $form_state['values']['cid']));
+      $category = db_fetch_object(db_query("SELECT cid FROM {aggregator_category} WHERE title = '%s' AND cid <> %d", $form_state['values']['title'], $form_state['values']['cid']));
     }
     else {
       $category = db_fetch_object(db_query("SELECT cid FROM {aggregator_category} WHERE title = '%s'", $form_state['values']['title']));

Modified: branches/drupal6/modules/aggregator/aggregator.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/aggregator/aggregator.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/aggregator/aggregator.info (original)
+++ branches/drupal6/modules/aggregator/aggregator.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/aggregator/aggregator.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/aggregator/aggregator.module?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/aggregator/aggregator.module (original)
+++ branches/drupal6/modules/aggregator/aggregator.module Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: aggregator.module,v 1.374 2008/01/15 08:06:32 dries Exp $
+// $Id: aggregator.module,v 1.374.2.2 2008/07/05 05:57:33 dries Exp $
 
 /**
  * @file
@@ -17,7 +17,7 @@
       $output .= '<p>'. t('For more information, see the online handbook entry for <a href="@aggregator">Aggregator module</a>.', array('@aggregator' => 'http://drupal.org/handbook/modules/aggregator/')) .'</p>';
       return $output;
     case 'admin/content/aggregator':
-      $output = '<p>'. t('Thousands of sites (particularly news sites and blogs) publish their latest headlines and posts in feeds, using a number of standardized XML-based formats. Formats supported by the aggregator include <a href="@rss">RSS</a>, <a href="@rdf">RDF</a>, and <a href="@atom">Atom</a>.', array('@rss' => 'http://cyber.law.harvard.edu/rss/', '@rdf' => 'hsttp://www.w3.org/RDF/', '@atom' => 'http://www.atomenabled.org')) .'</p>';
+      $output = '<p>'. t('Thousands of sites (particularly news sites and blogs) publish their latest headlines and posts in feeds, using a number of standardized XML-based formats. Formats supported by the aggregator include <a href="@rss">RSS</a>, <a href="@rdf">RDF</a>, and <a href="@atom">Atom</a>.', array('@rss' => 'http://cyber.law.harvard.edu/rss/', '@rdf' => 'http://www.w3.org/RDF/', '@atom' => 'http://www.atomenabled.org')) .'</p>';
       $output .= '<p>'. t('Current feeds are listed below, and <a href="@addfeed">new feeds may be added</a>. For each feed or feed category, the <em>latest items</em> block may be enabled at the <a href="@block">blocks administration page</a>.', array('@addfeed' => url('admin/content/aggregator/add/feed'), '@block' => url('admin/build/block'))) .'</p>';
       return $output;
     case 'admin/content/aggregator/add/feed':
@@ -201,6 +201,7 @@
   $items['aggregator/sources/%aggregator_feed'] = array(
     'page callback' => 'aggregator_page_source',
     'page arguments' => array(2),
+    'access arguments' => array('access news feeds'),
     'type' => MENU_CALLBACK,
     'file' => 'aggregator.pages.inc',
   );

Modified: branches/drupal6/modules/block/block.admin.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/block/block.admin.inc?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/block/block.admin.inc (original)
+++ branches/drupal6/modules/block/block.admin.inc Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: block.admin.inc,v 1.14 2007/12/22 23:24:24 goba Exp $
+// $Id: block.admin.inc,v 1.14.2.2 2008/06/24 14:40:08 goba Exp $
 
 /**
  * @file
@@ -123,8 +123,7 @@
     return $status;
   }
   // Sort by region (in the order defined by theme .info file).
-  $place = $regions[$a['region']] - $regions[$b['region']];
-  if ($place) {
+  if ((!empty($a['region']) && !empty($b['region'])) && ($place = ($regions[$a['region']] - $regions[$b['region']]))) {
     return $place;
   }
   // Sort by weight.
@@ -323,7 +322,7 @@
  */
 function block_box_delete(&$form_state, $bid = 0) {
   $box = block_box_get($bid);
-  $form['info'] = array('#type' => 'hidden', '#value' => $box['info'] ? $box['info'] : $box['title']);
+  $form['info'] = array('#type' => 'hidden', '#value' => $box['info']);
   $form['bid'] = array('#type' => 'hidden', '#value' => $bid);
 
   return confirm_form($form, t('Are you sure you want to delete the block %name?', array('%name' => $box['info'])), 'admin/build/block', '', t('Delete'), t('Cancel'));

Modified: branches/drupal6/modules/block/block.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/block/block.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/block/block.info (original)
+++ branches/drupal6/modules/block/block.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/block/block.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/block/block.module?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/block/block.module (original)
+++ branches/drupal6/modules/block/block.module Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: block.module,v 1.299 2008/02/03 19:12:57 goba Exp $
+// $Id: block.module,v 1.299.2.3 2008/06/24 14:40:08 goba Exp $
 
 /**
  * @file
@@ -132,6 +132,7 @@
   $items['admin/build/block/list/js'] = array(
     'title' => 'JavaScript List Form',
     'page callback' => 'block_admin_display_js',
+    'access arguments' => array('administer blocks'),
     'type' => MENU_CALLBACK,
     'file' => 'block.admin.inc',
   );
@@ -139,6 +140,7 @@
     'title' => 'Configure block',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('block_admin_configure'),
+    'access arguments' => array('administer blocks'),
     'type' => MENU_CALLBACK,
     'file' => 'block.admin.inc',
   );
@@ -146,6 +148,7 @@
     'title' => 'Delete block',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('block_box_delete'),
+    'access arguments' => array('administer blocks'),
     'type' => MENU_CALLBACK,
     'file' => 'block.admin.inc',
   );
@@ -153,6 +156,7 @@
     'title' => 'Add block',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('block_add_block_form'),
+    'access arguments' => array('administer blocks'),
     'type' => MENU_LOCAL_TASK,
     'file' => 'block.admin.inc',
   );
@@ -295,7 +299,7 @@
 }
 
 function block_box_get($bid) {
-  return db_fetch_array(db_query("SELECT bx.*, bl.title FROM {boxes} bx INNER JOIN {blocks} bl ON bx.bid = bl.delta WHERE bl.module = 'block' AND bx.bid = %d", $bid));
+  return db_fetch_array(db_query("SELECT * FROM {boxes} WHERE bid = %d", $bid));
 }
 
 /**
@@ -439,8 +443,23 @@
       else {
         $page_match = TRUE;
       }
-
-      if ($enabled && $page_match) {
+      $block->enabled = $enabled;
+      $block->page_match = $page_match;
+      $blocks[$block->region]["{$block->module}_{$block->delta}"] = $block;
+    }
+  }
+
+  // Create an empty array if there were no entries
+  if (!isset($blocks[$region])) {
+    $blocks[$region] = array();
+  }
+
+  foreach ($blocks[$region] as $key => $block) {
+    // Render the block content if it has not been created already.
+    if (!isset($block->content)) {
+      // Erase the block from the static array - we'll put it back if it has content.
+      unset($blocks[$region][$key]);
+      if ($block->enabled && $block->page_match) {
         // Check the current throttle status and see if block should be displayed
         // based on server load.
         if (!($block->throttle && (module_invoke('throttle', 'status') > 0))) {
@@ -477,10 +496,6 @@
       }
     }
   }
-  // Create an empty array if there were no entries
-  if (!isset($blocks[$region])) {
-    $blocks[$region] = array();
-  }
   return $blocks[$region];
 }
 

Modified: branches/drupal6/modules/blog/blog.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/blog/blog.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/blog/blog.info (original)
+++ branches/drupal6/modules/blog/blog.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/blog/blog.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/blog/blog.module?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/blog/blog.module (original)
+++ branches/drupal6/modules/blog/blog.module Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: blog.module,v 1.297 2008/01/09 09:51:34 goba Exp $
+// $Id: blog.module,v 1.297.2.3 2008/05/19 07:27:35 goba Exp $
 
 /**
  * @file
@@ -33,11 +33,11 @@
   switch ($op) {
     case 'create':
       // Anonymous users cannot post even if they have the permission. 
-      return user_access('create blog entries', $account) && $account->uid;
+      return user_access('create blog entries', $account) && $account->uid ? TRUE : NULL;
     case 'update':
-      return user_access('edit any blog entry', $account) || (user_access('edit own blog entries', $account) && ($node->uid == $account->uid));
+      return user_access('edit any blog entry', $account) || (user_access('edit own blog entries', $account) && ($node->uid == $account->uid)) ? TRUE : NULL;
     case 'delete':
-      return user_access('delete any blog entry', $account) || (user_access('delete own blog entries', $account) && ($node->uid == $account->uid));
+      return user_access('delete any blog entry', $account) || (user_access('delete own blog entries', $account) && ($node->uid == $account->uid)) ? TRUE : NULL;
   }
 }
 
@@ -49,7 +49,7 @@
     $user->content['summary']['blog'] =  array(
       '#type' => 'user_profile_item',
       '#title' => t('Blog'),
-      '#value' => l(t('View recent blog entries'), "blog/$user->uid", array('title' => t("Read @username's latest blog entries.", array('@username' => $user->name)))),
+      '#value' => l(t('View recent blog entries'), "blog/$user->uid", array('attributes' => array('title' => t("Read @username's latest blog entries.", array('@username' => $user->name))))),
       '#attributes' => array('class' => 'blog'),
     );
   }
@@ -140,19 +140,20 @@
     'type' => MENU_SUGGESTED_ITEM,
     'file' => 'blog.pages.inc',
   );
-  $items['blog/%user_current'] = array(
+  $items['blog/%user_uid_optional'] = array(
     'title' => 'My blog',
     'page callback' => 'blog_page_user',
     'page arguments' => array(1),
-    'access callback' => 'user_access',
-    'access arguments' => array('create blog entries', 1),
+    'access callback' => 'blog_page_user_access',
+    'access arguments' => array(1),
     'file' => 'blog.pages.inc',
   );
   $items['blog/%user/feed'] = array(
     'title' => 'Blogs',
     'page callback' => 'blog_feed_user',
     'page arguments' => array(1),
-    'access arguments' => array('access content'),
+    'access callback' => 'blog_page_user_access',
+    'access arguments' => array(1),
     'type' => MENU_CALLBACK,
     'file' => 'blog.pages.inc',
   );
@@ -165,6 +166,23 @@
   );
 
   return $items;
+}
+
+/**
+ * Access callback for user blog pages.
+ */
+function blog_page_user_access($account) {
+  // The visitor must be able to access the site's content.
+  // For a blog to 'exist' the user must either be able to
+  // create new blog entries, or it must have existing posts.
+  return $account->uid && user_access('access content') && (user_access('create blog entries', $account) || _blog_post_exists($account));
+}
+
+/**
+ * Helper function to determine if a user has blog posts already.
+ */
+function _blog_post_exists($account) {
+  return (bool)db_result(db_query_range(db_rewrite_sql("SELECT 1 FROM {node} n WHERE n.type = 'blog' AND n.uid = %d AND n.status = 1"), $account->uid, 0, 1));
 }
 
 /**

Modified: branches/drupal6/modules/blogapi/blogapi.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/blogapi/blogapi.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/blogapi/blogapi.info (original)
+++ branches/drupal6/modules/blogapi/blogapi.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/book/book.admin.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/book/book.admin.inc?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/book/book.admin.inc (original)
+++ branches/drupal6/modules/book/book.admin.inc Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: book.admin.inc,v 1.8 2008/01/08 10:35:41 goba Exp $
+// $Id: book.admin.inc,v 1.8.2.2 2008/07/08 10:19:46 goba Exp $
 
 /**
  * @file
@@ -72,12 +72,24 @@
   drupal_set_title(check_plain($node->title));
   $form = array();
   $form['#node'] = $node;
-  $form['table'] = _book_admin_table($node);
+  _book_admin_table($node, $form);
   $form['save'] = array(
     '#type' => 'submit',
     '#value' => t('Save book pages'),
   );
   return $form;
+}
+
+/**
+ * Check that the book has not been changed while using the form.
+ *
+ * @see book_admin_edit()
+ */
+function book_admin_edit_validate($form, &$form_state) {
+  if ($form_state['values']['tree_hash'] != $form_state['values']['tree_current_hash']) {
+    form_set_error('', t('This book has been modified by another user, the changes could not be saved.'));
+    $form_state['rebuild'] = TRUE;
+  }
 }
 
 /**
@@ -128,8 +140,8 @@
  *
  * @see book_admin_edit()
  */
-function _book_admin_table($node) {
-  $form = array(
+function _book_admin_table($node, &$form) {
+  $form['table'] = array(
     '#theme' => 'book_admin_table',
     '#tree' => TRUE,
   );
@@ -137,9 +149,19 @@
   $tree = book_menu_subtree_data($node->book);
   $tree = array_shift($tree); // Do not include the book item itself.
   if ($tree['below']) {
-    _book_admin_table_tree($tree['below'], $form);
-  }
-  return $form;
+    $hash = sha1(serialize($tree['below']));
+    // Store the hash value as a hidden form element so that we can detect
+    // if another user changed the book hierarchy.
+    $form['tree_hash'] = array(
+      '#type' => 'hidden',
+      '#default_value' => $hash,
+    );
+    $form['tree_current_hash'] = array(
+      '#type' => 'value',
+      '#value' => $hash,
+    );
+    _book_admin_table_tree($tree['below'], $form['table']);
+  }
 }
 
 /**
@@ -226,25 +248,3 @@
   return theme('table', $header, $rows, array('id' => 'book-outline'));
 }
 
-/**
- * Recursive helper to sort each layer of a book tree by weight.
- */
-function _book_admin_sort_tree(&$tree) {
-  uasort($tree, '_book_admin_compare');
-  foreach ($tree as $key => $subtree) {
-    if (!empty($tree[$key]['below'])) {
-      _book_admin_sort_tree($tree[$key]['below']);
-    }
-  }
-}
-
-/**
- * Used by uasort() in _book_admin_sort_tree() to compare items in a book tree.
- */
-function _book_admin_compare($a, $b) {
-  $weight = $a['link']['weight'] - $b['link']['weight'];
-  if ($weight) {
-    return $weight;
-  }
-  return strncmp($a['link']['title'], $b['link']['title']);
-}

Modified: branches/drupal6/modules/book/book.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/book/book.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/book/book.info (original)
+++ branches/drupal6/modules/book/book.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/book/book.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/book/book.module?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/book/book.module (original)
+++ branches/drupal6/modules/book/book.module Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: book.module,v 1.454.2.2 2008/02/13 11:20:47 goba Exp $
+// $Id: book.module,v 1.454.2.5 2008/07/03 06:38:46 dries Exp $
 
 /**
  * @file
@@ -515,7 +515,7 @@
   static $flat = array();
 
   if (!isset($flat[$book_link['mlid']])) {
-    // Call menu_tree_full_data() to take advantage of the menu system's caching.
+    // Call menu_tree_all_data() to take advantage of the menu system's caching.
     $tree = menu_tree_all_data($book_link['menu_name'], $book_link);
     $flat[$book_link['mlid']] = array();
     _book_flatten_menu($tree, $flat[$book_link['mlid']]);
@@ -1044,14 +1044,21 @@
 function book_menu_subtree_data($item) {
   static $tree = array();
 
-  $cid = 'links:'. $item['menu_name'] .':subtree:'. $item['mlid'];
+  // Generate a cache ID (cid) specific for this $menu_name and $item.
+  $cid = 'links:'. $item['menu_name'] .':subtree-cid:'. $item['mlid'];
 
   if (!isset($tree[$cid])) {
     $cache = cache_get($cid, 'cache_menu');
     if ($cache && isset($cache->data)) {
-      $data = $cache->data;
-    }
-    else {
+      // If the cache entry exists, it will just be the cid for the actual data.
+      // This avoids duplication of large amounts of data.
+      $cache = cache_get($cache->data, 'cache_menu');
+      if ($cache && isset($cache->data)) {
+        $data = $cache->data;
+      }
+    }
+    // If the subtree data was not in the cache, $data will be NULL.
+    if (!isset($data)) {
       $match = array("menu_name = '%s'");
       $args = array($item['menu_name']);
       $i = 1;
@@ -1070,8 +1077,14 @@
       $data['tree'] = menu_tree_data(db_query($sql, $args), array(), $item['depth']);
       $data['node_links'] = array();
       menu_tree_collect_node_links($data['tree'], $data['node_links']);
-      // Cache the data.
-      cache_set($cid, $data, 'cache_menu');
+      // Compute the real cid for book subtree data.
+      $tree_cid = 'links:'. $item['menu_name'] .':subtree-data:'. md5(serialize($data));
+      // Cache the data, if it is not already in the cache.
+      if (!cache_get($tree_cid, 'cache_menu')) {
+        cache_set($tree_cid, $data, 'cache_menu');
+      }
+      // Cache the cid of the (shared) data using the menu and item-specific cid.
+      cache_set($cid, $tree_cid, 'cache_menu');
     }
     // Check access for the current user to each item in the tree.
     menu_tree_check_access($data['tree'], $data['node_links']);

Modified: branches/drupal6/modules/color/color.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/color/color.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/color/color.info (original)
+++ branches/drupal6/modules/color/color.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/comment/comment.admin.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/comment/comment.admin.inc?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/comment/comment.admin.inc (original)
+++ branches/drupal6/modules/comment/comment.admin.inc Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: comment.admin.inc,v 1.4 2008/01/08 10:35:41 goba Exp $
+// $Id: comment.admin.inc,v 1.4.2.2 2008/05/19 07:27:35 goba Exp $
 
 /**
  * @file
@@ -64,7 +64,7 @@
   while ($comment = db_fetch_object($result)) {
     $comments[$comment->cid] = '';
     $comment->name = $comment->uid ? $comment->registered_name : $comment->name;
-    $form['subject'][$comment->cid] = array('#value' => l($comment->subject, 'node/'. $comment->nid, array('title' => truncate_utf8($comment->comment, 128), 'fragment' => 'comment-'. $comment->cid)));
+    $form['subject'][$comment->cid] = array('#value' => l($comment->subject, 'node/'. $comment->nid, array('attributes' => array('title' => truncate_utf8($comment->comment, 128)), 'fragment' => 'comment-'. $comment->cid)));
     $form['username'][$comment->cid] = array('#value' => theme('username', $comment));
     $form['node_title'][$comment->cid] = array('#value' => l($comment->node_title, 'node/'. $comment->nid));
     $form['timestamp'][$comment->cid] = array('#value' => format_date($comment->timestamp, 'small'));
@@ -277,7 +277,7 @@
  */
 function _comment_delete_thread($comment) {
   if (!is_object($comment) || !is_numeric($comment->cid)) {
-    watchdog('content', 'Cannot delete non-existent comment.', WATCHDOG_WARNING);
+    watchdog('content', 'Cannot delete non-existent comment.', array(), WATCHDOG_WARNING);
     return;
   }
 

Modified: branches/drupal6/modules/comment/comment.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/comment/comment.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/comment/comment.info (original)
+++ branches/drupal6/modules/comment/comment.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/comment/comment.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/comment/comment.module?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/comment/comment.module (original)
+++ branches/drupal6/modules/comment/comment.module Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: comment.module,v 1.617 2008/01/25 16:19:12 goba Exp $
+// $Id: comment.module,v 1.617.2.2 2008/04/25 20:58:46 goba Exp $
 
 /**
  * @file
@@ -211,6 +211,7 @@
   $items['admin/content/comment/approval'] = array(
     'title' => 'Approval queue',
     'page arguments' => array('approval'),
+    'access arguments' => array('administer comments'),
     'type' => MENU_LOCAL_TASK,
     'file' => 'comment.admin.inc',
   );
@@ -953,13 +954,13 @@
     }
     else {
       // Multiple comment view
-      $query_count = 'SELECT COUNT(*) FROM {comments} WHERE nid = %d';
+      $query_count = 'SELECT COUNT(*) FROM {comments} c WHERE c.nid = %d';
       $query = 'SELECT c.cid as cid, c.pid, c.nid, c.subject, c.comment, c.format, c.timestamp, c.name, c.mail, c.homepage, u.uid, u.name AS registered_name, u.signature, u.picture, u.data, c.thread, c.status FROM {comments} c INNER JOIN {users} u ON c.uid = u.uid WHERE c.nid = %d';
 
       $query_args = array($nid);
       if (!user_access('administer comments')) {
         $query .= ' AND c.status = %d';
-        $query_count .= ' AND status = %d';
+        $query_count .= ' AND c.status = %d';
         $query_args[] = COMMENT_PUBLISHED;
       }
 

Modified: branches/drupal6/modules/comment/comment.tpl.php
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/comment/comment.tpl.php?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/comment/comment.tpl.php (original)
+++ branches/drupal6/modules/comment/comment.tpl.php Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: comment.tpl.php,v 1.4 2008/01/04 19:24:23 goba Exp $
+// $Id: comment.tpl.php,v 1.4.2.1 2008/03/21 21:58:28 goba Exp $
 
 /**
  * @file comment.tpl.php
@@ -14,7 +14,7 @@
  * - $picture: Authors picture.
  * - $signature: Authors signature.
  * - $status: Comment status. Possible values are:
- *   comment-unpublished, comment-published or comment-review.
+ *   comment-unpublished, comment-published or comment-preview.
  * - $submitted: By line with date and time.
  * - $title: Linked title.
  *

Modified: branches/drupal6/modules/contact/contact.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/contact/contact.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/contact/contact.info (original)
+++ branches/drupal6/modules/contact/contact.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/contact/contact.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/contact/contact.module?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/contact/contact.module (original)
+++ branches/drupal6/modules/contact/contact.module Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: contact.module,v 1.103 2008/01/16 12:46:52 goba Exp $
+// $Id: contact.module,v 1.103.2.1 2008/04/09 21:11:46 goba Exp $
 
 /**
  * @file
@@ -59,6 +59,7 @@
     'title' => 'Add category',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('contact_admin_edit', 3),
+    'access arguments' => array('administer site-wide contact form'),
     'type' => MENU_LOCAL_TASK,
     'weight' => 1,
     'file' => 'contact.admin.inc',
@@ -67,6 +68,7 @@
     'title' => 'Edit contact category',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('contact_admin_edit', 3, 4),
+    'access arguments' => array('administer site-wide contact form'),
     'type' => MENU_CALLBACK,
     'file' => 'contact.admin.inc',
   );
@@ -74,6 +76,7 @@
     'title' => 'Delete contact',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('contact_admin_delete', 4),
+    'access arguments' => array('administer site-wide contact form'),
     'type' => MENU_CALLBACK,
     'file' => 'contact.admin.inc',
   );
@@ -81,6 +84,7 @@
     'title' => 'Settings',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('contact_admin_settings'),
+    'access arguments' => array('administer site-wide contact form'),
     'type' => MENU_LOCAL_TASK,
     'weight' => 2,
     'file' => 'contact.admin.inc',

Modified: branches/drupal6/modules/dblog/dblog.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/dblog/dblog.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/dblog/dblog.info (original)
+++ branches/drupal6/modules/dblog/dblog.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/dblog/dblog.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/dblog/dblog.module?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/dblog/dblog.module (original)
+++ branches/drupal6/modules/dblog/dblog.module Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: dblog.module,v 1.21 2008/01/08 10:35:41 goba Exp $
+// $Id: dblog.module,v 1.21.2.2 2008/04/09 21:11:46 goba Exp $
 
 /**
  * @file
@@ -47,6 +47,7 @@
     'description' => 'Settings for logging to the Drupal database logs. This is the most common method for small to medium sites on shared hosting. The logs are viewable from the admin pages.',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('dblog_admin_settings'),
+    'access arguments' => array('administer site configuration'),
     'file' => 'dblog.admin.inc',
   );
 
@@ -54,6 +55,7 @@
     'title' => 'Recent log entries',
     'description' => 'View events that have recently been logged.',
     'page callback' => 'dblog_overview',
+    'access arguments' => array('access site reports'),
     'weight' => -1,
     'file' => 'dblog.admin.inc',
   );
@@ -62,6 +64,7 @@
     'description' => "View 'page not found' errors (404s).",
     'page callback' => 'dblog_top',
     'page arguments' => array('page not found'),
+    'access arguments' => array('access site reports'),
     'file' => 'dblog.admin.inc',
   );
   $items['admin/reports/access-denied'] = array(
@@ -69,12 +72,14 @@
     'description' => "View 'access denied' errors (403s).",
     'page callback' => 'dblog_top',
     'page arguments' => array('access denied'),
+    'access arguments' => array('access site reports'),
     'file' => 'dblog.admin.inc',
   );
   $items['admin/reports/event/%'] = array(
     'title' => 'Details',
     'page callback' => 'dblog_event',
     'page arguments' => array(3),
+    'access arguments' => array('access site reports'),
     'type' => MENU_CALLBACK,
     'file' => 'dblog.admin.inc',
   );
@@ -98,7 +103,7 @@
 function dblog_cron() {
   // Cleanup the watchdog table
   $max = db_result(db_query('SELECT MAX(wid) FROM {watchdog}'));
-  db_query('DELETE FROM {watchdog} WHERE wid < %d', $max - variable_get('dblog_row_limit', 1000));
+  db_query('DELETE FROM {watchdog} WHERE wid <= %d', $max - variable_get('dblog_row_limit', 1000));
 }
 
 /**

Modified: branches/drupal6/modules/filter/filter.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/filter/filter.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/filter/filter.info (original)
+++ branches/drupal6/modules/filter/filter.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/filter/filter.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/filter/filter.module?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/filter/filter.module (original)
+++ branches/drupal6/modules/filter/filter.module Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: filter.module,v 1.204 2008/01/21 15:08:24 goba Exp $
+// $Id: filter.module,v 1.204.2.2 2008/07/09 21:48:28 goba Exp $
 
 /**
  * @file
@@ -82,6 +82,7 @@
   $items['admin/settings/filters/add'] = array(
     'title' => 'Add input format',
     'page callback' => 'filter_admin_format_page',
+    'access arguments' => array('administer filters'),
     'type' => MENU_LOCAL_TASK,
     'weight' => 1,
     'file' => 'filter.admin.inc',
@@ -90,6 +91,7 @@
     'title' => 'Delete input format',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('filter_admin_delete'),
+    'access arguments' => array('administer filters'),
     'type' => MENU_CALLBACK,
     'file' => 'filter.admin.inc',
   );
@@ -120,6 +122,7 @@
     'title' => 'Configure',
     'page callback' => 'filter_admin_configure_page',
     'page arguments' => array(3),
+    'access arguments' => array('administer filters'),
     'type' => MENU_LOCAL_TASK,
     'weight' => 1,
     'file' => 'filter.admin.inc',
@@ -128,6 +131,7 @@
     'title' => 'Rearrange',
     'page callback' => 'filter_admin_order_page',
     'page arguments' => array(3),
+    'access arguments' => array('administer filters'),
     'type' => MENU_LOCAL_TASK,
     'weight' => 2,
     'file' => 'filter.admin.inc',
@@ -928,7 +932,7 @@
  * for scripts and styles.
  */
 function filter_xss_admin($string) {
-  return filter_xss($string, array('a', 'abbr', 'acronym', 'address', 'b', 'bdo', 'big', 'blockquote', 'br', 'caption', 'cite', 'code', 'col', 'colgroup', 'dd', 'del', 'dfn', 'div', 'dl', 'dt', 'em', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'i', 'img', 'ins', 'kbd', 'li', 'object', 'ol', 'p', 'param', 'pre', 'q', 'samp', 'small', 'span', 'strong', 'sub', 'sup', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'tr', 'tt', 'ul', 'var'));
+  return filter_xss($string, array('a', 'abbr', 'acronym', 'address', 'b', 'bdo', 'big', 'blockquote', 'br', 'caption', 'cite', 'code', 'col', 'colgroup', 'dd', 'del', 'dfn', 'div', 'dl', 'dt', 'em', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'i', 'img', 'ins', 'kbd', 'li', 'ol', 'p', 'param', 'pre', 'q', 'samp', 'small', 'span', 'strong', 'sub', 'sup', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'tr', 'tt', 'ul', 'var'));
 }
 
 /**

Modified: branches/drupal6/modules/forum/forum.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/forum/forum.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/forum/forum.info (original)
+++ branches/drupal6/modules/forum/forum.info Mon Aug 11 17:16:46 2008
@@ -7,8 +7,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/forum/forum.install
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/forum/forum.install?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/forum/forum.install (original)
+++ branches/drupal6/modules/forum/forum.install Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: forum.install,v 1.16 2007/12/31 16:58:34 goba Exp $
+// $Id: forum.install,v 1.16.2.1 2008/06/25 07:47:34 dries Exp $
 
 /**
  * Implementation of hook_install().
@@ -50,7 +50,6 @@
   $vid = variable_get('forum_nav_vocabulary', '');
   taxonomy_del_vocabulary($vid);
 
-  db_query("DELETE FROM {node} WHERE type = 'forum'");
   db_query('DROP TABLE {forum}');
   variable_del('forum_containers');
   variable_del('forum_nav_vocabulary');

Modified: branches/drupal6/modules/forum/forum.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/forum/forum.module?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/forum/forum.module (original)
+++ branches/drupal6/modules/forum/forum.module Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: forum.module,v 1.448.2.2 2008/02/13 14:06:36 goba Exp $
+// $Id: forum.module,v 1.448.2.4 2008/04/25 20:39:54 goba Exp $
 
 /**
  * @file
@@ -106,6 +106,7 @@
     'title' => 'Add container',
     'page callback' => 'forum_form_main',
     'page arguments' => array('container'),
+    'access arguments' => array('administer forums'),
     'type' => MENU_LOCAL_TASK,
     'parent' => 'admin/content/forum',
     'file' => 'forum.admin.inc',
@@ -114,6 +115,7 @@
     'title' => 'Add forum',
     'page callback' => 'forum_form_main',
     'page arguments' => array('forum'),
+    'access arguments' => array('administer forums'),
     'type' => MENU_LOCAL_TASK,
     'parent' => 'admin/content/forum',
     'file' => 'forum.admin.inc',
@@ -122,6 +124,7 @@
     'title' => 'Settings',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('forum_admin_settings'),
+    'access arguments' => array('administer forums'),
     'weight' => 5,
     'type' => MENU_LOCAL_TASK,
     'parent' => 'admin/content/forum',
@@ -129,6 +132,7 @@
   );
   $items['admin/content/forum/edit/%forum_term'] = array(
     'page callback' => 'forum_form_main',
+    'access arguments' => array('administer forums'),
     'type' => MENU_CALLBACK,
     'file' => 'forum.admin.inc',
   );
@@ -136,6 +140,7 @@
     'title' => 'Edit container',
     'page callback' => 'forum_form_main',
     'page arguments' => array('container', 5),
+    'access arguments' => array('administer forums'),
     'type' => MENU_CALLBACK,
     'file' => 'forum.admin.inc',
   );
@@ -143,6 +148,7 @@
     'title' => 'Edit forum',
     'page callback' => 'forum_form_main',
     'page arguments' => array('forum', 5),
+    'access arguments' => array('administer forums'),
     'type' => MENU_CALLBACK,
     'file' => 'forum.admin.inc',
   );
@@ -307,11 +313,11 @@
 function forum_access($op, $node, $account) {
   switch ($op) {
     case 'create':
-      return user_access('create forum topics', $account);
+      return user_access('create forum topics', $account) ? TRUE : NULL;
     case 'update':
-      return user_access('edit any forum topic', $account) || (user_access('edit own forum topics', $account) && ($account->uid == $node->uid));
+      return user_access('edit any forum topic', $account) || (user_access('edit own forum topics', $account) && ($account->uid == $node->uid)) ? TRUE : NULL;
     case 'delete':
-      return user_access('delete any forum topic', $account) || (user_access('delete own forum topics', $account) && ($account->uid == $node->uid));
+      return user_access('delete any forum topic', $account) || (user_access('delete own forum topics', $account) && ($account->uid == $node->uid)) ? TRUE : NULL;
   }
 }
 

Modified: branches/drupal6/modules/help/help.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/help/help.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/help/help.info (original)
+++ branches/drupal6/modules/help/help.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/help/help.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/help/help.module?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/help/help.module (original)
+++ branches/drupal6/modules/help/help.module Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: help.module,v 1.78 2007/12/14 18:08:46 goba Exp $
+// $Id: help.module,v 1.78.2.1 2008/04/09 21:11:48 goba Exp $
 
 /**
  * @file
@@ -23,6 +23,7 @@
       'title' => $module,
       'page callback' => 'help_page',
       'page arguments' => array(2),
+      'access arguments' => array('access administration pages'),
       'type' => MENU_CALLBACK,
       'file' => 'help.admin.inc',
     );

Modified: branches/drupal6/modules/locale/locale.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/locale/locale.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/locale/locale.info (original)
+++ branches/drupal6/modules/locale/locale.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/locale/locale.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/locale/locale.module?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/locale/locale.module (original)
+++ branches/drupal6/modules/locale/locale.module Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: locale.module,v 1.212 2008/01/28 17:16:34 goba Exp $
+// $Id: locale.module,v 1.212.2.2 2008/07/09 21:48:28 goba Exp $
 
 /**
  * @file
@@ -99,6 +99,7 @@
     'title' => 'Add language',
     'page callback' => 'locale_inc_callback',
     'page arguments' => array('locale_languages_add_screen'), // two forms concatenated
+    'access arguments' => array('administer languages'),
     'weight' => 5,
     'type' => MENU_LOCAL_TASK,
   );
@@ -106,6 +107,7 @@
     'title' => 'Configure',
     'page callback' => 'locale_inc_callback',
     'page arguments' => array('drupal_get_form', 'locale_languages_configure_form'),
+    'access arguments' => array('administer languages'),
     'weight' => 10,
     'type' => MENU_LOCAL_TASK,
   );
@@ -113,12 +115,14 @@
     'title' => 'Edit language',
     'page callback' => 'locale_inc_callback',
     'page arguments' => array('drupal_get_form', 'locale_languages_edit_form', 4),
+    'access arguments' => array('administer languages'),
     'type' => MENU_CALLBACK,
   );
   $items['admin/settings/language/delete/%'] = array(
     'title' => 'Confirm',
     'page callback' => 'locale_inc_callback',
     'page arguments' => array('drupal_get_form', 'locale_languages_delete_form', 4),
+    'access arguments' => array('administer languages'),
     'type' => MENU_CALLBACK,
   );
 
@@ -141,11 +145,13 @@
     'type' => MENU_LOCAL_TASK,
     'page callback' => 'locale_inc_callback',
     'page arguments' => array('locale_translate_seek_screen'), // search results and form concatenated
+    'access arguments' => array('translate interface'),
   );
   $items['admin/build/translate/import'] = array(
     'title' => 'Import',
     'page callback' => 'locale_inc_callback',
     'page arguments' => array('drupal_get_form', 'locale_translate_import_form'),
+    'access arguments' => array('translate interface'),
     'weight' => 20,
     'type' => MENU_LOCAL_TASK,
   );
@@ -153,6 +159,7 @@
     'title' => 'Export',
     'page callback' => 'locale_inc_callback',
     'page arguments' => array('locale_translate_export_screen'), // possibly multiple forms concatenated
+    'access arguments' => array('translate interface'),
     'weight' => 30,
     'type' => MENU_LOCAL_TASK,
   );
@@ -160,12 +167,14 @@
     'title' => 'Edit string',
     'page callback' => 'locale_inc_callback',
     'page arguments' => array('drupal_get_form', 'locale_translate_edit_form', 4),
+    'access arguments' => array('translate interface'),
     'type' => MENU_CALLBACK,
   );
   $items['admin/build/translate/delete/%'] = array(
     'title' => 'Delete string',
     'page callback' => 'locale_inc_callback',
-    'page arguments' => array('locale_translate_delete', 4),  // directly deletes, no confirmation
+    'page arguments' => array('locale_translate_delete_page', 4),
+    'access arguments' => array('translate interface'),
     'type' => MENU_CALLBACK,
   );
 

Modified: branches/drupal6/modules/menu/menu.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/menu/menu.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/menu/menu.info (original)
+++ branches/drupal6/modules/menu/menu.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/menu/menu.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/menu/menu.module?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/menu/menu.module (original)
+++ branches/drupal6/modules/menu/menu.module Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: menu.module,v 1.157.2.1 2008/02/11 15:12:53 goba Exp $
+// $Id: menu.module,v 1.157.2.3 2008/05/10 06:53:53 dries Exp $
 
 /**
  * @file
@@ -27,7 +27,7 @@
     case 'admin/build/menu/add':
       return '<p>'. t('Enter the name for your new menu. Remember to enable the newly created block in the <a href="@blocks">blocks administration page</a>.', array('@blocks' => url('admin/build/block'))) .'</p>';
     case 'admin/build/menu-customize/%':
-      return '<p>'. t('To rearrange menu items, grab a drag-and-drop handle under the <em>Menu item</em> column and drag the items (or group of items) to a new location in the list. (Grab a handle by clicking and holding the mouse while hovering over a handle icon.) Remember that your changes will not be saved until you click the <em>Save configuration</em> button at the bottom of the page.') .'<p>';
+      return '<p>'. t('To rearrange menu items, grab a drag-and-drop handle under the <em>Menu item</em> column and drag the items (or group of items) to a new location in the list. (Grab a handle by clicking and holding the mouse while hovering over a handle icon.) Remember that your changes will not be saved until you click the <em>Save configuration</em> button at the bottom of the page.') .'</p>';
     case 'admin/build/menu/item/add':
       return '<p>'. t('Enter the title and path for your new menu item.') .'</p>';
   }
@@ -63,6 +63,7 @@
     'title' => 'Add menu',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('menu_edit_menu', 'add'),
+    'access arguments' => array('administer menu'),
     'type' => MENU_LOCAL_TASK,
     'file' => 'menu.admin.inc',
   );
@@ -70,6 +71,7 @@
     'title' => 'Settings',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('menu_configure'),
+    'access arguments' => array('administer menu'),
     'type' => MENU_LOCAL_TASK,
     'weight' => 5,
     'file' => 'menu.admin.inc',
@@ -94,6 +96,7 @@
     'title' => 'Add item',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('menu_edit_item', 'add', NULL, 3),
+    'access arguments' => array('administer menu'),
     'type' => MENU_LOCAL_TASK,
     'file' => 'menu.admin.inc',
   );
@@ -101,6 +104,7 @@
     'title' => 'Edit menu',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('menu_edit_menu', 'edit', 3),
+    'access arguments' => array('administer menu'),
     'type' => MENU_LOCAL_TASK,
     'file' => 'menu.admin.inc',
   );
@@ -108,6 +112,7 @@
     'title' => 'Delete menu',
     'page callback' => 'menu_delete_menu_page',
     'page arguments' => array(3),
+    'access arguments' => array('administer menu'),
     'type' => MENU_CALLBACK,
     'file' => 'menu.admin.inc',
   );
@@ -115,6 +120,7 @@
     'title' => 'Edit menu item',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('menu_edit_item', 'edit', 4, NULL),
+    'access arguments' => array('administer menu'),
     'type' => MENU_CALLBACK,
     'file' => 'menu.admin.inc',
   );
@@ -122,6 +128,7 @@
     'title' => 'Reset menu item',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('menu_reset_item_confirm', 4),
+    'access arguments' => array('administer menu'),
     'type' => MENU_CALLBACK,
     'file' => 'menu.admin.inc',
   );
@@ -129,6 +136,7 @@
     'title' => 'Delete menu item',
     'page callback' => 'menu_item_delete_page',
     'page arguments' => array(4),
+    'access arguments' => array('administer menu'),
     'type' => MENU_CALLBACK,
     'file' => 'menu.admin.inc',
   );

Modified: branches/drupal6/modules/node/node.admin.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/node/node.admin.inc?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/node/node.admin.inc (original)
+++ branches/drupal6/modules/node/node.admin.inc Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: node.admin.inc,v 1.19 2008/02/03 19:39:52 goba Exp $
+// $Id: node.admin.inc,v 1.19.2.1 2008/03/21 22:01:05 goba Exp $
 
 /**
  * @file
@@ -10,8 +10,9 @@
  * Menu callback; presents general node configuration options.
  */
 function node_configure() {
-  // Only show rebuild button if there is 0 or more than 2 rows in node_access table,
-  // or if there are modules that implement node_grant.
+  // Only show rebuild button if there are either 0, or 2 or more, rows
+  // in the {node_access} table, or if there are modules that
+  // implement hook_node_grants().
   if (db_result(db_query('SELECT COUNT(*) FROM {node_access}')) != 1 || count(module_implements('node_grants')) > 0) {
     $status = '<p>'. t('If the site is experiencing problems with permissions to content, you may have to rebuild the permissions cache. Possible causes for permission problems are disabling modules or configuration changes to permissions. Rebuilding will remove all privileges to posts, and replace them with permissions based on the current modules and settings.') .'</p>';
     $status .= '<p>'. t('Rebuilding may take some time if there is a lot of content or complex permission settings. After rebuilding has completed posts will automatically use the new permissions.') .'</p>';

Modified: branches/drupal6/modules/node/node.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/node/node.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/node/node.info (original)
+++ branches/drupal6/modules/node/node.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/node/node.install
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/node/node.install?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/node/node.install (original)
+++ branches/drupal6/modules/node/node.install Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: node.install,v 1.4 2007/12/18 12:59:21 dries Exp $
+// $Id: node.install,v 1.4.2.1 2008/04/15 08:39:40 dries Exp $
 
 /**
  * Implementation of hook_schema().
@@ -32,7 +32,7 @@
         'not null' => TRUE,
         'default' => ''),
       'title' => array(
-        'description' => t('The title of this node, always treated a non-markup plain text.'),
+        'description' => t('The title of this node, always treated as non-markup plain text.'),
         'type' => 'varchar',
         'length' => 255,
         'not null' => TRUE,
@@ -63,7 +63,7 @@
         'not null' => TRUE,
         'default' => 0),
       'promote' => array(
-        'description' => t('Boolean indicating whether the node should displayed on the front page.'),
+        'description' => t('Boolean indicating whether the node should be displayed on the front page.'),
         'type' => 'int',
         'not null' => TRUE,
         'default' => 0),

Modified: branches/drupal6/modules/node/node.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/node/node.module?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/node/node.module (original)
+++ branches/drupal6/modules/node/node.module Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: node.module,v 1.947.2.2 2008/02/13 14:10:22 goba Exp $
+// $Id: node.module,v 1.947.2.11 2008/06/25 08:59:57 goba Exp $
 
 /**
  * @file
@@ -135,7 +135,7 @@
   $items = array();
   $num_rows = FALSE;
   while ($node = db_fetch_object($result)) {
-    $items[] = l($node->title, 'node/'. $node->nid, !empty($node->comment_count) ? array('title' => format_plural($node->comment_count, '1 comment', '@count comments')) : array());
+    $items[] = l($node->title, 'node/'. $node->nid, !empty($node->comment_count) ? array('attributes' => array('title' => format_plural($node->comment_count, '1 comment', '@count comments'))) : array());
     $num_rows = TRUE;
   }
 
@@ -716,7 +716,7 @@
   elseif (is_array($param)) {
     // Turn the conditions into a query.
     foreach ($param as $key => $value) {
-      $cond[] = 'n.'. db_escape_string($key) ." = '%s'";
+      $cond[] = 'n.'. db_escape_table($key) ." = '%s'";
       $arguments[] = $value;
     }
     $cond = implode(' AND ', $cond);
@@ -907,23 +907,22 @@
 
   // Generate the node table query and the node_revisions table query.
   if ($node->is_new) {
+    _node_save_revision($node, $user->uid);
     drupal_write_record('node', $node);
-    _node_save_revision($node, $user->uid);
+    db_query('UPDATE {node_revisions} SET nid = %d WHERE vid = %d', $node->nid, $node->vid);
     $op = 'insert';
   }
   else {
     drupal_write_record('node', $node, 'nid');
     if (!empty($node->revision)) {
       _node_save_revision($node, $user->uid);
+      db_query('UPDATE {node} SET vid = %d WHERE nid = %d', $node->vid, $node->nid);
     }
     else {
       _node_save_revision($node, $user->uid, 'vid');
       $update_node = FALSE;
     }
     $op = 'update';
-  }
-  if ($update_node) {
-    db_query('UPDATE {node} SET vid = %d WHERE nid = %d', $node->vid, $node->nid);
   }
 
   // Call the node specific callback (if any).
@@ -1150,7 +1149,7 @@
 
     case 'status':
       $total = db_result(db_query('SELECT COUNT(*) FROM {node} WHERE status = 1'));
-      $remaining = db_result(db_query("SELECT COUNT(*) FROM {node} n LEFT JOIN {search_dataset} d ON d.type = 'node' AND d.sid = n.nid WHERE d.sid IS NULL OR d.reindex <> 0"));
+      $remaining = db_result(db_query("SELECT COUNT(*) FROM {node} n LEFT JOIN {search_dataset} d ON d.type = 'node' AND d.sid = n.nid WHERE n.status = 1 AND (d.sid IS NULL OR d.reindex <> 0)"));
       return array('remaining' => $remaining, 'total' => $total);
 
     case 'admin':
@@ -1257,12 +1256,22 @@
         $join2 .= ' LEFT JOIN {node_counter} nc ON nc.nid = i.sid';
         $total += $weight;
       }
-      $select2 = (count($ranking) ? implode(' + ', $ranking) : 'i.relevance') .' AS score';
-
-      // Do search
-      $find = do_search($keys, 'node', 'INNER JOIN {node} n ON n.nid = i.sid '. $join1 .' INNER JOIN {users} u ON n.uid = u.uid', $conditions1 . (empty($where1) ? '' : ' AND '. $where1), $arguments1, $select2, $join2, $arguments2);
-
-      // Load results
+      
+      // When all search factors are disabled (ie they have a weight of zero), 
+      // the default score is based only on keyword relevance and there is no need to 
+      // adjust the score of each item. 
+      if ($total == 0) {
+        $select2 = 'i.relevance AS score';
+        $total = 1;
+      }
+      else {
+        $select2 = implode(' + ', $ranking) . ' AS score';
+      }
+      
+      // Do search.
+      $find = do_search($keys, 'node', 'INNER JOIN {node} n ON n.nid = i.sid '. $join1, $conditions1 . (empty($where1) ? '' : ' AND '. $where1), $arguments1, $select2, $join2, $arguments2);
+
+      // Load results.
       $results = array();
       foreach ($find as $item) {
         // Build the node body.
@@ -1271,9 +1280,9 @@
         $node = node_build_content($node, FALSE, FALSE);
         $node->body = drupal_render($node->content);
 
-        // Fetch comments for snippet
+        // Fetch comments for snippet.
         $node->body .= module_invoke('comment', 'nodeapi', $node, 'update index');
-        // Fetch terms for snippet
+        // Fetch terms for snippet.
         $node->body .= module_invoke('taxonomy', 'nodeapi', $node, 'update index');
 
         $extra = node_invoke_nodeapi($node, 'search result');
@@ -1447,6 +1456,7 @@
     'title' => 'Add content type',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('node_type_form'),
+    'access arguments' => array('administer content types'),
     'file' => 'content_types.inc',
     'type' => MENU_LOCAL_TASK,
   );
@@ -1485,6 +1495,7 @@
       'title' => $type->name,
       'page callback' => 'drupal_get_form',
       'page arguments' => array('node_type_form', $type),
+      'access arguments' => array('administer content types'),
       'file' => 'content_types.inc',
       'type' => MENU_CALLBACK,
     );
@@ -1495,6 +1506,7 @@
     $items['admin/content/node-type/'. $type_url_str .'/delete'] = array(
       'title' => 'Delete',
       'page arguments' => array('node_type_delete_confirm', $type),
+      'access arguments' => array('administer content types'),
       'file' => 'content_types.inc',
       'type' => MENU_CALLBACK,
     );
@@ -1545,6 +1557,8 @@
     'load arguments' => array(3),
     'page callback' => 'node_show',
     'page arguments' => array(1, NULL, TRUE),
+    'access callback' => '_node_revision_access',
+    'access arguments' => array(1),
     'type' => MENU_CALLBACK,
   );
   $items['node/%node/revisions/%/revert'] = array(
@@ -1669,7 +1683,7 @@
 
     // Allow modules to add additional item fields and/or modify $item
     $extra = node_invoke_nodeapi($item, 'rss item');
-    $extra = array_merge($extra, array(array('key' => 'pubDate', 'value' => format_date($item->created, 'custom', 'r')), array('key' => 'dc:creator', 'value' => $item->name), array('key' => 'guid', 'value' => $item->nid .' at '. $base_url, 'attributes' => array('isPermaLink' => 'false'))));
+    $extra = array_merge($extra, array(array('key' => 'pubDate', 'value' => gmdate('r', $item->created)), array('key' => 'dc:creator', 'value' => $item->name), array('key' => 'guid', 'value' => $item->nid .' at '. $base_url, 'attributes' => array('isPermaLink' => 'false'))));
     foreach ($extra as $element) {
       if (isset($element['namespace'])) {
         $namespaces = array_merge($namespaces, $element['namespace']);

Modified: branches/drupal6/modules/node/node.pages.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/node/node.pages.inc?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/node/node.pages.inc (original)
+++ branches/drupal6/modules/node/node.pages.inc Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: node.pages.inc,v 1.28 2008/02/03 19:26:10 goba Exp $
+// $Id: node.pages.inc,v 1.28.2.1 2008/02/27 19:44:44 goba Exp $
 
 /**
  * @file
@@ -11,7 +11,7 @@
  * Menu callback; presents the node editing form, or redirects to delete confirmation.
  */
 function node_page_edit($node) {
-  drupal_set_title($node->title);
+  drupal_set_title(check_plain($node->title));
   return drupal_get_form($node->type .'_node_form', $node);
 }
 

Modified: branches/drupal6/modules/openid/openid.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/openid/openid.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/openid/openid.info (original)
+++ branches/drupal6/modules/openid/openid.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 package = Core - optional
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/openid/openid.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/openid/openid.module?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/openid/openid.module (original)
+++ branches/drupal6/modules/openid/openid.module Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: openid.module,v 1.19 2008/01/30 22:11:22 goba Exp $
+// $Id: openid.module,v 1.19.2.3 2008/07/09 21:48:28 goba Exp $
 
 /**
  * @file
@@ -28,8 +28,10 @@
   );
   $items['user/%user/openid/delete'] = array(
     'title' => 'Delete OpenID',
-    'page callback' => 'openid_user_delete',
-    'page arguments' => array(1),
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('openid_user_delete_form', 1),
+    'access callback' => 'user_edit_access',
+    'access arguments' => array(1),
     'type' => MENU_CALLBACK,
     'file' => 'openid.pages.inc',
   );
@@ -470,7 +472,7 @@
     $request['openid.realm'] = url('', array('absolute' => TRUE));
   }
   else {
-    $request['openid.trust_root'] = $realm;
+    $request['openid.trust_root'] = url('', array('absolute' => TRUE));
   }
 
   // Simple Registration

Modified: branches/drupal6/modules/openid/openid.pages.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/openid/openid.pages.inc?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/openid/openid.pages.inc (original)
+++ branches/drupal6/modules/openid/openid.pages.inc Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: openid.pages.inc,v 1.5 2008/01/30 22:11:22 goba Exp $
+// $Id: openid.pages.inc,v 1.5.2.1 2008/07/09 21:48:28 goba Exp $
 
 /**
  * @file
@@ -44,7 +44,7 @@
 
   $result = db_query("SELECT * FROM {authmap} WHERE module='openid' AND uid=%d", $account->uid);
   while ($identity = db_fetch_object($result)) {
-    $rows[] = array($identity->authname, l(t('Delete'), 'user/'. $account->uid .'/openid/delete/'. $identity->aid));
+    $rows[] = array(check_plain($identity->authname), l(t('Delete'), 'user/'. $account->uid .'/openid/delete/'. $identity->aid));
   }
 
   $output = theme('table', $header, $rows);
@@ -80,12 +80,33 @@
 }
 
 /**
- * Menu callback; Delete the specified OpenID identity from the system.
+ * Present a confirmation form to delete the specified OpenID identity from the system.
+ *
+ * @ingroup forms
+ * @see openid_user_delete_form_submit()
  */
-function openid_user_delete($account, $aid = 0) {
-  db_query("DELETE FROM {authmap} WHERE uid=%d AND aid=%d AND module='openid'", $account->uid, $aid);
+function openid_user_delete_form($form_state, $account, $aid = 0) {
+  $authname = db_result(db_query('SELECT authname FROM {authmap} WHERE uid = %d AND aid = %d', $account->uid, $aid));
+
+  $form = array();
+
+  $form['uid'] = array(
+    '#type' => 'value',
+    '#value' => $account->uid,
+  );
+
+  $form['aid'] = array(
+    '#type' => 'value',
+    '#value' => $aid,
+  );
+
+  return confirm_form($form, t('Are you sure you want to delete the OpenID %authname for %user?', array('%authname' => $authname, '%user' => $account->name)), 'user/'. $account->uid .'/openid');
+}
+
+function openid_user_delete_form_submit($form, &$form_state) {
+  db_query("DELETE FROM {authmap} WHERE uid = %d AND aid = %d AND module = 'openid'", $form_state['values']['uid'], $form_state['values']['aid']);
   if (db_affected_rows()) {
     drupal_set_message(t('OpenID deleted.'));
   }
-  drupal_goto('user/'. $account->uid .'/openid');
+  $form_state['redirect'] = 'user/'. $form_state['values']['uid'] .'/openid';
 }

Modified: branches/drupal6/modules/path/path.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/path/path.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/path/path.info (original)
+++ branches/drupal6/modules/path/path.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/path/path.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/path/path.module?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/path/path.module (original)
+++ branches/drupal6/modules/path/path.module Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: path.module,v 1.138 2008/02/03 19:20:35 goba Exp $
+// $Id: path.module,v 1.138.2.2 2008/06/21 18:22:53 dries Exp $
 
 /**
  * @file
@@ -46,6 +46,7 @@
   $items['admin/build/path/edit'] = array(
     'title' => 'Edit alias',
     'page callback' => 'path_admin_edit',
+    'access arguments' => array('administer url aliases'),
     'type' => MENU_CALLBACK,
     'file' => 'path.admin.inc',
   );
@@ -53,6 +54,7 @@
     'title' => 'Delete alias',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('path_admin_delete_confirm'),
+    'access arguments' => array('administer url aliases'),
     'type' => MENU_CALLBACK,
     'file' => 'path.admin.inc',
   );
@@ -135,9 +137,11 @@
     $language = isset($node->language) ? $node->language : '';
     switch ($op) {
       case 'validate':
-        $node->path = trim($node->path);
-        if (db_result(db_query("SELECT COUNT(dst) FROM {url_alias} WHERE dst = '%s' AND src != '%s' AND language = '%s'", $node->path, "node/$node->nid", $language))) {
-          form_set_error('path', t('The path is already in use.'));
+        if (isset($node->path)) {
+          $node->path = trim($node->path);
+          if (db_result(db_query("SELECT COUNT(dst) FROM {url_alias} WHERE dst = '%s' AND src != '%s' AND language = '%s'", $node->path, "node/$node->nid", $language))) {
+            form_set_error('path', t('The path is already in use.'));
+          }
         }
         break;
 

Modified: branches/drupal6/modules/php/php.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/php/php.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/php/php.info (original)
+++ branches/drupal6/modules/php/php.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/ping/ping.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/ping/ping.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/ping/ping.info (original)
+++ branches/drupal6/modules/ping/ping.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/poll/poll.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/poll/poll.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/poll/poll.info (original)
+++ branches/drupal6/modules/poll/poll.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/poll/poll.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/poll/poll.module?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/poll/poll.module (original)
+++ branches/drupal6/modules/poll/poll.module Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: poll.module,v 1.263 2008/01/15 07:57:46 dries Exp $
+// $Id: poll.module,v 1.263.2.1 2008/04/25 20:39:55 goba Exp $
 
 /**
  * @file
@@ -63,11 +63,11 @@
 function poll_access($op, $node, $account) {
   switch ($op) {
     case 'create':
-      return user_access('create poll content', $account);
+      return user_access('create poll content', $account) ? TRUE : NULL;
     case 'update':
-      return user_access('edit any poll content', $account) || (user_access('edit own poll content', $account) && ($node->uid == $account->uid));
+      return user_access('edit any poll content', $account) || (user_access('edit own poll content', $account) && ($node->uid == $account->uid)) ? TRUE : NULL;
     case 'delete':
-      return user_access('delete any poll content', $account) || (user_access('delete own poll content', $account) && ($node->uid == $account->uid));
+      return user_access('delete any poll content', $account) || (user_access('delete own poll content', $account) && ($node->uid == $account->uid)) ? TRUE : NULL;
   }
 }
 

Modified: branches/drupal6/modules/profile/profile.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/profile/profile.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/profile/profile.info (original)
+++ branches/drupal6/modules/profile/profile.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/profile/profile.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/profile/profile.module?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/profile/profile.module (original)
+++ branches/drupal6/modules/profile/profile.module Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: profile.module,v 1.236 2008/02/03 19:36:46 goba Exp $
+// $Id: profile.module,v 1.236.2.2 2008/04/28 09:13:46 dries Exp $
 
 /**
  * @file
@@ -95,12 +95,14 @@
     'title' => 'Add field',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('profile_field_form'),
+    'access arguments' => array('administer users'),
     'type' => MENU_CALLBACK,
     'file' => 'profile.admin.inc',
   );
   $items['admin/user/profile/autocomplete'] = array(
     'title' => 'Profile category autocomplete',
     'page callback' => 'profile_admin_settings_autocomplete',
+    'access arguments' => array('administer users'),
     'type' => MENU_CALLBACK,
     'file' => 'profile.admin.inc',
   );
@@ -108,6 +110,7 @@
     'title' => 'Edit field',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('profile_field_form'),
+    'access arguments' => array('administer users'),
     'type' => MENU_CALLBACK,
     'file' => 'profile.admin.inc',
   );
@@ -115,6 +118,7 @@
     'title' => 'Delete field',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('profile_field_delete'),
+    'access arguments' => array('administer users'),
     'type' => MENU_CALLBACK,
     'file' => 'profile.admin.inc',
   );
@@ -148,7 +152,7 @@
     $fields['user_profile'] = t('Link to full user profile');
     $form['profile_block_author_fields'] = array('#type' => 'checkboxes',
       '#title' => t('Profile fields to display'),
-      '#default_value' => variable_get('profile_block_author_fields', NULL),
+      '#default_value' => variable_get('profile_block_author_fields', array()),
       '#options' => $fields,
       '#description' => t('Select which profile fields you wish to display in the block. Only fields designated as public in the <a href="@profile-admin">profile field configuration</a> are available.', array('@profile-admin' => url('admin/user/profile'))),
     );
@@ -453,7 +457,7 @@
       'title' => $category->category,
       'weight' => 3,
       'access callback' => 'profile_category_access',
-      'access arguments' => array($category->category)
+      'access arguments' => array(1, $category->category)
     );
   }
   return $data;
@@ -462,12 +466,12 @@
 /**
  * Menu item access callback - check if a user has access to a profile category.
  */
-function profile_category_access($category) {
-  if (user_access('administer users')) {
+function profile_category_access($account, $category) {
+  if (user_access('administer users') && $account->uid > 0) {
     return TRUE;
   }
   else {
-    return db_result(db_query("SELECT COUNT(*) FROM {profile_fields} WHERE category = '%s' AND visibility <> %d", $category, PROFILE_HIDDEN));
+    return user_edit_access($account) && db_result(db_query("SELECT COUNT(*) FROM {profile_fields} WHERE category = '%s' AND visibility <> %d", $category, PROFILE_HIDDEN));
   }
 }
 

Modified: branches/drupal6/modules/search/search.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/search/search.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/search/search.info (original)
+++ branches/drupal6/modules/search/search.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/search/search.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/search/search.module?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/search/search.module (original)
+++ branches/drupal6/modules/search/search.module Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: search.module,v 1.250.2.1 2008/02/07 16:42:03 goba Exp $
+// $Id: search.module,v 1.250.2.2 2008/04/09 21:11:49 goba Exp $
 
 /**
  * @file
@@ -194,6 +194,7 @@
     'description' => 'View most popular search phrases.',
     'page callback' => 'dblog_top',
     'page arguments' => array('search'),
+    'access arguments' => array('access site reports'),
     'file' => 'dblog.admin.inc',
     'file path' => drupal_get_path('module', 'dblog'),
   );

Modified: branches/drupal6/modules/statistics/statistics.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/statistics/statistics.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/statistics/statistics.info (original)
+++ branches/drupal6/modules/statistics/statistics.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/syslog/syslog.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/syslog/syslog.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/syslog/syslog.info (original)
+++ branches/drupal6/modules/syslog/syslog.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/syslog/syslog.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/syslog/syslog.module?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/syslog/syslog.module (original)
+++ branches/drupal6/modules/syslog/syslog.module Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: syslog.module,v 1.14 2007/12/14 18:08:48 goba Exp $
+// $Id: syslog.module,v 1.14.2.1 2008/04/09 21:11:49 goba Exp $
 
 /**
  * @file
@@ -32,6 +32,7 @@
     'description'    => 'Settings for syslog logging. Syslog is an operating system administrative logging tool used in systems management and security auditing. Most suited to medium and large sites, syslog provides filtering tools that allow messages to be routed by type and severity.',
     'page callback'  => 'drupal_get_form',
     'page arguments' => array('syslog_admin_settings'),
+    'access arguments' => array('administer site configuration'),
   );
   return $items;
 }

Modified: branches/drupal6/modules/system/admin.css
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/system/admin.css?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/system/admin.css (original)
+++ branches/drupal6/modules/system/admin.css Mon Aug 11 17:16:46 2008
@@ -1,4 +1,4 @@
-/* $Id: admin.css,v 1.18 2007/12/22 23:24:25 goba Exp $ */
+/* $Id: admin.css,v 1.18.2.1 2008/04/25 21:01:54 goba Exp $ */
 
 /*
 ** Formatting for administration page
@@ -43,6 +43,9 @@
 }
 table.package .description {
   width: 100%;
+}
+table.package .version {
+  direction: ltr;
 }
 div.admin-dependencies, div.admin-required {
   font-size: 0.9em;

Modified: branches/drupal6/modules/system/system.admin.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/system/system.admin.inc?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/system/system.admin.inc (original)
+++ branches/drupal6/modules/system/system.admin.inc Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: system.admin.inc,v 1.63 2008/02/04 12:35:48 goba Exp $
+// $Id: system.admin.inc,v 1.63.2.3 2008/05/19 07:27:35 goba Exp $
 
 /**
  * @file
@@ -1359,7 +1359,7 @@
  */
 function system_clear_cache_submit(&$form_state, $form) {
   drupal_flush_all_caches();
-  drupal_set_message('Caches cleared.');
+  drupal_set_message(t('Caches cleared.'));
 }
 
 /**
@@ -1901,10 +1901,10 @@
   $output = '<div class="admin clear-block">';
   $output .= '<div class="compact-link">';
   if (system_admin_compact_mode()) {
-    $output .= l(t('Show descriptions'), 'admin/compact/off', array('title' => t('Expand layout to include descriptions.')));
+    $output .= l(t('Show descriptions'), 'admin/compact/off', array('attributes' => array('title' => t('Expand layout to include descriptions.'))));
   }
   else {
-    $output .= l(t('Hide descriptions'), 'admin/compact/on', array('title' => t('Compress layout by hiding descriptions.')));
+    $output .= l(t('Hide descriptions'), 'admin/compact/on', array('attributes' => array('title' => t('Compress layout by hiding descriptions.'))));
   }
   $output .= '</div>';
 
@@ -2070,7 +2070,7 @@
         $row[] = '<strong>'. drupal_render($form['name'][$key]) .'</strong>';
       }
 
-      $row[] = drupal_render($form['version'][$key]);
+      $row[] = array('data' => drupal_render($form['version'][$key]), 'class' => 'version');
       $row[] = array('data' => $description, 'class' => 'description');
       $rows[] = $row;
     }

Modified: branches/drupal6/modules/system/system.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/system/system.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/system/system.info (original)
+++ branches/drupal6/modules/system/system.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/system/system.install
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/system/system.install?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/system/system.install (original)
+++ branches/drupal6/modules/system/system.install Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: system.install,v 1.238.2.1 2008/02/08 17:07:55 goba Exp $
+// $Id: system.install,v 1.238.2.3 2008/04/25 21:24:20 goba Exp $
 
 /**
  * Test and report Drupal installation requirements.
@@ -681,7 +681,7 @@
         'not null' => TRUE,
         'default' => ''),
       'to_arg_functions' => array(
-        'description' => t('A serialized array of function names (like user_current_to_arg) to be called to replace a part of the router path with another string.'),
+        'description' => t('A serialized array of function names (like user_uid_optional_to_arg) to be called to replace a part of the router path with another string.'),
         'type' => 'varchar',
         'length' => 255,
         'not null' => TRUE,
@@ -1717,7 +1717,7 @@
     'secondary-links' => array(
       'menu_name' => 'secondary-links',
       'title' => 'Secondary links',
-      'description' => 'Secondary links are often used for pages like legal notices, contact details, and other secondary navigation items that play a lesser role than primary links',
+      'description' => 'Secondary links are often used for pages like legal notices, contact details, and other secondary navigation items that play a lesser role than primary links.',
     ),
   );
   // Multi-part update

Modified: branches/drupal6/modules/system/system.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/system/system.module?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/system/system.module (original)
+++ branches/drupal6/modules/system/system.module Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: system.module,v 1.585.2.6 2008/02/13 14:25:42 goba Exp $
+// $Id: system.module,v 1.585.2.13 2008/07/09 21:48:28 goba Exp $
 
 /**
  * @file
@@ -9,7 +9,7 @@
 /**
  * The current system version.
  */
-define('VERSION', '6.0');
+define('VERSION', '6.3');
 
 /**
  * Core API compatibility.
@@ -212,18 +212,21 @@
   $items['admin/compact'] = array(
     'title' => 'Compact mode',
     'page callback' => 'system_admin_compact_page',
+    'access arguments' => array('access administration pages'),
     'type' => MENU_CALLBACK,
     'file' => 'system.admin.inc',
   );
   $items['admin/by-task'] = array(
     'title' => 'By task',
     'page callback' => 'system_main_admin_page',
+    'access arguments' => array('access administration pages'),
     'file' => 'system.admin.inc',
     'type' => MENU_DEFAULT_LOCAL_TASK,
   );
   $items['admin/by-module'] = array(
     'title' => 'By module',
     'page callback' => 'system_admin_by_module',
+    'access arguments' => array('access administration pages'),
     'file' => 'system.admin.inc',
     'type' => MENU_LOCAL_TASK,
     'weight' => 2,
@@ -234,6 +237,7 @@
     'position' => 'left',
     'weight' => -10,
     'page callback' => 'system_admin_menu_block_page',
+    'access arguments' => array('access administration pages'),
     'file' => 'system.admin.inc',
   );
 
@@ -244,6 +248,7 @@
     'position' => 'right',
     'weight' => -5,
     'page callback' => 'system_settings_overview',
+    'access arguments' => array('access administration pages'),
     'file' => 'system.admin.inc',
   );
   $items['admin/build'] = array(
@@ -252,6 +257,7 @@
     'position' => 'right',
     'weight' => -10,
     'page callback' => 'system_admin_menu_block_page',
+    'access arguments' => array('access administration pages'),
     'file' => 'system.admin.inc',
   );
   $items['admin/settings/admin'] = array(
@@ -282,6 +288,7 @@
   $items['admin/build/themes/settings'] = array(
     'title' => 'Configure',
     'page arguments' => array('system_theme_settings'),
+    'access arguments' => array('administer site configuration'),
     'type' => MENU_LOCAL_TASK,
   );
   // Theme configuration subtabs
@@ -316,15 +323,18 @@
   );
   $items['admin/build/modules/list/confirm'] = array(
     'title' => 'List',
+    'access arguments' => array('administer site configuration'),
     'type' => MENU_CALLBACK,
   );
   $items['admin/build/modules/uninstall'] = array(
     'title' => 'Uninstall',
     'page arguments' => array('system_modules_uninstall'),
+    'access arguments' => array('administer site configuration'),
     'type' => MENU_LOCAL_TASK,
   );
   $items['admin/build/modules/uninstall/confirm'] = array(
     'title' => 'Uninstall',
+    'access arguments' => array('administer site configuration'),
     'type' => MENU_CALLBACK,
   );
 
@@ -346,6 +356,7 @@
     'title' => 'Configure an advanced action',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('system_actions_configure'),
+    'access arguments' => array('administer actions'),
     'type' => MENU_CALLBACK,
   );
   $items['admin/settings/actions/delete/%actions'] = array(
@@ -353,11 +364,13 @@
     'description' => 'Delete an action.',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('system_actions_delete_form', 4),
+    'access arguments' => array('administer actions'),
     'type' => MENU_CALLBACK,
   );
   $items['admin/settings/actions/orphan'] = array(
     'title' => 'Remove orphans',
     'page callback' => 'system_actions_remove_orphans',
+    'access arguments' => array('administer actions'),
     'type' => MENU_CALLBACK,
   );
 
@@ -429,6 +442,7 @@
     'title' => 'Date and time lookup',
     'type' => MENU_CALLBACK,
     'page callback' => 'system_date_time_lookup',
+    'access arguments' => array('administer site configuration'),
     'file' => 'system.admin.inc',
   );
   $items['admin/settings/site-maintenance'] = array(
@@ -485,18 +499,21 @@
   $items['admin/reports/status/run-cron'] = array(
     'title' => 'Run cron',
     'page callback' => 'system_run_cron',
+    'access arguments' => array('administer site configuration'),
     'type' => MENU_CALLBACK,
     'file' => 'system.admin.inc',
   );
   $items['admin/reports/status/php'] = array(
     'title' => 'PHP',
     'page callback' => 'system_php',
+    'access arguments' => array('administer site configuration'),
     'type' => MENU_CALLBACK,
     'file' => 'system.admin.inc',
   );
   $items['admin/reports/status/sql'] = array(
     'title' => 'SQL',
     'page callback' => 'system_sql',
+    'access arguments' => array('administer site configuration'),
     'type' => MENU_CALLBACK,
     'file' => 'system.admin.inc',
   );
@@ -1227,6 +1244,11 @@
     }
     db_query('DELETE FROM {files} WHERE fid = %d', $file->fid);
   }
+  $core = array('cache', 'cache_block', 'cache_filter', 'cache_page', 'cache_form', 'cache_menu');
+  $cache_tables = array_merge(module_invoke_all('flush_caches'), $core);
+  foreach ($cache_tables as $table) {
+    cache_clear_all(NULL, $table);
+  }
 }
 
 /**

Modified: branches/drupal6/modules/taxonomy/taxonomy.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/taxonomy/taxonomy.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/taxonomy/taxonomy.info (original)
+++ branches/drupal6/modules/taxonomy/taxonomy.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/taxonomy/taxonomy.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/taxonomy/taxonomy.module?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/taxonomy/taxonomy.module (original)
+++ branches/drupal6/modules/taxonomy/taxonomy.module Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: taxonomy.module,v 1.414 2008/01/27 17:55:15 goba Exp $
+// $Id: taxonomy.module,v 1.414.2.4 2008/06/25 08:00:57 goba Exp $
 
 /**
  * @file
@@ -49,7 +49,7 @@
   if ($type == 'taxonomy terms' && $node != NULL) {
     $links = array();
     // If previewing, the terms must be converted to objects first.
-    if ($node->build_mode == NODE_BUILD_PREVIEW) {
+    if (isset($node->build_mode) && $node->build_mode == NODE_BUILD_PREVIEW) {
       $node->taxonomy = taxonomy_preview_terms($node);
     }
     if (!empty($node->taxonomy)) {
@@ -128,6 +128,7 @@
     'title' => 'Add vocabulary',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('taxonomy_form_vocabulary'),
+    'access arguments' => array('administer taxonomy'),
     'type' => MENU_LOCAL_TASK,
     'parent' => 'admin/content/taxonomy',
     'file' => 'taxonomy.admin.inc',
@@ -137,6 +138,7 @@
     'title' => 'Edit vocabulary',
     'page callback' => 'taxonomy_admin_vocabulary_edit',
     'page arguments' => array(5),
+    'access arguments' => array('administer taxonomy'),
     'type' => MENU_CALLBACK,
     'file' => 'taxonomy.admin.inc',
   );
@@ -144,6 +146,7 @@
   $items['admin/content/taxonomy/edit/term'] = array(
     'title' => 'Edit term',
     'page callback' => 'taxonomy_admin_term_edit',
+    'access arguments' => array('administer taxonomy'),
     'type' => MENU_CALLBACK,
     'file' => 'taxonomy.admin.inc',
   );
@@ -183,6 +186,7 @@
     'title' => 'Add term',
     'page callback' => 'taxonomy_add_term_page',
     'page arguments' => array(3),
+    'access arguments' => array('administer taxonomy'),
     'type' => MENU_LOCAL_TASK,
     'parent' => 'admin/content/taxonomy/%taxonomy_vocabulary',
     'file' => 'taxonomy.admin.inc',
@@ -904,6 +908,7 @@
     else {
       $result = db_query(db_rewrite_sql("SELECT t.tid, COUNT(n.nid) AS c FROM {term_node} t INNER JOIN {node} n ON t.vid = n.vid WHERE n.status = 1 AND n.type = '%s' GROUP BY t.tid"), $type);
     }
+    $count[$type] = array();
     while ($term = db_fetch_object($result)) {
       $count[$type][$term->tid] = $term->c;
     }
@@ -952,7 +957,7 @@
  *   An array of matching term objects.
  */
 function taxonomy_get_term_by_name($name) {
-  $db_result = db_query(db_rewrite_sql("SELECT t.tid, t.* FROM {term_data} t WHERE LOWER(t.name) LIKE LOWER('%s')", 't', 'tid'), trim($name));
+  $db_result = db_query(db_rewrite_sql("SELECT t.tid, t.* FROM {term_data} t WHERE LOWER(t.name) = LOWER('%s')", 't', 'tid'), trim($name));
   $result = array();
   while ($term = db_fetch_object($db_result)) {
     $result[] = $term;

Modified: branches/drupal6/modules/throttle/throttle.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/throttle/throttle.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/throttle/throttle.info (original)
+++ branches/drupal6/modules/throttle/throttle.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/tracker/tracker.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/tracker/tracker.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/tracker/tracker.info (original)
+++ branches/drupal6/modules/tracker/tracker.info Mon Aug 11 17:16:46 2008
@@ -6,8 +6,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/tracker/tracker.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/tracker/tracker.module?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/tracker/tracker.module (original)
+++ branches/drupal6/modules/tracker/tracker.module Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: tracker.module,v 1.154 2007/12/14 18:08:49 goba Exp $
+// $Id: tracker.module,v 1.154.2.1 2008/04/09 21:11:51 goba Exp $
 
 /**
  * @file
@@ -33,11 +33,11 @@
   $items['tracker/all'] = array(
     'title' => 'All recent posts',
     'type' => MENU_DEFAULT_LOCAL_TASK,
-    'access callback' => 'user_is_logged_in',
   );
-  $items['tracker/%user_current'] = array(
+  $items['tracker/%user_uid_optional'] = array(
     'title' => 'My recent posts',
-    'access callback' => 'user_is_logged_in',
+    'access callback' => '_tracker_myrecent_access',
+    'access arguments' => array(1),
     'page arguments' => array(1),
     'type' => MENU_LOCAL_TASK,
   );
@@ -46,6 +46,8 @@
     'title' => 'Track',
     'page callback' => 'tracker_page',
     'page arguments' => array(1, TRUE),
+    'access callback' => '_tracker_user_access',
+    'access arguments' => array(1),
     'type' => MENU_LOCAL_TASK,
     'file' => 'tracker.pages.inc',
   );
@@ -55,3 +57,19 @@
   );
   return $items;
 }
+
+/**
+ * Access callback for tracker/%user_uid_optional
+ */
+function _tracker_myrecent_access($account) {
+  // This path is only allowed for authenticated users looking at their own posts.
+  return $account->uid && ($GLOBALS['user']->uid == $account->uid) && user_access('access content');
+}
+
+/**
+ * Access callback for user/%user/track
+ */
+function _tracker_user_access($account) {
+  return user_view_access($account) && user_access('access content');
+}
+

Modified: branches/drupal6/modules/translation/translation.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/translation/translation.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/translation/translation.info (original)
+++ branches/drupal6/modules/translation/translation.info Mon Aug 11 17:16:46 2008
@@ -6,8 +6,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/trigger/trigger.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/trigger/trigger.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/trigger/trigger.info (original)
+++ branches/drupal6/modules/trigger/trigger.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/trigger/trigger.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/trigger/trigger.module?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/trigger/trigger.module (original)
+++ branches/drupal6/modules/trigger/trigger.module Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: trigger.module,v 1.13 2008/01/21 20:08:15 goba Exp $
+// $Id: trigger.module,v 1.13.2.1 2008/04/09 21:11:51 goba Exp $
 
 /**
  * @file
@@ -49,6 +49,7 @@
     'title' => 'Content',
     'page callback' => 'trigger_assign',
     'page arguments' => array('node'),
+    'access callback' => 'trigger_access_check',
     'access arguments' => array('node'),
     'type' => MENU_LOCAL_TASK,
     'file' => 'trigger.admin.inc',
@@ -57,6 +58,7 @@
     'title' => 'Users',
     'page callback' => 'trigger_assign',
     'page arguments' => array('user'),
+    'access callback' => 'trigger_access_check',
     'access arguments' => array('user'),
     'type' => MENU_LOCAL_TASK,
     'file' => 'trigger.admin.inc',
@@ -83,6 +85,7 @@
     'title' => 'Cron',
     'page callback' => 'trigger_assign',
     'page arguments' => array('cron'),
+    'access arguments' => array('administer actions'),
     'type' => MENU_LOCAL_TASK,
     'file' => 'trigger.admin.inc',
   );
@@ -112,6 +115,7 @@
     'description' => 'Unassign an action from a trigger.',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('trigger_unassign'),
+    'access arguments' => array('administer actions'),
     'type' => MENU_CALLBACK,
     'file' => 'trigger.admin.inc',
   );

Modified: branches/drupal6/modules/update/update.fetch.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/update/update.fetch.inc?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/update/update.fetch.inc (original)
+++ branches/drupal6/modules/update/update.fetch.inc Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: update.fetch.inc,v 1.7 2008/01/30 10:14:42 goba Exp $
+// $Id: update.fetch.inc,v 1.7.2.1 2008/04/09 18:36:58 goba Exp $
 
 /**
  * @file
@@ -54,11 +54,11 @@
     $frequency = variable_get('update_check_frequency', 1);
     cache_set('update_info', $available, 'cache_update', time() + (60 * 60 * 24 * $frequency));
     variable_set('update_last_check', time());
-    watchdog('update', 'Fetched information about all available new releases and updates.', array(), WATCHDOG_NOTICE, l('view', 'admin/reports/updates'));
+    watchdog('update', 'Fetched information about all available new releases and updates.', array(), WATCHDOG_NOTICE, l(t('view'), 'admin/reports/updates'));
   }
   else {
     module_invoke('system', 'check_http_request');
-    watchdog('update', 'Unable to fetch any information about available new releases and updates.', array(), WATCHDOG_ERROR, l('view', 'admin/reports/updates'));
+    watchdog('update', 'Unable to fetch any information about available new releases and updates.', array(), WATCHDOG_ERROR, l(t('view'), 'admin/reports/updates'));
   }
   return $available;
 }

Modified: branches/drupal6/modules/update/update.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/update/update.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/update/update.info (original)
+++ branches/drupal6/modules/update/update.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 package = Core - optional
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/upload/upload.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/upload/upload.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/upload/upload.info (original)
+++ branches/drupal6/modules/upload/upload.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/user/user.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/user/user.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/user/user.info (original)
+++ branches/drupal6/modules/user/user.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/modules/user/user.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/modules/user/user.module?rev=1911&op=diff
==============================================================================
--- branches/drupal6/modules/user/user.module (original)
+++ branches/drupal6/modules/user/user.module Mon Aug 11 17:16:46 2008
@@ -1,5 +1,5 @@
 <?php
-// $Id: user.module,v 1.892 2008/02/03 19:23:01 goba Exp $
+// $Id: user.module,v 1.892.2.5 2008/07/09 21:48:28 goba Exp $
 
 /**
  * @file
@@ -664,9 +664,9 @@
   );
   $items = array();
   if (variable_get('user_register', 1)) {
-    $items[] = l(t('Create new account'), 'user/register', array('title' => t('Create a new user account.')));
-  }
-  $items[] = l(t('Request new password'), 'user/password', array('title' => t('Request new password via e-mail.')));
+    $items[] = l(t('Create new account'), 'user/register', array('attributes' => array('title' => t('Create a new user account.'))));
+  }
+  $items[] = l(t('Request new password'), 'user/password', array('attributes' => array('title' => t('Request new password via e-mail.'))));
   $form['links'] = array('#value' => theme('item_list', $items));
   return $form;
 }
@@ -867,6 +867,9 @@
     );
 }
 
+/**
+ * Access callback for user account editing.
+ */
 function user_edit_access($account) {
   return (($GLOBALS['user']->uid == $account->uid) || user_access('administer users')) && $account->uid > 0;
 }
@@ -956,6 +959,7 @@
   $items['admin/user/user/create'] = array(
     'title' => 'Add user',
     'page arguments' => array('create'),
+    'access arguments' => array('administer users'),
     'type' => MENU_LOCAL_TASK,
     'file' => 'user.admin.inc',
   );
@@ -988,6 +992,7 @@
   $items['admin/user/roles/edit'] = array(
     'title' => 'Edit role',
     'page arguments' => array('user_admin_role'),
+    'access arguments' => array('administer permissions'),
     'type' => MENU_CALLBACK,
     'file' => 'user.admin.inc',
   );
@@ -1006,18 +1011,21 @@
   $items['admin/user/rules/add'] = array(
     'title' => 'Add rule',
     'page callback' => 'user_admin_access_add',
+    'access arguments' => array('administer permissions'),
     'type' => MENU_LOCAL_TASK,
     'file' => 'user.admin.inc',
   );
   $items['admin/user/rules/check'] = array(
     'title' => 'Check rules',
     'page callback' => 'user_admin_access_check',
+    'access arguments' => array('administer permissions'),
     'type' => MENU_LOCAL_TASK,
     'file' => 'user.admin.inc',
   );
   $items['admin/user/rules/edit'] = array(
     'title' => 'Edit rule',
     'page callback' => 'user_admin_access_edit',
+    'access arguments' => array('administer permissions'),
     'type' => MENU_CALLBACK,
     'file' => 'user.admin.inc',
   );
@@ -1025,6 +1033,7 @@
     'title' => 'Delete rule',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('user_admin_access_delete_confirm'),
+    'access arguments' => array('administer permissions'),
     'type' => MENU_CALLBACK,
     'file' => 'user.admin.inc',
   );
@@ -1037,7 +1046,7 @@
     'file' => 'user.pages.inc',
   );
 
-  $items['user/%user_current'] = array(
+  $items['user/%user_uid_optional'] = array(
     'title' => 'My account',
     'title callback' => 'user_page_title',
     'title arguments' => array(1),
@@ -1092,8 +1101,8 @@
           'title arguments' => array($category['title']),
           'page callback' => 'user_edit',
           'page arguments' => array(1, 3),
-          'access callback' => isset($category['access callback']) ? $category['access callback'] : TRUE,
-          'access arguments' => isset($category['access arguments']) ? $category['access arguments'] : array(),
+          'access callback' => isset($category['access callback']) ? $category['access callback'] : 'user_edit_access',
+          'access arguments' => isset($category['access arguments']) ? $category['access arguments'] : array(1),
           'type' => MENU_LOCAL_TASK,
           'weight' => $category['weight'],
           'load arguments' => array('%map', '%index'),
@@ -1110,8 +1119,8 @@
   drupal_add_css(drupal_get_path('module', 'user') .'/user.css', 'module');
 }
 
-function user_current_load($arg) {
-  return user_load($arg ? $arg : $GLOBALS['user']->uid);
+function user_uid_optional_load($arg) {
+  return user_load(isset($arg) ? $arg : $GLOBALS['user']->uid);
 }
 
 /**
@@ -1156,7 +1165,7 @@
 /**
  * Returns the user id of the currently logged in user.
  */
-function user_current_to_arg($arg) {
+function user_uid_optional_to_arg($arg) {
   // Give back the current user uid when called from eg. tracker, aka.
   // with an empty arg. Also use the current user uid when called from
   // the menu with a % for the current account link.
@@ -1224,7 +1233,7 @@
  *
  * @ingroup forms
  */
-function user_login(&$form_state, $msg = '') {
+function user_login(&$form_state) {
   global $user;
 
   // If we are already logged on, go to the user page instead.
@@ -1233,9 +1242,6 @@
   }
 
   // Display login form:
-  if ($msg) {
-    $form['message'] = array('#value' => '<p>'. check_plain($msg) .'</p>');
-  }
   $form['name'] = array('#type' => 'textfield',
     '#title' => t('Username'),
     '#size' => 60,
@@ -1260,9 +1266,9 @@
 /**
  * Set up a series for validators which check for blocked/denied users,
  * then authenticate against local database, then return an error if
- * authentication fails. Distributed authentication modules are welcome 
- * to use hook_form_alter() to change this series in order to 
- * authenticate against their user database instead of the local users 
+ * authentication fails. Distributed authentication modules are welcome
+ * to use hook_form_alter() to change this series in order to
+ * authenticate against their user database instead of the local users
  * table.
  *
  * We use three validators instead of one since external authentication
@@ -1353,8 +1359,10 @@
   // This is also used to invalidate one-time login links.
   $user->login = time();
   db_query("UPDATE {users} SET login = %d WHERE uid = %d", $user->login, $user->uid);
+
+  // Regenerate the session ID to prevent against session fixation attacks.
+  sess_regenerate();
   user_module_invoke('login', $edit, $user);
-  sess_regenerate();
 }
 
 /**
@@ -1630,7 +1638,7 @@
       case 'register_admin_created_body':
         return t("!username,\n\nA site administrator at !site has created an account for you. You may now log in to !login_uri using the following username and password:\n\nusername: !username\npassword: !password\n\nYou may also log in by clicking on this link or copying and pasting it in your browser:\n\n!login_url\n\nThis is a one-time login, so it can be used only once.\n\nAfter logging in, you will be redirected to !edit_uri so you can change your password.\n\n\n--  !site team", $variables, $langcode);
       case 'register_pending_approval_subject':
-      case 'pending_approval_admin_subject':
+      case 'register_pending_approval_admin_subject':
         return t('Account details for !username at !site (pending admin approval)', $variables, $langcode);
       case 'register_pending_approval_body':
         return t("!username,\n\nThank you for registering at !site. Your application for an account is currently pending approval. Once it has been approved, you will receive another e-mail containing information about how to log in, set your password, and other details.\n\n\n--  !site team", $variables, $langcode);

Modified: branches/drupal6/themes/bluemarine/bluemarine.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/themes/bluemarine/bluemarine.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/themes/bluemarine/bluemarine.info (original)
+++ branches/drupal6/themes/bluemarine/bluemarine.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 core = 6.x
 engine = phptemplate
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/themes/chameleon/chameleon.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/themes/chameleon/chameleon.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/themes/chameleon/chameleon.info (original)
+++ branches/drupal6/themes/chameleon/chameleon.info Mon Aug 11 17:16:46 2008
@@ -12,8 +12,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/themes/chameleon/marvin/marvin.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/themes/chameleon/marvin/marvin.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/themes/chameleon/marvin/marvin.info (original)
+++ branches/drupal6/themes/chameleon/marvin/marvin.info Mon Aug 11 17:16:46 2008
@@ -7,8 +7,8 @@
 core = 6.x
 base theme = chameleon
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/themes/garland/garland.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/themes/garland/garland.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/themes/garland/garland.info (original)
+++ branches/drupal6/themes/garland/garland.info Mon Aug 11 17:16:46 2008
@@ -7,8 +7,8 @@
 stylesheets[all][] = style.css
 stylesheets[print][] = print.css
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/themes/garland/minnelli/minnelli.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/themes/garland/minnelli/minnelli.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/themes/garland/minnelli/minnelli.info (original)
+++ branches/drupal6/themes/garland/minnelli/minnelli.info Mon Aug 11 17:16:46 2008
@@ -6,8 +6,8 @@
 base theme = garland
 stylesheets[all][] = minnelli.css
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 

Modified: branches/drupal6/themes/pushbutton/pushbutton.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/drupal6/themes/pushbutton/pushbutton.info?rev=1911&op=diff
==============================================================================
--- branches/drupal6/themes/pushbutton/pushbutton.info (original)
+++ branches/drupal6/themes/pushbutton/pushbutton.info Mon Aug 11 17:16:46 2008
@@ -5,8 +5,8 @@
 core = 6.x
 engine = phptemplate
 
-; Information added by drupal.org packaging script on 2008-02-13
-version = "6.0"
+; Information added by drupal.org packaging script on 2008-07-09
+version = "6.3"
 project = "drupal"
-datestamp = "1202913006"
+datestamp = "1215640509"
 




More information about the Pkg-drupal-commits mailing list