diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 09662cf8805593c8c1303d4da4f2c875cbcb831b..b4beae31ebf665d23168ee933f4e49bb5c02a2aa 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -1,4 +1,9 @@
 
+Drupal 7.16, 2012-10-17
+-----------------------
+- Fixed security issues (Arbitrary PHP code execution and information
+  disclosure). See SA-CORE-2012-003.
+
 Drupal 7.15, 2012-08-01
 -----------------------
 - Introduced a 'user_password_reset_timeout' variable to allow the 24-hour
diff --git a/README.md b/README.md
index af3279fa7b376ff54655769f38204511454844cd..3d7980a247db143c812273fc6bf9463d7373106c 100644
--- a/README.md
+++ b/README.md
@@ -103,6 +103,10 @@ In this example the web root is /Library/WebServer/Documents and Apache runs as
 
      - Fix so that drush pulls in the correct uri parameter. See http://drupal.org/node/1331106
 
+  *  entity/entity.module, entity/modules/callbacks.inc
+
+     - Add 'uri callback' for file entities. See http://drupal.org/node/1481372#comment-6529650
+
   *  workbench_moderation.module
 
      - Fix broken books in workbench_moderation_node_presave(). See http://drupal.org/node/1505060
diff --git a/includes/bootstrap.inc b/includes/bootstrap.inc
index b99e4b93f99326cbd01546659bef35524d2808a8..a27697baeeb1d6d42bb4926dbcced239ae2288a8 100644
--- a/includes/bootstrap.inc
+++ b/includes/bootstrap.inc
@@ -8,7 +8,7 @@
 /**
  * The current system version.
  */
-define('VERSION', '7.15');
+define('VERSION', '7.16');
 
 /**
  * Core API compatibility.
diff --git a/includes/install.core.inc b/includes/install.core.inc
index ec3a8539b41a450b24b04c9c4c82ccf22db1b934..7bcd026ae01ea092bb2170c9dde1954be5e62a2b 100644
--- a/includes/install.core.inc
+++ b/includes/install.core.inc
@@ -295,12 +295,11 @@ function install_begin_request(&$install_state) {
   else {
     $task = NULL;
 
-    // Since previous versions of Drupal stored database connection information
-    // in the 'db_url' variable, we should never let an installation proceed if
-    // this variable is defined and the settings file was not verified above
-    // (otherwise we risk installing over an existing site whose settings file
-    // has not yet been updated).
-    if (!empty($GLOBALS['db_url'])) {
+    // Do not install over a configured settings.php. Check the 'db_url'
+    // variable in addition to 'databases', since previous versions of Drupal
+    // used that (and we do not want to allow installations on an existing site
+    // whose settings file has not yet been updated).
+    if (!empty($GLOBALS['databases']) || !empty($GLOBALS['db_url'])) {
       throw new Exception(install_already_done_error());
     }
   }
diff --git a/modules/aggregator/aggregator.info b/modules/aggregator/aggregator.info
index 75fe82b9512d7659eefb2e184079ffb90887b731..65e402b3e7be7a79ee03487672437c157f7ca502 100644
--- a/modules/aggregator/aggregator.info
+++ b/modules/aggregator/aggregator.info
@@ -7,8 +7,8 @@ files[] = aggregator.test
 configure = admin/config/services/aggregator/settings
 stylesheets[all][] = aggregator.css
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/aggregator/tests/aggregator_test.info b/modules/aggregator/tests/aggregator_test.info
index 29baa019d4f73d80fd92663a3ff520c2e07d8c93..fe8ccd107e0846ded2d9bdb43198682b5db72e79 100644
--- a/modules/aggregator/tests/aggregator_test.info
+++ b/modules/aggregator/tests/aggregator_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/block/block.info b/modules/block/block.info
index 38699779843bdda30983129b2e134c8ed4e5e3e3..ef2f999273c09c55b27a80ac97110bb13cdbb21f 100644
--- a/modules/block/block.info
+++ b/modules/block/block.info
@@ -6,8 +6,8 @@ core = 7.x
 files[] = block.test
 configure = admin/structure/block
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/block/tests/block_test.info b/modules/block/tests/block_test.info
index 8a34798ceba92db7dcf6f3a5ce1910d1c3b83b42..5429490439bf713fde6781a076201c605e4e9fea 100644
--- a/modules/block/tests/block_test.info
+++ b/modules/block/tests/block_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/block/tests/themes/block_test_theme/block_test_theme.info b/modules/block/tests/themes/block_test_theme/block_test_theme.info
index b7381ae795a54ce7662c6224860f85ce4db707df..bc74f0fba2fd98a938ff2c8e4922c3bd8c93aaba 100644
--- a/modules/block/tests/themes/block_test_theme/block_test_theme.info
+++ b/modules/block/tests/themes/block_test_theme/block_test_theme.info
@@ -13,8 +13,8 @@ regions[footer] = Footer
 regions[highlighted] = Highlighted
 regions[help] = Help
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/blog/blog.info b/modules/blog/blog.info
index 1ff2214fed94ae7b945c6cad30ac0468e71baf97..9dd7d37a87112647ac4f6d9c9f1444e8f465d6c1 100644
--- a/modules/blog/blog.info
+++ b/modules/blog/blog.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 files[] = blog.test
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/book/book.info b/modules/book/book.info
index 166521794afff021c848aa006c3264b3b07cd518..f92a1744e92186c1c85507da0ad718e4892b8e16 100644
--- a/modules/book/book.info
+++ b/modules/book/book.info
@@ -7,8 +7,8 @@ files[] = book.test
 configure = admin/content/book/settings
 stylesheets[all][] = book.css
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/color/color.info b/modules/color/color.info
index 5e49123020238caf5537c9e80ec6734166fd140a..3bf42fe5c37a32ede700f416269ed586e9a542d5 100644
--- a/modules/color/color.info
+++ b/modules/color/color.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 files[] = color.test
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/comment/comment.info b/modules/comment/comment.info
index a6ca0456ab06ede4a813652ba89976bfde5de4a2..89be17cc5b68ad36f85e716fc8773b0603b0615a 100644
--- a/modules/comment/comment.info
+++ b/modules/comment/comment.info
@@ -9,8 +9,8 @@ files[] = comment.test
 configure = admin/content/comment
 stylesheets[all][] = comment.css
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/contact/contact.info b/modules/contact/contact.info
index 609f4dcc4f47c83a334a46585a87c46d749123e4..c4fe6a06c3b5e2477a4b59b2e7d88ba31eda9c4e 100644
--- a/modules/contact/contact.info
+++ b/modules/contact/contact.info
@@ -6,8 +6,8 @@ core = 7.x
 files[] = contact.test
 configure = admin/structure/contact
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/contextual/contextual.info b/modules/contextual/contextual.info
index 2a42207589b0d2d2b388862cd5c056eadad86ec5..69777c6c5ccbf2abc4cca322e1cbeda2ea947a9b 100644
--- a/modules/contextual/contextual.info
+++ b/modules/contextual/contextual.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 files[] = contextual.test
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/dashboard/dashboard.info b/modules/dashboard/dashboard.info
index 4218e2c1b2c0afd865901b8461d41055f590811b..6fc1b34786c7b4fbfa75e4c7508b7bf710651ef0 100644
--- a/modules/dashboard/dashboard.info
+++ b/modules/dashboard/dashboard.info
@@ -7,8 +7,8 @@ files[] = dashboard.test
 dependencies[] = block
 configure = admin/dashboard/customize
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/dblog/dblog.info b/modules/dblog/dblog.info
index 359de0db40906b252fada0ec8ccd7f7cecac699f..18a4ba26857ff5ed535b52c6d64b9dd31b8d26d1 100644
--- a/modules/dblog/dblog.info
+++ b/modules/dblog/dblog.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 files[] = dblog.test
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/field/field.info b/modules/field/field.info
index b950f2e44d23ea6a0763f47fe7f9fbdd0fb8fa9c..6443781c0fa4a22d75a7272ffa17f8e080df666f 100644
--- a/modules/field/field.info
+++ b/modules/field/field.info
@@ -10,8 +10,8 @@ dependencies[] = field_sql_storage
 required = TRUE
 stylesheets[all][] = theme/field.css
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/field/modules/field_sql_storage/field_sql_storage.info b/modules/field/modules/field_sql_storage/field_sql_storage.info
index 125b4a51ea3a23bc9bf0c40de257650ad5d486c9..e00119580bdf819f81274611f1dfed71f8f2a39b 100644
--- a/modules/field/modules/field_sql_storage/field_sql_storage.info
+++ b/modules/field/modules/field_sql_storage/field_sql_storage.info
@@ -7,8 +7,8 @@ dependencies[] = field
 files[] = field_sql_storage.test
 required = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/field/modules/list/list.info b/modules/field/modules/list/list.info
index 43300c261d26ee683963a83533027b3ff26a08e9..bdfe6e4ae531d0fb1cde76c6ea5caa9a3e0c5ee8 100644
--- a/modules/field/modules/list/list.info
+++ b/modules/field/modules/list/list.info
@@ -7,8 +7,8 @@ dependencies[] = field
 dependencies[] = options
 files[] = tests/list.test
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/field/modules/list/tests/list_test.info b/modules/field/modules/list/tests/list_test.info
index 666ab1e7e29b688fbac4111480c5175754913ef9..cb046ed13dfda992ab0b30631b2ba414b72b54bb 100644
--- a/modules/field/modules/list/tests/list_test.info
+++ b/modules/field/modules/list/tests/list_test.info
@@ -5,8 +5,8 @@ package = Testing
 version = VERSION
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/field/modules/number/number.info b/modules/field/modules/number/number.info
index 26137683198c86b5ecf27bbbd43ab812e4e4ce1f..8acefcd3eaa28e4074b84ce0891eb3a5c49511d9 100644
--- a/modules/field/modules/number/number.info
+++ b/modules/field/modules/number/number.info
@@ -6,8 +6,8 @@ core = 7.x
 dependencies[] = field
 files[] = number.test
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/field/modules/options/options.info b/modules/field/modules/options/options.info
index ef5c87b1290176c91fa94a0e0cc54ba7bb705baf..443dee1fa8d0c23f4966952afa054b4f3fa04591 100644
--- a/modules/field/modules/options/options.info
+++ b/modules/field/modules/options/options.info
@@ -6,8 +6,8 @@ core = 7.x
 dependencies[] = field
 files[] = options.test
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/field/modules/text/text.info b/modules/field/modules/text/text.info
index 7c21f9bb2d5d07e7f34f559ac750a3aaad329e55..e784f8f1b52b14c7c5500f869ea0a2d872134835 100644
--- a/modules/field/modules/text/text.info
+++ b/modules/field/modules/text/text.info
@@ -7,8 +7,8 @@ dependencies[] = field
 files[] = text.test
 required = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/field/tests/field_test.info b/modules/field/tests/field_test.info
index 75a84caaaac7d99d9c14f0de56247f9cc2a2bc88..4ad0c992274bcce49a68caa29125e9399b175885 100644
--- a/modules/field/tests/field_test.info
+++ b/modules/field/tests/field_test.info
@@ -6,8 +6,8 @@ files[] = field_test.entity.inc
 version = VERSION
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/field_ui/field_ui.info b/modules/field_ui/field_ui.info
index 8757a5299dbbce6e47daf74b2134c7f47b69f9fa..37fe222739608e3cb7758fa2133194c2b70857be 100644
--- a/modules/field_ui/field_ui.info
+++ b/modules/field_ui/field_ui.info
@@ -6,8 +6,8 @@ core = 7.x
 dependencies[] = field
 files[] = field_ui.test
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/file/file.info b/modules/file/file.info
index 99b08f96dd0e3f46108029cd0b55f3ce600152c3..e6e73ca9ace27678336cc6ae4ac6de2afc871f87 100644
--- a/modules/file/file.info
+++ b/modules/file/file.info
@@ -6,8 +6,8 @@ core = 7.x
 dependencies[] = field
 files[] = tests/file.test
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/file/tests/file_module_test.info b/modules/file/tests/file_module_test.info
index 7c1f6e62dbf76fb49ca51ea9ec338948ff1d2062..393104e2dbdd1b5e44e2b6f903e2743179548943 100644
--- a/modules/file/tests/file_module_test.info
+++ b/modules/file/tests/file_module_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/filter/filter.info b/modules/filter/filter.info
index 70af4048fc8894e56932355ac8734b8e273dca22..bf1ad2ae79549417497ace8f2999953ff2306196 100644
--- a/modules/filter/filter.info
+++ b/modules/filter/filter.info
@@ -7,8 +7,8 @@ files[] = filter.test
 required = TRUE
 configure = admin/config/content/formats
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/forum/forum.info b/modules/forum/forum.info
index 26af81d69a3eba24bad03074a7d85df37f111e88..97cb5021b5d0948a9ea89cb273a8ff07e9f48a55 100644
--- a/modules/forum/forum.info
+++ b/modules/forum/forum.info
@@ -9,8 +9,8 @@ files[] = forum.test
 configure = admin/structure/forum
 stylesheets[all][] = forum.css
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/help/help.info b/modules/help/help.info
index f92f0b9d7784b0b1b270227d4b36aba7fcf6127e..acf9cacb3a4a33c357441a199c5f70379c0ced32 100644
--- a/modules/help/help.info
+++ b/modules/help/help.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 files[] = help.test
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/image/image.info b/modules/image/image.info
index b7b55c46001bbfe54d5c7a79ac38bf4df814be3a..5779943295086f31d1293cf2604e32b5133d8786 100644
--- a/modules/image/image.info
+++ b/modules/image/image.info
@@ -7,8 +7,8 @@ dependencies[] = file
 files[] = image.test
 configure = admin/config/media/image-styles
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/image/tests/image_module_test.info b/modules/image/tests/image_module_test.info
index d9a756bad0f45f43bd9d77a227b5ea2a27c91eca..1c107f7d12b019ead2f39ee5d82fc575d8b03711 100644
--- a/modules/image/tests/image_module_test.info
+++ b/modules/image/tests/image_module_test.info
@@ -6,8 +6,8 @@ core = 7.x
 files[] = image_module_test.module
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/locale/locale.info b/modules/locale/locale.info
index 37d871d67b94cdb7573309310efead14a090d6d0..34db19a62f989441f54468fa2b9c03dc0416f0be 100644
--- a/modules/locale/locale.info
+++ b/modules/locale/locale.info
@@ -6,8 +6,8 @@ core = 7.x
 files[] = locale.test
 configure = admin/config/regional/language
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/locale/tests/locale_test.info b/modules/locale/tests/locale_test.info
index ce010a6ad8f29abdcf2b44082eb93c7ad8b5c865..11a7f48fa5a85e1438a3aefec6610c3fa71cd844 100644
--- a/modules/locale/tests/locale_test.info
+++ b/modules/locale/tests/locale_test.info
@@ -5,8 +5,8 @@ package = Testing
 version = VERSION
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/menu/menu.info b/modules/menu/menu.info
index 0f4e8a4f3b9f2a941ddc4a358ff3335e8eda7733..f2fa31a37e549f51cbd7e4a9db29bb7020e173fb 100644
--- a/modules/menu/menu.info
+++ b/modules/menu/menu.info
@@ -6,8 +6,8 @@ core = 7.x
 files[] = menu.test
 configure = admin/structure/menu
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/node/node.info b/modules/node/node.info
index d53ee84c9fe1d58aa65a851ff9ead6e77daf1623..d684c56851805b6a37a23054058a4eda5f78dab1 100644
--- a/modules/node/node.info
+++ b/modules/node/node.info
@@ -9,8 +9,8 @@ required = TRUE
 configure = admin/structure/types
 stylesheets[all][] = node.css
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/node/tests/node_access_test.info b/modules/node/tests/node_access_test.info
index ade2ccc95f28ba08f2ee7ed450d0696a9ba1782e..3723848117847fcbdb83f419090daeaf6db56364 100644
--- a/modules/node/tests/node_access_test.info
+++ b/modules/node/tests/node_access_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/node/tests/node_test.info b/modules/node/tests/node_test.info
index 69d0f3bd920e4a974207fa866fc20b3c3f042e77..c5bb88f0555c8188ec689bfa8d382349a2bcbbb5 100644
--- a/modules/node/tests/node_test.info
+++ b/modules/node/tests/node_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/node/tests/node_test_exception.info b/modules/node/tests/node_test_exception.info
index 9b4459177d66f503e124c872b9b3ce3d85a1bf3d..d9c8b6c4226a65ef85c3560fb032f9ecf85100d8 100644
--- a/modules/node/tests/node_test_exception.info
+++ b/modules/node/tests/node_test_exception.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/openid/openid.inc b/modules/openid/openid.inc
index 9b793d368a2ec4c48015cfaf973d5caeb0bef04c..3c828154034d9df2018fc889a0e56cae423082d9 100644
--- a/modules/openid/openid.inc
+++ b/modules/openid/openid.inc
@@ -138,8 +138,28 @@ function openid_redirect_form($form, &$form_state, $url, $message) {
  */
 function _openid_xrds_parse($raw_xml) {
   $services = array();
-  try {
-    $xml = @new SimpleXMLElement($raw_xml);
+
+  // For PHP version >= 5.2.11, we can use this function to protect against
+  // malicious doctype declarations and other unexpected entity loading.
+  // However, we will not rely on it, and reject any XML with a DOCTYPE.
+  $disable_entity_loader = function_exists('libxml_disable_entity_loader');
+  if ($disable_entity_loader) {
+    $load_entities = libxml_disable_entity_loader(TRUE);
+  }
+
+  // Load the XML into a DOM document.
+  $dom = new DOMDocument();
+  @$dom->loadXML($raw_xml);
+
+  // Since DOCTYPE declarations from an untrusted source could be malicious, we
+  // stop parsing here and treat the XML as invalid since XRDS documents do not
+  // require, and are not expected to have, a DOCTYPE.
+  if (isset($dom->doctype)) {
+    return array();
+  }
+
+  // Parse the DOM document for the information we need.
+  if ($xml = simplexml_import_dom($dom)) {
     foreach ($xml->children(OPENID_NS_XRD)->XRD as $xrd) {
       foreach ($xrd->children(OPENID_NS_XRD)->Service as $service_element) {
         $service = array(
@@ -165,9 +185,12 @@ function _openid_xrds_parse($raw_xml) {
       }
     }
   }
-  catch (Exception $e) {
-    // Invalid XML.
+
+  // Return the LIBXML options to the previous state before returning.
+  if ($disable_entity_loader) {
+    libxml_disable_entity_loader($load_entities);
   }
+
   return $services;
 }
 
diff --git a/modules/openid/openid.info b/modules/openid/openid.info
index aaddb34619091931a89d8698a9af8ba0e5f653d3..4f65facc494290ac0328c24ccbfcc42d09c6c670 100644
--- a/modules/openid/openid.info
+++ b/modules/openid/openid.info
@@ -5,8 +5,8 @@ package = Core
 core = 7.x
 files[] = openid.test
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/openid/openid.test b/modules/openid/openid.test
index 7e766b9feaaae287587ba13fd4650286d01ac04d..1f03c135dbf145ed69801d67df199c124d8c7fea 100644
--- a/modules/openid/openid.test
+++ b/modules/openid/openid.test
@@ -180,6 +180,15 @@ class OpenIDFunctionalTestCase extends OpenIDWebTestCase {
 
     // Verify user was redirected away from user/login to an accessible page.
     $this->assertResponse(200);
+
+    $this->drupalLogout();
+    // Use a User-supplied Identity that is the URL of an XRDS document.
+    // Tell the test module to add a doctype. This should fail.
+    $identity = url('openid-test/yadis/xrds', array('absolute' => TRUE, 'query' => array('doctype' => 1)));
+    // Test logging in via the login block on the front page.
+    $edit = array('openid_identifier' => $identity);
+    $this->drupalPost('', $edit, t('Log in'));
+    $this->assertRaw(t('Sorry, that is not a valid OpenID. Ensure you have spelled your ID correctly.'), 'XML with DOCTYPE was rejected.');
   }
 
   /**
diff --git a/modules/openid/tests/openid_test.info b/modules/openid/tests/openid_test.info
index d3ece3ddf2ee52e9e8fb0d974c03bd6e1cdecbeb..5fd142eec149a4f88ad7b00a6bd230047811b70b 100644
--- a/modules/openid/tests/openid_test.info
+++ b/modules/openid/tests/openid_test.info
@@ -6,8 +6,8 @@ core = 7.x
 dependencies[] = openid
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/openid/tests/openid_test.module b/modules/openid/tests/openid_test.module
index 1b0de4ec5de14079e075b3457e0fe9e0a2bb29eb..bcf9f425d6ec6dfd35985c4c0eb3be32728ff4ff 100644
--- a/modules/openid/tests/openid_test.module
+++ b/modules/openid/tests/openid_test.module
@@ -109,7 +109,11 @@ function openid_test_yadis_xrds() {
       }
     }
     drupal_add_http_header('Content-Type', 'application/xrds+xml');
-    print '<?xml version="1.0" encoding="UTF-8"?>
+    print '<?xml version="1.0" encoding="UTF-8"?>';
+    if (!empty($_GET['doctype'])) {
+      print "\n<!DOCTYPE dct [ <!ELEMENT blue (#PCDATA)> ]>\n";
+    }
+    print '
       <xrds:XRDS xmlns:xrds="xri://$xrds" xmlns="xri://$xrd*($v*2.0)" xmlns:openid="http://openid.net/xmlns/1.0">
         <XRD>
           <Status cid="' . check_plain(variable_get('openid_test_canonical_id_status', 'verified')) . '"/>
diff --git a/modules/overlay/overlay.info b/modules/overlay/overlay.info
index 1331fc6052f19c4ca3e1008466ab10fe3f634a8d..7f5669b18a773443554976945c76ebf18024d5a8 100644
--- a/modules/overlay/overlay.info
+++ b/modules/overlay/overlay.info
@@ -4,8 +4,8 @@ package = Core
 version = VERSION
 core = 7.x
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/path/path.info b/modules/path/path.info
index 8e2cb8b908d4eb8f1d5a3a60e25fb99a0347c440..64c037442ed30d39892c2db6b9087f5d9d918322 100644
--- a/modules/path/path.info
+++ b/modules/path/path.info
@@ -6,8 +6,8 @@ core = 7.x
 files[] = path.test
 configure = admin/config/search/path
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/php/php.info b/modules/php/php.info
index 241c8ee23840434f7f37195c54078d4c5844dbfc..ce6cde508320d397d6f7c71323a4d366477d2955 100644
--- a/modules/php/php.info
+++ b/modules/php/php.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 files[] = php.test
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/poll/poll.info b/modules/poll/poll.info
index 3b4aea98aa4f6819dc35cc329a9e23ed096b5077..908327fa93baa7143fa0796e1541736d18940587 100644
--- a/modules/poll/poll.info
+++ b/modules/poll/poll.info
@@ -6,8 +6,8 @@ core = 7.x
 files[] = poll.test
 stylesheets[all][] = poll.css
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/profile/profile.info b/modules/profile/profile.info
index e90986c33dd8a2c15e4a817d8ff6a25fbd797580..552eac6ec0e4f6405f7c6bb405fc9eae65a1768a 100644
--- a/modules/profile/profile.info
+++ b/modules/profile/profile.info
@@ -11,8 +11,8 @@ configure = admin/config/people/profile
 ; See user_system_info_alter().
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/rdf/rdf.info b/modules/rdf/rdf.info
index f04ab1d10e5189e1104b1400aaf81e272244cfa3..81e2a176b2516e57231a6c494df7ef820ecb8d50 100644
--- a/modules/rdf/rdf.info
+++ b/modules/rdf/rdf.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 files[] = rdf.test
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/rdf/tests/rdf_test.info b/modules/rdf/tests/rdf_test.info
index 6b18b3532959b62888014071b844231a53eab49f..dbe56097a6ea347feaa7e461301da22ffa1f2543 100644
--- a/modules/rdf/tests/rdf_test.info
+++ b/modules/rdf/tests/rdf_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/search/search.info b/modules/search/search.info
index a859f92953eedec9c4744bfe69d5f2bf6bb1cc89..e8cd028dcdc3c4d1f070d3a3a7a7d905f31eb099 100644
--- a/modules/search/search.info
+++ b/modules/search/search.info
@@ -8,8 +8,8 @@ files[] = search.test
 configure = admin/config/search/settings
 stylesheets[all][] = search.css
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/search/tests/search_embedded_form.info b/modules/search/tests/search_embedded_form.info
index 6ec3759bfbcc88119e37fb09a98fdb5923b01129..489d941a882d1a2ff07cb9e8c23a4d668da93535 100644
--- a/modules/search/tests/search_embedded_form.info
+++ b/modules/search/tests/search_embedded_form.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/search/tests/search_extra_type.info b/modules/search/tests/search_extra_type.info
index d9e3c89932c4ec3ea57bd2a0689f9f864e27a614..60b415680569e7a417b4dae9e1ff7775b453bc43 100644
--- a/modules/search/tests/search_extra_type.info
+++ b/modules/search/tests/search_extra_type.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/shortcut/shortcut.info b/modules/shortcut/shortcut.info
index 36820cd5305b4a2a317d6f1c70291f6193216534..15526702decc341d3ec1f441faf0ff6b25418835 100644
--- a/modules/shortcut/shortcut.info
+++ b/modules/shortcut/shortcut.info
@@ -6,8 +6,8 @@ core = 7.x
 files[] = shortcut.test
 configure = admin/config/user-interface/shortcut
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/simpletest.info b/modules/simpletest/simpletest.info
index 682808719fafb5271b0fede95d8f79ff1a7ffff7..587715c2cb0ba71baca5590c916d5c48d5d9acd4 100644
--- a/modules/simpletest/simpletest.info
+++ b/modules/simpletest/simpletest.info
@@ -54,8 +54,8 @@ files[] = tests/upgrade/upgrade.upload.test
 files[] = tests/upgrade/update.user.test
 files[] = tests/upgrade/upgrade.user.test
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/actions_loop_test.info b/modules/simpletest/tests/actions_loop_test.info
index 05d94ff386a62835097afbb77e5529449287e6e0..4606cb207577972e410b2fdae93ed3ada16b0b02 100644
--- a/modules/simpletest/tests/actions_loop_test.info
+++ b/modules/simpletest/tests/actions_loop_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/ajax_forms_test.info b/modules/simpletest/tests/ajax_forms_test.info
index f7daa105b4d440a17eb3e69ba66dce5c4eb44b15..8614055f68ad16df9385c7111d269d4f60d8b350 100644
--- a/modules/simpletest/tests/ajax_forms_test.info
+++ b/modules/simpletest/tests/ajax_forms_test.info
@@ -5,8 +5,8 @@ package = Testing
 version = VERSION
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/ajax_test.info b/modules/simpletest/tests/ajax_test.info
index a6f17e5fe076a0195746da34f86c8c57f1ba6dc4..275e608ddafb450402c41e251a249f6214f58e19 100644
--- a/modules/simpletest/tests/ajax_test.info
+++ b/modules/simpletest/tests/ajax_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/batch_test.info b/modules/simpletest/tests/batch_test.info
index 681fc263f48ddeebb7f067e2b99791f880f54b2a..7f9309775e6c657f76f14eb06ff7a493a8ea6a54 100644
--- a/modules/simpletest/tests/batch_test.info
+++ b/modules/simpletest/tests/batch_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/common_test.info b/modules/simpletest/tests/common_test.info
index 0b4cc488145f9dedbdf21b2cdf88ae3e576f439f..f3d6f50d9350e7ca29345a02461ef38bd87e1082 100644
--- a/modules/simpletest/tests/common_test.info
+++ b/modules/simpletest/tests/common_test.info
@@ -7,8 +7,8 @@ stylesheets[all][] = common_test.css
 stylesheets[print][] = common_test.print.css
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/common_test_cron_helper.info b/modules/simpletest/tests/common_test_cron_helper.info
index 1495c21593b391c077dabe407757939f38d51819..408aae051dd8db27f790af6e0e15931dbb27aefa 100644
--- a/modules/simpletest/tests/common_test_cron_helper.info
+++ b/modules/simpletest/tests/common_test_cron_helper.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/database_test.info b/modules/simpletest/tests/database_test.info
index 33cfe605bc107a66f843aeeee99ccec3a5cdc77e..2b7a7880efd4a2269adbbf94b00469a8465acccf 100644
--- a/modules/simpletest/tests/database_test.info
+++ b/modules/simpletest/tests/database_test.info
@@ -5,8 +5,8 @@ package = Testing
 version = VERSION
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info b/modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info
index 24b7bed8d1dc58ac49a9a7b043c4a8f8348e9a4e..0e5344c656e029ec313b7cd78803e5d90374c33a 100644
--- a/modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info
+++ b/modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info b/modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info
index 5ebfd25ea4a13748c4d75a76baefe4b7559420a5..f7b50a35936650d30d4f980e5b9dbd6cdd71e040 100644
--- a/modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info
+++ b/modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/entity_cache_test.info b/modules/simpletest/tests/entity_cache_test.info
index a70afd5b024bb189c9609cad754561d211a000c9..6842cb1a7e8dc74365c32898f21e6fd826de8a34 100644
--- a/modules/simpletest/tests/entity_cache_test.info
+++ b/modules/simpletest/tests/entity_cache_test.info
@@ -6,8 +6,8 @@ core = 7.x
 dependencies[] = entity_cache_test_dependency
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/entity_cache_test_dependency.info b/modules/simpletest/tests/entity_cache_test_dependency.info
index 157387a70638e4575f34b66cdc62dfaaa4fe4ca8..21b7233cbfc3b8ad812d01bf10c8f3932bf6b0db 100644
--- a/modules/simpletest/tests/entity_cache_test_dependency.info
+++ b/modules/simpletest/tests/entity_cache_test_dependency.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/entity_crud_hook_test.info b/modules/simpletest/tests/entity_crud_hook_test.info
index 22b784e2be997caa0f9c267c98a2226b27bdc1ae..e79a8f03d83cf16d26eeb117eb7a5ffc806c90db 100644
--- a/modules/simpletest/tests/entity_crud_hook_test.info
+++ b/modules/simpletest/tests/entity_crud_hook_test.info
@@ -5,8 +5,8 @@ package = Testing
 version = VERSION
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/entity_query_access_test.info b/modules/simpletest/tests/entity_query_access_test.info
index 45b702bd4ba3682825a98aa4933cb158d0a22744..8914b4366a48d0e8f084eef3600fa1f477917755 100644
--- a/modules/simpletest/tests/entity_query_access_test.info
+++ b/modules/simpletest/tests/entity_query_access_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/error_test.info b/modules/simpletest/tests/error_test.info
index dcccf78d08e67851625af84f249b1b7468fcfbe4..2c36304458f4e8379abed3fa89ae28f2e768473c 100644
--- a/modules/simpletest/tests/error_test.info
+++ b/modules/simpletest/tests/error_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/file_test.info b/modules/simpletest/tests/file_test.info
index d95d91985611ee9be83fa2fd189c74c82b2abf28..699b9d8f965d585f2f3922d7227f0f57bbd379d8 100644
--- a/modules/simpletest/tests/file_test.info
+++ b/modules/simpletest/tests/file_test.info
@@ -6,8 +6,8 @@ core = 7.x
 files[] = file_test.module
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/filter_test.info b/modules/simpletest/tests/filter_test.info
index b00109e112eecd67dcdf1f7dbfd27d4ef7c77817..758ca57124e0405641d55d57036e06a668b94157 100644
--- a/modules/simpletest/tests/filter_test.info
+++ b/modules/simpletest/tests/filter_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/form_test.info b/modules/simpletest/tests/form_test.info
index 691b663cc551510b2d70382c96ebdb475066ebac..f07ad5bdb9453a4b5cc9a6ab6804ae9519a25675 100644
--- a/modules/simpletest/tests/form_test.info
+++ b/modules/simpletest/tests/form_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/image_test.info b/modules/simpletest/tests/image_test.info
index 9082d46c9a5a68ccb44daec5f409e8e045e6d7e3..dcd97f6ac1cd1c17b4770a56856cfff1b02125d8 100644
--- a/modules/simpletest/tests/image_test.info
+++ b/modules/simpletest/tests/image_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/menu_test.info b/modules/simpletest/tests/menu_test.info
index 04515d32262483d3507c227200689b1745f5ed68..1c01522194746cc6603f0bbc3f106b21d829959b 100644
--- a/modules/simpletest/tests/menu_test.info
+++ b/modules/simpletest/tests/menu_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/module_test.info b/modules/simpletest/tests/module_test.info
index d3575f19188cc3b3523b6f7c7a2a0bfea8dd9c9c..8a3c8a622b58eaed6ca437702d0990f5d8965c3b 100644
--- a/modules/simpletest/tests/module_test.info
+++ b/modules/simpletest/tests/module_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/path_test.info b/modules/simpletest/tests/path_test.info
index 7a265dd90aaba75020acb6b1c6243ad0df844ff1..e896f3676cfefd1ad3c07d875f29d13205cc9a76 100644
--- a/modules/simpletest/tests/path_test.info
+++ b/modules/simpletest/tests/path_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/requirements1_test.info b/modules/simpletest/tests/requirements1_test.info
index 16cb274beddb78167c5e79ab3f9d4bcf77776260..f061b451ce2631476ea67b42126e35ad6ccc64cf 100644
--- a/modules/simpletest/tests/requirements1_test.info
+++ b/modules/simpletest/tests/requirements1_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/requirements2_test.info b/modules/simpletest/tests/requirements2_test.info
index d2beee85ccfdf35856c607ef2bc4f75be4058b10..1137617c2e6c5dab2134910262032ea9027f54f4 100644
--- a/modules/simpletest/tests/requirements2_test.info
+++ b/modules/simpletest/tests/requirements2_test.info
@@ -7,8 +7,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/session_test.info b/modules/simpletest/tests/session_test.info
index f32fd4bec17d96bb8d9c0fa3c79e302b402c8b7c..bf78757afc26142a555f5401f7bc5d2e3b53eb6d 100644
--- a/modules/simpletest/tests/session_test.info
+++ b/modules/simpletest/tests/session_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/system_dependencies_test.info b/modules/simpletest/tests/system_dependencies_test.info
index 177c729e6a24342f7930900c9bcbda456e5ed687..0659255a642e0489129f26a41d33d1b34da7e1e4 100644
--- a/modules/simpletest/tests/system_dependencies_test.info
+++ b/modules/simpletest/tests/system_dependencies_test.info
@@ -6,8 +6,8 @@ core = 7.x
 hidden = TRUE
 dependencies[] = _missing_dependency
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/system_incompatible_core_version_dependencies_test.info b/modules/simpletest/tests/system_incompatible_core_version_dependencies_test.info
index 7f80147e74f742282d7adf2406bf89b890ea94c3..bc7017a24d26945af35c1eb6877860f6fef2ad4a 100644
--- a/modules/simpletest/tests/system_incompatible_core_version_dependencies_test.info
+++ b/modules/simpletest/tests/system_incompatible_core_version_dependencies_test.info
@@ -6,8 +6,8 @@ core = 7.x
 hidden = TRUE
 dependencies[] = system_incompatible_core_version_test
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/system_incompatible_core_version_test.info b/modules/simpletest/tests/system_incompatible_core_version_test.info
index 8b549b1a36eb3f49b343a50f5d88a74e68c5012e..55d75842642c37c86a162a66a519308eb5a66af5 100644
--- a/modules/simpletest/tests/system_incompatible_core_version_test.info
+++ b/modules/simpletest/tests/system_incompatible_core_version_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 5.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/system_incompatible_module_version_dependencies_test.info b/modules/simpletest/tests/system_incompatible_module_version_dependencies_test.info
index f493692699edc0ff98e981c440109d5a75f9d8e7..a02e41b071e71c8b415386dd086c4a990163c64e 100644
--- a/modules/simpletest/tests/system_incompatible_module_version_dependencies_test.info
+++ b/modules/simpletest/tests/system_incompatible_module_version_dependencies_test.info
@@ -7,8 +7,8 @@ hidden = TRUE
 ; system_incompatible_module_version_test declares version 1.0
 dependencies[] = system_incompatible_module_version_test (>2.0)
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/system_incompatible_module_version_test.info b/modules/simpletest/tests/system_incompatible_module_version_test.info
index f36815cb64baa62cb5df40ec2e39709572ceb752..660b2c42ce6d67bddb8172a709bd55cdb590edcb 100644
--- a/modules/simpletest/tests/system_incompatible_module_version_test.info
+++ b/modules/simpletest/tests/system_incompatible_module_version_test.info
@@ -5,8 +5,8 @@ version = 1.0
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/system_test.info b/modules/simpletest/tests/system_test.info
index 664f6a6ccb474b28c2cb4f5c7cd13d911dfaf3bd..037c7441e709df8624484006ba0e99986114b184 100644
--- a/modules/simpletest/tests/system_test.info
+++ b/modules/simpletest/tests/system_test.info
@@ -6,8 +6,8 @@ core = 7.x
 files[] = system_test.module
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/taxonomy_test.info b/modules/simpletest/tests/taxonomy_test.info
index 1d63608532f9a5b1cef58bdedeafa53105b405f2..aab15a9c07f1fa8126a0e334c936848465e7fb31 100644
--- a/modules/simpletest/tests/taxonomy_test.info
+++ b/modules/simpletest/tests/taxonomy_test.info
@@ -6,8 +6,8 @@ core = 7.x
 hidden = TRUE
 dependencies[] = taxonomy
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/theme_test.info b/modules/simpletest/tests/theme_test.info
index 341e921d154572e2710585c63cbccb2fbbe8c212..776cce1a9ef2fba4f9427f77e0793fa599f1add6 100644
--- a/modules/simpletest/tests/theme_test.info
+++ b/modules/simpletest/tests/theme_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/themes/test_basetheme/test_basetheme.info b/modules/simpletest/tests/themes/test_basetheme/test_basetheme.info
index 8ebbe2c9010d0c154cdb6930ac8d97df3369fce0..b2eeeaf9ab827a7887af788d564e7465bda9d428 100644
--- a/modules/simpletest/tests/themes/test_basetheme/test_basetheme.info
+++ b/modules/simpletest/tests/themes/test_basetheme/test_basetheme.info
@@ -6,8 +6,8 @@ hidden = TRUE
 settings[basetheme_only] = base theme value
 settings[subtheme_override] = base theme value
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/themes/test_subtheme/test_subtheme.info b/modules/simpletest/tests/themes/test_subtheme/test_subtheme.info
index 9e65f1f3da77c5321dcd55fc3d9ee0c2eea01b77..eb81c38149aceb4c4a6c896d4c379735888dd6af 100644
--- a/modules/simpletest/tests/themes/test_subtheme/test_subtheme.info
+++ b/modules/simpletest/tests/themes/test_subtheme/test_subtheme.info
@@ -6,8 +6,8 @@ hidden = TRUE
 
 settings[subtheme_override] = subtheme value
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/themes/test_theme/test_theme.info b/modules/simpletest/tests/themes/test_theme/test_theme.info
index 69711913b496e47ed2767eb7e7414c62df9d54d4..6a23f4944b47c497114fe14a0370bfee82367569 100644
--- a/modules/simpletest/tests/themes/test_theme/test_theme.info
+++ b/modules/simpletest/tests/themes/test_theme/test_theme.info
@@ -17,8 +17,8 @@ stylesheets[all][] = system.base.css
 
 settings[theme_test_setting] = default value
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/update_script_test.info b/modules/simpletest/tests/update_script_test.info
index 85021b4646faae633e6a224bd17c1b3973fb33aa..5d16cd63c062766a667d06ed78a1001f3933e0ce 100644
--- a/modules/simpletest/tests/update_script_test.info
+++ b/modules/simpletest/tests/update_script_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/update_test_1.info b/modules/simpletest/tests/update_test_1.info
index 879aaddd23a1da890c6506f559ecedbfe2bcdff7..8f0ea2479743e1ac88238ae1004549cca12f9369 100644
--- a/modules/simpletest/tests/update_test_1.info
+++ b/modules/simpletest/tests/update_test_1.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/update_test_2.info b/modules/simpletest/tests/update_test_2.info
index 879aaddd23a1da890c6506f559ecedbfe2bcdff7..8f0ea2479743e1ac88238ae1004549cca12f9369 100644
--- a/modules/simpletest/tests/update_test_2.info
+++ b/modules/simpletest/tests/update_test_2.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/update_test_3.info b/modules/simpletest/tests/update_test_3.info
index 879aaddd23a1da890c6506f559ecedbfe2bcdff7..8f0ea2479743e1ac88238ae1004549cca12f9369 100644
--- a/modules/simpletest/tests/update_test_3.info
+++ b/modules/simpletest/tests/update_test_3.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/url_alter_test.info b/modules/simpletest/tests/url_alter_test.info
index 00e73ab7ae6b92308dedc974d67561b379283313..741d1625cab260a84995ad075a4730acb9eb130d 100644
--- a/modules/simpletest/tests/url_alter_test.info
+++ b/modules/simpletest/tests/url_alter_test.info
@@ -5,8 +5,8 @@ package = Testing
 version = VERSION
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/simpletest/tests/xmlrpc_test.info b/modules/simpletest/tests/xmlrpc_test.info
index 36cdc17a8ed9e7cf5262ee12a03585a157b92912..45abde00f46e3a734d9813eedb4f904e0172406a 100644
--- a/modules/simpletest/tests/xmlrpc_test.info
+++ b/modules/simpletest/tests/xmlrpc_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/statistics/statistics.info b/modules/statistics/statistics.info
index 42af6abd58e3ec280418def441c72bcc17e4df71..bd7b8458aefb98c4f013d87e992d705df5ed420c 100644
--- a/modules/statistics/statistics.info
+++ b/modules/statistics/statistics.info
@@ -6,8 +6,8 @@ core = 7.x
 files[] = statistics.test
 configure = admin/config/system/statistics
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/syslog/syslog.info b/modules/syslog/syslog.info
index 783b2047cd1bcd632c10b3691eabbda6cf46fbe6..dbdd1e16036fac29412dfee30fe3bdc0aa189553 100644
--- a/modules/syslog/syslog.info
+++ b/modules/syslog/syslog.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 files[] = syslog.test
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/system/system.info b/modules/system/system.info
index da3fc753da8b60c3c72999a49550ab13d8026657..e1d603846c811d131363aa9d1660622eebd4c74d 100644
--- a/modules/system/system.info
+++ b/modules/system/system.info
@@ -12,8 +12,8 @@ files[] = system.test
 required = TRUE
 configure = admin/config/system
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/taxonomy/taxonomy.info b/modules/taxonomy/taxonomy.info
index 17b4677034de3a1b45ea8d19a479613fb3402ac3..a6ecfe202bed544ec0add7f8d2687a49cceaca5c 100644
--- a/modules/taxonomy/taxonomy.info
+++ b/modules/taxonomy/taxonomy.info
@@ -8,8 +8,8 @@ files[] = taxonomy.module
 files[] = taxonomy.test
 configure = admin/structure/taxonomy
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/toolbar/toolbar.info b/modules/toolbar/toolbar.info
index d086d8661a2065cb5d3f4073c5a2ca5a979f30af..2f811f88c81b1699698174cc5fb3a881073c29c8 100644
--- a/modules/toolbar/toolbar.info
+++ b/modules/toolbar/toolbar.info
@@ -4,8 +4,8 @@ core = 7.x
 package = Core
 version = VERSION
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/tracker/tracker.info b/modules/tracker/tracker.info
index f661a0cde380a2c01eb00264fdbe2cbaa7733f33..117e4428640f294a2d399e8dc344726a1084f719 100644
--- a/modules/tracker/tracker.info
+++ b/modules/tracker/tracker.info
@@ -6,8 +6,8 @@ version = VERSION
 core = 7.x
 files[] = tracker.test
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/translation/tests/translation_test.info b/modules/translation/tests/translation_test.info
index 39b91c1eb2f8080b58231b57bc2de35d391fce6f..60787d0ae0c4e92d00fe42bc1b9a7b14f154e0ce 100644
--- a/modules/translation/tests/translation_test.info
+++ b/modules/translation/tests/translation_test.info
@@ -5,8 +5,8 @@ package = Testing
 version = VERSION
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/translation/translation.info b/modules/translation/translation.info
index dbb0740c604ecb23f7d54cbb3f05e02ecf716901..83532f55af75cbdeb5cfb80dd4ff4e26aa25d772 100644
--- a/modules/translation/translation.info
+++ b/modules/translation/translation.info
@@ -6,8 +6,8 @@ version = VERSION
 core = 7.x
 files[] = translation.test
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/trigger/tests/trigger_test.info b/modules/trigger/tests/trigger_test.info
index 3f9dd05d7523562d9540119370078e6aec2a6aa1..56df2bc9878ebf1b57da237987fba7655152d60e 100644
--- a/modules/trigger/tests/trigger_test.info
+++ b/modules/trigger/tests/trigger_test.info
@@ -4,8 +4,8 @@ package = Testing
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/trigger/trigger.info b/modules/trigger/trigger.info
index c6e7ee5fef5da6d07c27376601a197285c89a996..ffecce7d7df5fa9bcdfcd753ea8e4b05fe0b5033 100644
--- a/modules/trigger/trigger.info
+++ b/modules/trigger/trigger.info
@@ -6,8 +6,8 @@ core = 7.x
 files[] = trigger.test
 configure = admin/structure/trigger
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/update/tests/aaa_update_test.info b/modules/update/tests/aaa_update_test.info
index 9d5f624e76e084583b639a4c57392beaa4636827..dd2c362e7c7f0403ebe1853dac79f26977d2ae68 100644
--- a/modules/update/tests/aaa_update_test.info
+++ b/modules/update/tests/aaa_update_test.info
@@ -4,8 +4,8 @@ package = Testing
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/update/tests/bbb_update_test.info b/modules/update/tests/bbb_update_test.info
index bec9aae163bc1d8c65ab0cebb9acf43c23ef2832..be2d9dd5fc328899e1c9ded568bfe9b896e64345 100644
--- a/modules/update/tests/bbb_update_test.info
+++ b/modules/update/tests/bbb_update_test.info
@@ -4,8 +4,8 @@ package = Testing
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/update/tests/ccc_update_test.info b/modules/update/tests/ccc_update_test.info
index ad559a3076d03ecf564fed495323f101853ea60a..5e4ffd789867ef81ed568f56750a26b6dcdedef4 100644
--- a/modules/update/tests/ccc_update_test.info
+++ b/modules/update/tests/ccc_update_test.info
@@ -4,8 +4,8 @@ package = Testing
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/update/tests/themes/update_test_basetheme/update_test_basetheme.info b/modules/update/tests/themes/update_test_basetheme/update_test_basetheme.info
index 81022b26cac53cb8575dd694b77b72a9f1ba58c4..c12f03fe75aadafbcd4dc5c95c21f62686dd26d6 100644
--- a/modules/update/tests/themes/update_test_basetheme/update_test_basetheme.info
+++ b/modules/update/tests/themes/update_test_basetheme/update_test_basetheme.info
@@ -3,8 +3,8 @@ description = Test theme which acts as a base theme for other test subthemes.
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/update/tests/themes/update_test_subtheme/update_test_subtheme.info b/modules/update/tests/themes/update_test_subtheme/update_test_subtheme.info
index f9663e429b3e436813b6bb265e3c8db5db3f897f..097a88a7bbe31334fdc4ad1501f850e040fc16c2 100644
--- a/modules/update/tests/themes/update_test_subtheme/update_test_subtheme.info
+++ b/modules/update/tests/themes/update_test_subtheme/update_test_subtheme.info
@@ -4,8 +4,8 @@ core = 7.x
 base theme = update_test_basetheme
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/update/tests/update_test.info b/modules/update/tests/update_test.info
index ca1f9be4267bea78810fb73c0a82dad3ef4c9791..9dac643f321fc138602cd423a1aada51c30f02d7 100644
--- a/modules/update/tests/update_test.info
+++ b/modules/update/tests/update_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/update/update.info b/modules/update/update.info
index 2068f46cca8f479ff2f02c8fef1928adb64d215a..cd9ec8c06ff7f107250d211d913429cf974a4fac 100644
--- a/modules/update/update.info
+++ b/modules/update/update.info
@@ -6,8 +6,8 @@ core = 7.x
 files[] = update.test
 configure = admin/reports/updates/settings
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/user/tests/user_form_test.info b/modules/user/tests/user_form_test.info
index 5db169310cebdeeca911686bd1afb06a185a3893..577cbb10677e86e2f7cbf836feb2c8f203a4da37 100644
--- a/modules/user/tests/user_form_test.info
+++ b/modules/user/tests/user_form_test.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/modules/user/user.info b/modules/user/user.info
index f17ef35e8f8b39904dc33d5b28e6c97a4f151331..e39c54b75931a65cce515efaba3af2c285f07bfb 100644
--- a/modules/user/user.info
+++ b/modules/user/user.info
@@ -9,8 +9,8 @@ required = TRUE
 configure = admin/config/people
 stylesheets[all][] = user.css
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/profiles/minimal/minimal.info b/profiles/minimal/minimal.info
index 5a9d4c3224f244dceac9111a5704921c931cee6b..7981a92f323a3edeaae72d4103f0857efdcf1f60 100644
--- a/profiles/minimal/minimal.info
+++ b/profiles/minimal/minimal.info
@@ -5,8 +5,8 @@ core = 7.x
 dependencies[] = block
 dependencies[] = dblog
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/profiles/standard/standard.info b/profiles/standard/standard.info
index 5e36db4ed350dd6decbc0e5fe55ce59610e07f84..36ae60e8e58bbebc2182db9809c6cb4e09de8748 100644
--- a/profiles/standard/standard.info
+++ b/profiles/standard/standard.info
@@ -24,8 +24,8 @@ dependencies[] = field_ui
 dependencies[] = file
 dependencies[] = rdf
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info b/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info
index 94a9186b693ea39bd73502899a6ff35a1b9c2e24..99563e9df586fdd21765602b6ac5b5cae3b75b24 100644
--- a/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info
+++ b/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info
@@ -6,8 +6,8 @@ core = 7.x
 hidden = TRUE
 files[] = drupal_system_listing_compatible_test.test
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/profiles/testing/modules/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info b/profiles/testing/modules/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info
index 28ff2b847267cd957b24ed00182cb7ee898489ad..347fa3f254c4509cb40f297fcbae4468dec83346 100644
--- a/profiles/testing/modules/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info
+++ b/profiles/testing/modules/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info
@@ -8,8 +8,8 @@ version = VERSION
 core = 6.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/profiles/testing/testing.info b/profiles/testing/testing.info
index 4791a0d79a23c3835c358b23cb268f87ceacc785..3bf881fc87b71cdbad006e212b653a14836c9f2f 100644
--- a/profiles/testing/testing.info
+++ b/profiles/testing/testing.info
@@ -4,8 +4,8 @@ version = VERSION
 core = 7.x
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/profiles/unl_profile/unl_profile.install b/profiles/unl_profile/unl_profile.install
index 4d6e0e3220c08207dd7caf49dd5260d95f06d903..a58ecdab32629aeeb0df87a79a36be3b322276d3 100644
--- a/profiles/unl_profile/unl_profile.install
+++ b/profiles/unl_profile/unl_profile.install
@@ -352,6 +352,9 @@ EOF;
  * Load the default site's config file and return the db_prefix value from it.
  */
 function unl_profile_get_default_site_db_settings() {
+  if (file_exists(DRUPAL_ROOT . '/sites/all/settings.php')) {
+    require DRUPAL_ROOT . '/sites/all/settings.php';
+  }
   $default_site_settings_file = DRUPAL_ROOT . '/sites/default/settings.php';
   require $default_site_settings_file;
 
diff --git a/sites/all/modules/ctools/API.txt b/sites/all/modules/ctools/API.txt
index bb9748e68e4c5b4b3c4462b40e38492e841ace83..2df7e22ce830b903bb72ebba86413af28e8b998e 100644
--- a/sites/all/modules/ctools/API.txt
+++ b/sites/all/modules/ctools/API.txt
@@ -3,6 +3,10 @@ Current API Version: 2.0.5
 Please note that the API version is an internal number and does not match release numbers. It is entirely possible that releases will not increase the API version number, and increasing this number too often would burden contrib module maintainers who need to keep up with API changes.
 
 This file contains a log of changes to the API.
+API Version 2.0.7
+  All ctools object cache database functions can now accept session_id as an optional
+  argument to facilitate using non-session id keys.
+
 API Version 2.0.6
   Introduce a hook to alter the implementors of a certain api via hook_[ctools_api_hook]_alter.
 
diff --git a/sites/all/modules/ctools/bulk_export/bulk_export.info b/sites/all/modules/ctools/bulk_export/bulk_export.info
index 1e5061c1b66f049f0669e48d0d09db5dfb43b8ab..6f57712ddf51dddf7259c10d165fad96052b25c0 100644
--- a/sites/all/modules/ctools/bulk_export/bulk_export.info
+++ b/sites/all/modules/ctools/bulk_export/bulk_export.info
@@ -4,9 +4,9 @@ core = 7.x
 dependencies[] = ctools
 package = Chaos tool suite
 
-; Information added by drupal.org packaging script on 2012-03-28
-version = "7.x-1.0"
+; Information added by drupal.org packaging script on 2012-08-18
+version = "7.x-1.2"
 core = "7.x"
 project = "ctools"
-datestamp = "1332962446"
+datestamp = "1345319204"
 
diff --git a/sites/all/modules/ctools/css/modal.css b/sites/all/modules/ctools/css/modal.css
index 66c4a1c3ba1f477323ef41a12385f32458c1d88a..d9f44e2692006cd024217ac12f6f17b9024c451d 100644
--- a/sites/all/modules/ctools/css/modal.css
+++ b/sites/all/modules/ctools/css/modal.css
@@ -23,7 +23,6 @@ div.ctools-modal-content .modal-header {
 
 div.ctools-modal-content .modal-header a {
   color: white;
-  float: right;
 }
 
 div.ctools-modal-content .modal-content {
@@ -37,6 +36,7 @@ div.ctools-modal-content .modal-form {
 
 div.ctools-modal-content a.close {
   color: white;
+  float: right;
 }
 
 div.ctools-modal-content a.close:hover {
diff --git a/sites/all/modules/ctools/ctools.info b/sites/all/modules/ctools/ctools.info
index 82fd1e257758b214338870d1a71b0b0d11bb54e9..c3e56fb3f74d1d57205ece746ccbb33b6e8bcfde 100644
--- a/sites/all/modules/ctools/ctools.info
+++ b/sites/all/modules/ctools/ctools.info
@@ -6,9 +6,9 @@ files[] = includes/context.inc
 files[] = includes/math-expr.inc
 files[] = includes/stylizer.inc
 
-; Information added by drupal.org packaging script on 2012-03-28
-version = "7.x-1.0"
+; Information added by drupal.org packaging script on 2012-08-18
+version = "7.x-1.2"
 core = "7.x"
 project = "ctools"
-datestamp = "1332962446"
+datestamp = "1345319204"
 
diff --git a/sites/all/modules/ctools/ctools.module b/sites/all/modules/ctools/ctools.module
index f8e336910cecaa4dd76f7fbf36d4e2e2d279aa81..7dfc989b2a778290b7f59edbbf37934ef7f7d2e1 100644
--- a/sites/all/modules/ctools/ctools.module
+++ b/sites/all/modules/ctools/ctools.module
@@ -9,7 +9,7 @@
  * must be implemented in the module file.
  */
 
-define('CTOOLS_API_VERSION', '2.0.6');
+define('CTOOLS_API_VERSION', '2.0.7');
 
 /**
  * Test the CTools API version.
diff --git a/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.info b/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.info
index 77e559335c52b82b4a76000314c3ba2fecda9230..04c92c349310e2a5aa0324cbad38f1cdc3684843 100644
--- a/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.info
+++ b/sites/all/modules/ctools/ctools_access_ruleset/ctools_access_ruleset.info
@@ -4,9 +4,9 @@ core = 7.x
 package = Chaos tool suite
 dependencies[] = ctools
 
-; Information added by drupal.org packaging script on 2012-03-28
-version = "7.x-1.0"
+; Information added by drupal.org packaging script on 2012-08-18
+version = "7.x-1.2"
 core = "7.x"
 project = "ctools"
-datestamp = "1332962446"
+datestamp = "1345319204"
 
diff --git a/sites/all/modules/ctools/ctools_access_ruleset/plugins/access/ruleset.inc b/sites/all/modules/ctools/ctools_access_ruleset/plugins/access/ruleset.inc
index 782c7cabf77ddae5f83e4f40dccc7386de407921..f8abea6df74b42a97ff069748b446ab6e72d2b87 100644
--- a/sites/all/modules/ctools/ctools_access_ruleset/plugins/access/ruleset.inc
+++ b/sites/all/modules/ctools/ctools_access_ruleset/plugins/access/ruleset.inc
@@ -99,7 +99,7 @@ function ctools_ruleset_ctools_access_check($conf, $context, $plugin) {
  * Provide a summary description based upon the checked roles.
  */
 function ctools_ruleset_ctools_access_summary($conf, $context, $plugin) {
-  if (!empty($form_state['plugin']['ruleset']->admin_description)) {
+  if (!empty($plugin['ruleset']->admin_description)) {
     return check_plain($plugin['ruleset']->admin_description);
   }
   else {
diff --git a/sites/all/modules/ctools/ctools_ajax_sample/ctools_ajax_sample.info b/sites/all/modules/ctools/ctools_ajax_sample/ctools_ajax_sample.info
index 0cb5d92e1ce4d3f1053760f574635a2f51b4c00a..bbf708cd1e083152f6123f257276396fe91d2788 100644
--- a/sites/all/modules/ctools/ctools_ajax_sample/ctools_ajax_sample.info
+++ b/sites/all/modules/ctools/ctools_ajax_sample/ctools_ajax_sample.info
@@ -4,9 +4,9 @@ package = Chaos tool suite
 dependencies[] = ctools
 core = 7.x
 
-; Information added by drupal.org packaging script on 2012-03-28
-version = "7.x-1.0"
+; Information added by drupal.org packaging script on 2012-08-18
+version = "7.x-1.2"
 core = "7.x"
 project = "ctools"
-datestamp = "1332962446"
+datestamp = "1345319204"
 
diff --git a/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.info b/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.info
index ca83b8a8ed6f405d4871b0a9052059440c33ed7a..b56e3be7ac92e2b7bda77e1cf5df94a52259d897 100644
--- a/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.info
+++ b/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.info
@@ -4,9 +4,9 @@ core = 7.x
 package = Chaos tool suite
 dependencies[] = ctools
 
-; Information added by drupal.org packaging script on 2012-03-28
-version = "7.x-1.0"
+; Information added by drupal.org packaging script on 2012-08-18
+version = "7.x-1.2"
 core = "7.x"
 project = "ctools"
-datestamp = "1332962446"
+datestamp = "1345319204"
 
diff --git a/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.install b/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.install
index 8348434b5f827f66067248db32eefb49ec441e5d..b4512f2a4cd5c839650ff6b45405e61728b3be8c 100644
--- a/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.install
+++ b/sites/all/modules/ctools/ctools_custom_content/ctools_custom_content.install
@@ -17,7 +17,7 @@ function ctools_custom_content_schema_1() {
       'bulk export' => TRUE,
       'primary key' => 'cid',
       'api' => array(
-        'owner' => 'ctools',
+        'owner' => 'ctools_custom_content',
         'api' => 'ctools_content',
         'minimum_version' => 1,
         'current_version' => 1,
diff --git a/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.info b/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.info
index 4d4aace05715d0ae595048fc68c64435c909a9a6..c9f12e7d2005fdb80189f0ffe4051705c240bfba 100644
--- a/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.info
+++ b/sites/all/modules/ctools/ctools_plugin_example/ctools_plugin_example.info
@@ -7,9 +7,9 @@ dependencies[] = page_manager
 dependencies[] = advanced_help
 core = 7.x
 
-; Information added by drupal.org packaging script on 2012-03-28
-version = "7.x-1.0"
+; Information added by drupal.org packaging script on 2012-08-18
+version = "7.x-1.2"
 core = "7.x"
 project = "ctools"
-datestamp = "1332962446"
+datestamp = "1345319204"
 
diff --git a/sites/all/modules/ctools/drush/ctools.drush.inc b/sites/all/modules/ctools/drush/ctools.drush.inc
index 353bbde4a66f8d74a0f193e93f71be43665ffb00..bf1df1f2bfc01400280c7a2f731c7547cce949e7 100644
--- a/sites/all/modules/ctools/drush/ctools.drush.inc
+++ b/sites/all/modules/ctools/drush/ctools.drush.inc
@@ -11,8 +11,12 @@
 function ctools_drush_command() {
   $items = array();
 
+  $module_text = 'Filter the list of exportables by module. This will come from the \'export_module\' key on the exportable.';
+  $all_text = 'Perform this operation all CTools exportables available on the system (all tables).';
+
   $items['ctools-export'] = array(
     'aliases' => array('ctex'),
+    'callback' => 'ctools_drush_export',
     'description' => 'Export multiple CTools exportable objects directly to code.',
     'arguments' => array(
       'module'    => 'Name of your module.',
@@ -20,36 +24,40 @@ function ctools_drush_command() {
     'options' => array(
       'subdir' => 'The name of the sub directory to create the module in. Defaults to ctools_export which will be placed into sites/all/modules.',
       'remove' => 'Remove existing files before writing, except the .module file.',
+      'filter' => 'Filter the list of exportables by status. Available options are enabled, disabled, overridden, database, code and all. Defaults to enabled.',
+      'tables' => 'Comma separated list of exportable table names to filter by.',
     ),
-    'drupal dependencies' => array('bulk_export'),
     'examples' => array(
       'drush ctex export_module' => 'Export CTools exportables to a module called "export_module".',
       'drush ctex export_module --subdir=exports' => 'Same as above, but into the sites/all/modules/exports directory.',
       'drush ctex export_module --subdir=exports --remove' => 'Same as above, but automatically removing all files, except for the .module file.',
+      'drush ctex --filter="views_view"' => 'Filter export selection to the views_view table only.',
     ),
   );
 
   $items['ctools-export-info'] = array(
     'aliases' => array('ctei'),
+    'callback' => 'ctools_drush_export_info',
     'description' => 'Show available CTools exportable objects.',
     'arguments' => array(),
     'options' => array(
       'format' => 'Display exportables info in a different format such as print_r, json, export. The default is to show in a tabular format.',
       'tables-only' => 'Only show list of exportable types/table names and not available objects.',
-      'enabled' => 'Only show exportables that are currently enabled.',
-      'disabled' => 'Only show exportables that are currently disabled.',
-      'overridden' => 'Only show exportables that have been overridden in the database.',
-      'database' => 'Only show exportables defined in the database (and not in code).',
+      'filter' => 'Filter the list of exportables by status. Available options are enabled, disabled, overridden, database, and code.',
+      'module' => $module_text,
     ),
     'examples' => array(
       'drush ctools-export-info' => 'View export info on all exportables.',
       'drush ctools-export-info views_view variable' => 'View export info for views_view and variable exportable types only.',
+      'drush ctei --filter=enabled' => 'Show all enabled exportables.',
+      'drush ctei views_view --filter=disabled' => 'Show all enabled exportables.',
+      'drush ctei views_view --module=node' => 'Show all exportables provided by/on behalf of the node module.',
     ),
   );
 
   $items['ctools-export-view'] = array(
     'aliases' => array('ctev'),
-    'callback' => 'drush_ctools_export_op_command',
+    'callback' => 'ctools_drush_export_op_command',
     'description' => 'View CTools exportable object code output.',
     'arguments' => array(
       'table name' => 'Base table of the exportable you want to view.',
@@ -58,6 +66,8 @@ function ctools_drush_command() {
     'options' => array(
       'indent' => 'The string to use for indentation when dispalying the exportable export code. Defaults to \'\'.',
       'no-colour' => 'Remove any colour formatting from export string output. Ideal if you are sending the output of this command to a file.',
+      'module' => $module_text,
+      'all' => $all_text,
     ),
     'examples' => array(
       'drush ctools-export-view views_view' => 'View all views exportable objects.',
@@ -67,28 +77,35 @@ function ctools_drush_command() {
 
   $items['ctools-export-revert'] = array(
     'aliases' => array('cter'),
-    'callback' => 'drush_ctools_export_op_command',
+    'callback' => 'ctools_drush_export_op_command',
     'description' => 'Revert CTools exportables from changes overridden in the database.',
     'arguments' => array(
       'table name' => 'Base table of the exportable you want to revert.',
       'machine names' => 'Space separated list of exportables you want to revert.',
     ),
-    'options' => array(),
+    'options' => array(
+      'module' => $module_text,
+      'all' => $all_text,
+    ),
     'examples' => array(
       'drush ctools-export-revert views_view' => 'Revert all overridden views exportable objects.',
       'drush ctools-export-revert views_view archive' => 'Revert overridden default views archive view.',
+      'drush ctools-export-revert --all' => 'Revert all exportables on the system.',
     ),
   );
 
   $items['ctools-export-enable'] = array(
     'aliases' => array('ctee'),
-    'callback' => 'drush_ctools_export_op_command',
+    'callback' => 'ctools_drush_export_op_command',
     'description' => 'Enable CTools exportables.',
     'arguments' => array(
       'table name' => 'Base table of the exportable you want to enable.',
       'machine names' => 'Space separated list of exportables you want to enable.',
     ),
-    'options' => array(),
+    'options' => array(
+      'module' => $module_text,
+      'all' => $all_text,
+    ),
     'examples' => array(
       'drush ctools-export-enable views_view' => 'Enable all overridden views exportable objects.',
       'drush ctools-export-enable views_view archive' => 'Enable overridden default views archive view.',
@@ -97,13 +114,16 @@ function ctools_drush_command() {
 
   $items['ctools-export-disable'] = array(
     'aliases' => array('cted'),
-    'callback' => 'drush_ctools_export_op_command',
+    'callback' => 'ctools_drush_export_op_command',
     'description' => 'Disable CTools exportables.',
     'arguments' => array(
       'table name' => 'Base table of the exportable you want to disable.',
       'machine names' => 'Space separated list of exportables you want to disable.',
     ),
-    'options' => array(),
+    'options' => array(
+      'module' => $module_text,
+      'all' => $all_text,
+    ),
     'examples' => array(
       'drush ctools-export-disable views_view' => 'Disable all overridden views exportable objects.',
       'drush ctools-export-disable views_view archive' => 'Disable overridden default views archive view.',
@@ -128,7 +148,7 @@ function ctools_drush_help($section) {
 /**
  * Drush callback: export
  */
-function drush_ctools_export($module = 'foo') {
+function ctools_drush_export($module = 'foo') {
   $error = FALSE;
   if (preg_match('@[^a-z_]+@', $module)) {
     $error = dt('The name of the module must contain only lowercase letters and underscores') . '.';
@@ -136,6 +156,15 @@ function drush_ctools_export($module = 'foo') {
     return;
   }
 
+  // Filter by tables.
+  $tables = _ctools_drush_explode_options('tables');
+
+  // Check status.
+  $filter = drush_get_option('filter', FALSE);
+  if (empty($filter)) {
+    drush_set_option('filter', 'enabled');
+  }
+
   // Selection.
   $options = array('all' => dt('Export everything'), 'select' => dt('Make selection'));
   $selection = drush_choice($options, dt('Select to proceed'));
@@ -146,10 +175,11 @@ function drush_ctools_export($module = 'foo') {
 
   // Present the selection screens.
   if ($selection == 'select') {
-    $selections = _drush_ctools_selection_screen();
+    $selections = _ctools_drush_selection_screen($tables);
   }
   else {
-    $selections = _drush_ctools_export_info();
+    $info = _ctools_drush_export_info($tables, TRUE);
+    $selections = $info['exportables'];
   }
 
   // Subdirectory.
@@ -177,7 +207,7 @@ function drush_ctools_export($module = 'foo') {
 
   // Remove files (except for the .module file) if the destination folder exists.
   if ($remove && $dest_exists) {
-    _drush_ctools_file_delete($dest);
+    _ctools_drush_file_delete($dest);
   }
 
   // Create new dir if needed.
@@ -190,6 +220,9 @@ function drush_ctools_export($module = 'foo') {
   // Create destination directory.
   drush_mkdir($dest);
 
+  // Load bulk export module.
+  module_load_include('module', 'bulk_export');
+
   // Create options and call Bulk export function.
   // We create an array, because maybe in the future we can pass in more
   // options to the export function (pre-selected modules and/or exportables).
@@ -199,6 +232,14 @@ function drush_ctools_export($module = 'foo') {
   );
   $files = bulk_export_export(TRUE, $options);
 
+  $alter = array(
+    'module' => $module,
+    'files' => $files,
+  );
+  // Let other drush commands alter the files.
+  drush_command_invoke_all_ref('drush_ctex_files_alter', $alter);
+  $files = $alter['files'];
+
   // Start writing.
   if (is_array($files)) {
     foreach ($files as $base_file => $data) {
@@ -220,7 +261,6 @@ function drush_ctools_export($module = 'foo') {
         drush_log(dt('Error writing !filename', array('!filename' => $filename)), 'error');
       }
     }
-    drush_log("\n" . dt('No penguins were harmed in the generation of this code.') . "\n", 'success');
   }
   else {
     drush_log(dt('No files were found to be written.'), 'error');
@@ -230,19 +270,24 @@ function drush_ctools_export($module = 'foo') {
 /**
  * Helper function to select the exportables. By default, all exportables
  * will be selected, so it will be easier to deselect them.
+ *
+ * @param $tables
  */
-function _drush_ctools_selection_screen() {
+function _ctools_drush_selection_screen(array $tables = array()) {
   $selections = $build = array();
   $files = system_rebuild_module_data();
 
   $selection_number = 0;
 
-  $exportables = _drush_ctools_export_info();
+  $info = _ctools_drush_export_info($tables, TRUE);
+  $exportables = $info['exportables'];
+  $schemas = $info['schemas'];
+
   $export_tables = array();
 
   foreach (array_keys($exportables) as $table) {
     natcasesort($exportables[$table]);
-    $export_tables[$table] = $files[$schema['module']]->info['name'] . ' (' . $table . ')';
+    $export_tables[$table] = $files[$schemas[$table]['module']]->info['name'] . ' (' . $table . ')';
   }
 
   foreach ($export_tables as $table => $table_title) {
@@ -268,7 +313,7 @@ function _drush_ctools_selection_screen() {
     // Present the tables choice.
     $table_rows = array();
     foreach ($build as $table => $info) {
-      $table_rows[$table] = $info['title'] . ' (' . dt($info['count']) . ')';
+      $table_rows[$table] = $info['title'] . ' (' . $info['count'] . ')';
     }
     $table_choice = drush_choice($table_rows, dt('Select a table. Select cancel to start writing files.'));
 
@@ -305,7 +350,7 @@ function _drush_ctools_selection_screen() {
  * @param $path
  *   Path to directory in which to remove files.
  */
-function _drush_ctools_file_delete($path) {
+function _ctools_drush_file_delete($path) {
   if (is_dir($path)) {
     $files = new DirectoryIterator($path);
     foreach ($files as $fileInfo) {
@@ -320,74 +365,40 @@ function _drush_ctools_file_delete($path) {
  * Drush callback: Export info.
  *
  * @params $table_names
- *  Each argument will be taken as a CTools exportable table name.
+ *   Each argument will be taken as a CTools exportable table name.
  */
-function drush_ctools_export_info() {
+function ctools_drush_export_info() {
   // Collect array of table names from args.
   $table_names = func_get_args();
 
   // Get format option to allow for alternative output.
   $format = drush_get_option('format', FALSE);
   $tables_only = drush_get_option('tables-only', FALSE);
-  $show_overridden = drush_get_option('overridden', FALSE);
-  $show_enabled = drush_get_option('enabled', FALSE);
-  $show_disabled = drush_get_option('disabled', FALSE);
-  $show_database_only = drush_get_option('database', FALSE);
+  $filter = drush_get_option('filter', FALSE);
+  $export_module = drush_get_option('module', FALSE);
 
-  // Only load exportable objects for each type fully if we need to.
-  $load = ($show_overridden || $show_enabled || $show_disabled || $show_database_only) ? TRUE : FALSE;
+  $load = (bool) $filter || $export_module;
 
-  // Get info on these tables, or all if none specified.
-  $exportables = _drush_ctools_export_info($table_names, $load);
+  // Get info on these tables, or all tables if none specified.
+  $info = _ctools_drush_export_info($table_names, $load);
+  $exportables = $info['exportables'];
 
   if (empty($exportables)) {
     drush_log(dt('There are no exportables available.'), 'warning');
     return;
   }
 
-  // The order of these conditionals set a hierarchy for options if there are mulitple.
-  // Show enabled exportables only.
-  if ($show_enabled) {
-    foreach ($exportables as $table => $objects) {
-      foreach ($objects as $key => $object) {
-        if (_ctools_drush_object_is_disabled($object)) {
-          unset($exportables[$table][$key]);
-        }
-      }
-    }
-  }
-  // Show disabled exportables only.
-  elseif ($show_disabled) {
-    foreach ($exportables as $table => $objects) {
-      foreach ($objects as $key => $object) {
-        if (!_ctools_drush_object_is_disabled($object)) {
-          unset($exportables[$table][$key]);
-        }
-      }
-    }
-  }
-  // Show overridden exportables only.
-  elseif ($show_overridden) {
-    foreach ($exportables as $table => $objects) {
-      foreach ($objects as $key => $object) {
-        if (!_ctools_drush_object_is_overridden($object)) {
-          unset($exportables[$table][$key]);
-        }
-      }
-    }
+  // Filter by export module.
+  if (is_string($export_module)) {
+    $exportables = _ctools_drush_export_module_filter($exportables, $export_module);
   }
-  // Show database only exportables.
-  elseif ($show_database_only) {
-    foreach ($exportables as $table => $objects) {
-      foreach ($objects as $key => $object) {
-        if (!_ctools_drush_object_is_db_only($object)) {
-          unset($exportables[$table][$key]);
-        }
-      }
-    }
+
+  if (empty($exportables)) {
+    drush_log(dt('There are no exportables matching this criteria.'), 'notice');
+    return;
   }
 
-  $exportables = array_filter($exportables);
+  $exportable_counts = _ctools_drush_count_exportables($exportables);
 
   // Only use array keys if --tables-only option is set.
   if ($tables_only) {
@@ -396,7 +407,12 @@ function drush_ctools_export_info() {
 
   // Use format from --format option if it's present, and send to drush_format.
   if ($format) {
-    drush_print(drush_format($exportables, NULL, $format));
+    // Create array with all exportable info and counts in one.
+    $output = array(
+      'exportables' => $exportables,
+      'count' => $exportable_counts,
+    );
+    drush_print(drush_format($output, NULL, $format));
   }
   // Build a tabular output as default.
   else {
@@ -416,19 +432,22 @@ function drush_ctools_export_info() {
       }
     }
     if (!empty($rows)) {
+      drush_print("\n");
       array_unshift($rows, $header);
-      drush_print_table($rows, TRUE);
-    }
-    else {
-      drush_log(dt('There are no exportables matching this criteria.'), 'notice');
+      drush_print_table($rows, TRUE, array(20));
+      drush_print(dt('Total exportables found: !total', array('!total' => $exportable_counts['total'])));
+      foreach ($exportable_counts['exportables'] as $table_name => $count) {
+        drush_print(dt('!table_name (!count)', array('!table_name' => $table_name, '!count' => $count)), 2);
+      }
+      drush_print("\n");
     }
   }
 }
-
 /**
- * Drush callback: Acts as the hub for all op commands to keep all arg handling etc in one place.
+ * Drush callback: Acts as the hub for all op commands to keep
+ * all arg handling etc in one place.
  */
-function drush_ctools_export_op_command() {
+function ctools_drush_export_op_command() {
   // Get all info for the current drush command.
   $command = drush_get_command();
   $op = '';
@@ -453,17 +472,34 @@ function drush_ctools_export_op_command() {
     return;
   }
 
-  $args = func_get_args();
-  // Table name should always be first arg...
-  $table_name = array_shift($args);
-  // Any additional args are assumed to be exportable names.
-  $object_names = $args;
+  if (drush_get_option('all', FALSE)) {
+    $info = _ctools_drush_export_info('', TRUE);
+    $exportable_info = $info['exportables'];
 
-  // Return any exportables based on table name, object names, options.
-  $exportables = _drush_ctools_export_op_command_logic($op, $table_name, $object_names);
+    $all = drush_confirm(dt('Are you sure you would like to !op all exportables on the system?',
+      array('!op' => _ctools_drush_export_op_alias($op))));
 
-  if ($exportables) {
-    drush_ctools_export_op($op, $table_name, $exportables);
+    if ($all && $exportable_info) {
+      foreach ($exportable_info as $table => $exportables) {
+        if (!empty($exportables)) {
+          ctools_drush_export_op($op, $table, $exportables);
+        }
+      }
+    }
+  }
+  else {
+    $args = func_get_args();
+    // Table name should always be first arg...
+    $table_name = array_shift($args);
+    // Any additional args are assumed to be exportable names.
+    $object_names = $args;
+
+    // Return any exportables based on table name, object names, options.
+    $exportables = _ctools_drush_export_op_command_logic($op, $table_name, $object_names);
+
+    if ($exportables) {
+      ctools_drush_export_op($op, $table_name, $exportables);
+    }
   }
 }
 
@@ -476,10 +512,10 @@ function drush_ctools_export_op_command() {
  * @param $exportables
  *
  */
-function drush_ctools_export_op($op = '', $table_name = '', $exportables = NULL) {
+function ctools_drush_export_op($op = '', $table_name = '', $exportables = NULL) {
   $objects = ctools_export_crud_load_multiple($table_name, array_keys($exportables));
 
-  $function = '_drush_ctools_export_' . $op;
+  $function = '_ctools_drush_export_' . $op;
   if (function_exists($function)) {
     foreach ($objects as $object) {
       $function($table_name, $object);
@@ -500,27 +536,27 @@ function drush_ctools_export_op($op = '', $table_name = '', $exportables = NULL)
  * @param $object_names
  *
  * @return
- *  Array of exportable objects (filtered if necessary, by name etc..) or FALSE if not.
+ *    Array of exportable objects (filtered if necessary, by name etc..) or FALSE if not.
  */
-function _drush_ctools_export_op_command_logic($op = '', $table_name = NULL, $object_names = array()) {
+function _ctools_drush_export_op_command_logic($op = '', $table_name = NULL, array $object_names = array()) {
   if (!$table_name) {
-    drush_log(dt('Exportable table name empty.'), 'error');
+    drush_log(dt('Exportable table name empty. Use the --all command if you want to perform this operation on all tables.'), 'error');
     return FALSE;
   }
 
   // Get export info based on table name.
-  $info = _drush_ctools_export_info(array($table_name));
+  $info = _ctools_drush_export_info(array($table_name), TRUE);
 
-  if (!isset($info[$table_name])) {
+  if (!isset($info['exportables'][$table_name])) {
     drush_log(dt('Exportable table name not found.'), 'error');
     return FALSE;
   }
 
-  $exportables = $info[$table_name];
+  $exportables = &$info['exportables'];
 
   if (empty($object_names)) {
     $all = drush_confirm(dt('No object names entered. Would you like to try and !op all exportables of type !type',
-      array('!op' => _drush_ctools_export_op_aliases($op), '!type' => $table_name)));
+      array('!op' => _ctools_drush_export_op_alias($op), '!type' => $table_name)));
     if (!$all) {
       drush_log(dt('Command cancelled'), 'success');
       return FALSE;
@@ -530,20 +566,26 @@ function _drush_ctools_export_op_command_logic($op = '', $table_name = NULL, $ob
     // Iterate through object names and check they exist in exportables array.
     // Log error and unset them if they don't.
     foreach ($object_names as $object_name) {
-      if (!isset($exportables[$object_name])) {
+      if (!isset($exportables[$table_name][$object_name])) {
         drush_log(dt('Invalid exportable: !exportable', array('!exportable' => $object_name)), 'error');
-        unset($object_names[$object_name]);
+        unset($object_names[$table_name][$object_name]);
       }
     }
     // Iterate through exportables to get just a list of selected ones.
-    foreach (array_keys($exportables) as $exportable) {
+    foreach (array_keys($exportables[$table_name]) as $exportable) {
       if (!in_array($exportable, $object_names)) {
-        unset($exportables[$exportable]);
+        unset($exportables[$table_name][$exportable]);
       }
     }
   }
 
-  return $exportables;
+  $export_module = drush_get_option('module', FALSE);
+
+  if (is_string($export_module)) {
+    $exportables = _ctools_drush_export_module_filter($exportables, $export_module);
+  }
+
+  return $exportables[$table_name];
 }
 
 /**
@@ -551,15 +593,15 @@ function _drush_ctools_export_op_command_logic($op = '', $table_name = NULL, $ob
  * ctools_export_get_schemas().
  *
  * @param $table_names
- *  Array of table names to return.
+ *   Array of table names to return.
  * @param $load
- *  (bool) should ctools exportable objects be loaded for each type.
- *  The default behaviour will load just a list of exportable names.
+ *   (bool) should ctools exportable objects be loaded for each type.
+ *   The default behaviour will load just a list of exportable names.
  *
  * @return
- *  Nested arrays of available exportables, keyed by table name.
+ *   Nested arrays of available exportables, keyed by table name.
  */
-function _drush_ctools_export_info($table_names = array(), $load = FALSE) {
+function _ctools_drush_export_info(array $table_names = array(), $load = FALSE) {
   ctools_include('export');
   // Get available schemas that declare exports.
   $schemas = ctools_export_get_schemas(TRUE);
@@ -592,7 +634,12 @@ function _drush_ctools_export_info($table_names = array(), $load = FALSE) {
     }
   }
 
-  return $exportables;
+  if ($load) {
+    $filter = drush_get_option('filter', FALSE);
+    $exportables = _ctools_drush_filter_exportables($exportables, $filter);
+  }
+
+  return array('exportables' => $exportables, 'schemas' => $schemas);
 }
 
 /*
@@ -601,12 +648,12 @@ function _drush_ctools_export_info($table_names = array(), $load = FALSE) {
  * @param $table_name
  * @param $object
  */
-function _drush_ctools_export_view($table_name, $object) {
+function _ctools_drush_export_view($table_name, $object) {
   $indent = drush_get_option('indent', '');
   $no_colour = drush_get_option('no-colour', FALSE);
   $export = ctools_export_crud_export($table_name, $object, $indent);
   if ($no_colour) {
-    drush_print($export);
+    drush_print("\n$export");
   }
   else {
     drush_print(shellColours::getColouredOutput("\n$export", 'light_green'));
@@ -619,14 +666,16 @@ function _drush_ctools_export_view($table_name, $object) {
  * @param $table_name
  * @param $object
  */
-function _drush_ctools_export_delete($table_name, $object) {
+function _ctools_drush_export_delete($table_name, $object) {
+  $name = _ctools_drush_get_export_name($table_name, $object);
+
   if (_ctools_drush_object_is_overridden($object)) {
     // Remove from db.
     ctools_export_crud_delete($table_name, $object);
-    drush_log("Reverted object: $object->name", 'success');
+    drush_log("Reverted object: $name", 'success');
   }
   else {
-    drush_log("Nothing to revert for: $object->name", 'notice');
+    drush_log("Nothing to revert for: $name", 'notice');
   }
 }
 
@@ -636,14 +685,17 @@ function _drush_ctools_export_delete($table_name, $object) {
  * @param $table_name
  * @param $object
  */
-function _drush_ctools_export_enable($table_name, $object) {
+function _ctools_drush_export_enable($table_name, $object) {
+  $name = _ctools_drush_get_export_name($table_name, $object);
+
   if (_ctools_drush_object_is_disabled($object)) {
+
     // Enable object.
     ctools_export_crud_enable($table_name, $object);
-    drush_log("Enabled object: $object->name", 'success');
+    drush_log("Enabled object: $name", 'success');
   }
   else {
-    drush_log("$object->name is already Enabled", 'notice');
+    drush_log("$name is already Enabled", 'notice');
   }
 }
 
@@ -653,64 +705,216 @@ function _drush_ctools_export_enable($table_name, $object) {
  * @param $table_name
  * @param $object
  */
-function _drush_ctools_export_disable($table_name, $object) {
+function _ctools_drush_export_disable($table_name, $object) {
+  $name = _ctools_drush_get_export_name($table_name, $object);
+
   if (!_ctools_drush_object_is_disabled($object)) {
     // Disable object.
     ctools_export_crud_disable($table_name, $object);
-    drush_log("Disabled object: $object->name", 'success');
+    drush_log("Disabled object: $name", 'success');
   }
   else {
-    drush_log("$object->name is already disabled", 'notice');
+    drush_log("$name is already disabled", 'notice');
+  }
+}
+
+/**
+ * Filter a nested array of exportables by export module.
+ *
+ * @param $exportables array
+ *   Passed by reference. A nested array of exportables, keyed by table name.
+ * @param $export_module string
+ *   The name of the export module providing the exportable.
+ */
+function _ctools_drush_export_module_filter($exportables, $export_module) {
+  $module_list = module_list();
+
+  if (!isset($module_list[$export_module])) {
+    drush_log(dt('Invalid export module: !export_module', array('!export_module' => $export_module)), 'error');
+  }
+
+  foreach ($exportables as $table => $objects) {
+    foreach ($objects as $key => $object) {
+      if (empty($object->export_module) || ($object->export_module !== $export_module)) {
+        unset($exportables[$table][$key]);
+      }
+    }
   }
+
+  return array_filter($exportables);
 }
 
 /**
- * Helper to determine if an object is disabled.
+ * Gets the key for an exportable type.
  *
+ * @param $table_name
+ *   The exportable table name.
  * @param $object
- *  Loaded CTools exportable object.
+ *   The exportable object.
  *
- * @return TRUE or FALSE
+ * @return string
+ *   The key defined in the export schema data.
  */
-function _ctools_drush_object_is_disabled($object) {
-  return (isset($object->disabled) && ($object->disabled == TRUE)) ? TRUE : FALSE;
+function _ctools_drush_get_export_name($table_name, $object) {
+  $info = _ctools_drush_export_info(array($table_name));
+  $key = $info['schemas'][$table_name]['export']['key'];
+  return $object->{$key};
 }
 
 /**
- * Helper to determine if an object is overridden.
+ * Determine if an object is disabled.
  *
  * @param $object
- *  Loaded CTools exportable object.
+ *   Loaded CTools exportable object.
  *
  * @return TRUE or FALSE
  */
+function _ctools_drush_object_is_disabled($object) {
+  return (isset($object->disabled) && ($object->disabled == TRUE)) ? TRUE : FALSE;
+}
+
+/**
+ * Determine if an object is enabled.
+ *
+ * @see _ctools_drush_object_is_disabled.
+ */
+function _ctools_drush_object_is_enabled($object) {
+  return (empty($object->disabled)) ? TRUE : FALSE;
+}
+
+/**
+ * Determine if an object is overridden.
+ */
 function _ctools_drush_object_is_overridden($object) {
-  return ($object->export_type == 3) ? TRUE : FALSE;
+  $status = EXPORT_IN_CODE + EXPORT_IN_DATABASE;
+  return ($object->export_type == $status) ? TRUE : FALSE;
+}
+
+/**
+ * Determine if an object is not overridden.
+ */
+function _ctools_drush_object_is_not_overridden($object) {
+  $status = EXPORT_IN_CODE + EXPORT_IN_DATABASE;
+  return ($object->export_type == $status) ? FALSE : TRUE;
+}
+
+/**
+ * Determine if an object is only in the db.
+ */
+function _ctools_drush_object_is_db_only($object) {
+  return ($object->export_type == EXPORT_IN_DATABASE) ? TRUE : FALSE;
+}
+
+/**
+ * Determine if an object is not in the db.
+ */
+function _ctools_drush_object_is_not_db_only($object) {
+  return ($object->export_type == EXPORT_IN_DATABASE) ? FALSE : TRUE;
+}
+
+/**
+ * Determine if an object is a code only default.
+ */
+function _ctools_drush_object_is_code_only($object) {
+  return ($object->export_type == EXPORT_IN_CODE) ? TRUE : FALSE;
+}
+
+/**
+ * Determine if an object is not a code only default.
+ */
+function _ctools_drush_object_is_not_code_only($object) {
+  return ($object->export_type == EXPORT_IN_CODE) ? FALSE : TRUE;
 }
 
 /**
- * Helper to determine if an object is only in the db.
+ * Return an array of count information based on exportables array.
  *
- * @param $object
- *  Loaded CTools exportable object.
+ * @param $exportables
+ *   Array of exportables to count.
  *
- * @return TRUE or FALSE
+ * @return
+ *    Array of count data containing the following:
+ *     'total' - A total count of all exportables.
+ *     'exportables' - An array of exportable counts per table.
  */
-function _ctools_drush_object_is_db_only($object) {
-  return ($object->export_type == 1) ? TRUE : FALSE;
+function _ctools_drush_count_exportables($exportables) {
+  $count = array('exportables' => array());
+
+  foreach ($exportables as $table => $objects) {
+    // Add the object count for each table.
+    $count['exportables'][$table] = count($objects);
+  }
+
+  // Once all tables have been counted, total these up.
+  $count['total'] = array_sum($count['exportables']);
+
+  return $count;
 }
 
 /**
- * Return any aliases for an op, that will be used to show as output.
+ * Filters a collection of exportables based on filters.
+ *
+ * @param $exportables
+ * @param $filter
+ */
+function _ctools_drush_filter_exportables($exportables, $filter) {
+  $eval = FALSE;
+
+  if (is_string($filter)) {
+    switch ($filter) {
+      // Show enabled exportables only.
+      case 'enabled':
+        $eval = '_ctools_drush_object_is_disabled';
+      break;
+      // Show disabled exportables only.
+      case 'disabled':
+        $eval = '_ctools_drush_object_is_enabled';
+      break;
+      // Show overridden exportables only.
+      case 'overridden':
+        $eval = '_ctools_drush_object_is_not_overridden';
+      break;
+      // Show database only exportables.
+      case 'database':
+        $eval = '_ctools_drush_object_is_not_db_only';
+      break;
+      // Show code only exportables.
+      case 'code':
+        $eval = '_ctools_drush_object_is_not_code_only';
+      break;
+      // Do nothing.
+      case 'all':
+        break;
+      default:
+        drush_log(dt('Invalid filter option. Available options are: enabled, disabled, overridden, database, and code.'), 'error');
+        return;
+    }
+
+    if ($eval) {
+      foreach ($exportables as $table => $objects) {
+        foreach ($objects as $key => $object) {
+          if ($eval($object)) {
+            unset($exportables[$table][$key]);
+          }
+        }
+      }
+    }
+  }
+
+  return array_filter($exportables);
+}
+
+/**
+ * Return an alias for an op, that will be used to show as output.
  * For now, this is mainly necessary for delete => revert alias.
  *
  * @param $op
- *  The op name. Such as 'enable', 'disable', or 'delete'.
+ *   The op name. Such as 'enable', 'disable', or 'delete'.
  *
  * @return
- *  The matched alias value or the original $op passed in if not found.
+ *   The matched alias value or the original $op passed in if not found.
  */
-function _drush_ctools_export_op_aliases($op) {
+function _ctools_drush_export_op_alias($op) {
   $aliases = array(
     'delete' => 'revert',
   );
@@ -722,6 +926,25 @@ function _drush_ctools_export_op_aliases($op) {
   return $op;
 }
 
+/**
+ * Convert the drush options from a csv list into an array.
+ *
+ * @param $drush_option
+ *   The drush option name to invoke.
+ *
+ * @return
+ *   Exploded array of options.
+ */
+function _ctools_drush_explode_options($drush_option) {
+  $options = drush_get_option($drush_option, array());
+  if (!empty($options)) {
+    $options = explode(',', $options);
+    return array_map('trim', $options);
+  }
+
+  return $options;
+}
+
 /**
  * Class to deal with wrapping output strings with
  * colour formatting for the shell.
diff --git a/sites/all/modules/ctools/help/about.html b/sites/all/modules/ctools/help/about.html
index 8184565f22411461c423b265fec760d0d507fbe8..30b64c2d31dae5ecde99fe3e499e82642598256b 100644
--- a/sites/all/modules/ctools/help/about.html
+++ b/sites/all/modules/ctools/help/about.html
@@ -1,28 +1,28 @@
-<p>The Chaos Tool Suite is a series of tools for developers to make code that I've found to be very useful to Views and Panels more readily available. Certain methods of doing things, particularly with AJAX, exportable objects, and a plugin system are proving to be ideas that are useful outside of just Views and Panels. This module does not offer much directly ot the end user, but instead creates a library for other modules to use. If you are an end user and some module asked you to install the CTools suite, then this is far as you really need to go. If you're a developer and are interested in these tools, read on!</p>
+<p>The Chaos Tool Suite is a series of tools for developers to make code that I've found to be very useful to Views and Panels more readily available. Certain methods of doing things, particularly with AJAX, exportable objects and a plugin system, are proving to be ideas that are useful outside of just Views and Panels. This module does not offer much directly to the end user, but instead, creates a library for other modules to use. If you are an end user and some module asked you to install the CTools suite, then this is far as you really need to go. If you're a developer and are interested in these tools, read on!</p>
 
 <h2>Tools provided by CTools</h2>
 
 <dl>
 <dt><a href="&topic:ctools/plugins&">Plugins</a></dt>
-<dd>The plugins tool allows a module to allow <b>other</b> modules (and themes!) to provide plugins which provide some kind of functionality or some kind of task. For example, in Panels there are several types of plugins: Content types (which are like blocks), layouts (which are page layouts) and styles (which can be used to style a panel). Each plugin is represented by a .inc file, and the functionaly they offer can differ wildly.
+<dd>The plugins tool allows a module to allow <b>other</b> modules (and themes!) to provide plugins which provide some kind of functionality or some kind of task. For example, in Panels there are several types of plugins: Content types (which are like blocks), layouts (which are page layouts) and styles (which can be used to style a panel). Each plugin is represented by a .inc file, and the functionality they offer can differ wildly.</dd>
 
 <dt><a href="&topic:ctools/context&">Context</a></dt>
 <dd>Context is the idea that the objects that are used in page generation have more value than simply creating a single piece of output. Instead, contexts can be used to create multiple pieces of content that can all be put onto the page. Additionally, contexts can be used to derive other contexts via relationships, such as determining the node author and displaying data about the new context.</dd>
 
 <dt><a href="&topic:ctools/ajax&">AJAX Tools</a></dt>
-<dd>AJAX (also known as AHAH) is a method of allowing the browser and the server to communicate without requiring a page refresh. It can be used to create complicated interactive forms, but it is somewhat difficult to integrate into Drupal's Form API. These tools make it easier to accomplish this goal. In addition, CTools provides a few other javascript helpers, such as a modal dialog, a collapsible div, a simple dropdown and dependent checkboxes.
+<dd>AJAX (also known as AHAH) is a method of allowing the browser and the server to communicate without requiring a page refresh. It can be used to create complicated interactive forms, but it is somewhat difficult to integrate into Drupal's Form API. These tools make it easier to accomplish this goal. In addition, CTools provides a few other javascript helpers, such as a modal dialog, a collapsible div, a simple dropdown and dependent checkboxes.</dd>
 
 <dt><a href="&topic:ctools/css&">CSS scrubbing and caching</a></dt>
-<dd>Drupal comes with a fantastic array of tools to ensure HTML is safe to output, but does not contain any similar tools for CSS. CTools provides a small tool to sanitize CSS so that user-input CSS code can still be safely used. It also provides a method for caching CSS for better performance.</dd>
+<dd>Drupal comes with a fantastic array of tools to ensure HTML is safe to output but does not contain any similar tools for CSS. CTools provides a small tool to sanitize CSS, so user-input CSS code can still be safely used. It also provides a method for caching CSS for better performance.</dd>
 
 <dt><a href="&topic:ctools/export&">Exportable objects</a></dt>
-<dd>Views and Panels both use objects that can either be in code or in the database, and the object can be exported into a piece of PHP code so that it can be moved from site to site or out of the database entirely. This library abstracts that so that other modules can use this same concept for their data.</dd>
+<dd>Views and Panels both use objects that can either be in code or in the database, and the objects can be exported into a piece of PHP code, so they can be moved from site to site or out of the database entirely. This library abstracts that functionality, so other modules can use this same concept for their data.</dd>
 
 <dt><a href="&topic:ctools/form&">Form tools</a></dt>
 <dd>Drupal 6's FAPI really improved over Drupal 5, and made a lot of things possible. Still, it missed a few items that were needed to make form wizards and truly dynamic AJAX forms possible. CTools includes a replacement for drupal_get_form() that has a few more options and allows the caller to examine the $form_state once the form has completed.</dd>
 
 <dt><a href="&topic:ctools/wizard&">Form wizards</a></dt>
-<dd>Finally! An easy way to have form wizards, which is any 'form' which is actually a string of forms that build up to a final conclusion. The form wizard supports a single entry point, the ability to choose whether or not the user can go forward/back/up on the form and easy callbacks to handle the difficult job of dealing with data in between forms.</dd>
+<dd>Finally! An easy way to have form wizards, which is any 'form' that is actually a string of forms that build up to a final conclusion. The form wizard supports a single entry point, the ability to choose whether or not the user can go forward/back/up on the form and easy callbacks to handle the difficult job of dealing with data in between forms.</dd>
 
 <dt><a href="&topic:ctools/object-cache&">Temporary object cache</a></dt>
 <dd>For normal forms, all of the data needed for an object is stored in the form so that the browser handles a lot of the work. For multi-step and ajax forms, however, this is impractical, and letting the browser store data can be insecure. The object cache provides a non-volatile location to store temporary data while the form is being worked on. This is much safer than the standard Drupal caching mechanism, which is volatile, meaning it can be cleared at any time and any system using it must be capable of recreating the data that was there. This system also allows for object locking, since any object which has an item in the cache from another person can be assumed to be 'locked for editing'.</dd>
diff --git a/sites/all/modules/ctools/help/export.html b/sites/all/modules/ctools/help/export.html
index 57ccd9394ffc46831ae502c1c85f9ef701a0ff85..3a774e8217635cdd43a1c887d02de57aff8a3f78 100644
--- a/sites/all/modules/ctools/help/export.html
+++ b/sites/all/modules/ctools/help/export.html
@@ -112,7 +112,7 @@ function mymodule_schema() {
 <dd>Human readable title of the export key. Defaults to 'Name'. Because the schema is cached, do not translate this. It must instead be translated when used.</dd>
 
 <dt>primary key</dt>
-<dd>Objects should contain a primary key which is a database identifier primarily used to determine if an object has been written or not. This is required for the default CRUD save callback to work.</dd>
+<dd>A single field within the table that is to be used as the main identifier to discern whether or not the object has been written. As the schema definition's primary key value will be used by default, it is not usually necessary to define this.</dd>
 
 <dt>object</dt>
 <dd>The class the object should be created as, if 'object factory' is not set. If this is not set either, defaults as stdClass.</dd>
diff --git a/sites/all/modules/ctools/help/object-cache.html b/sites/all/modules/ctools/help/object-cache.html
index 7e31c7454ce3b83a4fe7756081637ee1c60a5cbb..801a83672225e47ed1f2760056fecaa948a5e4e7 100644
--- a/sites/all/modules/ctools/help/object-cache.html
+++ b/sites/all/modules/ctools/help/object-cache.html
@@ -16,7 +16,7 @@ ctools_include('object-cache');
  * will not result in multiple database reads.
  *
  * @param $obj
- *   A 32 character or less string to define what kind of object is being
+ *   A 128 character or less string to define what kind of object is being
  *   stored; primarily this is used to prevent collisions.
  * @param $name
  *   The name of the object being stored.
@@ -34,7 +34,7 @@ function ctools_object_cache_get($obj, $name, $skip_cache = FALSE) {
  * Store an object in the non-volatile ctools cache.
  *
  * @param $obj
- *   A 32 character or less string to define what kind of object is being
+ *   A 128 character or less string to define what kind of object is being
  *   stored; primarily this is used to prevent collisions.
  * @param $name
  *   The name of the object being stored.
@@ -49,7 +49,7 @@ function ctools_object_cache_set($obj, $name, $cache) {
  * Remove an object from the non-volatile ctools cache
  *
  * @param $obj
- *   A 32 character or less string to define what kind of object is being
+ *   A 128 character or less string to define what kind of object is being
  *   stored; primarily this is used to prevent collisions.
  * @param $name
  *   The name of the object being removed.
@@ -67,7 +67,7 @@ function ctools_object_cache_clear($obj, $name) {
  * modify them.
  *
  * @param $obj
- *   A 32 character or less string to define what kind of object is being
+ *   A 128 character or less string to define what kind of object is being
  *   stored; primarily this is used to prevent collisions.
  * @param $name
  *   The name of the object being removed.
@@ -89,7 +89,7 @@ function ctools_object_cache_test($obj, $name) {
  * This is useful for clearing a lock.
  *
  * @param $obj
- *   A 32 character or less string to define what kind of object is being
+ *   A 128 character or less string to define what kind of object is being
  *   stored; primarily this is used to prevent collisions.
  * @param $name
  *   The name of the object being removed.
diff --git a/sites/all/modules/ctools/help/plugins-creating.html b/sites/all/modules/ctools/help/plugins-creating.html
index 186bb74c4c6a613e09754ebca9154a54c5fb743d..29a9014f189de24c1a569c15d3d037389b8c7866 100644
--- a/sites/all/modules/ctools/help/plugins-creating.html
+++ b/sites/all/modules/ctools/help/plugins-creating.html
@@ -1,7 +1,7 @@
 There are two primary pieces to using plugins. The first is getting the data, and the second is using the data.
 
 <h2>Defining a plugin</h2>
-To define that you offer a plugin that modules can implement, you first must implement hook_ctools_plugin_type() to tell the plugin system about your plugin. 
+To define that you offer a plugin that modules can implement, you first must implement hook_ctools_plugin_type() to tell the plugin system about your plugin.
 
 <pre>
 /**
@@ -49,7 +49,7 @@ The following information can be specified for each plugin type:
 <dd><em>Defaults to:</em> <strong>FALSE</strong></dd>
 <dd>If set to TRUE, the plugin type can automatically have 'child plugins' meaning each plugin can actually provide multiple plugins. This is mostly used for plugins that store some of their information in the database, such as views, blocks or exportable custom versions of plugins.</dd>
 <dd>To implement, each plugin can have a 'get child' and 'get children' callback. Both of these should be implemented for performance reasons, since it is best to avoid getting all children if necessary, but if 'get child' is not implemented, it will fall back to 'get children' if it has to.</dd>
-<dd>Child plugins should be named parent:child, with the : being the separator, so that it knows which parent plugin to ask for teh child. The 'get children' method should at least return the parent plugin as part of the list, unless it wants the parent plugin itself to not be a choosable option, which is not unheard of. </dd>
+<dd>Child plugins should be named parent:child, with the : being the separator, so that it knows which parent plugin to ask for the child. The 'get children' method should at least return the parent plugin as part of the list, unless it wants the parent plugin itself to not be a choosable option, which is not unheard of. </dd>
 <dd>'get children' arguments are ($plugin, $parent) and 'get child' arguments are ($plugin, $parent, $child).
 </dl>
 
diff --git a/sites/all/modules/ctools/help/plugins-implementing.html b/sites/all/modules/ctools/help/plugins-implementing.html
index ea62aa26ce32d53fd17d292f0901909fa2826d4c..070f08ded1b292d5f83741127cfa7ab9f6e480e1 100644
--- a/sites/all/modules/ctools/help/plugins-implementing.html
+++ b/sites/all/modules/ctools/help/plugins-implementing.html
@@ -56,4 +56,6 @@ $plugin = array(
 
 <p>Several values will be filled in for you automatically, but you can override them if necessary. They include 'name', 'path', 'file' and 'module'. Additionally, the plugin can owner can provide other defaults as well.</p>
 
+<p>There are no required keys by the plugin system itself. The only requirements in the $plugin array will be defined by the plugin type.</p>
+
 <p>After this array, if your plugin needs functions, they can be declared. Different plugin types have different needs here, so exactly what else will be needed will change from type to type.</p>
diff --git a/sites/all/modules/ctools/includes/cleanstring.inc b/sites/all/modules/ctools/includes/cleanstring.inc
index 530fc0ff3b8a4e9cdb74ed5d9690c56219d26abd..56b3e36f47857654ec9f9972c0b458d7c67e65d3 100644
--- a/sites/all/modules/ctools/includes/cleanstring.inc
+++ b/sites/all/modules/ctools/includes/cleanstring.inc
@@ -58,10 +58,9 @@ define('CTOOLS_PREG_CLASS_ALNUM',
 '\x{2ce5}-\x{2cff}\x{2d6f}\x{2e00}-\x{3005}\x{3007}-\x{303b}\x{303d}-\x{303f}' .
 '\x{3099}-\x{309e}\x{30a0}\x{30fb}-\x{30fe}\x{3190}-\x{319f}\x{31c0}-\x{31cf}' .
 '\x{3200}-\x{33ff}\x{4dc0}-\x{4dff}\x{a015}\x{a490}-\x{a716}\x{a802}\x{a806}' .
-'\x{a80b}\x{a823}-\x{a82b}\x{f8ff}\x{fb1e}\x{fb29}\x{fd3e}\x{fd3f}\x{fdfc}-' .
-'\x{fe6b}\x{feff}-\x{ff0f}\x{ff1a}-\x{ff20}\x{ff3b}-\x{ff40}\x{ff5b}-\x{ff65}' .
-'\x{ff70}\x{ff9e}\x{ff9f}\x{ffe0}-\x{fffd}');
-
+'\x{a80b}\x{a823}-\x{a82b}\x{e000}-\x{f8ff}\x{fb1e}\x{fb29}\x{fd3e}\x{fd3f}' .
+'\x{fdfc}-\x{fe6b}\x{feff}-\x{ff0f}\x{ff1a}-\x{ff20}\x{ff3b}-\x{ff40}\x{ff5b}-' .
+'\x{ff65}\x{ff70}\x{ff9e}\x{ff9f}\x{ffe0}-\x{fffd}');
 
 /**
  * Clean up a string value provided by a module.
diff --git a/sites/all/modules/ctools/includes/content.inc b/sites/all/modules/ctools/includes/content.inc
index 134c951dfa78782c15c18a299285093b0742293e..890ec23a70ae9c1946d9776f6bceaff710a355d7 100644
--- a/sites/all/modules/ctools/includes/content.inc
+++ b/sites/all/modules/ctools/includes/content.inc
@@ -458,9 +458,12 @@ function ctools_content_admin_info($type, $subtype, $conf, $context = NULL) {
   if ($function = ctools_plugin_get_function($plugin, 'admin info')) {
     $output = $function($subtype, $conf, $context);
   }
+
   if (empty($output) || !is_object($output)) {
     $output = new stdClass();
-    $output->title = t('No info');
+    // replace the _ with " " for a better output
+    $subtype = check_plain(str_replace("_", " ", $subtype));
+    $output->title = $subtype;
     $output->content = t('No info available.');
   }
   return $output;
diff --git a/sites/all/modules/ctools/includes/context-admin.inc b/sites/all/modules/ctools/includes/context-admin.inc
index aeb7270d2eb3f8b5de7667cdbc71a1e6f3b28fd1..7e5cd02b9ef83b7c14b4e365adb9fcff8ba31385 100644
--- a/sites/all/modules/ctools/includes/context-admin.inc
+++ b/sites/all/modules/ctools/includes/context-admin.inc
@@ -636,8 +636,8 @@ function ctools_context_get_defaults($plugin_definition, $object, $type) {
     'name' => $plugin_definition['name'],
   );
 
-  if (isset($plugin['defaults'])) {
-    $defaults = $plugin['defaults'];
+  if (isset($plugin_definition['defaults'])) {
+    $defaults = $plugin_definition['defaults'];
   }
   else if (isset($subtype['defaults'])) {
     $defaults = $subtype['defaults'];
diff --git a/sites/all/modules/ctools/includes/context-task-handler.inc b/sites/all/modules/ctools/includes/context-task-handler.inc
index 3735870ebd4b9e96911123aa9bc9b12d2ef89bce..617f20eb35b5e0e9137fc9ecf3119820b0aad913 100644
--- a/sites/all/modules/ctools/includes/context-task-handler.inc
+++ b/sites/all/modules/ctools/includes/context-task-handler.inc
@@ -66,9 +66,9 @@ function ctools_context_handler_get_render_handler($task, $subtask, $handlers, $
       // If not, if it's a 'context' type handler, use the default tester.
       if ($plugin['handler type'] == 'context') {
         $test = ctools_context_handler_default_test($handler, $contexts, $args);
-      }
-      if ($test) {
-        return $id;
+        if ($test) {
+          return $id;
+        }
       }
     }
   }
@@ -100,6 +100,24 @@ function ctools_context_handler_render_handler($task, $subtask, $handler, $conte
     return NULL;
   }
 
+  if ($page) {
+    if ($subtask) {
+      $task_name = page_manager_make_task_name($task['name'], $subtask['name']);
+    }
+    else {
+      $task_name = $task['name'];
+    }
+
+    page_manager_get_current_page(array(
+      'name' => $task_name,
+      'task' => $task,
+      'subtask' => $subtask,
+      'contexts' => $contexts,
+      'arguments' => $args,
+      'handler' => $handler,
+    ));
+  }
+
   $info = $function($handler, $contexts, $args);
   if (!$info) {
     return NULL;
@@ -119,22 +137,6 @@ function ctools_context_handler_render_handler($task, $subtask, $handler, $conte
     return $info;
   }
 
-  if ($subtask) {
-    $task_name = page_manager_make_task_name($task['name'], $subtask['name']);
-  }
-  else {
-    $task_name = $task['name'];
-  }
-
-  page_manager_get_current_page(array(
-    'name' => $task_name,
-    'task' => $task,
-    'subtask' => $subtask,
-    'contexts' => $contexts,
-    'arguments' => $args,
-    'handler' => $handler,
-  ));
-
   if (!empty($info['response code']) && $info['response code'] != 200) {
     switch ($info['response code']) {
       case 403:
diff --git a/sites/all/modules/ctools/includes/context.inc b/sites/all/modules/ctools/includes/context.inc
index cc6d39c46b3ff37fda8834ba9436ced69017bf65..5c7a4ceedae803acce77bf4da9be7124e3039627 100644
--- a/sites/all/modules/ctools/includes/context.inc
+++ b/sites/all/modules/ctools/includes/context.inc
@@ -509,7 +509,7 @@ function ctools_context_get_all_converters() {
 /**
  * Let the context convert an argument based upon the converter that was given.
  */
-function ctools_context_convert_context($context, $converter) {
+function ctools_context_convert_context($context, $converter, $converter_options = array()) {
   // Contexts without plugins might be optional placeholders.
   if (empty($context->plugin)) {
     return;
@@ -518,12 +518,12 @@ function ctools_context_convert_context($context, $converter) {
   $value = $context->argument;
   $plugin = ctools_get_context($context->plugin);
   if ($function = ctools_plugin_get_function($plugin, 'convert')) {
-    $value = $function($context, $converter);
+    $value = $function($context, $converter, $converter_options);
   }
 
   foreach (module_implements('ctools_context_converter_alter') as $module) {
     $function = $module . '_ctools_context_converter_alter';
-    $function($context, $converter, $value);
+    $function($context, $converter, $value, $converter_options);
   }
 
   return $value;
@@ -619,7 +619,7 @@ function ctools_context_create_empty($type) {
 /**
  * Perform keyword and context substitutions.
  */
-function ctools_context_keyword_substitute($string, $keywords, $contexts) {
+function ctools_context_keyword_substitute($string, $keywords, $contexts, $converter_options = array()) {
   // Ensure a default keyword exists:
   $keywords['%%'] = '%';
 
@@ -633,7 +633,7 @@ function ctools_context_keyword_substitute($string, $keywords, $contexts) {
 
   // Look for context matches we we only have to convert known matches.
   $matches = array();
-  if (preg_match_all('/%([a-zA-Z0-9%:_-]+)/us', $string, $matches)) {
+  if (preg_match_all('/%(%|[a-zA-Z0-9_-]+(?:\:[a-zA-Z0-9_-]+)?)/us', $string, $matches)) {
     foreach ($matches[1] as $keyword) {
       // Ignore anything it finds with %%.
       if ($keyword[0] == '%') {
@@ -666,7 +666,7 @@ function ctools_context_keyword_substitute($string, $keywords, $contexts) {
         $keywords['%' . $keyword] = '';
       }
       else if (!empty($converter)) {
-        $keywords['%' . $keyword] = ctools_context_convert_context($context_keywords[$context], $converter);
+        $keywords['%' . $keyword] = ctools_context_convert_context($context_keywords[$context], $converter, $converter_options);
       }
       else {
         $keywords['%' . $keyword] = $context_keywords[$keyword]->title;
diff --git a/sites/all/modules/ctools/includes/css.inc b/sites/all/modules/ctools/includes/css.inc
index 29ac2ec9d9032d83bb4967c1e64dcf96323dd499..ee11d488453220098c2296b6636411ba549ea7bf 100644
--- a/sites/all/modules/ctools/includes/css.inc
+++ b/sites/all/modules/ctools/includes/css.inc
@@ -284,8 +284,10 @@ function ctools_css_disassemble($css) {
   $disassembled_css = array();
   // Remove comments.
   $css = preg_replace("/\/\*(.*)?\*\//Usi", "", $css);
-  // Split out each statement
-  $statements = explode("}", $css);
+  // Split out each statement. Match either a right curly brace or a semi-colon
+  // that precedes a left curly brace with no right curly brace separating them.
+  $statements = preg_split('/}|;(?=[^}]*{)/', $css);
+
   // If we have any statements, parse them.
   if (!empty($statements)) {
     // Iterate through all of the statements.
@@ -306,7 +308,10 @@ function ctools_css_disassemble($css) {
       }
 
       // Disassemble the declaration, check it and tuck it into an array.
-      $disassembled_css[$selector_str] = _ctools_css_disassemble_declaration($declaration);
+      if (!isset($disassembled_css[$selector_str])) {
+        $disassembled_css[$selector_str] = array();
+      }
+      $disassembled_css[$selector_str] += _ctools_css_disassemble_declaration($declaration);
     }
   }
   return $disassembled_css;
diff --git a/sites/all/modules/ctools/includes/export-ui.inc b/sites/all/modules/ctools/includes/export-ui.inc
index 89b6d16d10c84c910889a80a3e6b9d9748e9c8d1..16e57d6ed4b0a94318002c88d553c3740e93fd28 100644
--- a/sites/all/modules/ctools/includes/export-ui.inc
+++ b/sites/all/modules/ctools/includes/export-ui.inc
@@ -19,6 +19,7 @@ function ctools_export_ui_process(&$plugin, $info) {
     'export' => array(),
     'allowed operations' => array(),
     'menu' => array(),
+    'redirect' => array(),
     'form' => array(),
     'strings' => array(),
     'list' => NULL,
@@ -115,171 +116,176 @@ function ctools_export_ui_process(&$plugin, $info) {
   );
 
   $plugin['menu']['items'] += array(
-    'list callback' => array(
-      'path' => '',
-      // Menu items are translated by the menu system.
-      // TODO: We need more flexibility in title. The title of the admin page
-      // is not necessarily the title of the object, plus we need
-      // plural, singular, proper, not proper, etc.
-      'title' => $plugin['menu']['menu title'],
-      'description' => $plugin['menu']['menu description'],
-      'page callback' => 'ctools_export_ui_switcher_page',
-      'page arguments' => array($plugin['name'], 'list'),
-      'access callback' => 'ctools_export_ui_task_access',
-      'access arguments' => array($plugin['name'], 'list'),
-      'type' => MENU_NORMAL_ITEM,
-    ),
-    'list' => array(
-      'path' => 'list',
-      'title' => 'List',
-      'page callback' => 'ctools_export_ui_switcher_page',
-      'page arguments' => array($plugin['name'], 'list'),
-      'access callback' => 'ctools_export_ui_task_access',
-      'access arguments' => array($plugin['name'], 'list'),
-      'type' => MENU_DEFAULT_LOCAL_TASK,
-      'weight' => -10,
-    ),
-    'add' => array(
-      'path' => 'add',
-      'title' => 'Add',
-      'page callback' => 'ctools_export_ui_switcher_page',
-      'page arguments' => array($plugin['name'], 'add'),
-      'access callback' => 'ctools_export_ui_task_access',
-      'access arguments' => array($plugin['name'], 'add'),
-      'type' => MENU_LOCAL_ACTION,
-    ),
-    'edit callback' => array(
-      'path' => 'list/%ctools_export_ui',
-      'page callback' => 'ctools_export_ui_switcher_page',
-      'page arguments' => array($plugin['name'], 'edit', $prefix_count + 2),
-      'load arguments' => array($plugin['name']),
-      'access callback' => 'ctools_export_ui_task_access',
-      'access arguments' => array($plugin['name'], 'edit', $prefix_count + 2),
-      'type' => MENU_CALLBACK,
-    ),
-    'edit' => array(
-      'path' => 'list/%ctools_export_ui/edit',
-      'title' => 'Edit',
-      'page callback' => 'ctools_export_ui_switcher_page',
-      'page arguments' => array($plugin['name'], 'edit', $prefix_count + 2),
-      'load arguments' => array($plugin['name']),
-      'access callback' => 'ctools_export_ui_task_access',
-      'access arguments' => array($plugin['name'], 'edit', $prefix_count + 2),
-      'type' => MENU_DEFAULT_LOCAL_TASK,
-      'weight' => -10,
-    ),
+    'list callback' => array(),
+    'list' => array(),
+    'add' => array(),
+    'edit callback' => array(),
+    'edit' => array(),
+  );
+
+  $plugin['menu']['items']['list callback'] += array(
+    'path' => '',
+    // Menu items are translated by the menu system.
+    // TODO: We need more flexibility in title. The title of the admin page
+    // is not necessarily the title of the object, plus we need
+    // plural, singular, proper, not proper, etc.
+    'title' => $plugin['menu']['menu title'],
+    'description' => $plugin['menu']['menu description'],
+    'page callback' => 'ctools_export_ui_switcher_page',
+    'page arguments' => array($plugin['name'], 'list'),
+    'access callback' => 'ctools_export_ui_task_access',
+    'access arguments' => array($plugin['name'], 'list'),
+    'type' => MENU_NORMAL_ITEM,
+  );
+
+  $plugin['menu']['items']['list'] += array(
+    'path' => 'list',
+    'title' => 'List',
+    'page callback' => 'ctools_export_ui_switcher_page',
+    'page arguments' => array($plugin['name'], 'list'),
+    'access callback' => 'ctools_export_ui_task_access',
+    'access arguments' => array($plugin['name'], 'list'),
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -10,
+  );
+
+  $plugin['menu']['items']['add'] += array(
+    'path' => 'add',
+    'title' => 'Add',
+    'page callback' => 'ctools_export_ui_switcher_page',
+    'page arguments' => array($plugin['name'], 'add'),
+    'access callback' => 'ctools_export_ui_task_access',
+    'access arguments' => array($plugin['name'], 'add'),
+    'type' => MENU_LOCAL_ACTION,
+  );
+
+  $plugin['menu']['items']['edit callback'] += array(
+    'path' => 'list/%ctools_export_ui',
+    'page callback' => 'ctools_export_ui_switcher_page',
+    'page arguments' => array($plugin['name'], 'edit', $prefix_count + 2),
+    'load arguments' => array($plugin['name']),
+    'access callback' => 'ctools_export_ui_task_access',
+    'access arguments' => array($plugin['name'], 'edit', $prefix_count + 2),
+    'type' => MENU_CALLBACK,
+  );
+
+  $plugin['menu']['items']['edit'] += array(
+    'path' => 'list/%ctools_export_ui/edit',
+    'title' => 'Edit',
+    'page callback' => 'ctools_export_ui_switcher_page',
+    'page arguments' => array($plugin['name'], 'edit', $prefix_count + 2),
+    'load arguments' => array($plugin['name']),
+    'access callback' => 'ctools_export_ui_task_access',
+    'access arguments' => array($plugin['name'], 'edit', $prefix_count + 2),
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -10,
   );
 
   if ($plugin['allowed operations']['import']) {
-    $plugin['menu']['items'] += array(
-      'import' => array(
-        'path' => 'import',
-        'title' => 'Import',
-        'page callback' => 'ctools_export_ui_switcher_page',
-        'page arguments' => array($plugin['name'], 'import'),
-        'access callback' => 'ctools_export_ui_task_access',
-        'access arguments' => array($plugin['name'], 'import'),
-        'type' => MENU_LOCAL_ACTION,
-      ),
+    $plugin['menu']['items'] += array('import' => array());
+    $plugin['menu']['items']['import'] += array(
+      'path' => 'import',
+      'title' => 'Import',
+      'page callback' => 'ctools_export_ui_switcher_page',
+      'page arguments' => array($plugin['name'], 'import'),
+      'access callback' => 'ctools_export_ui_task_access',
+      'access arguments' => array($plugin['name'], 'import'),
+      'type' => MENU_LOCAL_ACTION,
     );
   }
 
   if ($plugin['allowed operations']['export']) {
-    $plugin['menu']['items'] += array(
-      'export' => array(
-        'path' => 'list/%ctools_export_ui/export',
-        'title' => 'Export',
-        'page callback' => 'ctools_export_ui_switcher_page',
-        'page arguments' => array($plugin['name'], 'export', $prefix_count + 2),
-        'load arguments' => array($plugin['name']),
-        'access callback' => 'ctools_export_ui_task_access',
-        'access arguments' => array($plugin['name'], 'export', $prefix_count + 2),
-        'type' => MENU_LOCAL_TASK,
-      ),
+    $plugin['menu']['items'] += array('export' => array());
+    $plugin['menu']['items']['export'] += array(
+      'path' => 'list/%ctools_export_ui/export',
+      'title' => 'Export',
+      'page callback' => 'ctools_export_ui_switcher_page',
+      'page arguments' => array($plugin['name'], 'export', $prefix_count + 2),
+      'load arguments' => array($plugin['name']),
+      'access callback' => 'ctools_export_ui_task_access',
+      'access arguments' => array($plugin['name'], 'export', $prefix_count + 2),
+      'type' => MENU_LOCAL_TASK,
     );
   }
 
   if ($plugin['allowed operations']['revert']) {
-    $plugin['menu']['items'] += array(
-      'revert' => array(
-        'path' => 'list/%ctools_export_ui/revert',
-        'title' => 'Revert',
-        'page callback' => 'ctools_export_ui_switcher_page',
-        // Note: Yes, 'delete' op is correct.
-        'page arguments' => array($plugin['name'], 'delete', $prefix_count + 2),
-        'load arguments' => array($plugin['name']),
-        'access callback' => 'ctools_export_ui_task_access',
-        'access arguments' => array($plugin['name'], 'revert', $prefix_count + 2),
-        'type' => MENU_CALLBACK,
-      ),
+    $plugin['menu']['items'] += array('revert' => array());
+    $plugin['menu']['items']['revert'] += array(
+      'path' => 'list/%ctools_export_ui/revert',
+      'title' => 'Revert',
+      'page callback' => 'ctools_export_ui_switcher_page',
+      // Note: Yes, 'delete' op is correct.
+      'page arguments' => array($plugin['name'], 'delete', $prefix_count + 2),
+      'load arguments' => array($plugin['name']),
+      'access callback' => 'ctools_export_ui_task_access',
+      'access arguments' => array($plugin['name'], 'revert', $prefix_count + 2),
+      'type' => MENU_CALLBACK,
     );
   }
 
   if ($plugin['allowed operations']['delete']) {
-    $plugin['menu']['items'] += array(
-      'delete' => array(
-        'path' => 'list/%ctools_export_ui/delete',
-        'title' => 'Delete',
-        'page callback' => 'ctools_export_ui_switcher_page',
-        'page arguments' => array($plugin['name'], 'delete', $prefix_count + 2),
-        'load arguments' => array($plugin['name']),
-        'access callback' => 'ctools_export_ui_task_access',
-        'access arguments' => array($plugin['name'], 'delete', $prefix_count + 2),
-        'type' => MENU_CALLBACK,
-      ),
+    $plugin['menu']['items'] += array('delete' => array());
+    $plugin['menu']['items']['delete'] += array(
+      'path' => 'list/%ctools_export_ui/delete',
+      'title' => 'Delete',
+      'page callback' => 'ctools_export_ui_switcher_page',
+      'page arguments' => array($plugin['name'], 'delete', $prefix_count + 2),
+      'load arguments' => array($plugin['name']),
+      'access callback' => 'ctools_export_ui_task_access',
+      'access arguments' => array($plugin['name'], 'delete', $prefix_count + 2),
+      'type' => MENU_CALLBACK,
     );
   }
 
   if ($plugin['allowed operations']['clone']) {
-    $plugin['menu']['items'] += array(
-      'clone' => array(
-        'path' => 'list/%ctools_export_ui/clone',
-        'title' => 'Clone',
-        'page callback' => 'ctools_export_ui_switcher_page',
-        'page arguments' => array($plugin['name'], 'clone', $prefix_count + 2),
-        'load arguments' => array($plugin['name']),
-        'access callback' => 'ctools_export_ui_task_access',
-        'access arguments' => array($plugin['name'], 'clone', $prefix_count + 2),
-        'type' => MENU_CALLBACK,
-      ),
+    $plugin['menu']['items'] += array('clone' => array());
+    $plugin['menu']['items']['clone'] += array(
+      'path' => 'list/%ctools_export_ui/clone',
+      'title' => 'Clone',
+      'page callback' => 'ctools_export_ui_switcher_page',
+      'page arguments' => array($plugin['name'], 'clone', $prefix_count + 2),
+      'load arguments' => array($plugin['name']),
+      'access callback' => 'ctools_export_ui_task_access',
+      'access arguments' => array($plugin['name'], 'clone', $prefix_count + 2),
+      'type' => MENU_CALLBACK,
     );
   }
 
   if ($plugin['allowed operations']['enable']) {
-    $plugin['menu']['items'] += array(
-      'enable' => array(
-        'path' => 'list/%ctools_export_ui/enable',
-        'title' => 'Enable',
-        'page callback' => 'ctools_export_ui_switcher_page',
-        'page arguments' => array($plugin['name'], 'enable', $prefix_count + 2),
-        'load arguments' => array($plugin['name']),
-        'access callback' => 'ctools_export_ui_task_access',
-        'access arguments' => array($plugin['name'], 'enable', $prefix_count + 2),
-        'type' => MENU_CALLBACK,
-      ),
+    $plugin['menu']['items'] += array('enable' => array());
+    $plugin['menu']['items']['enable'] += array(
+      'path' => 'list/%ctools_export_ui/enable',
+      'title' => 'Enable',
+      'page callback' => 'ctools_export_ui_switcher_page',
+      'page arguments' => array($plugin['name'], 'enable', $prefix_count + 2),
+      'load arguments' => array($plugin['name']),
+      'access callback' => 'ctools_export_ui_task_access',
+      'access arguments' => array($plugin['name'], 'enable', $prefix_count + 2),
+      'type' => MENU_CALLBACK,
     );
   }
 
   if ($plugin['allowed operations']['disable']) {
-    $plugin['menu']['items'] += array(
-      'disable' => array(
-        'path' => 'list/%ctools_export_ui/disable',
-        'title' => 'Disable',
-        'page callback' => 'ctools_export_ui_switcher_page',
-        'page arguments' => array($plugin['name'], 'disable', $prefix_count + 2),
-        'load arguments' => array($plugin['name']),
-        'access callback' => 'ctools_export_ui_task_access',
-        'access arguments' => array($plugin['name'], 'disable', $prefix_count + 2),
-        'type' => MENU_CALLBACK,
-      ),
+    $plugin['menu']['items'] += array('disable' => array());
+    $plugin['menu']['items']['disable'] += array(
+      'path' => 'list/%ctools_export_ui/disable',
+      'title' => 'Disable',
+      'page callback' => 'ctools_export_ui_switcher_page',
+      'page arguments' => array($plugin['name'], 'disable', $prefix_count + 2),
+      'load arguments' => array($plugin['name']),
+      'access callback' => 'ctools_export_ui_task_access',
+      'access arguments' => array($plugin['name'], 'disable', $prefix_count + 2),
+      'type' => MENU_CALLBACK,
     );
   }
 
-  // Define some redirects that should happen after edit/add/clone operations.
-  $plugin['redirect'] = array(
+  // Define some redirects that should happen after edit/add/clone/delete operations.
+  $plugin['redirect'] += array(
     'add' => $base_path,
     'clone' => $base_path,
     'edit' => $base_path,
+    'delete' => $base_path,
+    'revert' => $base_path,
     'import' => $base_path,
   );
 
diff --git a/sites/all/modules/ctools/includes/export.inc b/sites/all/modules/ctools/includes/export.inc
index dfbe74b9e57dba97fbcef4bf76b39a26a90464e9..0b2ef46dfa2e1a5e63fda9535ba71e89f3f93685 100644
--- a/sites/all/modules/ctools/includes/export.inc
+++ b/sites/all/modules/ctools/includes/export.inc
@@ -386,10 +386,15 @@ function ctools_export_crud_disable($table, $object) {
  */
 function ctools_export_load_object($table, $type = 'all', $args = array()) {
   $cache = &drupal_static(__FUNCTION__);
+  $cache_table_exists = &drupal_static(__FUNCTION__ . '_table_exists', array());
   $cached_database = &drupal_static('ctools_export_load_object_all');
 
+  if (!array_key_exists($table, $cache_table_exists)) {
+    $cache_table_exists[$table] = db_table_exists($table);
+  }
+
   $schema = ctools_export_get_schema($table);
-  if (empty($schema) || !db_table_exists($table)) {
+  if (empty($schema) || !$cache_table_exists[$table]) {
     return array();
   }
 
diff --git a/sites/all/modules/ctools/includes/object-cache.inc b/sites/all/modules/ctools/includes/object-cache.inc
index 5de4df71c6c306e3a2cc809cce1e6f8730576044..29225b05bdda8ef6102c5509790b43679e918a61 100644
--- a/sites/all/modules/ctools/includes/object-cache.inc
+++ b/sites/all/modules/ctools/includes/object-cache.inc
@@ -16,26 +16,33 @@
  * will not result in multiple database reads.
  *
  * @param $obj
- *   A 32 character or less string to define what kind of object is being
+ *   A 128 character or less string to define what kind of object is being
  *   stored; primarily this is used to prevent collisions.
  * @param $name
  *   The name of the object being stored.
  * @param $skip_cache
  *   Skip the memory cache, meaning this must be read from the db again.
+ * @param $sid
+ *   The session id, allowing someone to use Session API or their own solution;
+ *   defaults to session_id().
  *
  * @deprecated $skip_cache is deprecated in favor of drupal_static*
  * @return
  *   The data that was cached.
  */
-function ctools_object_cache_get($obj, $name, $skip_cache = FALSE) {
+function ctools_object_cache_get($obj, $name, $skip_cache = FALSE, $sid = NULL) {
   $cache = &drupal_static(__FUNCTION__, array());
   $key = "$obj:$name";
   if ($skip_cache) {
     unset($cache[$key]);
   }
 
+  if (!$sid) {
+    $sid = session_id();
+  }
+
   if (!array_key_exists($key, $cache)) {
-    $data = db_query('SELECT * FROM {ctools_object_cache} WHERE sid = :session_id AND obj = :object AND name = :name', array(':session_id' => session_id(), ':object' => $obj, ':name' => $name))
+    $data = db_query('SELECT * FROM {ctools_object_cache} WHERE sid = :session_id AND obj = :object AND name = :name', array(':session_id' => $sid, ':object' => $obj, ':name' => $name))
       ->fetchObject();
     if ($data) {
       $cache[$key] = unserialize($data->data);
@@ -48,14 +55,17 @@ function ctools_object_cache_get($obj, $name, $skip_cache = FALSE) {
  * Store an object in the non-volatile ctools cache.
  *
  * @param $obj
- *   A 32 character or less string to define what kind of object is being
+ *   A 128 character or less string to define what kind of object is being
  *   stored; primarily this is used to prevent collisions.
  * @param $name
  *   The name of the object being stored.
  * @param $cache
  *   The object to be cached. This will be serialized prior to writing.
+ * @param $sid
+ *   The session id, allowing someone to use Session API or their own solution;
+ *   defaults to session_id().
  */
-function ctools_object_cache_set($obj, $name, $cache) {
+function ctools_object_cache_set($obj, $name, $cache, $sid = NULL) {
   // Store the CTools session id in the user session to force a
   // session for anonymous users in Drupal 7 and Drupal 6 Pressflow.
   // see http://drupal.org/node/562374, http://drupal.org/node/861778
@@ -63,10 +73,15 @@ function ctools_object_cache_set($obj, $name, $cache) {
     $_SESSION['ctools_hold_session'] = TRUE;
   }
 
-  ctools_object_cache_clear($obj, $name);
+  ctools_object_cache_clear($obj, $name, $sid);
+
+  if (!$sid) {
+    $sid = session_id();
+  }
+
   db_insert('ctools_object_cache')
     ->fields(array(
-      'sid' => session_id(),
+      'sid' => $sid,
       'obj' => $obj,
       'name' => $name,
       'data' => serialize($cache),
@@ -79,14 +94,22 @@ function ctools_object_cache_set($obj, $name, $cache) {
  * Remove an object from the non-volatile ctools cache
  *
  * @param $obj
- *   A 32 character or less string to define what kind of object is being
+ *   A 128 character or less string to define what kind of object is being
  *   stored; primarily this is used to prevent collisions.
  * @param $name
  *   The name of the object being removed.
+ * @param $sid
+ *   The session id, allowing someone to use Session API or their own solution;
+ *   defaults to session_id().
  */
-function ctools_object_cache_clear($obj, $name) {
+function ctools_object_cache_clear($obj, $name, $sid = NULL) {
+
+  if (!$sid) {
+    $sid = session_id();
+  }
+
   db_delete('ctools_object_cache')
-    ->condition('sid', session_id())
+    ->condition('sid', $sid)
     ->condition('obj', $obj)
     ->condition('name', $name)
     ->execute();
@@ -102,16 +125,24 @@ function ctools_object_cache_clear($obj, $name) {
  * modify them.
  *
  * @param $obj
- *   A 32 character or less string to define what kind of object is being
+ *   A 128 character or less string to define what kind of object is being
  *   stored; primarily this is used to prevent collisions.
  * @param $name
  *   The name of the object being removed.
+ * @param $sid
+ *   The session id, allowing someone to use Session API or their own solution;
+ *   defaults to session_id().
  *
  * @return
  *   An object containing the UID and updated date if found; NULL if not.
  */
-function ctools_object_cache_test($obj, $name) {
-  return db_query('SELECT s.uid, c.updated FROM {ctools_object_cache} c INNER JOIN {sessions} s ON c.sid = s.sid WHERE s.sid <> :session_id AND c.obj = :obj AND c.name = :name ORDER BY c.updated ASC', array(':session_id' => session_id(), ':obj' => $obj, ':name' => $name))
+function ctools_object_cache_test($obj, $name, $sid = NULL) {
+
+  if (!$sid) {
+    $sid = session_id();
+  }
+
+  return db_query('SELECT s.uid, c.updated FROM {ctools_object_cache} c INNER JOIN {sessions} s ON c.sid = s.sid WHERE s.sid <> :session_id AND c.obj = :obj AND c.name = :name ORDER BY c.updated ASC', array(':session_id' => $sid, ':obj' => $obj, ':name' => $name))
     ->fetchObject();
 }
 
@@ -122,7 +153,7 @@ function ctools_object_cache_test($obj, $name) {
  * an an administration UI.
  *
  * @param $obj
- *   A 32 character or less string to define what kind of object is being
+ *   A 128 character or less string to define what kind of object is being
  *   stored; primarily this is used to prevent collisions.
  * @param $names
  *   An array of names of objects
@@ -141,7 +172,7 @@ function ctools_object_cache_test_objects($obj, $names) {
  * This is useful for clearing a lock.
  *
  * @param $obj
- *   A 32 character or less string to define what kind of object is being
+ *   A 128 character or less string to define what kind of object is being
  *   stored; primarily this is used to prevent collisions.
  * @param $name
  *   The name of the object being removed.
diff --git a/sites/all/modules/ctools/includes/plugins.inc b/sites/all/modules/ctools/includes/plugins.inc
index a6d4bd65923e77e42306e2a3754f6849e9cc11b4..2dbdd48494404009259b7cf4bd1ff116b259b94f 100644
--- a/sites/all/modules/ctools/includes/plugins.inc
+++ b/sites/all/modules/ctools/includes/plugins.inc
@@ -246,17 +246,10 @@ function ctools_get_plugins($module, $type, $id = NULL) {
     $cache = cache_get("plugins:$module:$type", $info[$module][$type]['cache table']);
 
     if (!empty($cache->data)) {
-      // Verify that the file exists as it may have been moved in a multisite environment
-      if (isset($cache->data['path'])) {
-        // Files to be registered may be in two locations. Check for both of them.
-        if ((is_array($cache->data['path']) && file_exists($cache->data['path']['file'])) ||
-           file_exists($cache->data['path'])) {
-          // Cache load succeeded so use the cached plugin list.
-          $plugins[$module][$type]   = $cache->data;
-          // Set $setup to true so we know things where loaded.
-          $setup[$module][$type]     = TRUE;
-        }
-      }
+      // Cache load succeeded so use the cached plugin list.
+      $plugins[$module][$type]   = $cache->data;
+      // Set $setup to true so we know things where loaded.
+      $setup[$module][$type]     = TRUE;
     }
     else {
       // Cache load failed so store that we need to build and write the cache.
diff --git a/sites/all/modules/ctools/includes/stylizer.inc b/sites/all/modules/ctools/includes/stylizer.inc
index 1f945986bf032a320f2bb69c007a0b5500944085..9fdc81d771481aedf81d220f99762515dffbf75d 100644
--- a/sites/all/modules/ctools/includes/stylizer.inc
+++ b/sites/all/modules/ctools/includes/stylizer.inc
@@ -960,7 +960,7 @@ function ctools_stylizer_edit_style_form_choose_submit($form, &$form_state) {
 function ctools_stylizer_edit_style_form_default($form, &$form_state) {
   ctools_add_js('stylizer');
   ctools_add_css('stylizer');
-  drupal_add_library('system', 'drupal.farbtastic');
+  drupal_add_library('system', 'farbtastic');
 
   $plugin = &$form_state['base_style_plugin'];
   $settings = &$form_state['settings'];
diff --git a/sites/all/modules/ctools/includes/wizard.inc b/sites/all/modules/ctools/includes/wizard.inc
index 0e2e11ddf3d109215392c32aaef363043fd8f49f..6f5d7944b863ec48f4934a24dfb7fd749399f1fb 100644
--- a/sites/all/modules/ctools/includes/wizard.inc
+++ b/sites/all/modules/ctools/includes/wizard.inc
@@ -256,16 +256,13 @@ function ctools_wizard_wrapper($form, &$form_state) {
 
     if (!empty($form_info['show trail'])) {
       if (!empty($form_info['free trail'])) {
-        // ctools_wizard_get_path() returns results suitable for #redirect
-        // which can only be directly used in drupal_goto. We have to futz
-        // with it.
+        // ctools_wizard_get_path() returns results suitable for
+        // $form_state['redirect] which can only be directly used in
+        // drupal_goto. We have to futz a bit with it.
         $path = ctools_wizard_get_path($form_info, $id);
         $options = array();
         if (!empty($path[1])) {
-          $options['query'] = $path[1];
-        }
-        if (!empty($path[2])) {
-          $options['fragment'] = $path[2];
+          $options = $path[1];
         }
         $title = l($title, $path[0], $options);
       }
@@ -433,6 +430,12 @@ function ctools_wizard_submit(&$form, &$form_state) {
       }
       else if ($type == 'next') {
         $form_state['redirect'] = ctools_wizard_get_path($form_state['form_info'], $form_state['clicked_button']['#next']);
+        if (!empty($_GET['destination'])) {
+          // We don't want drupal_goto redirect this request
+          // back. ctools_wizard_get_path ensures that the destination is
+          // carried over on subsequent pages.
+          unset($_GET['destination']);
+        }
       }
       else if (isset($form_state['form_info']['return path'])) {
         $form_state['redirect'] = $form_state['form_info']['return path'];
@@ -452,11 +455,27 @@ function ctools_wizard_get_path($form_info, $step) {
     foreach ($form_info['path'] as $id => $part) {
       $form_info['path'][$id] = str_replace('%step', $step, $form_info['path'][$id]);
     }
-    return $form_info['path'];
+    $path = $form_info['path'];
   }
   else {
-    return array(str_replace('%step', $step, $form_info['path']));
+    $path = array(str_replace('%step', $step, $form_info['path']));
   }
+
+  // If destination is set, carry it over so it'll take effect when
+  // saving. The submit handler will unset destination to avoid drupal_goto
+  // redirecting us.
+  if (!empty($_GET['destination'])) {
+    // Ensure that options is an array.
+    if (!isset($path[1]) || !is_array($path[1])) {
+      $path[1] = array();
+    }
+    // Ensure that the query part of options is an array.
+    $path[1] += array('query' => array());
+    // Add the destination parameter, if not set already.
+    $path[1]['query'] += drupal_get_destination();
+  }
+
+  return $path;
 }
 
 /**
diff --git a/sites/all/modules/ctools/js/ajax-responder.js b/sites/all/modules/ctools/js/ajax-responder.js
index e244106fe7b4d355ad621caab2d430b2121bf976..1cad618efbdbc0e82fcb4128efd08e2c49014f14 100644
--- a/sites/all/modules/ctools/js/ajax-responder.js
+++ b/sites/all/modules/ctools/js/ajax-responder.js
@@ -88,10 +88,11 @@
     var url_class = '.' + $(item).attr('id') + '-url';
     $(url_class).each(
       function() {
-        if (url && $(this).val()) {
+        var $this = $(this);
+        if (url && $this.val()) {
           url += '/';
         }
-        url += $(this).val();
+        url += $this.val();
       });
     return url;
   };
diff --git a/sites/all/modules/ctools/js/auto-submit.js b/sites/all/modules/ctools/js/auto-submit.js
index bc5a58ea4eb71a986cd99cd76089db708c0ad5de..890dd1ffde6da0e0664390b71680701f865c2e59 100644
--- a/sites/all/modules/ctools/js/auto-submit.js
+++ b/sites/all/modules/ctools/js/auto-submit.js
@@ -16,6 +16,12 @@
  *   '#attributes' => array('class' => array('ctools-auto-submit-full-form')),
  * @endcode
  *
+ * If you want to exclude a field from the ctool-auto-submit-full-form auto submission,
+ * add the class ctools-auto-submit-exclude to the form element. With FAPI, add:
+ * @code
+ *   '#attributes' => array('class' => array('ctools-auto-submit-exclude')),
+ * @endcode
+ *
  * Finally, you have to identify which button you want clicked for autosubmit.
  * The behavior of this button will be honored if it's ajaxy or not:
  * @code
@@ -30,15 +36,16 @@ Drupal.behaviors.CToolsAutoSubmit = {
   attach: function(context) {
     // 'this' references the form element
     function triggerSubmit (e) {
-      if (!$(this).hasClass('ctools-ajaxing')) {
-        $(this).find('.ctools-auto-submit-click').click();
+      var $this = $(this);
+      if (!$this.hasClass('ctools-ajaxing')) {
+        $this.find('.ctools-auto-submit-click').click();
       }
     }
 
     // the change event bubbles so we only need to bind it to the outer form
     $('form.ctools-auto-submit-full-form', context)
       .add('.ctools-auto-submit', context)
-      .filter('form, select, input:not(:text, :submit)')
+      .filter('form, select, input:not(:text, :submit, .ctools-auto-submit-exclude)')
       .once('ctools-auto-submit')
       .change(function (e) {
         // don't trigger on text change for full-form
@@ -67,6 +74,7 @@ Drupal.behaviors.CToolsAutoSubmit = {
     ];
     // Don't wait for change event on textfields
     $('.ctools-auto-submit-full-form input:text, input:text.ctools-auto-submit', context)
+      .filter(':not(.ctools-auto-submit-exclude)')
       .once('ctools-auto-submit', function () {
         // each textinput element has his own timeout
         var timeoutID = 0;
diff --git a/sites/all/modules/ctools/js/collapsible-div.js b/sites/all/modules/ctools/js/collapsible-div.js
index 363345c18dff3bf92a45168dff24408dab926e43..da9bff9e9b331cc0e5556f0ed9df5bf5ef3a811a 100644
--- a/sites/all/modules/ctools/js/collapsible-div.js
+++ b/sites/all/modules/ctools/js/collapsible-div.js
@@ -232,11 +232,9 @@
   /**
    * Support Drupal's 'behaviors' system for binding.
    */
-  Drupal.behaviors.CToolsCollapsible = { 
+  Drupal.behaviors.CToolsCollapsible = {
     attach: function(context) {
-      $('.ctools-collapsible-container:not(.ctools-collapsible-processed)', context)
-        .each(Drupal.CTools.bindCollapsible)
-        .addClass('ctools-collapsible-processed');
+      $('.ctools-collapsible-container', context).once('ctools-collapsible', Drupal.CTools.bindCollapsible);
     }
   }
 })(jQuery);
diff --git a/sites/all/modules/ctools/js/dependent.js b/sites/all/modules/ctools/js/dependent.js
index cca36222197539f491a1951fdf436dfb90416c59..07ff021eac27d86074b7f64e95478bb91a718689 100644
--- a/sites/all/modules/ctools/js/dependent.js
+++ b/sites/all/modules/ctools/js/dependent.js
@@ -1,17 +1,15 @@
 /**
  * @file
- *
- * Written by dmitrig01 (Dmitri Gaskin) for CTools; this provides dependent
- * visibility for form items in CTools' ajax forms.
+ * Provides dependent visibility for form items in CTools' ajax forms.
  *
  * To your $form item definition add:
- * - '#process' => array('CTools_process_dependency'),
- * - Add '#dependency' => array('id-of-form-item' => array(list, of, values, that,
-     make, this, item, show),
+ * - '#process' => array('ctools_process_dependency'),
+ * - '#dependency' => array('id-of-form-item' => array(list, of, values, that,
+ *   make, this, item, show),
  *
  * Special considerations:
- * - radios are harder. Because Drupal doesn't give radio groups individual ids,
- *   use 'radio:name-of-radio'
+ * - Radios are harder. Because Drupal doesn't give radio groups individual IDs,
+ *   use 'radio:name-of-radio'.
  *
  * - Checkboxes don't have their own id, so you need to add one in a div
  *   around the checkboxes via #prefix and #suffix. You actually need to add TWO
@@ -215,8 +213,8 @@
 
       // Really large sets of fields are too slow with the above method, so this
       // is a sort of hacked one that's faster but much less flexible.
-      $("select.ctools-master-dependent:not(.ctools-processed)")
-        .addClass('ctools-processed')
+      $("select.ctools-master-dependent")
+        .once('ctools-dependent')
         .change(function() {
           var val = $(this).val();
           if (val == 'all') {
diff --git a/sites/all/modules/ctools/js/dropbutton.js b/sites/all/modules/ctools/js/dropbutton.js
index 4dd20b0b8020ac9b5bacf1125059591cb14f0e87..49bc10749205f09f1f671e24aa4c9bb614a411a1 100644
--- a/sites/all/modules/ctools/js/dropbutton.js
+++ b/sites/all/modules/ctools/js/dropbutton.js
@@ -26,13 +26,12 @@
   Drupal.behaviors.CToolsDropbutton = {
     attach: function() {
       // Process buttons. All dropbuttons are buttons.
-      $('.ctools-button:not(.ctools-button-processed)')
-      .removeClass('ctools-no-js')
-      .addClass('ctools-button-processed');
+      $('.ctools-button')
+        .once('ctools-button')
+        .removeClass('ctools-no-js');
+
       // Process dropbuttons. Not all buttons are dropbuttons.
-      $('.ctools-dropbutton:not(.ctools-dropbutton-processed)')
-      .addClass('ctools-dropbutton-processed')
-      .each(function() {
+      $('.ctools-dropbutton').once('ctools-dropbutton', function() {
         var $dropbutton = $(this);
         var $button = $('.ctools-content', $dropbutton);
         var $secondaryActions = $('li', $button).not(':first');
diff --git a/sites/all/modules/ctools/js/dropdown.js b/sites/all/modules/ctools/js/dropdown.js
index 522f4d5d7643789d2903f25d486caff796f4d5c3..c829ae2fe134cbf97064fcf44fe8b9425636009a 100644
--- a/sites/all/modules/ctools/js/dropdown.js
+++ b/sites/all/modules/ctools/js/dropdown.js
@@ -24,50 +24,50 @@
 (function ($) {
   Drupal.behaviors.CToolsDropdown = {
     attach: function() {
-      $('div.ctools-dropdown:not(.ctools-dropdown-processed)')
-        .removeClass('ctools-dropdown-no-js')
-        .addClass('ctools-dropdown-processed')
-        .each(function() {
-          var $dropdown = $(this);
-          var open = false;
-          var hovering = false;
-          var timerID = 0;
+      $('div.ctools-dropdown').once('ctools-dropdown', function() {
+        var $dropdown = $(this);
+        var open = false;
+        var hovering = false;
+        var timerID = 0;
 
-          var toggle = function(close) {
-            // if it's open or we're told to close it, close it.
-            if (open || close) {
-              // If we're just toggling it, close it immediately.
-              if (!close) {
-                open = false;
-                $("div.ctools-dropdown-container", $dropdown).slideUp(100);
-              }
-              else {
-                // If we were told to close it, wait half a second to make
-                // sure that's what the user wanted.
-                // Clear any previous timer we were using.
-                if (timerID) {
-                  clearTimeout(timerID);
-                }
-                timerID = setTimeout(function() {
-                  if (!hovering) {
-                    open = false;
-                    $("div.ctools-dropdown-container", $dropdown).slideUp(100);
-                  }}, 500);
-              }
+        $dropdown.removeClass('ctools-dropdown-no-js');
+
+        var toggle = function(close) {
+          // if it's open or we're told to close it, close it.
+          if (open || close) {
+            // If we're just toggling it, close it immediately.
+            if (!close) {
+              open = false;
+              $("div.ctools-dropdown-container", $dropdown).slideUp(100);
             }
             else {
-              // open it.
-              open = true;
-              $("div.ctools-dropdown-container", $dropdown)
-                .animate({height: "show", opacity: "show"}, 100);
+              // If we were told to close it, wait half a second to make
+              // sure that's what the user wanted.
+              // Clear any previous timer we were using.
+              if (timerID) {
+                clearTimeout(timerID);
+              }
+              timerID = setTimeout(function() {
+                if (!hovering) {
+                  open = false;
+                  $("div.ctools-dropdown-container", $dropdown).slideUp(100);
+                }
+              }, 500);
             }
           }
-          $("a.ctools-dropdown-link", $dropdown).click(function() {
-              toggle();
-              return false;
-            });
+          else {
+            // open it.
+            open = true;
+            $("div.ctools-dropdown-container", $dropdown)
+              .animate({height: "show", opacity: "show"}, 100);
+          }
+        }
+        $("a.ctools-dropdown-link", $dropdown).click(function() {
+          toggle();
+          return false;
+        });
 
-          $dropdown.hover(
+        $dropdown.hover(
             function() {
               hovering = true;
             }, // hover in
@@ -76,12 +76,12 @@
               toggle(true);
               return false;
             });
-            // @todo -- just use CSS for this noise.
-          $("div.ctools-dropdown-container a").hover(
-            function() { $(this).addClass('ctools-dropdown-hover'); },
-            function() { $(this).removeClass('ctools-dropdown-hover'); }
-            );
-        });
+        // @todo -- just use CSS for this noise.
+        $("div.ctools-dropdown-container a").hover(
+          function() { $(this).addClass('ctools-dropdown-hover'); },
+          function() { $(this).removeClass('ctools-dropdown-hover'); }
+        );
+      });
     }
   }
 })(jQuery);
diff --git a/sites/all/modules/ctools/js/jump-menu.js b/sites/all/modules/ctools/js/jump-menu.js
index 6bd0af6be78fa9283dbbebec71c6ce1339395a38..7b0928a68e79fdbb2d3490094b59b56ac6477a7a 100644
--- a/sites/all/modules/ctools/js/jump-menu.js
+++ b/sites/all/modules/ctools/js/jump-menu.js
@@ -1,13 +1,13 @@
 
 (function($) {
-  Drupal.behaviors.CToolsJumpMenu = { 
+  Drupal.behaviors.CToolsJumpMenu = {
     attach: function(context) {
-      $('.ctools-jump-menu-hide:not(.ctools-jump-menu-processed)')
-        .addClass('ctools-jump-menu-processed')
+      $('.ctools-jump-menu-hide')
+        .once('ctools-jump-menu')
         .hide();
 
-      $('.ctools-jump-menu-change:not(.ctools-jump-menu-processed)')
-        .addClass('ctools-jump-menu-processed')
+      $('.ctools-jump-menu-change')
+        .once('ctools-jump-menu')
         .change(function() {
           var loc = $(this).val();
           var urlArray = loc.split('::');
@@ -20,8 +20,8 @@
           return false;
         });
 
-      $('.ctools-jump-menu-button:not(.ctools-jump-menu-processed)')
-        .addClass('ctools-jump-menu-processed')
+      $('.ctools-jump-menu-button')
+        .once('ctools-jump-menu')
         .click(function() {
           // Instead of submitting the form, just perform the redirect.
 
diff --git a/sites/all/modules/ctools/js/modal.js b/sites/all/modules/ctools/js/modal.js
index acb2227a6b4f501ec97bf0c99b5fc439b052c6e8..5b417d02be2aa8f7fc2c7de4ea4390db516ee11b 100644
--- a/sites/all/modules/ctools/js/modal.js
+++ b/sites/all/modules/ctools/js/modal.js
@@ -175,10 +175,10 @@
    * Submit responder to do an AJAX submit on all modal forms.
    */
   Drupal.CTools.Modal.submitAjaxForm = function(e) {
-    var url = $(this).attr('action');
-    var form = $(this);
+    var $form = $(this);
+    var url = $form.attr('action');
 
-    setTimeout(function() { Drupal.CTools.AJAX.ajaxSubmit(form, url); }, 1);
+    setTimeout(function() { Drupal.CTools.AJAX.ajaxSubmit($form, url); }, 1);
     return false;
   }
 
@@ -192,83 +192,79 @@
       // used together safely.
       /*
        * @todo remimplement the warm caching feature
-      $('a.ctools-use-modal-cache:not(.ctools-use-modal-processed)', context)
-        .addClass('ctools-use-modal-processed')
-        .click(Drupal.CTools.Modal.clickAjaxCacheLink)
-        .each(function () {
-          Drupal.CTools.AJAX.warmCache.apply(this);
-        });
+       $('a.ctools-use-modal-cache', context).once('ctools-use-modal', function() {
+         $(this).click(Drupal.CTools.Modal.clickAjaxCacheLink);
+         Drupal.CTools.AJAX.warmCache.apply(this);
+       });
         */
 
-      $('area.ctools-use-modal:not(.ctools-use-modal-processed), a.ctools-use-modal:not(.ctools-use-modal-processed)', context)
-        .addClass('ctools-use-modal-processed')
-        .click(Drupal.CTools.Modal.clickAjaxLink)
-        .each(function () {
-          // Create a drupal ajax object
-          var element_settings = {};
-          if ($(this).attr('href')) {
-            element_settings.url = $(this).attr('href');
-            element_settings.event = 'click';
-            element_settings.progress = { type: 'throbber' };
-          }
-          var base = $(this).attr('href');
-          Drupal.ajax[base] = new Drupal.ajax(base, this, element_settings);
-
-          // Attach the display behavior to the ajax object
+      $('area.ctools-use-modal, a.ctools-use-modal', context).once('ctools-use-modal', function() {
+        var $this = $(this);
+        $this.click(Drupal.CTools.Modal.clickAjaxLink);
+        // Create a drupal ajax object
+        var element_settings = {};
+        if ($this.attr('href')) {
+          element_settings.url = $this.attr('href');
+          element_settings.event = 'click';
+          element_settings.progress = { type: 'throbber' };
         }
-      );
+        var base = $this.attr('href');
+        Drupal.ajax[base] = new Drupal.ajax(base, this, element_settings);
+      });
 
       // Bind buttons
-      $('input.ctools-use-modal:not(.ctools-use-modal-processed), button.ctools-use-modal:not(.ctools-use-modal-processed)', context)
-        .addClass('ctools-use-modal-processed')
-        .click(Drupal.CTools.Modal.clickAjaxLink)
-        .each(function() {
-          var button = this;
-          var element_settings = {};
-
-          // AJAX submits specified in this manner automatically submit to the
-          // normal form action.
-          element_settings.url = Drupal.CTools.Modal.findURL(this);
-          element_settings.event = 'click';
-
-          var base = $(this).attr('id');
-          Drupal.ajax[base] = new Drupal.ajax(base, this, element_settings);
-
-          // Make sure changes to settings are reflected in the URL.
-          $('.' + $(button).attr('id') + '-url').change(function() {
-            Drupal.ajax[base].options.url = Drupal.CTools.Modal.findURL(button);
-          });
+      $('input.ctools-use-modal, button.ctools-use-modal', context).once('ctools-use-modal', function() {
+        var $this = $(this);
+        $this.click(Drupal.CTools.Modal.clickAjaxLink);
+        var button = this;
+        var element_settings = {};
+
+        // AJAX submits specified in this manner automatically submit to the
+        // normal form action.
+        element_settings.url = Drupal.CTools.Modal.findURL(this);
+        element_settings.event = 'click';
+
+        var base = $this.attr('id');
+        Drupal.ajax[base] = new Drupal.ajax(base, this, element_settings);
+
+        // Make sure changes to settings are reflected in the URL.
+        $('.' + $(button).attr('id') + '-url').change(function() {
+          Drupal.ajax[base].options.url = Drupal.CTools.Modal.findURL(button);
         });
+      });
 
       // Bind our custom event to the form submit
-      $('#modal-content form:not(.ctools-use-modal-processed)', context)
-        .addClass('ctools-use-modal-processed')
-        .each(function() {
-          var element_settings = {};
-
-          element_settings.url = $(this).attr('action');
-          element_settings.event = 'submit';
-          element_settings.progress = { 'type': 'throbber' }
-          var base = $(this).attr('id');
-
-          Drupal.ajax[base] = new Drupal.ajax(base, this, element_settings);
-          Drupal.ajax[base].form = $(this);
-
-          $('input[type=submit], button', this).click(function() {
-            Drupal.ajax[base].element = this;
-            this.form.clk = this;
-          });
-
+      $('#modal-content form', context).once('ctools-use-modal', function() {
+        var $this = $(this);
+        var element_settings = {};
+
+        element_settings.url = $this.attr('action');
+        element_settings.event = 'submit';
+        element_settings.progress = { 'type': 'throbber' }
+        var base = $this.attr('id');
+
+        Drupal.ajax[base] = new Drupal.ajax(base, this, element_settings);
+        Drupal.ajax[base].form = $this;
+
+        $('input[type=submit], button', this).click(function(event) {
+          Drupal.ajax[base].element = this;
+          this.form.clk = this;
+          // An empty event means we were triggered via .click() and
+          // in jquery 1.4 this won't trigger a submit.
+          if (event.bubbles == undefined) {
+            $(this.form).trigger('submit');
+            return false;
+          }
         });
+      });
 
       // Bind a click handler to allow elements with the 'ctools-close-modal'
       // class to close the modal.
-      $('.ctools-close-modal', context).once('ctools-close-modal-processed', function () {
-        $(this).click(function() {
+      $('.ctools-close-modal', context).once('ctools-close-modal')
+        .click(function() {
           Drupal.CTools.Modal.dismiss();
           return false;
         });
-      });
     }
   };
 
@@ -282,7 +278,10 @@
       Drupal.CTools.Modal.show(Drupal.CTools.Modal.getSettings(ajax.element));
     }
     $('#modal-title').html(response.title);
-    $('#modal-content').html(response.output);
+    // Simulate an actual page load by scrolling to the top after adding the
+    // content. This is helpful for allowing users to see error messages at the
+    // top of a form, etc.
+    $('#modal-content').html(response.output).scrollTop(0);
     Drupal.attachBehaviors();
   }
 
@@ -318,10 +317,11 @@
     var url_class = '.' + $(item).attr('id') + '-url';
     $(url_class).each(
       function() {
-        if (url && $(this).val()) {
+        var $this = $(this);
+        if (url && $this.val()) {
           url += '/';
         }
-        url += $(this).val();
+        url += $this.val();
       });
     return url;
   };
@@ -508,12 +508,23 @@
     // jQuery magic loop through the instances and run the animations or removal.
     content.each(function(){
       if ( animation == 'fade' ) {
-        $('#modalContent').fadeOut(speed,function(){$('#modalBackdrop').fadeOut(speed, function(){$(this).remove();});$(this).remove();});
+        $('#modalContent').fadeOut(speed, function() {
+          $('#modalBackdrop').fadeOut(speed, function() {
+            $(this).remove();
+          });
+          $(this).remove();
+        });
       } else {
         if ( animation == 'slide' ) {
-          $('#modalContent').slideUp(speed,function(){$('#modalBackdrop').slideUp(speed, function(){$(this).remove();});$(this).remove();});
+          $('#modalContent').slideUp(speed,function() {
+            $('#modalBackdrop').slideUp(speed, function() {
+              $(this).remove();
+            });
+            $(this).remove();
+          });
         } else {
-          $('#modalContent').remove();$('#modalBackdrop').remove();
+          $('#modalContent').remove();
+          $('#modalBackdrop').remove();
         }
       }
     });
diff --git a/sites/all/modules/ctools/js/stylizer.js b/sites/all/modules/ctools/js/stylizer.js
index dc1caaa5bf0616433746ed75af525779c4c23c86..16d6c49d5ea9650cd2146adc5cc42efd59712a28 100644
--- a/sites/all/modules/ctools/js/stylizer.js
+++ b/sites/all/modules/ctools/js/stylizer.js
@@ -183,11 +183,12 @@
       };
 
       // Add hook
+      var $this = $(this);
       var hook = $('<div class="hook"></div>');
-      $(this).after(hook);
+      $this.after(hook);
       hooks.push(hook);
 
-      $(this).parent().find('.lock').click();
+      $this.parent().find('.lock').click();
       this.i = i;
       inputs.push(this);
     })
diff --git a/sites/all/modules/ctools/page_manager/page_manager.admin.inc b/sites/all/modules/ctools/page_manager/page_manager.admin.inc
index 22ecd63c828866e9c8e5d3f70aa30c9a6e7a94c4..c01961be87cae74ef8415132b6ae96d33a9010f5 100644
--- a/sites/all/modules/ctools/page_manager/page_manager.admin.inc
+++ b/sites/all/modules/ctools/page_manager/page_manager.admin.inc
@@ -27,7 +27,11 @@ function page_manager_list_page($js = NULL) {
   }
 
   if (module_exists('advanced_help') && !$js) {
-    drupal_set_message(theme('advanced_help_topic', 'page_manager', 'getting-started', t('See the getting started guide for more information.')));
+    drupal_set_message(theme('advanced_help_topic', array(
+      'module' => 'page_manager',
+      'topic' => 'getting-started',
+      'type' => t('See the getting started guide for more information.'),
+    )));
   }
 
   $tasks = page_manager_get_tasks_by_type('page');
@@ -1208,7 +1212,10 @@ function page_manager_render_operations(&$page, $operations, $active_trail, $att
   }
 
   if ($output[$location]) {
-    $output[$location] = '<ul class="page-manager-operations ' . $attributes['class'] . '">' . $output[$location] . '</ul>';
+    $classes = isset($attributes['class']) && is_array($attributes['class']) ? $attributes['class'] : array();
+    $classes[] = 'page-manager-operations';
+
+    $output[$location] = '<ul class="' . implode(' ', $classes) . '">' . $output[$location] . '</ul>';
 
     if (!empty($attributes['title'])) {
       $class = '';
diff --git a/sites/all/modules/ctools/page_manager/page_manager.info b/sites/all/modules/ctools/page_manager/page_manager.info
index 28ef10855334e27e9f662bb22387019f7487612c..d3e358809d12dce56a64b2eb55dd07bf863860d0 100644
--- a/sites/all/modules/ctools/page_manager/page_manager.info
+++ b/sites/all/modules/ctools/page_manager/page_manager.info
@@ -4,9 +4,9 @@ core = 7.x
 dependencies[] = ctools
 package = Chaos tool suite
 
-; Information added by drupal.org packaging script on 2012-03-28
-version = "7.x-1.0"
+; Information added by drupal.org packaging script on 2012-08-18
+version = "7.x-1.2"
 core = "7.x"
 project = "ctools"
-datestamp = "1332962446"
+datestamp = "1345319204"
 
diff --git a/sites/all/modules/ctools/page_manager/page_manager.install b/sites/all/modules/ctools/page_manager/page_manager.install
index ad2781c8c7ef603e0db001946aa7c3b84b678ba2..b170ce7215913c0d6964440c48fba5dc98de7182 100644
--- a/sites/all/modules/ctools/page_manager/page_manager.install
+++ b/sites/all/modules/ctools/page_manager/page_manager.install
@@ -23,6 +23,8 @@ function page_manager_schema_1() {
       'identifier' => 'handler',
       'bulk export' => TRUE,
       'export callback' => 'page_manager_export_task_handler',
+      'load callback' => 'page_manager_export_task_handler_load',
+      'delete callback' => 'page_manager_delete_task_handler',
       'primary key' => 'did',
       'api' => array(
         'owner' => 'page_manager',
diff --git a/sites/all/modules/ctools/page_manager/page_manager.module b/sites/all/modules/ctools/page_manager/page_manager.module
index 790c64ed6afed6ffc6ca7057f2273ec863769bbe..62f6d275cfa3afcff48f6f88e6bc4cdfc1372e08 100644
--- a/sites/all/modules/ctools/page_manager/page_manager.module
+++ b/sites/all/modules/ctools/page_manager/page_manager.module
@@ -140,7 +140,6 @@ function page_manager_menu() {
 
   // Provide menu items for each task.
   foreach ($tasks as $task_id => $task) {
-    $handlers = page_manager_get_task_handler_plugins($task);
     // Allow the task to add its own menu items.
     if ($function = ctools_plugin_get_function($task, 'hook menu')) {
       $function($items, $task);
@@ -696,6 +695,44 @@ function page_manager_export_task_handler($handler, $indent = '') {
   return $output;
 }
 
+/**
+ * Loads page manager handler for export.
+ *
+ * Callback to load page manager handler within ctools_export_crud_load().
+ *
+ * @param string $name
+ *   The name of the handler to load.
+ *
+ * @return
+ *   Loaded page manager handler object, extended with external properties.
+ */
+function page_manager_export_task_handler_load($name) {
+  $table = 'page_manager_handlers';
+  $schema = ctools_export_get_schema($table);
+  $export = $schema['export'];
+
+  $result = ctools_export_load_object($table, 'names', array($name));
+  if (isset($result[$name])) {
+    $handler = $result[$name];
+
+    // Weight is stored in additional table so that in-code task handlers
+    // don't need to get written to the database just because they have their
+    // weight changed. Therefore, handler could have no correspondent database
+    // entry. Revert will not be performed for this handler and the weight
+    // will not be reverted. To make possible revert of the weight field
+    // export_type must simulate that the handler is stored in the database.
+    $handler->export_type = EXPORT_IN_DATABASE;
+
+    // Also, page manager handler weight should be overriden with correspondent
+    // weight from page_manager_weights table, if there is one.
+    $result = db_query('SELECT weight FROM {page_manager_weights} WHERE name = (:names)', array(':names' => $handler->name))->fetchField();
+    if (is_numeric($result)) {
+      $handler->weight = $result;
+    }
+    return $handler;
+  }
+}
+
 /**
  * Create a new task handler object.
  *
diff --git a/sites/all/modules/ctools/page_manager/plugins/tasks/page.admin.inc b/sites/all/modules/ctools/page_manager/plugins/tasks/page.admin.inc
index 4e6e749431b3f3d744cb193a3b1f4279d8a550eb..69ac02deee71d0e8eed17a332521e12fe48fc305 100644
--- a/sites/all/modules/ctools/page_manager/plugins/tasks/page.admin.inc
+++ b/sites/all/modules/ctools/page_manager/plugins/tasks/page.admin.inc
@@ -1056,7 +1056,6 @@ function page_manager_page_subtask_argument_ajax($step = NULL, $task_name = NULL
 
     $clone_state = $form_state;
     $clone_state['allow temp'] = TRUE;
-    page_manager_page_form_argument($form, $clone_state);
     $form = drupal_build_form('page_manager_page_form_argument', $form_state);
 
     // Render just the table portion.
diff --git a/sites/all/modules/ctools/plugins/access/entity_field_value.inc b/sites/all/modules/ctools/plugins/access/entity_field_value.inc
index 1fb1fe8ceb2fefcb0772289042f5b4e6f8af100b..59b01fbb8600467d86b54f623c51ee225c392d52 100644
--- a/sites/all/modules/ctools/plugins/access/entity_field_value.inc
+++ b/sites/all/modules/ctools/plugins/access/entity_field_value.inc
@@ -141,7 +141,13 @@ function ctools_entity_field_value_ctools_access_check($conf, $context, $plugin)
 
   if ($field_items = field_get_items($entity_type, $context->data, $field_name)) {
     $langcode = field_language($entity_type, $context->data, $field_name);
-
+    // Get field storage columns.
+    $instance = field_info_instance($entity_type, $field_name, $bundle_type);
+    $field = field_info_field_by_id($instance['field_id']);
+    $columns = array();
+    foreach ($field['columns'] as $column => $attributes) {
+      $columns[$column] = _field_sql_storage_columnname($field_name, $column);
+    }
     foreach ($conf as $potential_field => $values) {
       if ($field_name === $potential_field) {
 
@@ -152,8 +158,14 @@ function ctools_entity_field_value_ctools_access_check($conf, $context, $plugin)
 
         // Check field value.
         foreach ($field_items as $field_value) {
-          if (in_array($field_value['value'], $conf_value_array)) {
-            return TRUE;
+          foreach ($field_value as $field_column => $value) {
+            // Iterate through config values.
+            foreach ($conf_value_array as $conf_value) {
+              //
+              if ($value == $conf_value[$field_column]) {
+                return TRUE;
+              }
+            }
           }
         }
       }
@@ -168,8 +180,8 @@ function _ctools_entity_field_value_ctools_access_get_conf_field_values($values,
   }
   $conf_values = array();
 
-  foreach ($values[$langcode] as $value) {
-    $conf_values[] = $value['value'];
+  foreach ($values[$langcode] as $delta => $value) {
+    $conf_values[$delta] = $value;
   }
 
   return $conf_values;
diff --git a/sites/all/modules/ctools/plugins/content_types/block/block.inc b/sites/all/modules/ctools/plugins/content_types/block/block.inc
index 866f72e63cbb2fe429d8f582912026f9d93f37aa..f5b00632d97f4798c3940d0e1310734c7978a774 100644
--- a/sites/all/modules/ctools/plugins/content_types/block/block.inc
+++ b/sites/all/modules/ctools/plugins/content_types/block/block.inc
@@ -77,6 +77,57 @@ function _ctools_block_content_type_content_type($module, $delta, $block) {
   return $info;
 }
 
+/**
+ * Load block info from the database.
+ *
+ * This is copied from _block_load_blocks(). It doesn't use that
+ * function because _block_load_blocks sorts by region, and it
+ * doesn't cache its results anyway.
+ */
+function _ctools_block_load_blocks() {
+  $blocks = &drupal_static(__FUNCTION__, NULL);
+  if (!isset($blocks)) {
+    global $theme_key;
+
+    $query = db_select('block', 'b');
+    $result = $query
+      ->fields('b')
+      ->condition('b.theme', $theme_key)
+      ->orderBy('b.region')
+      ->orderBy('b.weight')
+      ->orderBy('b.module')
+      ->addTag('block_load')
+      ->addTag('translatable')
+      ->execute();
+
+    $block_info = $result->fetchAllAssoc('bid');
+    // Allow modules to modify the block list.
+    drupal_alter('block_list', $block_info);
+
+    $blocks = array();
+    foreach ($block_info as $block) {
+      $blocks["{$block->module}_{$block->delta}"] = $block;
+    }
+  }
+
+  return $blocks;
+}
+
+/**
+ * Fetch the stored info for a block.
+ *
+ * The primary reason to use this is so that modules which perform alters
+ * can have their alters make it to the block.
+ */
+function _ctools_get_block_info($module, $delta) {
+  $blocks = _ctools_block_load_blocks();
+
+  $key = $module . '_' . $delta;
+  if (isset($blocks[$key])) {
+    return $blocks[$key];
+  }
+}
+
 /**
  * Output function for the 'block' content type. Outputs a block
  * based on the module and delta supplied in the configuration.
@@ -84,15 +135,15 @@ function _ctools_block_content_type_content_type($module, $delta, $block) {
 function ctools_block_content_type_render($subtype, $conf) {
   list($module, $delta) = _ctools_block_get_module_delta($subtype, $conf);
 
-  $info = new stdClass;
-  $info->module = $module;
-  $info->delta = $delta;
+  $info = _ctools_get_block_info($module, $delta);
   $block = module_invoke($module, 'block_view', $delta);
 
-  // Allow modules to modify the block before it is viewed, via either
-  // hook_block_view_alter() or hook_block_view_MODULE_DELTA_alter().
-  drupal_alter(array('block_view', "block_view_{$module}_{$delta}"), $block, $info);
-  $block = (object) $block;
+  if (!empty($info)) {
+    // Allow modules to modify the block before it is viewed, via either
+    // hook_block_view_alter() or hook_block_view_MODULE_DELTA_alter().
+    drupal_alter(array('block_view', "block_view_{$module}_{$delta}"), $block, $info);
+    $block = (object) $block;
+  }
 
   if (empty($block)) {
     return;
@@ -101,7 +152,10 @@ function ctools_block_content_type_render($subtype, $conf) {
   $block->module = $module;
   $block->delta = $delta;
 
-  if (isset($block->subject)) {
+  if ($module == 'block') {
+    $block->title = $info->title;
+  }
+  else if (isset($block->subject)) {
     $block->title = $block->subject;
   }
   else {
diff --git a/sites/all/modules/ctools/plugins/content_types/entity_context/entity_field.inc b/sites/all/modules/ctools/plugins/content_types/entity_context/entity_field.inc
index acc56841699dbd56fd2056f98f75e3b4c06d8469..2da4044d80446523736a6b944bae38e988214364 100644
--- a/sites/all/modules/ctools/plugins/content_types/entity_context/entity_field.inc
+++ b/sites/all/modules/ctools/plugins/content_types/entity_context/entity_field.inc
@@ -154,6 +154,10 @@ function ctools_entity_field_content_type_render($subtype, $conf, $panel_args, $
   $clone->{$field_name}[$language] = $all_values;
   $field_output = field_view_field($entity_type, $clone, $field_name, $field_settings, $language);
 
+  if (!empty($field_output) && !empty($conf['override_title'])) {
+    $field_output['#title'] = filter_xss_admin($conf['override_title_text']);
+  }
+
   // Build the content type block.
   $block = new stdClass();
   $block->module  = 'entity_field';
@@ -219,9 +223,10 @@ function ctools_entity_field_content_type_formatter_styles($form, &$form_state)
   $subtype = $form_state['subtype_name'];
   list($entity_type, $field_name) = explode(':', $subtype, 2);
   $field = field_info_field($field_name);
-  module_load_include('inc', 'field_ui', 'field_ui.admin');
 
-  ctools_include('fields');
+  ctools_form_include($form_state, 'field_ui.admin', 'field_ui', '');
+  ctools_form_include($form_state, 'fields');
+
   $form['ctools_field_list'] = array(
     '#type' => 'value',
     '#value' => array(),
diff --git a/sites/all/modules/ctools/plugins/content_types/form/entity_form_field.inc b/sites/all/modules/ctools/plugins/content_types/form/entity_form_field.inc
index 1caec710799e484db0c651b7186540567cd48f5a..0183fc6dcc289d2e6c4e7737cdc497a827451abd 100644
--- a/sites/all/modules/ctools/plugins/content_types/form/entity_form_field.inc
+++ b/sites/all/modules/ctools/plugins/content_types/form/entity_form_field.inc
@@ -84,8 +84,10 @@ function ctools_entity_form_field_content_type_render($subtype, $conf, $panel_ar
   if (empty($field)) {
     return;
   }
+  $block = new stdClass();
 
   if (isset($context->form)) {
+    $block->content = array();
     $block->content[$field_name] = $context->form[$field_name];
     unset($context->form[$field_name]);
   }
diff --git a/sites/all/modules/ctools/plugins/content_types/node_form/node_form_author.inc b/sites/all/modules/ctools/plugins/content_types/node_form/node_form_author.inc
index 5cb6a344daeb44db50b2a21e0045f91ab39f8cdb..350df40a962d7a2e0f2c5bb42fc56d794ff6e4db 100644
--- a/sites/all/modules/ctools/plugins/content_types/node_form/node_form_author.inc
+++ b/sites/all/modules/ctools/plugins/content_types/node_form/node_form_author.inc
@@ -43,7 +43,7 @@ function ctools_node_form_author_content_type_render($subtype, $conf, $panel_arg
 }
 
 function ctools_node_form_author_content_type_admin_title($subtype, $conf, $context) {
-  return t('"@s" node form publishing options', array('@s' => $context->identifier));
+  return t('"@s" node form author information', array('@s' => $context->identifier));
 }
 
 function ctools_node_form_author_content_type_edit_form($form, &$form_state) {
diff --git a/sites/all/modules/ctools/plugins/content_types/node_form/node_form_publishing.inc b/sites/all/modules/ctools/plugins/content_types/node_form/node_form_publishing.inc
index 3f3cf25d3ca9c5a89944b300ee062e42d9310467..e73cff21b600e856b02c515ae2f8511166d39bac 100644
--- a/sites/all/modules/ctools/plugins/content_types/node_form/node_form_publishing.inc
+++ b/sites/all/modules/ctools/plugins/content_types/node_form/node_form_publishing.inc
@@ -45,7 +45,7 @@ function ctools_node_form_publishing_content_type_render($subtype, $conf, $panel
 }
 
 function ctools_node_form_publishing_content_type_admin_title($subtype, $conf, $context) {
-  return t('"@s" node form author information', array('@s' => $context->identifier));
+  return t('"@s" node form publishing options', array('@s' => $context->identifier));
 }
 
 function ctools_node_form_publishing_content_type_edit_form($form, &$form_state) {
diff --git a/sites/all/modules/ctools/plugins/content_types/term_context/term_description.inc b/sites/all/modules/ctools/plugins/content_types/term_context/term_description.inc
index dc1d26f07d2f0e91e1dd9d7bd65f8095ecae0f28..2b953ed01cd3ae89ca89bc9adf2bdc1beec95cf8 100644
--- a/sites/all/modules/ctools/plugins/content_types/term_context/term_description.inc
+++ b/sites/all/modules/ctools/plugins/content_types/term_context/term_description.inc
@@ -20,14 +20,14 @@ function ctools_term_description_content_type_render($subtype, $conf, $panel_arg
 
   $block->title = $term->name;
   if ($term) {
-    $block->content = _filter_autop(filter_xss_admin($term->description));
+    $block->content = check_markup($term->description, $term->format, '', TRUE);
     $block->delta = $term->tid;
 
     if (user_access('administer taxonomy')) {
       $block->admin_links['update'] = array(
         'title' => t('Edit term'),
         'alt' => t("Edit this term"),
-        'href' => "admin/content/taxonomy/edit/term/$term->tid",
+        'href' => "taxonomy/term/$term->tid/edit",
         'query' => drupal_get_destination(),
       );
     }
diff --git a/sites/all/modules/ctools/plugins/content_types/term_context/term_list.inc b/sites/all/modules/ctools/plugins/content_types/term_context/term_list.inc
index c5ea4a6bfa961a52c16f54d3188b60a4e6914c00..4585611fa580d08a359d5c607eae1928ec000405 100644
--- a/sites/all/modules/ctools/plugins/content_types/term_context/term_list.inc
+++ b/sites/all/modules/ctools/plugins/content_types/term_context/term_list.inc
@@ -77,7 +77,9 @@ function ctools_term_list_content_type_render($subtype, $conf, $panel_args, $con
         }
       }
 
-      $block->content = theme('item_list', array('items' => $items, 'type' => $conf['list_type']));
+      if (!empty($items)) {
+        $block->content = theme('item_list', array('items' => $items, 'type' => $conf['list_type']));
+      }
     }
   }
   else {
diff --git a/sites/all/modules/ctools/plugins/contexts/entity.inc b/sites/all/modules/ctools/plugins/contexts/entity.inc
index 4cccdf6907b1f12c68da9c3e6e51ed582063cd35..b214aa06b7aef12cab4432a1c7d9733561866900 100644
--- a/sites/all/modules/ctools/plugins/contexts/entity.inc
+++ b/sites/all/modules/ctools/plugins/contexts/entity.inc
@@ -247,7 +247,7 @@ function ctools_context_entity_convert_list($plugin) {
 /**
  * Convert a context into a string.
  */
-function ctools_context_entity_convert($context, $type) {
+function ctools_context_entity_convert($context, $type, $options = array()) {
   $entity_type = $context->type[2];
   $entity = entity_get_info($entity_type);
 
@@ -266,7 +266,7 @@ function ctools_context_entity_convert($context, $type) {
 
   $tokens = token_info();
 
-  $values = token_generate($token, array($type => $type), array($token => $context->data));
+  $values = token_generate($token, array($type => $type), array($token => $context->data), $options);
   if (isset($values[$type])) {
     return $values[$type];
   }
diff --git a/sites/all/modules/ctools/plugins/export_ui/ctools_export_ui.class.php b/sites/all/modules/ctools/plugins/export_ui/ctools_export_ui.class.php
index d326dd93f241527bf58b36fb70dd1af571dd4e60..4b44c4a8a9957c4364e9801c2531db95442de61e 100644
--- a/sites/all/modules/ctools/plugins/export_ui/ctools_export_ui.class.php
+++ b/sites/all/modules/ctools/plugins/export_ui/ctools_export_ui.class.php
@@ -339,7 +339,6 @@ class ctools_export_ui {
   function list_form_submit(&$form, &$form_state) {
     // Filter and re-sort the pages.
     $plugin = $this->plugin;
-    $schema = ctools_export_get_schema($this->plugin['schema']);
 
     $prefix = ctools_export_ui_plugin_base_path($plugin);
 
@@ -350,44 +349,7 @@ class ctools_export_ui {
         continue;
       }
 
-      // Note: Creating this list seems a little clumsy, but can't think of
-      // better ways to do this.
-      $allowed_operations = drupal_map_assoc(array_keys($plugin['allowed operations']));
-      $not_allowed_operations = array('import');
-
-      if ($item->{$schema['export']['export type string']} == t('Normal')) {
-        $not_allowed_operations[] = 'revert';
-      }
-      elseif ($item->{$schema['export']['export type string']} == t('Overridden')) {
-        $not_allowed_operations[] = 'delete';
-      }
-      else {
-        $not_allowed_operations[] = 'revert';
-        $not_allowed_operations[] = 'delete';
-      }
-
-      $not_allowed_operations[] = empty($item->disabled) ? 'enable' : 'disable';
-
-      foreach ($not_allowed_operations as $op) {
-        // Remove the operations that are not allowed for the specific
-        // exportable.
-        unset($allowed_operations[$op]);
-      }
-
-      $operations = array();
-
-      foreach ($allowed_operations as $op) {
-        $operations[$op] = array(
-          'title' => $plugin['allowed operations'][$op]['title'],
-          'href' => ctools_export_ui_plugin_menu_path($plugin, $op, $name),
-        );
-        if (!empty($plugin['allowed operations'][$op]['ajax'])) {
-          $operations[$op]['attributes'] = array('class' => array('use-ajax'));
-        }
-        if (!empty($plugin['allowed operations'][$op]['token'])) {
-          $operations[$op]['query'] = array('token' => drupal_get_token($op));
-        }
-      }
+      $operations = $this->build_operations($item);
 
       $this->list_build_row($item, $form_state, $operations);
     }
@@ -500,6 +462,52 @@ class ctools_export_ui {
     ctools_add_css('export-ui-list');
   }
 
+  /**
+   * Builds the operation links for a specific exportable item.
+   */
+  function build_operations($item) {
+    $plugin = $this->plugin;
+    $schema = ctools_export_get_schema($plugin['schema']);
+    $operations = $plugin['allowed operations'];
+    $operations['import'] = FALSE;
+
+    if ($item->{$schema['export']['export type string']} == t('Normal')) {
+      $operations['revert'] = FALSE;
+    }
+    elseif ($item->{$schema['export']['export type string']} == t('Overridden')) {
+      $operations['delete'] = FALSE;
+    }
+    else {
+      $operations['revert'] = FALSE;
+      $operations['delete'] = FALSE;
+    }
+    if (empty($item->disabled)) {
+      $operations['enable'] = FALSE;
+    }
+    else {
+      $operations['disable'] = FALSE;
+    }
+
+    $allowed_operations = array();
+
+    foreach ($operations as $op => $info) {
+      if (!empty($info)) {
+        $allowed_operations[$op] = array(
+          'title' => $info['title'],
+          'href' => ctools_export_ui_plugin_menu_path($plugin, $op, $item->{$this->plugin['export']['key']}),
+        );
+        if (!empty($info['ajax'])) {
+          $allowed_operations[$op]['attributes'] = array('class' => array('use-ajax'));
+        }
+        if (!empty($info['token'])) {
+          $allowed_operations[$op]['query'] = array('token' => drupal_get_token($op));
+        }
+      }
+    }
+
+    return $allowed_operations;
+  }
+
   /**
    * Build a row based on the item.
    *
@@ -1187,16 +1195,25 @@ class ctools_export_ui {
 
     $output = drupal_build_form('ctools_export_ui_delete_confirm_form', $form_state);
     if (!empty($form_state['executed'])) {
-      ctools_export_crud_delete($this->plugin['schema'], $item);
-      $export_key = $this->plugin['export']['key'];
-      $message = str_replace('%title', check_plain($item->{$export_key}), $this->plugin['strings']['confirmation'][$form_state['op']]['success']);
-      drupal_set_message($message);
-      drupal_goto(ctools_export_ui_plugin_base_path($this->plugin));
+      $this->delete_form_submit($form_state);
+      $this->redirect($form_state['op'], $item);
     }
 
     return $output;
   }
 
+  /**
+   * Deletes exportable items from the database.
+   */
+  function delete_form_submit(&$form_state) {
+    $item = $form_state['item'];
+
+    ctools_export_crud_delete($this->plugin['schema'], $item);
+    $export_key = $this->plugin['export']['key'];
+    $message = str_replace('%title', check_plain($item->{$export_key}), $this->plugin['strings']['confirmation'][$form_state['op']]['success']);
+    drupal_set_message($message);
+  }
+
   /**
    * Page callback to display export information for an exportable item.
    */
diff --git a/sites/all/modules/ctools/stylizer/stylizer.info b/sites/all/modules/ctools/stylizer/stylizer.info
index 6bff8dd2cbc0677f6bced0e64a4b26e7637068f9..9c7f1173ab7231e863f5d7e2fdfc62cf85b90dd1 100644
--- a/sites/all/modules/ctools/stylizer/stylizer.info
+++ b/sites/all/modules/ctools/stylizer/stylizer.info
@@ -5,9 +5,9 @@ package = Chaos tool suite
 dependencies[] = ctools
 dependencies[] = color
 
-; Information added by drupal.org packaging script on 2012-03-28
-version = "7.x-1.0"
+; Information added by drupal.org packaging script on 2012-08-18
+version = "7.x-1.2"
 core = "7.x"
 project = "ctools"
-datestamp = "1332962446"
+datestamp = "1345319204"
 
diff --git a/sites/all/modules/ctools/tests/context.test b/sites/all/modules/ctools/tests/context.test
new file mode 100644
index 0000000000000000000000000000000000000000..b5f6fb10a16074c8a36e18c538eca29e0d71d9b8
--- /dev/null
+++ b/sites/all/modules/ctools/tests/context.test
@@ -0,0 +1,58 @@
+<?php
+
+class CtoolsContextKeywordsSubstitutionTestCase extends DrupalWebTestCase {
+  public static function getInfo() {
+    return array(
+      'name' => 'Keywords substitution',
+      'description' => 'Verify that keywords are properly replaced with data.',
+      'group' => 'Chaos Tools Suite',
+    );
+  }
+
+  public function setUp() {
+    parent::setUp('ctools');
+
+    ctools_include('context');
+  }
+
+  public function testKeywordsSubstitution() {
+    // Create node context for substitution.
+    $node = $this->drupalCreateNode();
+    $context = ctools_context_create('node', $node);
+    $contexts = array('argument_1' => $context);
+
+    // Run tests on some edge cases.
+    $checks = array(
+      '%node:title' => array(
+        "{$node->title}",
+        t('Keyword and converter have been replaced.'),
+      ),
+      '%%node:title' => array(
+        "%node:title",
+        t('Keyword after escaped percent sign left untouched.'),
+      ),
+      '%node:title%node:nid' => array(
+        "{$node->title}{$node->nid}",
+        t('Multiple substitutions have been replaced.'),
+      ),
+      '%node:title:' => array(
+        "{$node->title}:",
+        t('Colon after keyword and converter left untouched.'),
+      ),
+      '%node:title%%' => array(
+        "{$node->title}%",
+        t('Escaped percent sign after keyword and converter left untouched.'),
+      ),
+      '%%%node:title' => array(
+        "%{$node->title}",
+        t('Keyword after escaped and unescaped percent sign has been replaced.'),
+      ),
+    );
+    foreach ($checks as $string => $expectations) {
+      list($expected_result, $message) = $expectations;
+      $actual_result = ctools_context_keyword_substitute($string, array(), $contexts);
+      $this->assertEqual($actual_result, $expected_result, $message);
+    }
+  }
+
+}
diff --git a/sites/all/modules/ctools/tests/css.test b/sites/all/modules/ctools/tests/css.test
index 039e9757b6099d2851b2bdeecfc397b8f4fe96a1..4a5200caad76ae039d0c30a946531006a09ff53f 100644
--- a/sites/all/modules/ctools/tests/css.test
+++ b/sites/all/modules/ctools/tests/css.test
@@ -65,5 +65,17 @@ class CtoolsCssTestCase extends DrupalWebTestCase {
     $font_size = (strpos($filtered, 'font-size:12px;') !== FALSE);
     $color = (strpos($filtered, 'color:blue') !== FALSE);
     $this->assertTrue($font_size && $color, 'Multiple properties are merged.');
+
+    $css = '@import url("other.css");p {color: red;}';
+    $filtered = ctools_css_filter($css);
+    $other_css = (strpos($filtered, 'other.css') === FALSE);
+    $color = (strpos($filtered, 'color:red') !== FALSE);
+    $this->assertTrue($other_css && $color, 'CSS is properly sanitized.');
+
+    $css = ';p {color: red; font-size: 12px;}';
+    $filtered = ctools_css_filter($css);
+    $font_size = (strpos($filtered, 'font-size:12px;') !== FALSE);
+    $color = (strpos($filtered, 'color:red') !== FALSE);
+    $this->assertTrue($font_size && $color, 'Multiple properties are retained.');
   }
 }
diff --git a/sites/all/modules/ctools/tests/ctools.drush.sh b/sites/all/modules/ctools/tests/ctools.drush.sh
index 1a02cd6c9320fc9f93e46c29b5996fcf821fc4e1..31bdee359e95697c5e3716fbcfbb61b12419aa98 100755
--- a/sites/all/modules/ctools/tests/ctools.drush.sh
+++ b/sites/all/modules/ctools/tests/ctools.drush.sh
@@ -15,8 +15,8 @@ MODULE_NAME="ctools_drush_test"
 
 stamp
 
-echo 'Enabling views module.'
-drush en views ctools --yes
+echo 'Enabling ctools, views, and bulk_export modules.'
+drush en ctools views bulk_export --yes
 
 stamp
 echo 'Reading all export info'
@@ -36,12 +36,24 @@ drush ctools-export-info --tables-only --format=json
 
 stamp
 echo 'Reading all disabled exportables'
-drush ctools-export-info --disabled
+drush ctools-export-info --filter=disabled
 
 stamp
 echo 'Enabling all default views'
 drush ctools-export-enable views_view --yes
 
+stamp
+echo 'Reading all enabled exportables'
+drush ctools-export-info --filter=enabled
+
+stamp
+echo 'Reading all overridden exportables'
+drush ctools-export-info --filter=overridden
+
+stamp
+echo 'Reading all database only exportables'
+drush ctools-export-info --filter=database
+
 stamp
 echo 'View all default views export data'
 drush ctools-export-view views_view --yes
@@ -70,6 +82,30 @@ stamp
 echo 'Revert all default views'
 drush ctools-export-revert views_view --yes
 
+stamp
+echo 'Enable all node views'
+drush ctools-export-enable views_view --module=node --yes
+
+stamp
+echo 'Disable all node views'
+drush ctools-export-disable views_view --module=node --yes
+
+stamp
+echo 'Revert all node views'
+drush ctools-export-revert views_view --module=node --yes
+
+stamp
+echo 'Revert all exportables'
+drush ctools-export-revert --all --yes
+
+stamp
+echo 'Enable all exportables'
+drush ctools-export-enable --all --yes
+
+stamp
+echo 'Disable all exportables'
+drush ctools-export-disable --all --yes
+
 stamp
 echo 'Bulk export all objects'
 drush ctools-export $MODULE_NAME --subdir='tests' --choice=1
diff --git a/sites/all/modules/ctools/tests/ctools_export_test/ctools_export.test b/sites/all/modules/ctools/tests/ctools_export_test/ctools_export.test
new file mode 100644
index 0000000000000000000000000000000000000000..1accfd740cc260fe9bb141860f211a800fd905fd
--- /dev/null
+++ b/sites/all/modules/ctools/tests/ctools_export_test/ctools_export.test
@@ -0,0 +1,215 @@
+<?php
+
+/**
+ * @file
+ * Tests for the CTools export system.
+ */
+
+/**
+ * Tests export CRUD.
+ */
+class CtoolsExportCrudTestCase extends DrupalWebTestCase {
+
+  public static function getInfo() {
+    return array(
+      'name' => 'CTools export CRUD tests',
+      'description' => 'Test the CRUD functionality for the ctools export system.',
+      'group' => 'Chaos Tools Suite',
+    );
+  }
+
+  protected function setUp() {
+    parent::setUp('ctools_export_test');
+    $this->resetAll();
+  }
+
+  /**
+   * Tests CRUD operation: Load.
+   */
+  function testCrudExportLoad() {
+    $loaded_export = ctools_export_crud_load('ctools_export_test', 'database_test');
+
+    $expected_export = new stdClass();
+    $expected_export->machine = 'database_test';
+    $expected_export->title = 'Database test';
+    $expected_export->number = 0;
+    $expected_export->data = array(
+      'test_1' => 'Test 1',
+      'test_2' => 'Test 2',
+    );
+    $expected_export->table = 'ctools_export_test';
+    $expected_export->export_type = EXPORT_IN_DATABASE;
+    $expected_export->type = 'Normal';
+
+    $this->assertEqual($expected_export, $loaded_export, 'An exportable object has been loaded correctly from the database.');
+  }
+
+  /**
+   * Tests CRUD operation: Load multiple.
+   */
+  function testCrudExportLoadMultiple() {
+    $exportable_names = array('database_test', 'overridden_test', 'default_test');
+    $loaded_exports = ctools_export_crud_load_multiple('ctools_export_test', $exportable_names);
+
+    $this->assertEqual(count($loaded_exports), 3, 'All exportables have been loaded.');
+  }
+
+  /**
+   * Tests CRUD operation: Load all.
+   */
+  function testCrudExportLoadAll() {
+    $loaded_exports = ctools_export_crud_load_all('ctools_export_test');
+
+    $this->assertEqual(count($loaded_exports), 3, 'All exportables have been loaded.');
+  }
+
+  /**
+   * Tests CRUD operation: Save.
+   */
+  function testCrudExportSave() {
+    $default_export = ctools_export_crud_load('ctools_export_test', 'default_test');
+
+    $this->assertTrue($default_export->in_code_only,'The loaded exportable is in code only.');
+
+    ctools_export_crud_save('ctools_export_test', $default_export);
+
+    // Clear the static cache.
+    ctools_export_load_object_reset('ctools_export_test');
+
+    $overridden_export = ctools_export_crud_load('ctools_export_test', 'default_test');
+
+    $this->assertTrue($overridden_export->export_type === 3, 'The loaded exportable is overridden in the database.');
+  }
+
+  /**
+   * Tests CRUD operation: New.
+   */
+  function testCrudExportNew() {
+    // Default exportable with defualt values.
+    $new_export = ctools_export_crud_new('ctools_export_test');
+
+    $expected_export = new stdClass();
+    $expected_export->machine = '';
+    $expected_export->title = '';
+    $expected_export->number = 0;
+    $expected_export->data = NULL;
+    $expected_export->export_type = NULL;
+    $expected_export->type = 'Local';
+
+    $this->assertEqual($expected_export, $new_export, 'An exportable with default values is created.');
+
+    // Default exportable without default values.
+    $new_export = ctools_export_crud_new('ctools_export_test', FALSE);
+
+    $expected_export = new stdClass();
+    $expected_export->machine = '';
+    $expected_export->title = '';
+    $expected_export->number = NULL;
+    $expected_export->data = NULL;
+
+    $this->assertEqual($expected_export, $new_export, 'An exportable without default values has been created.');
+  }
+
+  /**
+   * Tests CRUD operation: Revert.
+   */
+  function testCrudExportRevert() {
+    // Load exportable, will come from database.
+    $original_export = ctools_export_crud_load('ctools_export_test', 'overridden_test');
+
+    $this->assertTrue($original_export->export_type === 3, 'Loaded export is overridden.');
+
+    $machine = $original_export->machine;
+    ctools_export_crud_delete('ctools_export_test', $original_export);
+
+    $result = db_query("SELECT machine FROM {ctools_export_test} WHERE machine = :machine", array(':machine' => $machine))->fetchField();
+
+    $this->assertFalse($result, 'The exportable object has been removed from the database.');
+
+    // Clear the static cache.
+    ctools_export_load_object_reset('ctools_export_test');
+
+    // Reload the same object.
+    $default_export = ctools_export_crud_load('ctools_export_test', 'overridden_test');
+
+    // Check the exportable is now in_code_only.
+    $this->assertTrue($default_export->in_code_only, 'The loaded exportable is in the database only.');
+
+    // Make sure the default object loaded matches the same overridden one in the database.
+    $this->assertEqual($original_export->machine, $default_export->machine, 'The default exportable has been loaded and matches the overridden exportable.');
+  }
+
+  /**
+   * Tests CRUD operation: Delete.
+   */
+  function testCrudExportDelete() {
+    // Create a stub entry save it and delete it from the database.
+    $new_export = ctools_export_crud_new('ctools_export_test');
+    ctools_export_crud_save('ctools_export_test', $new_export);
+
+    $machine = $new_export->machine;
+    ctools_export_crud_delete('ctools_export_test', $new_export);
+    $result = ctools_export_crud_load('ctools_export_test', $machine);
+
+    $this->assertFalse($result, 'The new exportable has been removed from the database.');
+
+    // Load the database only exportable.
+    $database_export = ctools_export_crud_load('ctools_export_test', 'database_test');
+
+    $machine = $database_export->machine;
+    ctools_export_crud_delete('ctools_export_test', $database_export);
+    // Clear the exportable caches as it's been loaded above.
+    ctools_export_load_object_reset('ctools_export_test');
+    $result = ctools_export_crud_load('ctools_export_test', $machine);
+
+    $this->assertFalse($result, 'The database exportable has been removed from the database.');
+  }
+
+  /**
+   * Tests CRUD operation: Set status.
+   */
+  function testCrudExportSetStatus() {
+    // Database only object.
+    $database_export = ctools_export_crud_load('ctools_export_test', 'database_test');
+    ctools_export_crud_disable('ctools_export_test', $database_export);
+    ctools_export_load_object_reset('ctools_export_test');
+    $disabled_export = ctools_export_crud_load('ctools_export_test', 'database_test');
+
+    $this->assertTrue($disabled_export->disabled, 'The database only exportable has been disabled.');
+
+    ctools_export_crud_enable('ctools_export_test', $disabled_export);
+    ctools_export_load_object_reset('ctools_export_test');
+    $enabled_export = ctools_export_crud_load('ctools_export_test', 'database_test');
+
+    $this->assertTrue(empty($enabled_export->disabled), 'The database only exportable has been enabled.');
+
+    // Overridden object.
+    $overridden_export = ctools_export_crud_load('ctools_export_test', 'overridden_test');
+    ctools_export_crud_disable('ctools_export_test', $overridden_export);
+    ctools_export_load_object_reset('ctools_export_test');
+    $disabled_export = ctools_export_crud_load('ctools_export_test', 'overridden_test');
+
+    $this->assertTrue($disabled_export->disabled, 'The overridden exportable has been disabled.');
+
+    ctools_export_crud_enable('ctools_export_test', $disabled_export);
+    ctools_export_load_object_reset('ctools_export_test');
+    $enabled_export = ctools_export_crud_load('ctools_export_test', 'overridden_test');
+
+    $this->assertTrue(empty($enabled_export->disabled), 'The overridden exportable has been enabled.');
+
+    // Default object.
+    $default_export = ctools_export_crud_load('ctools_export_test', 'default_test');
+    ctools_export_crud_disable('ctools_export_test', $default_export);
+    ctools_export_load_object_reset('ctools_export_test');
+    $disabled_export = ctools_export_crud_load('ctools_export_test', 'default_test');
+
+    $this->assertTrue($disabled_export->disabled, 'The default exportable has been disabled.');
+
+    ctools_export_crud_enable('ctools_export_test', $disabled_export);
+    ctools_export_load_object_reset('ctools_export_test');
+    $enabled_export = ctools_export_crud_load('ctools_export_test', 'default_test');
+
+    $this->assertTrue(empty($enabled_export->disabled), 'The default exportable has been enabled.');
+  }
+
+}
diff --git a/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.default_ctools_export_tests.inc b/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.default_ctools_export_tests.inc
new file mode 100644
index 0000000000000000000000000000000000000000..9f2dd6c6b268150c90f2d35dc085ca530c06c4f7
--- /dev/null
+++ b/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.default_ctools_export_tests.inc
@@ -0,0 +1,31 @@
+<?php
+
+/**
+ * Implements hook_default_export_tests().
+ */
+function ctools_export_test_default_ctools_export_tests() {
+  $ctools_export_tests = array();
+
+  $ctools_export_test = new stdClass();
+  $ctools_export_test->disabled = FALSE; /* Edit this to true to make a default export_test disabled initially */
+  $ctools_export_test->api_version = 1;
+  $ctools_export_test->machine = 'overridden_test';
+  $ctools_export_test->title = 'Overridden test';
+  $ctools_export_test->number = 1;
+  $ctools_export_test->data = array(
+    'test_1' => 'Test 1',
+    'test_2' => 'Test 2',
+  );
+  $ctools_export_tests['overridden_test'] = $ctools_export_test;
+
+  $ctools_export_test = new stdClass();
+  $ctools_export_test->disabled = FALSE; /* Edit this to true to make a default export_test disabled initially */
+  $ctools_export_test->api_version = 1;
+  $ctools_export_test->machine = 'default_test';
+  $ctools_export_test->title = 'Default test';
+  $ctools_export_test->number = 2;
+  $ctools_export_test->data = '';
+  $ctools_export_tests['default_test'] = $ctools_export_test;
+
+  return $ctools_export_tests;
+}
diff --git a/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.info b/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.info
new file mode 100644
index 0000000000000000000000000000000000000000..2d975c37bc6453831864631ab18a48ea7e3cd4f4
--- /dev/null
+++ b/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.info
@@ -0,0 +1,15 @@
+name = CTools export test
+description = CTools export test module
+core = 7.x
+package = Chaos tool suite
+dependencies[] = ctools
+hidden = TRUE
+
+files[] = ctools_export.test
+
+; Information added by drupal.org packaging script on 2012-08-18
+version = "7.x-1.2"
+core = "7.x"
+project = "ctools"
+datestamp = "1345319204"
+
diff --git a/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.install b/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.install
new file mode 100644
index 0000000000000000000000000000000000000000..2eb54ca398e223dc2ff3e04d36b120ddc2cfeb70
--- /dev/null
+++ b/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.install
@@ -0,0 +1,86 @@
+<?php
+
+/**
+ * Implements hook_schema();
+ */
+function ctools_export_test_schema() {
+  $schema['ctools_export_test'] = array(
+   'description' => 'CTools export test data table',
+   'export' => array(
+      'key' => 'machine',
+      'identifier' => 'ctools_export_test',
+      'default hook' => 'default_ctools_export_tests',
+      'bulk export' => TRUE,
+      'api' => array(
+        'owner' => 'ctools_export_test',
+        'api' => 'default_ctools_export_tests',
+        'minimum_version' => 1,
+        'current_version' => 1,
+      ),
+    ),
+    'fields' => array(
+      'machine' => array(
+        'description' => "The unique machine name (required by ctools).",
+        'type' => 'varchar',
+        'length' => 255,
+        'not null' => TRUE,
+        'default' => '',
+      ),
+      'title' => array(
+        'description' => "The human readable title.",
+        'type' => 'varchar',
+        'length' => 255,
+        'not null' => TRUE,
+        'default' => '',
+      ),
+      'number' => array(
+        'description' => "A number.",
+        'type' => 'int',
+        'not null' => TRUE,
+        'default' => 0,
+      ),
+      'data' => array(
+        'type' => 'blob',
+        'description' => "A serialized array of data.",
+        'serialize' => TRUE,
+        'serialized default' => 'a:0:{}',
+      ),
+    ),
+    'primary key' => array('machine'),
+  );
+
+  return $schema;
+}
+
+/**
+ * Implments hook_install();
+ */
+function ctools_export_test_install() {
+  $ctools_export_tests = array();
+  // Put this default in the database only (no default).
+  $ctools_export_test = new stdClass();
+  $ctools_export_test->machine = 'database_test';
+  $ctools_export_test->title = 'Database test';
+  $ctools_export_test->number = 0;
+  $ctools_export_test->data = array(
+    'test_1' => 'Test 1',
+    'test_2' => 'Test 2',
+  );
+  $ctools_export_tests['database_test'] = $ctools_export_test;
+
+  // Put this default in the database, so we have this in code and in the database.
+  $ctools_export_test = new stdClass();
+  $ctools_export_test->machine = 'overridden_test';
+  $ctools_export_test->title = 'Overridden test';
+  $ctools_export_test->number = 1;
+  $ctools_export_test->data = array(
+    'test_1' => 'Test 1',
+    'test_2' => 'Test 2',
+  );
+  $ctools_export_tests['overridden_test'] = $ctools_export_test;
+
+  foreach ($ctools_export_tests as $ctools_export_test) {
+    // Save the record to the database.
+    drupal_write_record('ctools_export_test', $ctools_export_test);
+  }
+}
diff --git a/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.module b/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.module
new file mode 100644
index 0000000000000000000000000000000000000000..80f1adbb3761025d3e5ea7cdc44b92741880bf1e
--- /dev/null
+++ b/sites/all/modules/ctools/tests/ctools_export_test/ctools_export_test.module
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * Implements hook_ctools_plugin_api().
+ */
+function ctools_export_test_ctools_plugin_api($module, $api) {
+  if ($module == 'ctools_export_test' && $api == 'default_ctools_export_tests') {
+    return array('version' => 1);
+  }
+}
diff --git a/sites/all/modules/ctools/tests/ctools_plugin_test.info b/sites/all/modules/ctools/tests/ctools_plugin_test.info
index a5b7688b30ae08aef4881c79647f663e8622d329..6d5e9cd4e19cfc5af152351f228df49ed696aa39 100644
--- a/sites/all/modules/ctools/tests/ctools_plugin_test.info
+++ b/sites/all/modules/ctools/tests/ctools_plugin_test.info
@@ -5,11 +5,13 @@ core = 7.x
 dependencies[] = ctools
 files[] = ctools.plugins.test
 files[] = object_cache.test
+files[] = css.test
+files[] = context.test
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-03-28
-version = "7.x-1.0"
+; Information added by drupal.org packaging script on 2012-08-18
+version = "7.x-1.2"
 core = "7.x"
 project = "ctools"
-datestamp = "1332962446"
+datestamp = "1345319204"
 
diff --git a/sites/all/modules/ctools/views_content/plugins/content_types/views.inc b/sites/all/modules/ctools/views_content/plugins/content_types/views.inc
index 04b6869ac462e576d4319b39e162c14638ba4630..deea7411a7af047fecb4f73041e161f660956b84 100644
--- a/sites/all/modules/ctools/views_content/plugins/content_types/views.inc
+++ b/sites/all/modules/ctools/views_content/plugins/content_types/views.inc
@@ -147,6 +147,10 @@ function views_content_views_content_type_render($subtype, $conf, $panel_args, $
         $arg = ctools_context_convert_context($contexts[$cid], $converter);
         array_splice($args, $count, 0, array($arg));
       }
+      else {
+        // Make sure we put an argument in even if it was not there.
+        $arg = NULL;
+      }
     }
   }
 
diff --git a/sites/all/modules/ctools/views_content/plugins/content_types/views_panes.inc b/sites/all/modules/ctools/views_content/plugins/content_types/views_panes.inc
index 181f02f1b1a02358df3dc557647207cf1ec38fdd..a27a26c588828c38ece9a1974a328d4350e9a5c5 100644
--- a/sites/all/modules/ctools/views_content/plugins/content_types/views_panes.inc
+++ b/sites/all/modules/ctools/views_content/plugins/content_types/views_panes.inc
@@ -232,44 +232,31 @@ function views_content_views_panes_content_type_render($subtype, $conf, $panel_a
   }
 
   if ($allow['items_per_page'] && isset($conf['items_per_page'])) {
-    $view->display_handler->set_option('items_per_page', $conf['items_per_page']);
-    // And here too, which works in Views 3 where the above does not.
     $view->set_items_per_page($conf['items_per_page']);
   }
 
   if ($allow['offset']) {
-    $view->display_handler->set_option('offset', $conf['offset']);
     $view->set_offset($conf['offset']);
   }
 
   if ($allow['use_pager']) {
     // Only set use_pager if they differ, this way we can avoid overwriting the
     // pager type that Views uses.
-    // Views 3 version
-    if (method_exists($view, 'init_pager')) {
-      $pager = $view->display_handler->get_option('pager');
-      if ($conf['use_pager'] && ($pager['type'] == 'none' || $pager['type'] == 'some')) {
-        $pager['type'] = 'full';
-      }
-      elseif (!$conf['use_pager'] && $pager['type'] != 'none' && $pager['type'] != 'some') {
-        $pager['type'] = $view->get_items_per_page() || !empty($pager['options']['items_per_page']) ? 'some' : 'none';
-      }
+    $pager = $view->display_handler->get_option('pager');
+    if ($conf['use_pager'] && ($pager['type'] == 'none' || $pager['type'] == 'some')) {
+      $pager['type'] = 'full';
+    }
+    elseif (!$conf['use_pager'] && $pager['type'] != 'none' && $pager['type'] != 'some') {
+      $pager['type'] = $view->get_items_per_page() || !empty($pager['options']['items_per_page']) ? 'some' : 'none';
+    }
 
-      if ($conf['use_pager']) {
-        if (!isset($pager['options']['id']) || (isset($conf['pager_id']) && $pager['options']['id'] != $conf['pager_id'])) {
-          $pager['options']['id'] = $conf['pager_id'];
-        }
+    if ($conf['use_pager']) {
+      if (!isset($pager['options']['id']) || (isset($conf['pager_id']) && $pager['options']['id'] != $conf['pager_id'])) {
+        $pager['options']['id'] = $conf['pager_id'];
       }
-
-      $view->display_handler->set_option('pager', $pager);
     }
-    else {
-      if (!$view->display_handler->get_option('use_pager') || empty($conf['use_pager'])) {
-        $view->display_handler->set_option('use_pager', $conf['use_pager']);
-      }
 
-      $view->display_handler->set_option('pager_element', $conf['pager_id']);
-    }
+    $view->display_handler->set_option('pager', $pager);
   }
 
   if ($allow['fields_override']) {
@@ -296,7 +283,7 @@ function views_content_views_panes_content_type_render($subtype, $conf, $panel_a
 
   $block->title = $view->get_title();
 
-  if (empty($view->total_rows) || $view->total_rows <= $view->display_handler->get_option('items_per_page')) {
+  if (empty($view->total_rows) || $view->total_rows <= $view->get_items_per_page()) {
     unset($block->more);
   }
 
@@ -319,14 +306,16 @@ function views_content_views_panes_content_type_render($subtype, $conf, $panel_a
  * settings for a particular item.
  */
 function views_content_views_panes_add_defaults(&$conf, $view) {
+  $pager = $view->display_handler->get_option('pager');
+
   $conf += array(
     'link_to_view' => $view->display_handler->get_option('link_to_view'),
     'more_link' => $view->display_handler->get_option('more_link'),
     'feed_icons' => FALSE,
-    'use_pager' => $view->display_handler->get_option('use_pager'),
-    'pager_id' => $view->display_handler->get_option('element_id'),
-    'items_per_page' => $view->display_handler->get_option('items_per_page'),
-    'offset' => $view->display_handler->get_option('offset'),
+    'use_pager' => $pager['type'] != 'none' && $pager['type'] != 'some',
+    'pager_id' => isset($pager['options']['id']) ? $pager['options']['id'] : 0,
+    'items_per_page' => !empty($pager['options']['items_per_page']) ? $pager['options']['items_per_page'] : 10,
+    'offset' => !empty($pager['options']['offset']) ? $pager['options']['offset'] : 0,
     'path_override' => FALSE,
     'path' => $view->get_path(),
     'fields_override' => $view->display_handler->get_option('fields_override'),
@@ -426,13 +415,13 @@ function views_content_views_panes_content_type_edit_form($form, &$form_state) {
     $form['use_pager'] = array(
       '#type' => 'checkbox',
       '#title' => t('Use pager'),
-        '#default_value' => isset($conf['use_pager']) ? $conf['use_pager'] : $view->display_handler->get_option('use_pager'),
+        '#default_value' => $conf['use_pager'],
       '#id' => 'use-pager-checkbox',
       '#prefix' => '<div class="container-inline">',
     );
     $form['pager_id'] = array(
       '#type' => 'textfield',
-      '#default_value' => isset($conf['pager_id']) ? $conf['pager_id'] : $view->display_handler->get_option('element_id'),
+      '#default_value' => $conf['pager_id'],
       '#title' => t('Pager ID'),
       '#size' => 4,
       '#id' => 'use-pager-textfield',
@@ -443,7 +432,7 @@ function views_content_views_panes_content_type_edit_form($form, &$form_state) {
   if ($allow['items_per_page']) {
     $form['items_per_page'] = array(
       '#type' => 'textfield',
-      '#default_value' => isset($conf['items_per_page']) ? $conf['items_per_page'] : $view->display_handler->get_option('items_per_page'),
+      '#default_value' => $conf['items_per_page'],
       '#title' => t('Num items'),
       '#size' => 4,
       '#description' => t('Select the number of items to display, or 0 to display all results.'),
@@ -452,7 +441,7 @@ function views_content_views_panes_content_type_edit_form($form, &$form_state) {
   if ($allow['offset']) {
     $form['offset'] = array(
       '#type' => 'textfield',
-      '#default_value' => isset($conf['offset']) ? $conf['offset'] : $view->display_handler->get_option('offset'),
+      '#default_value' => $conf['offset'],
       '#title' => t('Offset'),
       '#size' => 4,
       '#description' => t('Enter the number of items to skip; enter 0 to skip no items.'),
@@ -537,6 +526,16 @@ function views_content_views_panes_content_type_edit_form($form, &$form_state) {
     }
   }
 
+  // The exposed sort stuff doesn't fall into $exposed_form['#info'] so we
+  // have to handle it separately.
+  if (isset($exposed_form['sort_by'])) {
+    $form['exposed']['sort_by'] = $exposed_form['sort_by'];
+  }
+
+  if (isset($exposed_form['sort_order'])) {
+    $form['exposed']['sort_order'] = $exposed_form['sort_order'];
+  }
+
   // Add the view object to the form to allow additional customization
   $form_state['view'] = $view;
 
diff --git a/sites/all/modules/ctools/views_content/views_content.info b/sites/all/modules/ctools/views_content/views_content.info
index a85ae302a2ef81f69b5b99c4d1af066c6106b428..cd7ce44c580028f25fe14fe8b2585dc24d8f8808 100644
--- a/sites/all/modules/ctools/views_content/views_content.info
+++ b/sites/all/modules/ctools/views_content/views_content.info
@@ -9,9 +9,9 @@ files[] = plugins/views/views_content_plugin_display_ctools_context.inc
 files[] = plugins/views/views_content_plugin_display_panel_pane.inc
 files[] = plugins/views/views_content_plugin_style_ctools_context.inc
 
-; Information added by drupal.org packaging script on 2012-03-28
-version = "7.x-1.0"
+; Information added by drupal.org packaging script on 2012-08-18
+version = "7.x-1.2"
 core = "7.x"
 project = "ctools"
-datestamp = "1332962446"
+datestamp = "1345319204"
 
diff --git a/sites/all/modules/draggableviews/LICENSE.txt b/sites/all/modules/draggableviews/LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d159169d1050894d3ea3b98e1c965c4058208fe1
--- /dev/null
+++ b/sites/all/modules/draggableviews/LICENSE.txt
@@ -0,0 +1,339 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/sites/all/modules/draggableviews/README.txt b/sites/all/modules/draggableviews/README.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c75fa1ed8a84b915d0ab800f4e45e8eaaee27470
--- /dev/null
+++ b/sites/all/modules/draggableviews/README.txt
@@ -0,0 +1,60 @@
+DraggableViews
+==============
+
+This module provides dragging entities and saving their order.
+
+Quick install:
+ 1) Activate Draggableviews module at admin/modules
+ 2) Navigate to view edit-page, click on the first link at the Format section and then choose style "table".
+ 3) Click Add button at the "Fields" section and choose field "Content:title", add and apply.
+ 4) Click Add button at the "Fields" section and choose field "Draggableviews: Content", add apply.
+ 5) Click Add button at the "Sort criteria" section and choose field "Draggableviews: Weight", add and choose sort asc, then apply.
+ 6) Save the view and you're done.
+
+In the case of table standard drupal tabledrag.js javascript is used.
+
+We also support jQuery UI Sortable javascript. In order to use it please set display style HTML List.
+By default HTML list is displayed like grid. If you would like it to be displayed as list override
+CSS styles for example in following way:
+  .draggableviews-processed li.views-row { float: none; width: 100%; margin-left: 0; }
+
+One view/display to set order another to display
+================================================
+
+You can create one view to set the order and another view to display the order. Or even
+create one view with two separate displays. In a view that displays the order there
+should be no draggableviews field (that makes view sortable), then in the settings of
+the "draggableviews weight" sorting criteria there will be selectbox "Display sort as"
+where you can choose the source view of your weights. This is applicable when you use
+ Native handler.
+
+Permissions
+===========
+
+Please add "Access draggable views" permission to users who should be able to reorder views.
+
+Arguments handling
+==================
+
+Every time we save the order of a view, current set of arguments are saved with order.
+You can see this in draggableviews_structure table "args" column. By default when we display order we use all
+currently passed arguments to a view to "match" arguments in "args" column. This means that we can create
+a view with contextual filter or exposed filter criteria and save different orders for different sets of arguments.
+
+We can also completely ignore passed arguments using "Do not use any arguments (use empty arguments)" option
+in Arguments handling of Sort criteria Draggable views weight. Be aware that in this case empty arguments set
+will be used. So you can set order for a view when no arguments passed and then whatever arguments passed,
+empty set will be used.
+
+Prepare arguments with PHP code is an option when you would like to alter arguments before they passed to
+"matching" with "args" column. For us this means that we can create for example several exposed filters,
+but pass values of only one of values of exposed filters instead of all of them (like we create two exposed
+filters: author and node type, but take into account for ordering only node type).
+Please be aware that in PHP code arguments are passed as $arguments variable and you should return array.
+Contextual filters are number keyed and exposed filters are name keyed.
+
+Contextual link "Order view"
+============================
+
+If there is view with sort order draggableviews weight and the order is set by another view we show "Order view"
+contextual link for opening a view that sets the order.
diff --git a/sites/all/modules/draggableviews/css/draggableviews_list.css b/sites/all/modules/draggableviews/css/draggableviews_list.css
new file mode 100644
index 0000000000000000000000000000000000000000..9ecf3ecfcfcf279e35dff5b203c96b1ac8414c96
--- /dev/null
+++ b/sites/all/modules/draggableviews/css/draggableviews_list.css
@@ -0,0 +1,24 @@
+.draggableviews-processed {
+  float: left;
+}
+
+.draggableviews-processed li.views-row {
+  display: block;
+  float: left;
+  width: 180px;
+/*  height: 180px;  if required for fixed height displays */
+  margin: 10px;
+  padding: 5px;
+  cursor:move;
+}
+
+.draggableviews-processed li.views-row.ui-sortable-helper {
+  border: 1px dotted blue;
+}
+.draggableviews-processed li.views-row  {
+  border: 1px dotted grey;
+}
+
+.draggableviews-weight{
+  display:none;
+}
diff --git a/sites/all/modules/draggableviews/draggableviews.api.php b/sites/all/modules/draggableviews/draggableviews.api.php
new file mode 100644
index 0000000000000000000000000000000000000000..25b52d444042545a7b85fb29d1f58cab887b8c4f
--- /dev/null
+++ b/sites/all/modules/draggableviews/draggableviews.api.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @file
+ * Hooks provided by the Draggableviews module.
+ */
+
+/**
+ * If Native handler used, you can alter arguments set before saved to database.
+ *
+ * This can be used when you would like to exclude or add some of arguments
+ * to be recorded to database. Also you can add new records to be saved to
+ * database (for example for translated nodes, etc.)
+ *
+ * @see http://drupal.org/node/1463596#comment-5687620
+ *
+ * @param array $arguments
+ *   Array of arguments before saving.
+ * @param array $form_values
+ *   Array of submitted entity ids and weights.
+ * @param object $view
+ *   Views object.
+ */
+function hook_draggableviews_handler_native_arguments_alter(&$arguments, $view, &$form_values) {}
diff --git a/sites/all/modules/draggableviews/draggableviews.info b/sites/all/modules/draggableviews/draggableviews.info
new file mode 100644
index 0000000000000000000000000000000000000000..7ca651faa40edae6d05fc9746adb357c32e49df0
--- /dev/null
+++ b/sites/all/modules/draggableviews/draggableviews.info
@@ -0,0 +1,26 @@
+name = Draggableviews
+description = Makes Views draggable
+dependencies[] = views
+package = Views
+core = 7.x
+
+files[] = handlers/draggableviews_handler.inc
+files[] = handlers/draggableviews_hierarchy_handler.inc
+files[] = views/draggableviews_handler_field_draggable.inc
+files[] = views/draggableviews_handler_sort.inc
+files[] = views/draggableviews_join_handler.inc
+
+files[] = test/draggableviews.test
+
+files[] = handlers/draggableviews_handler_native.inc
+files[] = handlers/draggableviews_handler_fieldapi.inc
+files[] = handlers/draggableviews_hierarchy_handler_native.inc
+
+dependencies[] = entity
+
+; Information added by drupal.org packaging script on 2012-10-01
+version = "7.x-2.0+26-dev"
+core = "7.x"
+project = "draggableviews"
+datestamp = "1349093683"
+
diff --git a/sites/all/modules/draggableviews/draggableviews.install b/sites/all/modules/draggableviews/draggableviews.install
new file mode 100644
index 0000000000000000000000000000000000000000..b1b3e9bc5807795e60fab10ed044edc50377f1ee
--- /dev/null
+++ b/sites/all/modules/draggableviews/draggableviews.install
@@ -0,0 +1,111 @@
+<?php
+
+/**
+ * @file
+ * Draggableviews defines a new database schema
+ * for saving the order.
+ */
+
+/**
+ * Implements hook_schema().
+ */
+function draggableviews_schema() {
+  $schema['draggableviews_structure'] = array(
+    'description' => 'The table saves the order settings of an draggableview.',
+    'fields' => array(
+      'dvid' => array(
+        'description' => 'The primary identifier.',
+        'type' => 'serial',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+      ),
+      'view_name' => array(
+        'description' => 'Makes the order unique for each view.',
+        'type' => 'varchar',
+        'length' => 128,
+        'not null' => TRUE,
+        'default' => '',
+      ),
+      'view_display' => array(
+        'description' => 'Makes the order unique for each view display.',
+        'type' => 'varchar',
+        'length' => 64,
+        'not null' => TRUE,
+        'default' => '',
+      ),
+      'args' => array(
+        'description' => 'Makes the order unique for a given set of arguments',
+        'type' => 'varchar',
+        'length' => 255,
+        'not null' => FALSE,
+        'default' => '',
+      ),
+      'entity_id' => array(
+        'description' => 'Id of the entity that we are sorting (node, user, etc.).',
+        'type' => 'int',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+      ),
+      'weight' => array(
+        'description' => 'The order weight.',
+        'type' => 'int',
+        'unsigned' => FALSE,
+        'not null' => TRUE,
+        'default' => 0,
+      ),
+      'parent' => array(
+        'description' => 'The order parent.',
+        'type' => 'int',
+        'unsigned' => FALSE,
+        'not null' => TRUE,
+        'default' => 0,
+      ),
+    ),
+    'unique keys' => array(
+      'dvid' => array('dvid'),
+    ),
+    'primary key' => array('dvid'),
+  );
+  return $schema;
+}
+
+/**
+ * Increase sizes of view_name and view_display fields of
+ * draggableviews_strucutre table.
+ */
+function draggableviews_update_7201() {
+  $new_field = array(
+    'description' => 'Makes the order unique for each view.',
+    'type' => 'varchar',
+    'length' => 128,
+    'not null' => TRUE,
+    'default' => '',
+  );
+  db_change_field('draggableviews_structure', 'view_name', 'view_name', $new_field);
+
+  $new_field = array(
+    'description' => 'Makes the order unique for each view display.',
+    'type' => 'varchar',
+    'length' => 64,
+    'not null' => TRUE,
+    'default' => '',
+  );
+  db_change_field('draggableviews_structure', 'view_display', 'view_display', $new_field);
+}
+
+/**
+ * Add "parent" field to draggableviews_strucutre table.
+ */
+function draggableviews_update_7202() {
+  // Commit 0fd7c9f create this as 7002().  This got rename to 7202().  Check if field exist.
+  if (!count(db_query("SHOW COLUMNS FROM `draggableviews_structure` WHERE Field = 'parent'")->fetchALL())) {
+    $spec = array(
+        'description' => 'The order parent.',
+        'type' => 'int',
+        'unsigned' => FALSE,
+        'not null' => TRUE,
+        'default' => 0,
+    );
+    db_add_field('draggableviews_structure', 'parent', $spec);
+  }
+}
diff --git a/sites/all/modules/draggableviews/draggableviews.module b/sites/all/modules/draggableviews/draggableviews.module
new file mode 100644
index 0000000000000000000000000000000000000000..9194cdc310fd10656ef4a61a99e0b95c849f8fbc
--- /dev/null
+++ b/sites/all/modules/draggableviews/draggableviews.module
@@ -0,0 +1,509 @@
+<?php
+
+/**
+ * Implements hook_views_api().
+ */
+function draggableviews_views_api() {
+  return array(
+    'api' => 3,
+    'path' => drupal_get_path('module', 'draggableviews') . '/views',
+  );
+}
+
+/**
+ * Implements hook_form_alter().
+ *
+ * Alter views form to change button label.
+ */
+function draggableviews_form_alter(&$form, &$form_state, $form_id) {
+  if (isset($form['draggableviews']) && !empty($form['draggableviews'])) {
+    $view = $form_state['build_info']['args'][0];
+    // Check permissions and number of results.
+    if (!user_access('access draggableviews') || count($view->result) < 2) {
+      $form['actions']['submit']['#access'] = FALSE;
+      return;
+    }
+    $options = $view->field['draggableviews']->options['draggableviews'];
+    $form['actions']['submit']['#value'] = t($options['save_button_label']);
+    $form['actions']['submit']['#submit'] = array('draggableviews_views_submit');
+
+    if ($options['ajax']) {
+      $form['actions']['submit']['#ajax'] = array(
+        'callback' => 'draggableviews_view_draggabletable_form_ajax'
+      );
+    }
+    // Set action as current path.
+    $form['#action'] = url(current_path());
+    // Keep destination and other GET params.
+    if (count($_GET) > 1) {
+      $get = $_GET;
+      unset($get['q']);
+      if (!isset($_GET['destination'])) {
+        $get['destination'] = current_path() . '?' . drupal_http_build_query($get);
+      }
+      $form['#action'] .= '?' . drupal_http_build_query($get);
+    }
+  }
+}
+
+/**
+ * Save weight records after form submit.
+ */
+function draggableviews_views_submit($form, &$form_state) {
+  $view = $form_state['build_info']['args'][0];
+
+  // Use 'input' instead of mapped 'values' here. This is done because if in
+  // table display we sort by header then set weights and save, we got
+  // totally wrong results ($form_state['values']['draggableviews'] mapped
+  // wrong from $form_state['input']['draggableviews'])
+  $form_state['values']['draggableviews'] = $form_state['input']['draggableviews'];
+
+  // Set the weight.
+  $handler_object = draggableviews_get_handler_class($view->field['draggableviews']->options['draggableviews']['handler']);
+  $handler_object->set($form_state);
+
+  // Trigger the event "A view has been sorted"
+  if (module_exists('rules')) {
+    rules_invoke_event('draggableviews_rules_event_sorted', $view->name, $view->current_display);
+  }
+}
+
+/**
+ * Implementes hook_preprocess_views_view_table().
+ */
+function draggableviews_preprocess_views_view_table(&$vars) {
+  if ($order_view = _draggableviews_load_order_view($vars['view'])) {
+    // Add identation if hierarchy is available.
+    if (!empty($order_view->field['draggableviews']->options['draggableviews']['hierarchy_handler'])) {
+      $hierarchy_handler_object = draggableviews_get_handler_class($order_view->field['draggableviews']->options['draggableviews']['hierarchy_handler'], 'hierarchy_handler');
+      foreach ($vars['rows'] as $key => $row) {
+        $first_column = current(array_keys($row));
+        $field = (object) array('view' => $vars['view']);
+        $depth = $hierarchy_handler_object->get_depth($field, $key);
+        $vars['rows'][$key][$first_column] = theme('indentation', array('size' => $depth)) . $vars['rows'][$key][$first_column];
+      }
+    }
+  }
+
+  // Check whether this table view has draggableview field.
+  if (!isset($vars['view']->field['draggableviews'])) {
+    return;
+  }
+
+  // Check permissions.
+  if (!user_access('access draggableviews')) {
+    // Remove column "draggableviews" from results and header.
+    foreach ($vars['rows'] as &$row) {
+      unset($row['draggableviews']);
+    }
+    unset($vars['header']['draggableviews']);
+    return;
+  }
+
+  // Add table class.
+  $vars['classes_array'][] = 'draggable';
+
+  // Add row class.
+  foreach ($vars['row_classes'] as &$row_classes) {
+    $row_classes[] = 'draggable';
+  }
+
+  $vars['attributes_array']['id'] = drupal_html_id('draggableviews-table-' . $vars['view']->name . '-' . $vars['view']->current_display);
+  // Add javascript.
+  drupal_add_tabledrag($vars['attributes_array']['id'], 'order', 'sibling', 'draggableviews-weight');
+
+  // Add javascript for autosave functionality.
+  if ($vars['view']->field['draggableviews']->options['draggableviews']['ajax']) {
+    drupal_add_js(drupal_get_path('module', 'draggableviews') . '/js/draggableviews_table.js');
+  }
+  // Parent javascripts.
+  if (!empty($vars['view']->field['draggableviews']->options['draggableviews']['hierarchy_handler'])) {
+    drupal_add_tabledrag($vars['attributes_array']['id'], 'match', 'parent', 'draggableviews-parent', 'draggableviews-parent', 'draggableviews-id', FALSE);
+    drupal_add_tabledrag($vars['attributes_array']['id'], 'depth', 'group', 'draggableviews-depth', NULL, NULL, FALSE);
+  }
+}
+
+/**
+ * Implementes hook_preprocess_views_view_list().
+ */
+function draggableviews_preprocess_views_view_list(&$vars) {
+  // Check whether this table view has draggableview field.
+  if (!isset($vars['view']->field['draggableviews'])) {
+    return;
+  }
+
+  // Check permissions.
+  if (!user_access('access draggableviews')) {
+    return;
+  }
+
+  // Add class to ul item of the view.
+  $class = 'draggableviews-grid-' . $vars['view']->name . '-' . $vars['view']->current_display;
+  $vars['list_type_prefix'] = str_replace('>', ' class="' . $class . '">', $vars['list_type_prefix']);
+  // Add javascript.
+  drupal_add_library('system', 'ui.sortable');
+  // Add setting of the row class.
+  $js_setting = array('draggableviews_row_class' => $class);
+  // Add setting whether ajax enabled or not.
+  $js_setting['draggableviews_ajax'] = $vars['view']->field['draggableviews']->options['draggableviews']['ajax'];
+  drupal_add_js($js_setting, 'setting');
+  // Add custom js and css.
+  drupal_add_js(drupal_get_path('module', 'draggableviews') . '/js/draggableviews_list.js');
+  drupal_add_css(drupal_get_path('module', 'draggableviews') . '/css/draggableviews_list.css');
+}
+
+/**
+ * Implements hook_permission().
+ */
+function draggableviews_permission() {
+  return array(
+    'access draggableviews' => array(
+      'title' => t('Access draggable views'),
+      'description' => t('Give users the right to sort their views'),
+    ),
+  );
+}
+
+/**
+ * Implements hook_ctools_plugin_type().
+ */
+function draggableviews_ctools_plugin_type() {
+  return array(
+    'handler' => array(
+      'use hooks' => FALSE,
+    ),
+    'hierarchy_handler' => array(
+      'use hooks' => FALSE,
+    ),
+  );
+}
+
+/**
+ * Implements hook_ctools_plugin_directory().
+ */
+function draggableviews_ctools_plugin_directory($module, $plugin) {
+  if (($module == 'draggableviews') && ($plugin == 'handler' || $plugin == 'hierarchy_handler')) {
+    return 'handlers';
+  }
+}
+
+/**
+ * Implements hook_contextual_links_view_alter().
+ *
+ * Adds "Order view" contextual link.
+ */
+function draggableviews_contextual_links_view_alter(&$element, $items) {
+  // Check permission to use draggable.
+  if (!user_access('access draggableviews')) {
+    return;
+  }
+  // Do not add contextual link on view preview.
+  if (module_exists('views_ui') && views_ui_contextual_links_suppress()) {
+    return;
+  }
+
+  // Add Draggableviews contextual link "Order view".
+  $views_ui_element = array();
+  if (isset($element['#element']['#views_contextual_links_info']['views_ui'])) {
+    $views_ui_element = $element['#element']['#views_contextual_links_info']['views_ui'];
+  }
+  // In case of block #views_contextual_links_info element is inside of
+  // 'content' and not '#element' directly.
+  // @see http://drupal.org/node/1413596#comment-5912688
+  if (empty($views_ui_element) && isset($element['#element']['content']['#views_contextual_links_info']['views_ui'])) {
+    $views_ui_element = $element['#element']['content']['#views_contextual_links_info']['views_ui'];
+  }
+
+  if ( !empty($views_ui_element['view_display_id']) && isset($views_ui_element['view'])) {
+    $display_id = $views_ui_element['view_display_id'];
+    $view = $views_ui_element['view'];
+    $view->build($display_id);
+
+    // Get the order view's path. Don't include itself.
+    if ($path = _draggableviews_get_order_path($view, FALSE)) {
+      $element['#links']['draggableviews-order'] = array(
+        'title' => t('Order view'),
+        'href' => $path,
+        'query' => array('destination' => current_path()),
+      );
+    }
+  }
+}
+
+/**
+ * Implements hook_views_post_execute().
+ */
+function draggableviews_views_post_execute(&$view) {
+  if (isset($view->field['draggableviews'])) {
+    // Move draggableviews field to last column
+    // otherwise tabledrag.js doesn't work.
+    $draggable_field = $view->field['draggableviews'];
+    unset($view->field['draggableviews']);
+    $view->field['draggableviews'] = $draggable_field;
+  }
+}
+
+/**
+ * Implements hook_post_render().
+ */
+function draggableviews_views_post_render(&$view, &$output, &$cache) {
+  // Hide "Save" button when there are no results available. We cannot do this
+  // in form_alter hook as view is not yet executed there.
+  if (empty($view->result)) {
+    $output = str_replace('<div class="form-actions form-wrapper" id="edit-actions">', '<div class="form-actions form-wrapper" id="edit-actions" style="display:none">', $output);
+  }
+}
+
+/**
+ * Get class of handler.
+ *
+ * @param object
+ *   Handler's class object.
+ */
+function draggableviews_get_handler_class($handler_name, $handler_type = 'handler') {
+  $objects = &drupal_static(__FUNCTION__);
+  if (!isset($objects[$handler_name])) {
+    ctools_include('plugins');
+    if ($class = ctools_plugin_load_class('draggableviews', $handler_type, $handler_name, 'handler')) {
+      $objects[$handler_name] = new $class();
+    }
+  }
+
+  return $objects[$handler_name];
+}
+
+/**
+ * Retrieve all sort plugins.
+ *
+ * Check whether handler class inherits draggablevies_handler.
+ *
+ * @return array
+ *   Array of proper draggableviews handlers.
+ */
+function draggableviews_get_handlers() {
+  ctools_include('plugins');
+  $handlers = ctools_get_plugins('draggableviews', 'handler');
+  $return = array();
+  foreach ($handlers as $handler_id => $handler) {
+    $handler_object = draggableviews_get_handler_class($handler_id);
+    if (in_array('draggableviews_handler', class_parents(get_class($handler_object)))) {
+      $return[$handler_id] = $handler_object;
+    }
+  }
+  return $return;
+}
+
+/**
+ * Retrieve all hierarchy plugins.
+ *
+ * Check whether handler class inherits draggablevies_hierarcy_handler.
+ *
+ * @return array
+ *   Array of proper draggableviews handlers.
+ */
+function draggableviews_get_hierarchy_handlers() {
+  ctools_include('plugins');
+  $handlers = ctools_get_plugins('draggableviews', 'hierarchy_handler');
+  $return = array();
+  foreach ($handlers as $handler_id => $handler) {
+    $handler_object = draggableviews_get_handler_class($handler_id);
+    if (in_array('draggableviews_hierarchy_handler', class_parents(get_class($handler_object)))) {
+      $return[$handler_id] = $handler_object;
+    }
+  }
+  return $return;
+}
+
+/**
+ * Ajax draggabletable submit handler.
+ */
+function draggableviews_view_draggabletable_form_ajax($form, $form_state) {
+  // Find the form element
+  $form_element = "form:has(input[name=form_build_id][value='{$form['form_build_id']['#value']}'])";
+
+  // Remove warning and asterisk.
+  return array('#type' => 'ajax', '#commands' => array(
+    ajax_command_remove("$form_element div.tabledrag-changed-warning"),
+    ajax_command_remove("$form_element span.tabledrag-changed"),
+    ajax_command_remove("$form_element div.draggableviews-changed-warning"),
+    ajax_command_invoke("$form_element ul.draggableviews-changed", 'removeClass', array('draggableviews-changed')),
+  ));
+}
+
+/**
+ * Get the draggable views weight sort of a view if there is one and return its
+ * ID. If there are multiple of these sorts the first is returned.
+ *
+ * @param $view
+ *   The view object.
+ *
+ * @return
+ *   The ID of the sort or FALSE if there isn't one.
+ */
+function _draggableviews_get_draggable_sort($view) {
+  foreach ($view->sort as $id => $sort) {
+    if ($sort->definition['handler'] == 'draggableviews_handler_sort') {
+      return $id;
+    }
+  }
+  return FALSE;
+}
+
+/**
+ * Evalutes the given PHP code, with the given variables defined.
+ *
+ * @param $code
+ *   The PHP code to run, without <?php ?>
+ * @param $arguments
+ *   Views arguments including values of exposed filters.
+ * @param $view
+ *   The view being sorted.
+ *
+ * @return
+ *   The return value of the evaled code.
+ */
+function _draggableviews_eval_return($code, $arguments, $view) {
+  return eval($code);
+}
+
+/**
+ * Load built order view.
+ */
+function _draggableviews_load_order_view($view, $include_self = TRUE) {
+  if ($order_view_name_display = _draggableviews_get_order_view_display($view, $include_self)) {
+    if ($order_view_name_display == 'self' && $include_self) {
+      $order_view = $view;
+    }
+    else {
+      list($order_view_name, $order_view_display) = explode(':', $order_view_name_display);
+      if ($order_view_name == $view->name)  {
+        $order_view = $view;
+      }
+      else {
+        // Need to get the order view, as order is not part of this one.
+        $order_view = views_get_view($order_view_name);
+        $order_view->build($order_view_display);
+      }
+    }
+
+    return $order_view;
+  }
+}
+
+/**
+ * Get the view display identifier.
+ *
+ * @param $view
+ *   The view object
+ *
+ * @return
+ *   A string with the view name and display id separated by ':'.
+ */
+function _draggableviews_get_order_view_display($view, $include_self = TRUE) {
+  // Proceed only if weight sort criteria is available.
+  if (!$sort_key = _draggableviews_get_draggable_sort($view)) {
+    return FALSE;
+  }
+  $order_view_display = $view->sort[$sort_key]->options['draggableviews_setting_view'];
+  if (empty($order_view_display)) {
+    return FALSE;
+  }
+  if (!$include_self) {
+    if ($order_view_display == 'self' || $order_view_display == $view->name . ':' . $view->current_display) {
+      return FALSE;
+    }
+  }
+  return $order_view_display;
+}
+
+/**
+ * Get the path to the order view.
+ *
+ * @param $view
+ *   The view object.
+ *
+ * @return
+ *   The path of the page or FALSE if there isn't one.
+ */
+function _draggableviews_get_order_path($view, $include_self = TRUE) {
+  $path = FALSE;
+  if ($order_view = _draggableviews_load_order_view($view, $include_self)) {
+    if (isset($order_view->display[$order_view->current_display]->display_options['path'])) {
+      $path = $order_view->display[$order_view->current_display]->display_options['path'];
+    }
+  }
+  elseif ($include_self) {
+    if (isset($view->display[$view->current_display]->display_options['path'])) {
+      $path = $view->display[$view->current_display]->display_options['path'];
+    }
+  }
+  else {
+    return FALSE;
+  }
+
+  // If page expects arguments, we provide arguments set to current view.
+  $args = $view->args;
+  if (strpos($path, '%') !== FALSE && !empty($args)) {
+    $new_path_array = array();
+    foreach (explode('/', $path) as $path_part) {
+      if (strpos($path_part, '%') !== FALSE) {
+        $new_path_array[] = (!empty($args)) ? array_shift($args) : '';
+      }
+      else {
+        $new_path_array[] = $path_part;
+      }
+    }
+    $path = implode('/', $new_path_array);
+  }
+  // If page path doesn't have % in the path or we still have some argument
+  // remain, simply append them to the end of the path.
+  if (!empty($args)) {
+    $path .= '/' . implode('/', $args);
+  }
+  return $path;
+}
+
+/**
+ * Helper function that returns an option list of all draggable views or let
+ * you inspect a specific view to see if it's a draggable view itself and
+ * returns the appropriate option for that.
+ *
+ * @param $view
+ *   The view object to incpect. Optional.
+ *
+ * @return
+ *   An option array of draggable views.
+ */
+function _draggableviews_get_views_options($view = NULL) {
+  if (!empty($view)) {
+    $view_clone = clone $view;
+    $view_clone->set_display($view_clone->current_display);
+    $view_clone->init_handlers();
+    if (isset($view_clone->field['draggableviews'])) {
+      return 'self';
+    }
+  }
+  // Check whether field exists for all enabled views. We only want the
+  // 'setting' views.
+  $views = views_get_enabled_views();
+  $options = array();
+
+  // Convert list of objects to options for the form.
+  foreach ($views as $view_name => $view) {
+    foreach ($view->display as $display_name => $display) {
+      if ($display_name == 'default') {
+        continue;
+      }
+      // Clone view and build it so we can see all the fields.
+      $view_clone = clone $view;
+      $view_clone->set_display($display_name);
+      $view_clone->init_handlers();
+
+      // If draggableviews field attached, show this view in options.
+      if (isset($view_clone->field['draggableviews'])) {
+        $options[$view_name . ':' . $display_name] = $view->human_name . ' (' . $display->display_title . ')';
+      }
+    }
+  }
+  return $options;
+}
diff --git a/sites/all/modules/draggableviews/draggableviews.rules.inc b/sites/all/modules/draggableviews/draggableviews.rules.inc
new file mode 100644
index 0000000000000000000000000000000000000000..2719f7438d3d12388d18596c939643b493a9ab3e
--- /dev/null
+++ b/sites/all/modules/draggableviews/draggableviews.rules.inc
@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * @file
+ * Rules hooks implementation.
+ */
+
+/**
+ * Implements hook_rules_event_info().
+ */
+function draggableviews_rules_event_info() {
+  $events = array();
+
+  $events['draggableviews_rules_event_sorted'] = array(
+    'label' => t('A view has been sorted'),
+    'group' => t('DraggableViews'),
+    'variables' => array(
+      'view_name' => array(
+        'type' => 'text',
+        'label' => t('view name'),
+      ),
+      'display_name' => array(
+        'type' => 'text',
+        'label' => t('view current display name'),
+      ),
+    ),
+  );
+
+  return $events;
+}
diff --git a/sites/all/modules/draggableviews/draggableviews_book/draggableviews_book.info b/sites/all/modules/draggableviews/draggableviews_book/draggableviews_book.info
new file mode 100644
index 0000000000000000000000000000000000000000..131f0eccbebb00b6e348b3e159a427b8df86a27d
--- /dev/null
+++ b/sites/all/modules/draggableviews/draggableviews_book/draggableviews_book.info
@@ -0,0 +1,13 @@
+name = Draggableviews Book
+description = Reorder books
+dependencies[] = draggableviews
+package = Views
+core = 7.x
+
+files[] = draggableviews_book_views_handler_argument.inc
+; Information added by drupal.org packaging script on 2012-10-01
+version = "7.x-2.0+26-dev"
+core = "7.x"
+project = "draggableviews"
+datestamp = "1349093683"
+
diff --git a/sites/all/modules/draggableviews/draggableviews_book/draggableviews_book.install b/sites/all/modules/draggableviews/draggableviews_book/draggableviews_book.install
new file mode 100644
index 0000000000000000000000000000000000000000..60fdf880c691bd5346fcca1a954e595ec87e2246
--- /dev/null
+++ b/sites/all/modules/draggableviews/draggableviews_book/draggableviews_book.install
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * Implements hook_install().
+ *
+ * Set the weight more than views.
+ */
+function draggableviews_book_install() {
+  db_query("UPDATE {system} SET weight = 11 WHERE name = 'draggableviews_book'");
+}
diff --git a/sites/all/modules/draggableviews/draggableviews_book/draggableviews_book.module b/sites/all/modules/draggableviews/draggableviews_book/draggableviews_book.module
new file mode 100644
index 0000000000000000000000000000000000000000..1895a11bec7ad24d703aae9b1f23c8f5d9538910
--- /dev/null
+++ b/sites/all/modules/draggableviews/draggableviews_book/draggableviews_book.module
@@ -0,0 +1,110 @@
+<?php
+
+/**
+ * Implements hook_views_api().
+ */
+function draggableviews_book_views_api() {
+  return array(
+    'api' => 3,
+    'path' => drupal_get_path('module', 'draggableviews_book'),
+  );
+}
+
+/**
+ * Implements hook_ctools_plugin_directory().
+ */
+function draggableviews_book_ctools_plugin_directory($module, $plugin) {
+  if (($module == 'draggableviews') && ($plugin == 'handler' || $plugin == 'hierarchy_handler')) {
+    return 'handlers';
+  }
+}
+
+/**
+ * Implements hook_menu_alter().
+ *
+ * Set custom access callback to "Order Outline" view.
+ */
+function draggableviews_book_menu_alter(&$items) {
+  $items['node/%/book']['access callback'] = '_draggableviews_book_access';
+  $items['node/%/book']['access arguments'] = array(1);
+}
+
+/**
+ * Check whether item has children.
+ */
+function _draggableviews_book_access($nid) {
+  return db_query('SELECT has_children FROM {menu_links} WHERE module = :module AND link_path = :link_path', array(':module' => 'book', ':link_path' => 'node/' . $nid))->fetchField();
+}
+
+/**
+ * Implements hook_views_post_execute().
+ *
+ * We manually sort results array according to the weights of depth levels.
+ */
+function draggableviews_book_views_post_execute($view) {
+  if (!isset($view->result[0]->draggableviews_book_mlid)) {
+    return;
+  }
+
+  // First prepare array of mlid keyed items.
+  $keyed_result = array();
+  foreach ($view->result as $result_item) {
+    $result_item->weight = array();
+    $keyed_result[$result_item->draggableviews_book_mlid] = $result_item;
+  }
+
+  // Set the weights arrays for every item. This collects weights of all parents
+  // plus its own weght. Weights are saved according to depth levels.
+  foreach ($keyed_result as &$item) {
+    _draggableviews_book_result_set_weight($item, $keyed_result);
+  }
+
+  // Sort items with custom sort callback.
+  usort($keyed_result, '_draggableviews_book_uasort');
+
+  $view->result = $keyed_result;
+}
+
+/**
+ * Set the weight array of item.
+ */
+function _draggableviews_book_result_set_weight(&$item, $result) {
+  // If weight is already calculated we simply return it.
+  if (!empty($item->weight)) {
+    return $item->weight;
+  }
+
+  // Load weights array of parent (if parent item is available).
+  $parent_weight = array();
+  if (isset($result[$item->draggableviews_book_plid])) {
+    $parent_weight = _draggableviews_book_result_set_weight($result[$item->draggableviews_book_plid], $result);
+  }
+
+  // Set the weight as sum of parents weights and
+  // its own weight according to depth.
+  $item->weight = $parent_weight + array($item->draggableviews_book_depth => $item->draggableviews_book_weight);
+
+  return $item->weight;
+}
+
+/**
+ * Custom sort callback based on weights arrays.
+ */
+function _draggableviews_book_uasort($item1, $item2) {
+  for ($i = 0; $i < 10; $i++) {
+    // Item 1 is less than item 2.
+    if (isset($item1->weight[$i]) && !isset($item2->weight[$i])) {
+      return 1;
+    }
+
+    // Item 2 is less than item 1.
+    if (!isset($item1->weight[$i]) && isset($item2->weight[$i])) {
+      return -1;
+    }
+
+    // If weights on the same depth level are not the same compare them.
+    if (isset($item1->weight[$i]) && isset($item2->weight[$i]) && $item1->weight[$i] != $item2->weight[$i]) {
+      return ($item1->weight[$i] < $item2->weight[$i]) ? -1 : 1;
+    }
+  }
+}
diff --git a/sites/all/modules/draggableviews/draggableviews_book/draggableviews_book.views.inc b/sites/all/modules/draggableviews/draggableviews_book/draggableviews_book.views.inc
new file mode 100644
index 0000000000000000000000000000000000000000..2fed2c55f621a90b23dac0736659ed843eeda87b
--- /dev/null
+++ b/sites/all/modules/draggableviews/draggableviews_book/draggableviews_book.views.inc
@@ -0,0 +1,32 @@
+<?php
+
+/**
+ * @file
+ * Provide special views data and handlers for draggableviews_book module
+ */
+
+/**
+ * Implements hook_views_data().
+ */
+function draggableviews_book_views_data() {
+  // Book hierarchy and weight data are now in {menu_links}.
+  $data['draggableviews_book_structure']['table']['group'] = t('Book');
+  $data['draggableviews_book_structure']['table']['join'] = array(
+    'node' => array(
+      'table' => 'menu_links',
+      'left_table' => 'book',
+      'left_field' => 'mlid',
+      'field' => 'mlid',
+    ),
+  );
+
+  $data['draggableviews_book_structure']['book'] = array(
+    'title' => t('All sub nodes of this book page.'),
+    'help' => t('All sub nodes of this book page.'),
+    'argument' => array(
+      'handler' => 'views_handler_argument_draggableviews_book',
+    ),
+  );
+
+  return $data;
+}
diff --git a/sites/all/modules/draggableviews/draggableviews_book/draggableviews_book.views_default.inc b/sites/all/modules/draggableviews/draggableviews_book/draggableviews_book.views_default.inc
new file mode 100644
index 0000000000000000000000000000000000000000..6c394d3be92ba585e209c25b8a2f44052f601ffa
--- /dev/null
+++ b/sites/all/modules/draggableviews/draggableviews_book/draggableviews_book.views_default.inc
@@ -0,0 +1,84 @@
+<?php
+
+/**
+ * Implements hook_views_default_views().
+ */
+function draggableviews_book_views_default_views() {
+  $view = new view();
+  $view->name = 'book';
+  $view->description = '';
+  $view->tag = 'default';
+  $view->base_table = 'node';
+  $view->human_name = 'Book';
+  $view->core = 7;
+  $view->api_version = '3.0';
+  $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
+
+  /* Display: Master */
+  $handler = $view->new_display('default', 'Master', 'default');
+  $handler->display->display_options['title'] = 'Reorder Book';
+  $handler->display->display_options['access']['type'] = 'perm';
+  $handler->display->display_options['cache']['type'] = 'none';
+  $handler->display->display_options['query']['type'] = 'views_query';
+  $handler->display->display_options['exposed_form']['type'] = 'basic';
+  $handler->display->display_options['pager']['type'] = 'none';
+  $handler->display->display_options['pager']['options']['offset'] = '0';
+  $handler->display->display_options['style_plugin'] = 'table';
+  /* Field: Content: Title */
+  $handler->display->display_options['fields']['title']['id'] = 'title';
+  $handler->display->display_options['fields']['title']['table'] = 'node';
+  $handler->display->display_options['fields']['title']['field'] = 'title';
+  $handler->display->display_options['fields']['title']['alter']['word_boundary'] = FALSE;
+  $handler->display->display_options['fields']['title']['alter']['ellipsis'] = FALSE;
+  /* Field: Draggableviews: Content */
+  $handler->display->display_options['fields']['draggableviews']['id'] = 'draggableviews';
+  $handler->display->display_options['fields']['draggableviews']['table'] = 'node';
+  $handler->display->display_options['fields']['draggableviews']['field'] = 'draggableviews';
+  $handler->display->display_options['fields']['draggableviews']['element_default_classes'] = FALSE;
+  $handler->display->display_options['fields']['draggableviews']['hide_alter_empty'] = FALSE;
+  $handler->display->display_options['fields']['draggableviews']['draggableviews']['handler'] = 'draggableviews_handler_book';
+  $handler->display->display_options['fields']['draggableviews']['draggableviews']['hierarchy_handler'] = 'draggableviews_hierarchy_handler_book';
+  $handler->display->display_options['fields']['draggableviews']['draggableviews']['ajax'] = 0;
+  /* Contextual filter: Book: All sub nodes of this book page. */
+  $handler->display->display_options['arguments']['book']['id'] = 'book';
+  $handler->display->display_options['arguments']['book']['table'] = 'draggableviews_book_structure';
+  $handler->display->display_options['arguments']['book']['field'] = 'book';
+  $handler->display->display_options['arguments']['book']['default_action'] = 'empty';
+  $handler->display->display_options['arguments']['book']['default_argument_type'] = 'fixed';
+  $handler->display->display_options['arguments']['book']['summary']['number_of_records'] = '0';
+  $handler->display->display_options['arguments']['book']['summary']['format'] = 'default_summary';
+  $handler->display->display_options['arguments']['book']['summary_options']['items_per_page'] = '25';
+  /* Filter criterion: Content: Published */
+  $handler->display->display_options['filters']['status']['id'] = 'status';
+  $handler->display->display_options['filters']['status']['table'] = 'node';
+  $handler->display->display_options['filters']['status']['field'] = 'status';
+  $handler->display->display_options['filters']['status']['value'] = 1;
+  $handler->display->display_options['filters']['status']['group'] = 1;
+  $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
+
+  /* Display: Page */
+  $handler = $view->new_display('page', 'Page', 'page');
+  $handler->display->display_options['path'] = 'node/%/book';
+  $handler->display->display_options['menu']['type'] = 'tab';
+  $handler->display->display_options['menu']['title'] = 'Order Outline';
+  $handler->display->display_options['menu']['weight'] = '5';
+  $handler->display->display_options['menu']['context'] = 0;
+  $translatables['book'] = array(
+    t('Master'),
+    t('Reorder Book'),
+    t('more'),
+    t('Apply'),
+    t('Reset'),
+    t('Sort by'),
+    t('Asc'),
+    t('Desc'),
+    t('Title'),
+    t('Content'),
+    t('All'),
+    t('Page'),
+  );
+
+  $views[$view->name] = $view;
+
+  return $views;
+}
diff --git a/sites/all/modules/draggableviews/draggableviews_book/draggableviews_book_views_handler_argument.inc b/sites/all/modules/draggableviews/draggableviews_book/draggableviews_book_views_handler_argument.inc
new file mode 100644
index 0000000000000000000000000000000000000000..737abf0bc2c886640d395f56f2bcbea21de9fbc6
--- /dev/null
+++ b/sites/all/modules/draggableviews/draggableviews_book/draggableviews_book_views_handler_argument.inc
@@ -0,0 +1,31 @@
+<?php
+
+/**
+ * Argument that refers to a certain book page.
+ */
+class views_handler_argument_draggableviews_book extends views_handler_argument {
+  /**
+   * Add condition to select only part of the tree that is under argument's id.
+   */
+  function query() {
+    $this->ensure_my_table();
+    $mlid = db_query("SELECT mlid FROM {book} WHERE nid = :nid", array(':nid' => $this->argument))->fetchField();
+    // Do not show argument menu item.
+    $this->query->add_where(0, $this->table . '.mlid', $mlid, '<>');
+
+    // Select all items that have argument in one of parents.
+    $group = $this->query->set_where_group('OR');
+    for ($i = 1; $i < 10; $i++) {
+      $this->query->add_where($group, $this->table . '.p' . $i, $mlid);
+    }
+
+    // We sort items in hook_views_post_execute().
+    $tbl = $this->table;
+
+    // Add weight, depth and parent fields.
+    $this->query->add_field($tbl, 'weight', 'draggableviews_book_weight');
+    $this->query->add_field($tbl, 'depth', 'draggableviews_book_depth');
+    $this->query->add_field($tbl, 'plid', 'draggableviews_book_plid');
+    $this->query->add_field($tbl, 'mlid', 'draggableviews_book_mlid');
+  }
+}
diff --git a/sites/all/modules/draggableviews/draggableviews_book/handlers/draggableviews_handler_book.inc b/sites/all/modules/draggableviews/draggableviews_book/handlers/draggableviews_handler_book.inc
new file mode 100644
index 0000000000000000000000000000000000000000..9b4fd40d9ac2c9df72d47795ee6b90bb1414daf6
--- /dev/null
+++ b/sites/all/modules/draggableviews/draggableviews_book/handlers/draggableviews_handler_book.inc
@@ -0,0 +1,47 @@
+<?php
+
+$plugin = array(
+  'label' => 'Book',
+  'handler' => array(
+    'class' => 'draggableviews_handler_book',
+  ),
+);
+
+class draggableviews_handler_book extends draggableviews_handler {
+
+  /**
+   * Retrieve the weight.
+   */
+  function get($field, $index) {
+    $row = $field->view->result[$index];
+    return isset($row->draggableviews_book_weight) ? $row->draggableviews_book_weight : 0;
+  }
+
+  /**
+   *  Set both parent and weight values.
+   */
+  function set($form_state) {
+    $fv = $form_state['values'];
+
+    foreach ($fv['draggableviews'] as $item) {
+      $node = node_load($item['id']);
+
+      $keys = array('menu_name', 'mlid', 'router_path', 'has_children', 'options', 'module',
+//          'original_bid', 'parent_depth_limit',
+          'bid');
+      $book = array();
+      foreach ($keys as $key) {
+        $book[$key] = $node->book[$key];
+      }
+
+      $book['weight'] = $item['weight'];
+      $book['plid'] = db_query('SELECT mlid FROM {menu_links} WHERE link_path = :link_path AND menu_name = :menu_name', array(':link_path' => 'node/' . $item['parent'], ':menu_name' => $book['menu_name']))->fetchField();
+
+      $node->book = $book;
+      _book_update_outline($node);
+
+      drupal_static_reset('book_get_books');
+    }
+  }
+}
+
diff --git a/sites/all/modules/draggableviews/draggableviews_book/handlers/draggableviews_hierarchy_handler_book.inc b/sites/all/modules/draggableviews/draggableviews_book/handlers/draggableviews_hierarchy_handler_book.inc
new file mode 100644
index 0000000000000000000000000000000000000000..00e53abee19016ddb18effa6c5b5ce05982a65e3
--- /dev/null
+++ b/sites/all/modules/draggableviews/draggableviews_book/handlers/draggableviews_hierarchy_handler_book.inc
@@ -0,0 +1,38 @@
+<?php
+
+$plugin = array(
+  'label' => 'Book',
+  'handler' => array(
+    'class' => 'draggableviews_hierarchy_handler_book',
+  ),
+);
+
+class draggableviews_hierarchy_handler_book extends draggableviews_hierarchy_handler {
+  public function get($field, $index) {
+    $row = $field->view->result[$index];
+    $parent_mlid = $row->draggableviews_book_plid;
+    
+    $parent_link_path = db_query('SELECT link_path FROM {menu_links} WHERE mlid = :mlid', array(':mlid' => $parent_mlid))->fetchField();
+
+    return !empty($parent_link_path) ? substr($parent_link_path, 5) : 0;
+  }
+
+  public function get_depth($field, $index) {
+    $row = $field->view->result[$index];
+
+    // Cache depth of the top parent so we do not recalculate it.
+    static $parent_depth;
+    if (is_null($parent_depth)) {
+      $parent_mlid = $row->draggableviews_book_plid;
+      $parent_depth = db_query('SELECT depth FROM {menu_links} WHERE mlid = :mlid', array(':mlid' => $parent_mlid))->fetchField() + 1;
+    }
+
+    return isset($row->draggableviews_book_depth) ? $row->draggableviews_book_depth - $parent_depth : 0;
+  }
+
+  // Don't need to set value here as it is done in "weight" handler
+  // draggableviews_handler in order to avoid doing multiple identical queries
+  // to draggableviews_structure table.
+  function set($form_state) {}
+}
+
diff --git a/sites/all/modules/draggableviews/handlers/draggableviews_handler.inc b/sites/all/modules/draggableviews/handlers/draggableviews_handler.inc
new file mode 100644
index 0000000000000000000000000000000000000000..1fbef1636040d6b6f9035b486f0d7990991b7b37
--- /dev/null
+++ b/sites/all/modules/draggableviews/handlers/draggableviews_handler.inc
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * @file
+ * Base plugin implementation.
+ */
+
+/**
+ * Parent class for all sort handlers.
+ */
+class draggableviews_handler {
+
+  /**
+   * Get the weight value.
+   *
+   * @param object $field
+   *   Draggableviews field handler. View is $field->view,
+   *   to get a row $field->view->result[$index].
+   * @param int $index
+   *   Index of the row.
+   *
+   * @return int
+   *   Weight value.
+   */
+  public function get($field, $index) {}
+
+  /**
+   * Save weight value.
+   *
+   * @param $form_state
+   *   Attay of form state of the form.
+   *   View object $form_state['values']['view'].
+   */
+  public function set($form_state) {}
+
+  /**
+   * Form with settings of the handler.
+   *
+   * @param object $field
+   *  Draggableviews field handler.
+   *
+   * @return array
+   *  Form array.
+   */
+  public function options_form($field) {}
+
+  /**
+   * Settings form default values.
+   *
+   * @return array
+   *   Array with default values.
+   */
+  public function option_definition() {}
+}
\ No newline at end of file
diff --git a/sites/all/modules/draggableviews/handlers/draggableviews_handler_fieldapi.inc b/sites/all/modules/draggableviews/handlers/draggableviews_handler_fieldapi.inc
new file mode 100644
index 0000000000000000000000000000000000000000..814d509477221548a0274d1f1f3357709ff265de
--- /dev/null
+++ b/sites/all/modules/draggableviews/handlers/draggableviews_handler_fieldapi.inc
@@ -0,0 +1,126 @@
+<?php
+
+/**
+ * @file
+ * Field API handler plugin.
+ */
+
+$plugin = array(
+  'label' => 'FieldAPI',
+  'handler' => array(
+    'class' => 'draggableviews_handler_fieldapi',
+  ),
+);
+
+class draggableviews_handler_fieldapi extends draggableviews_handler {
+  /**
+  * Set default value of field option.
+  */
+  public function option_definition() {
+    return array('field' => '');
+  }
+
+  /**
+  * Add field options for handler.
+  */
+  function options_form($field) {
+    $form = array();
+    $options = array('' => t('- Select -'));
+
+    // Check all the sortings added to a view. Hope there is
+    // better way to determine them. Need to research.
+    $sorts = $field->view->display_handler->display->display_options['sorts'];
+    // If no sorts avaialble for current display, use sorts from default display.
+    if (empty($sorts)) {
+      $sorts = $field->view->display['default']->display_options['sorts'];
+    }
+    foreach ($sorts as $sort_option) {
+      $field_name = $sort_option['field'];
+      // Field should be like "field_name_value".
+      if (strpos($field_name, 'field_') === FALSE || strpos($field_name, '_value') === FALSE) {
+        continue;
+      }
+
+      // Remove "_value" from field name and try to load the field.
+      $field_name = drupal_substr($field_name, 0, drupal_strlen($field_name) - 6);
+      if ($field_info = field_info_field($field_name)) {
+        if ($field_info['type'] == 'number_integer') {
+          $views_field_data = field_views_field_default_views_data($field_info);
+          $options[$sort_option['table'] . ':' . $sort_option['field']] = filter_xss($views_field_data[$sort_option['table']][$sort_option['field']]['title']);
+        }
+      }
+    }
+
+    // If options are emtpy, show warning message.
+    if (count($options) == 1) {
+      $form['field_warning'] = array(
+        '#markup' => '<div class="messages warning">' . t('Add weight integer field to sorts so it can be selected.') . '</div>',
+      );
+    }
+
+    $form['field'] = array(
+      '#type' => 'select',
+      '#title' => t('Field'),
+      '#options' => $options,
+      '#default_value' => $field->options['draggableviews']['draggableviews_handler_fieldapi']['field'],
+      '#description' => t('Please select field that contains weight. It should be integer type and already added to sorts of the view.'),
+    );
+    return $form;
+  }
+
+  function get($field, $index) {
+    // Get the name of selected field.
+    $field_option = $field->options['draggableviews']['draggableviews_handler_fieldapi']['field'];
+    list($field_table, $field_name) = explode(':', $field_option);
+    // Current row.
+    $row = $field->view->result[$index];
+    // Check whether key has table name and field name in it.
+    foreach ($row as $key => $value) {
+      if (strpos($key, $field_table) !== FALSE && strpos($key, $field_name) !== FALSE) {
+        return $value;
+      }
+    }
+  }
+
+  function set($form_state) {
+    $fv = $form_state['values'];
+    $view = $form_state['build_info']['args'][0];
+    $view_name = $view->name;
+    $view_display = $view->current_display;
+    // View arguments.
+    $arguments = $view->args;
+    if (isset($view->exposed_raw_input)) {
+      $arguments += $view->exposed_raw_input;
+      ksort($arguments);
+      // Redirect view to the same page with exposed filters set.
+      $form_state['redirect'] = array(current_path(), array('query' => $view->exposed_raw_input));
+    }
+
+    $base_table = $view->base_table;
+    $entity_info_all = entity_get_info();
+    $entity_type = '';
+    foreach ($entity_info_all as $entity_name_key => $entity_info) {
+      if ($entity_info['base table'] == $view->base_table) {
+        $entity_type = $entity_name_key;
+        break;
+      }
+    }
+
+    $options_field = $view->field['draggableviews']->options['draggableviews']['draggableviews_handler_fieldapi']['field'];
+    list($field_tabe, $field_column) = explode(':', $options_field);
+    // Remove '_value' from column name to get field name.
+    $field_name = drupal_substr($field_column, 0, drupal_strlen($field_column) - 6);
+
+    // Give other modules a chance to alter saved arguments.
+    drupal_alter('draggableviews_handler_fieldapi_arguments', $fv['draggableviews'], $view);
+
+    // Save the values of the field.
+    foreach ($fv['draggableviews'] as $item) {
+      if (isset($item['id']) && isset($item['weight'])) {
+        $entity = reset(entity_load($entity_type, array($item['id'])));
+        $entity->{$field_name}[LANGUAGE_NONE][0]['value'] = $item['weight'];
+        entity_save($entity_type, $entity);
+      }
+    }
+  }
+}
diff --git a/sites/all/modules/draggableviews/handlers/draggableviews_handler_native.inc b/sites/all/modules/draggableviews/handlers/draggableviews_handler_native.inc
new file mode 100644
index 0000000000000000000000000000000000000000..b39853091fd3f53e563e8f2dc56f7fb8e98e0ba4
--- /dev/null
+++ b/sites/all/modules/draggableviews/handlers/draggableviews_handler_native.inc
@@ -0,0 +1,71 @@
+<?php
+
+/**
+ * @file
+ * Native handler plugin.
+ */
+
+$plugin = array(
+  'label' => 'Native',
+  'handler' => array(
+    'class' => 'draggableviews_handler_native',
+  ),
+);
+
+class draggableviews_handler_native extends draggableviews_handler {
+  public function get($field, $index) {
+    $row = $field->view->result[$index];
+    return (isset($row->draggableviews_structure_weight)) ? $row->draggableviews_structure_weight : 0;
+  }
+
+  function set($form_state) {
+    $fv = $form_state['values'];
+    $view = $form_state['build_info']['args'][0];
+    $view_name = $view->name;
+    $view_display = $view->current_display;
+    // View arguments.
+    $arguments = $view->args;
+    if (isset($view->exposed_raw_input)) {
+      $arguments += $view->exposed_raw_input;
+      ksort($arguments);
+      // Redirect view to the same page with exposed filters set.
+      $form_state['redirect'] = array(current_path(), array('query' => $view->exposed_raw_input));
+    }
+
+    // Give other modules a chance to alter saved arguments.
+    drupal_alter('draggableviews_handler_native_arguments', $arguments, $view, $fv['draggableviews']);
+
+    $args_string = json_encode($arguments);
+
+    // Save records to our custom table.
+    $weight = 0;
+    foreach ($fv['draggableviews'] as $item) {
+      // Make sure id is available.
+      if (!isset($item['id'])) {
+        continue;
+      }
+      // Delete previous order record.
+      db_delete('draggableviews_structure')
+        ->condition('view_name', $view_name)
+        ->condition('view_display', $view_display)
+        ->condition('args', $args_string)
+        ->condition('entity_id', $item['id'])
+        ->execute();
+
+      // Create new order record.
+      $record = array(
+        'view_name' => $view_name,
+        'view_display' => $view_display,
+        'args' => $args_string,
+        'entity_id' => $item['id'],
+        'weight' => $weight,
+      );
+      // If parent element exists, save it.
+      if (isset($item['parent'])) {
+        $record['parent'] = $item['parent'];
+      }
+      drupal_write_record('draggableviews_structure', $record);
+      $weight++;
+    }
+  }
+}
diff --git a/sites/all/modules/draggableviews/handlers/draggableviews_hierarchy_handler.inc b/sites/all/modules/draggableviews/handlers/draggableviews_hierarchy_handler.inc
new file mode 100644
index 0000000000000000000000000000000000000000..915bdb5832bd3549a462087436a0ceb9ce85afe7
--- /dev/null
+++ b/sites/all/modules/draggableviews/handlers/draggableviews_hierarchy_handler.inc
@@ -0,0 +1,72 @@
+<?php
+
+/**
+ * @file
+ * Base plugin implementation.
+ */
+
+/**
+ * Parent class for all hierarchy handlers.
+ */
+class draggableviews_hierarchy_handler {
+
+  /**
+   * Get the parent value.
+   *
+   * @param object $field
+   *   Draggableviews field handler. View is $field->view,
+   *   to get a row $field->view->result[$index].
+   * @param int $index
+   *   Index of the row.
+   *
+   * @return int
+   *   Weight value.
+   */
+  public function get($field, $index) {}
+
+  /**
+   * Save parent value.
+   *
+   * @param $form_state
+   *   Attay of form state of the form.
+   *   View object $form_state['values']['view'].
+   */
+  public function set($form_state) {}
+
+  /**
+   * Form with settings of the handler.
+   *
+   * @param object $field
+   *  Draggableviews field handler.
+   *
+   * @return array
+   *  Form array.
+   */
+  public function options_form($field) {}
+
+  /**
+   * Settings form default values.
+   *
+   * @return array
+   *   Array with default values.
+   */
+  public function option_definition() {}
+
+  /**
+   * Get "results" array index of and item with specific base field id.
+   *
+   * @param object $view
+   *   Views object
+   * @param type $id
+   *   Base field id.
+   *
+   * @return int
+   */
+  public function get_index($view, $id) {
+    foreach ($view->result as $key => $item) {
+      if ($item->{$view->base_field} == $id) {
+        return $key;
+      }
+    }
+  }
+}
diff --git a/sites/all/modules/draggableviews/handlers/draggableviews_hierarchy_handler_native.inc b/sites/all/modules/draggableviews/handlers/draggableviews_hierarchy_handler_native.inc
new file mode 100644
index 0000000000000000000000000000000000000000..c3a4eccba03b8dc4d42c2cf50cd9bc1412628caf
--- /dev/null
+++ b/sites/all/modules/draggableviews/handlers/draggableviews_hierarchy_handler_native.inc
@@ -0,0 +1,31 @@
+<?php
+
+/**
+ * @file
+ * Native handler plugin.
+ */
+
+$plugin = array(
+  'label' => 'Native',
+  'handler' => array(
+    'class' => 'draggableviews_hierarchy_handler_native',
+  ),
+);
+
+class draggableviews_hierarchy_handler_native extends draggableviews_hierarchy_handler {
+  public function get($field, $index) {
+    $row = $field->view->result[$index];
+    return (isset($row->draggableviews_structure_parent)) ? $row->draggableviews_structure_parent : 0;
+  }
+
+  public function get_depth($field, $index) {
+    $row = $field->view->result[$index];
+    // If parent is available, set parent's depth +1.
+    return (!empty($row->draggableviews_structure_parent)) ? $this->get_depth($field, $this->get_index($field->view, $row->draggableviews_structure_parent)) + 1 : 0;
+  }
+
+  // Don't need to set value here as it is done in "weight" handler
+  // draggableviews_handler in order to avoid doing multiple identical queries
+  // to draggableviews_structure table.
+  function set($form_state) {}
+}
diff --git a/sites/all/modules/draggableviews/js/draggableviews_list.js b/sites/all/modules/draggableviews/js/draggableviews_list.js
new file mode 100644
index 0000000000000000000000000000000000000000..822994860fdd3f1866aee96fb9a89a5ecbb1de4d
--- /dev/null
+++ b/sites/all/modules/draggableviews/js/draggableviews_list.js
@@ -0,0 +1,45 @@
+/**
+ * @file
+ * Adds draggable functionality to the html list display of the view.
+ */
+
+(function ($) {
+ Drupal.behaviors.draggableViews = {
+  attach: function (context, settings) {
+    $('.views-form .' + Drupal.settings.draggableviews_row_class + ':not(.draggableviews-processed)', context)
+    // Add class for theming.
+    .addClass('draggableviews-processed')
+    // Add sortable effect.
+    .sortable({
+      update: function(event, ui) {
+        $( ".draggableviews-weight" ).each(function (i, Val) {
+          $(this).val(i);
+        });
+        if (!$(this).hasClass('draggableviews-changed')) {
+          // If view is not ajaxified.
+          if (!Drupal.settings.draggableviews_ajax) {
+            $('<div class="draggableviews-changed-warning messages warning">' + Drupal.t('Changes made in this list will not be saved until the form is submitted.') + '</div>')
+              .insertBefore($(this).parents('form div.item-list')).hide().fadeIn('slow');
+            $(this).addClass('draggableviews-changed');
+          }
+          else {
+            // If view ajaxified.
+            $('<div class="draggableviews-changed-notice messages warning">' + Drupal.t('Order of this view has been changed.') + '</div>')
+              .insertBefore($(this).parents('form div.item-list')).hide().fadeIn('slow').delay(3000).fadeOut('slow');
+            $(this).addClass('draggableviews-changed');
+          }
+        }
+        // If Ajax enabled, we should submit the form.
+        if (Drupal.settings.draggableviews_ajax) {
+          $(this).parent().parent().find('#edit-submit').trigger('mousedown');
+        }
+      },
+      containment: 'parent',
+      cursor: 'move'
+    });
+    if (Drupal.settings.draggableviews_ajax) {
+      $('.views-form .' + Drupal.settings.draggableviews_row_class).parent().parent().find('#edit-submit').hide();
+    }
+  }
+ }
+})(jQuery);
diff --git a/sites/all/modules/draggableviews/js/draggableviews_table.js b/sites/all/modules/draggableviews/js/draggableviews_table.js
new file mode 100644
index 0000000000000000000000000000000000000000..2ad0de6eaf272009ebbf150429ef4e42f7375c1f
--- /dev/null
+++ b/sites/all/modules/draggableviews/js/draggableviews_table.js
@@ -0,0 +1,37 @@
+/**
+ * @file
+ * Adds draggable functionality to the table display of the view.
+ */
+
+(function ($) {
+  Drupal.behaviors.draggableviewsAutosave = {
+    attach: function(){
+      if (typeof Drupal.tableDrag == 'undefined') {
+        return;
+      }
+      for (var prop in Drupal.tableDrag){
+        if (prop.substring(0, 14) == 'draggableviews'){
+          var table = Drupal.tableDrag[prop];
+          table.onDrop = function() {
+            // Hide change messages that are not relevant when saving form
+            // through AJAX.
+            $('.tabledrag-changed').hide();
+            $('.tabledrag-changed-warning').hide();
+            $table = $(this.table);
+            // Submit form with AJAX.
+            $table.parent().find('#edit-actions input').triggerHandler('mousedown');
+            // The previously dragged row is left with class styling the row
+            // yellow style, indicating unsaved state. To increate UX we remove
+            // this class with some delay to indicate that progress was made in
+            // the background.
+            $('.drag-previous').removeClass('drag-previous');
+            $('<div class="draggableviews-changed-notice messages warning">' + Drupal.t('Order of this view has been changed.') + '</div>')
+              .insertBefore($table).hide().fadeIn('slow').delay(3000).fadeOut('slow');
+          }
+          // Hide Save button.
+          $('#' + prop).parent().find('#edit-actions input').hide();
+        }
+      }
+    }
+  }
+})(jQuery);
diff --git a/sites/all/modules/draggableviews/test/draggableviews.test b/sites/all/modules/draggableviews/test/draggableviews.test
new file mode 100644
index 0000000000000000000000000000000000000000..1ca36ea7f3ee2c9022f0470784ae5c54cef132fd
--- /dev/null
+++ b/sites/all/modules/draggableviews/test/draggableviews.test
@@ -0,0 +1,425 @@
+<?php
+
+/**
+ * @file
+ * Test cases file.
+ */
+
+/**
+ * Class for testing Draggableviews module.
+ */
+class DraggableviewsTestCase extends DrupalWebTestCase {
+
+  function setUp() {
+    parent::setUp(array('ctools', 'views', 'views_ui', 'entity', 'draggableviews', 'draggableviews_test'));
+  }
+
+  /**
+   * Fork from drupalPost().
+   *
+   * When action of the form determined we don't care about exposed filter
+   * arguments passed to the view. In this fork we use
+   * $this->getUrl() unconditionally.
+   */
+  protected function drupalDraggableviewsPost($path, $edit, $submit, array $options = array(), array $headers = array(), $form_html_id = NULL, $extra_post = NULL) {
+    $submit_matches = FALSE;
+    $ajax = is_array($submit);
+    if (isset($path)) {
+      $this->drupalGet($path, $options);
+    }
+    if ($this->parse()) {
+      $edit_save = $edit;
+      // Let's iterate over all the forms.
+      $xpath = "//form";
+      if (!empty($form_html_id)) {
+        $xpath .= "[@id='" . $form_html_id . "']";
+      }
+      $forms = $this->xpath($xpath);
+      foreach ($forms as $form) {
+        // We try to set the fields of this form as specified in $edit.
+        $edit = $edit_save;
+        $post = array();
+        $upload = array();
+        $submit_matches = $this->handleForm($post, $edit, $upload, $ajax ? NULL : $submit, $form);
+//        $action = isset($form['action']) ? $this->getAbsoluteUrl((string) $form['action']) : $this->getUrl();
+        $action = $this->getUrl();
+        if ($ajax) {
+          $action = $this->getAbsoluteUrl(!empty($submit['path']) ? $submit['path'] : 'system/ajax');
+          // Ajax callbacks verify the triggering element if necessary, so while
+          // we may eventually want extra code that verifies it in the
+          // handleForm() function, it's not currently a requirement.
+          $submit_matches = TRUE;
+        }
+
+        // We post only if we managed to handle every field in edit and the
+        // submit button matches.
+        if (!$edit && ($submit_matches || !isset($submit))) {
+          $post_array = $post;
+          if ($upload) {
+            // TODO: cURL handles file uploads for us, but the implementation
+            // is broken. This is a less than elegant workaround. Alternatives
+            // are being explored at #253506.
+            foreach ($upload as $key => $file) {
+              $file = drupal_realpath($file);
+              if ($file && is_file($file)) {
+                $post[$key] = '@' . $file;
+              }
+            }
+          }
+          else {
+            foreach ($post as $key => $value) {
+              // Encode according to application/x-www-form-urlencoded
+              // Both names and values needs to be urlencoded, according to
+              // http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.1
+              $post[$key] = urlencode($key) . '=' . urlencode($value);
+            }
+            $post = implode('&', $post) . $extra_post;
+          }
+          $out = $this->curlExec(array(CURLOPT_URL => $action, CURLOPT_POST => TRUE, CURLOPT_POSTFIELDS => $post, CURLOPT_HTTPHEADER => $headers));
+          // Ensure that any changes to variables in the other thread are picked up.
+          $this->refreshVariables();
+
+          // Replace original page output with new output from redirected page(s).
+          if ($new = $this->checkForMetaRefresh()) {
+            $out = $new;
+          }
+          $this->verbose('POST request to: ' . $path .
+                         '<hr />Ending URL: ' . $this->getUrl() .
+                         '<hr />Fields: ' . highlight_string('<?php ' . var_export($post_array, TRUE), TRUE) .
+                         '<hr />' . $out);
+          return $out;
+        }
+      }
+      // We have not found a form which contained all fields of $edit.
+      foreach ($edit as $name => $value) {
+        $this->fail(t('Failed to set field @name to @value', array('@name' => $name, '@value' => $value)));
+      }
+      if (!$ajax && isset($submit)) {
+        $this->assertTrue($submit_matches, t('Found the @submit button', array('@submit' => $submit)));
+      }
+      $this->fail(t('Found the requested form fields at @path', array('@path' => $path)));
+    }
+  }
+}
+
+/**
+ * Testing Native Handler.
+ */
+class DraggableviewsNativeHandlerTestCase extends DraggableviewsTestCase {
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Native handler',
+      'description' => 'Test the native handler.',
+      'group' => 'Draggableviews',
+    );
+  }
+
+  function testSort() {
+    $permissions = array('access content');
+    $rid = $this->drupalCreateRole($permissions);
+
+    // Create five test users.
+    $accounts = array();
+    for ($i = 0; $i < 5; $i++) {
+      $edit = array();
+      $edit['name']   = $this->randomName();
+      // First three users should be prefixed 'test_'.
+      if ($i < 3) {
+        $edit['name'] = 'test_' . $edit['name'];
+      }
+      $edit['mail']   = $edit['name'] . '@example.com';
+      $edit['roles']  = array($rid => $rid);
+      $edit['pass']   = user_password();
+      $edit['status'] = 1;
+
+      $account = user_save(drupal_anonymous_user(), $edit);
+      $account->pass_raw = $edit['pass'];
+
+      $accounts[$account->uid] = $account;
+    }
+
+    $account = $this->drupalCreateUser(array('access content', 'access draggableviews', 'access user profiles', 'access contextual links'));
+    $this->drupalLogin($account);
+
+    // Now lets sort and save a view.
+    $edit = array(
+      'draggableviews[0][weight]' => 0,
+      'draggableviews[0][id]' => 1,
+      'draggableviews[1][weight]' => 1,
+      'draggableviews[1][id]' => 2,
+      'draggableviews[2][weight]' => 2,
+      'draggableviews[2][id]' => 3,
+      'draggableviews[3][weight]' => 3,
+      'draggableviews[3][id]' => 4,
+      'draggableviews[4][weight]' => 4,
+      'draggableviews[4][id]' => 5,
+      'draggableviews[5][weight]' => 5,
+      'draggableviews[5][id]' => 6,
+      'draggableviews[6][weight]' => 6,
+      'draggableviews[6][id]' => 7,
+    );
+    $this->drupalPost('users-set', $edit, t('Save'));
+
+    // Assert that first user is on first place, and second is on second.
+    $first_row = $this->xpath('//tr[@class="odd views-row-first draggable"]/td/a[@class="username"]');
+    $second_row = $this->xpath('//tr[@class="even draggable"]/td/a[@class="username"]');
+    $this->assertEqual((string) $first_row[0], 'placeholder-for...', t('First row user uid 1.'));
+    $this->assertEqual((string) $second_row[0], $accounts[2]->name, t('Second row user uid 2.'));
+
+    // Now save a different sort (first and second rows changed places).
+    $edit = array(
+      'draggableviews[0][weight]' => 0,
+      'draggableviews[0][id]' => 2,
+      'draggableviews[1][weight]' => 1,
+      'draggableviews[1][id]' => 1,
+      'draggableviews[2][weight]' => 2,
+      'draggableviews[2][id]' => 3,
+      'draggableviews[3][weight]' => 3,
+      'draggableviews[3][id]' => 4,
+      'draggableviews[4][weight]' => 4,
+      'draggableviews[4][id]' => 5,
+      'draggableviews[5][weight]' => 5,
+      'draggableviews[5][id]' => 6,
+      'draggableviews[6][weight]' => 6,
+      'draggableviews[6][id]' => 7,
+    );
+    $this->drupalPost('users-set', $edit, t('Save'));
+    // Assert that first user is on second place, and second user is on first.
+    $first_row = $this->xpath('//tr[@class="odd views-row-first draggable"]/td/a[@class="username"]');
+    $second_row = $this->xpath('//tr[@class="even draggable"]/td/a[@class="username"]');
+    $this->assertEqual((string) $first_row[0], $accounts[2]->name, t('First row user uid 2.'));
+    $this->assertEqual((string) $second_row[0], 'placeholder-for...', t('Second row user uid 1.'));
+
+    // Apply exposed filter and set weights.
+    $edit = array(
+      'draggableviews[0][weight]' => 0,
+      'draggableviews[0][id]' => 4,
+      'draggableviews[1][weight]' => 1,
+      'draggableviews[1][id]' => 3,
+      'draggableviews[2][weight]' => 2,
+      'draggableviews[2][id]' => 2,
+    );
+    $this->drupalDraggableviewsPost('users-set', $edit, t('Save'), array('query' => array('mail' => 'test')));
+
+    // Now lets check display view page.
+    $this->drupalGet('users-display');
+    $first_row = $this->xpath('//tr[@class="odd views-row-first"]/td/a[@class="username"]');
+    $second_row = $this->xpath('//tr[@class="even"]/td/a[@class="username"]');
+    $this->assertEqual((string) $first_row[0], $accounts[2]->name, t('Display view. First row user uid 2.'));
+    $this->assertEqual((string) $second_row[0], 'placeholder-for...', t('Display view. Second row user uid 1.'));
+
+    // Check display view with applied exposed filter.
+    $this->drupalGet('users-display', array('query' => array('mail' => 'test')));
+    $first_row = $this->xpath('//tr[@class="odd views-row-first"]/td/a[@class="username"]');
+    $second_row = $this->xpath('//tr[@class="even"]/td/a[@class="username"]');
+    $this->assertEqual((string) $first_row[0], $accounts[4]->name, t('Display view. Exposed filter applied. First row user uid 4.'));
+    $this->assertEqual((string) $second_row[0], $accounts[3]->name, t('Display view. Exposed filter applied. Second row user uid 3.'));
+
+    // Check contextual link existense.
+    $contextual_links = $this->xpath('//ul[@class="contextual-links views-contextual-links-page"]/li/a');
+    $href = (string) $contextual_links[0]['href'];
+    $this->assertTrue(strpos($href, 'users-set?destination=users-display') !== FALSE, t('Contextual link exists.'));
+  }
+}
+
+/**
+ * Testing Fielad API Handler.
+ */
+class DraggableviewsFieldAPIHandlerTestCase extends DraggableviewsTestCase {
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Field API handler',
+      'description' => 'Test the Field API handler.',
+      'group' => 'Draggableviews',
+    );
+  }
+
+  public function testSort() {
+    $this->createField();
+
+    $account = $this->drupalCreateUser(array('access content', 'access draggableviews', 'access user profiles', 'access contextual links'));
+    $this->drupalLogin($account);
+
+    // Create five nodes.
+    $nodes = array();
+    for ($i = 0; $i < 5; $i++) {
+      $node = $this->drupalCreateNode(array('type' => 'article',));
+      $nodes[$node->nid] = $node;
+    }
+
+    // Now lets sort and save a view.
+    $edit = array(
+      'draggableviews[0][weight]' => 0,
+      'draggableviews[0][id]' => 1,
+      'draggableviews[1][weight]' => 1,
+      'draggableviews[1][id]' => 2,
+      'draggableviews[2][weight]' => 2,
+      'draggableviews[2][id]' => 3,
+      'draggableviews[3][weight]' => 3,
+      'draggableviews[3][id]' => 4,
+      'draggableviews[4][weight]' => 4,
+      'draggableviews[4][id]' => 5,
+    );
+    $this->drupalPost('nodes-set', $edit, t('Save'));
+    // Assert that first node is on first place, and second is on second.
+    $first_row = $this->xpath('//tr[@class="odd views-row-first draggable"]/td/a');
+    $second_row = $this->xpath('//tr[@class="even draggable"]/td/a');
+    $this->assertEqual((string) $first_row[0], $nodes[1]->title, t('First row node nid 1.'));
+    $this->assertEqual((string) $second_row[0], $nodes[2]->title, t('Second row node nid 2.'));
+
+    // Now save a different sort (first and second rows changed places).
+    $edit = array(
+      'draggableviews[0][weight]' => 0,
+      'draggableviews[0][id]' => 2,
+      'draggableviews[1][weight]' => 1,
+      'draggableviews[1][id]' => 1,
+      'draggableviews[2][weight]' => 2,
+      'draggableviews[2][id]' => 3,
+      'draggableviews[3][weight]' => 3,
+      'draggableviews[3][id]' => 4,
+      'draggableviews[4][weight]' => 4,
+      'draggableviews[4][id]' => 5,
+    );
+    $this->drupalPost('nodes-set', $edit, t('Save'));
+    // Assert that first node is on second place, and second is on first.
+    $first_row = $this->xpath('//tr[@class="odd views-row-first draggable"]/td/a');
+    $second_row = $this->xpath('//tr[@class="even draggable"]/td/a');
+    $this->assertEqual((string) $first_row[0], $nodes[2]->title, t('First row node nid 2.'));
+    $this->assertEqual((string) $second_row[0], $nodes[1]->title, t('Second row node nid 1.'));
+
+    // Check display view order.
+    $this->drupalGet('nodes-display');
+    $first_row = $this->xpath('//tr[@class="odd views-row-first"]/td/a');
+    $second_row = $this->xpath('//tr[@class="even"]/td/a');
+    $this->assertEqual((string) $first_row[0], $nodes[2]->title, t('First row node nid 2.'));
+    $this->assertEqual((string) $second_row[0], $nodes[1]->title, t('Second row node nid 1.'));
+
+    // Check values of nodes.
+    $node1 = node_load(1);
+    $node2 = node_load(2);
+    $this->assertTrue($node1->field_weight[LANGUAGE_NONE][0]['value'] > $node2->field_weight[LANGUAGE_NONE][0]['value'], t('Weight of node 1 is more than weight of node 2.'));
+  }
+
+  // Create a integer field for Article nodes.
+  function createField() {
+    $field = array (
+      'translatable' => '0',
+      'entity_types' =>
+      array (
+      ),
+      'settings' =>
+      array (
+      ),
+      'storage' =>
+      array (
+        'type' => 'field_sql_storage',
+        'settings' =>
+        array (
+        ),
+        'module' => 'field_sql_storage',
+        'active' => '1',
+        'details' =>
+        array (
+          'sql' =>
+          array (
+            'FIELD_LOAD_CURRENT' =>
+            array (
+              'field_data_field_weight' =>
+              array (
+                'value' => 'field_weight_value',
+              ),
+            ),
+            'FIELD_LOAD_REVISION' =>
+            array (
+              'field_revision_field_weight' =>
+              array (
+                'value' => 'field_weight_value',
+              ),
+            ),
+          ),
+        ),
+      ),
+      'foreign keys' =>
+      array (
+      ),
+      'indexes' =>
+      array (
+      ),
+      'id' => '5',
+      'field_name' => 'field_weight',
+      'type' => 'number_integer',
+      'module' => 'number',
+      'active' => '1',
+      'locked' => '0',
+      'cardinality' => '1',
+      'deleted' => '0',
+      'columns' =>
+      array (
+        'value' =>
+        array (
+          'type' => 'int',
+          'not null' => false,
+        ),
+      ),
+      'bundles' =>
+      array (
+        'node' =>
+        array (
+          0 => 'article',
+        ),
+      ),
+    );
+    field_create_field($field);
+
+    $instance = array (
+      'label' => 'Weight',
+      'widget' =>
+      array (
+        'weight' => 0,
+        'type' => 'number',
+        'module' => 'number',
+        'active' => 0,
+        'settings' =>
+        array (
+        ),
+      ),
+      'settings' =>
+      array (
+        'min' => '',
+        'max' => '',
+        'prefix' => '',
+        'suffix' => '',
+        'user_register_form' => false,
+      ),
+      'display' =>
+      array (
+        'default' =>
+        array (
+          'label' => 'above',
+          'type' => 'number_integer',
+          'settings' =>
+          array (
+            'thousand_separator' => ' ',
+            'decimal_separator' => '.',
+            'scale' => 0,
+            'prefix_suffix' => true,
+          ),
+          'module' => 'number',
+          'weight' => 11,
+        ),
+      ),
+      'required' => 0,
+      'description' => '',
+      'default_value' => NULL,
+      'id' => '7',
+      'field_id' => '5',
+      'field_name' => 'field_weight',
+      'entity_type' => 'node',
+      'bundle' => 'article',
+      'deleted' => '0',
+    );
+    field_create_instance($instance);
+  }
+}
diff --git a/sites/all/modules/draggableviews/test/draggableviews_test/draggableviews_test.info b/sites/all/modules/draggableviews/test/draggableviews_test/draggableviews_test.info
new file mode 100644
index 0000000000000000000000000000000000000000..f38e1b0e61d90593b6b03be9c56d8a1318a0db4f
--- /dev/null
+++ b/sites/all/modules/draggableviews/test/draggableviews_test/draggableviews_test.info
@@ -0,0 +1,12 @@
+name = Draggableviews Test
+description = Provides views for testing.
+dependencies[] = draggableviews
+package = Views
+core = 7.x
+hidden = TRUE
+; Information added by drupal.org packaging script on 2012-10-01
+version = "7.x-2.0+26-dev"
+core = "7.x"
+project = "draggableviews"
+datestamp = "1349093683"
+
diff --git a/sites/all/modules/draggableviews/test/draggableviews_test/draggableviews_test.module b/sites/all/modules/draggableviews/test/draggableviews_test/draggableviews_test.module
new file mode 100644
index 0000000000000000000000000000000000000000..58229c311e65806213050454ba527425dc30628b
--- /dev/null
+++ b/sites/all/modules/draggableviews/test/draggableviews_test/draggableviews_test.module
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * Implements hook_views_api().
+ */
+function draggableviews_test_views_api() {
+  return array(
+    'api' => 3,
+    'path' => drupal_get_path('module', 'draggableviews_test'),
+  );
+}
diff --git a/sites/all/modules/draggableviews/test/draggableviews_test/draggableviews_test.views_default.inc b/sites/all/modules/draggableviews/test/draggableviews_test/draggableviews_test.views_default.inc
new file mode 100644
index 0000000000000000000000000000000000000000..b6e7ad87fda66b7efc68b6d0e6e70780d850f8c3
--- /dev/null
+++ b/sites/all/modules/draggableviews/test/draggableviews_test/draggableviews_test.views_default.inc
@@ -0,0 +1,248 @@
+<?php
+
+/**
+ * @file
+ * Views to import for testing.
+ */
+
+/**
+ * Implements hook_views_default_views().
+ */
+function draggableviews_test_views_default_views() {
+  $view = new view;
+  $view->name = 'users';
+  $view->description = '';
+  $view->tag = 'default';
+  $view->base_table = 'users';
+  $view->human_name = 'Users';
+  $view->core = 7;
+  $view->api_version = '3.0';
+  $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
+
+  /* Display: Master */
+  $handler = $view->new_display('default', 'Master', 'default');
+  $handler->display->display_options['title'] = 'Users';
+  $handler->display->display_options['access']['type'] = 'perm';
+  $handler->display->display_options['access']['perm'] = 'access user profiles';
+  $handler->display->display_options['cache']['type'] = 'none';
+  $handler->display->display_options['query']['type'] = 'views_query';
+  $handler->display->display_options['query']['options']['query_comment'] = FALSE;
+  $handler->display->display_options['query']['options']['query_tags'] = FALSE;
+  $handler->display->display_options['exposed_form']['type'] = 'basic';
+  $handler->display->display_options['pager']['type'] = 'full';
+  $handler->display->display_options['pager']['options']['items_per_page'] = '10';
+  $handler->display->display_options['style_plugin'] = 'table';
+  /* Field: User: Name */
+  $handler->display->display_options['fields']['name']['id'] = 'name';
+  $handler->display->display_options['fields']['name']['table'] = 'users';
+  $handler->display->display_options['fields']['name']['field'] = 'name';
+  $handler->display->display_options['fields']['name']['alter']['alter_text'] = 0;
+  $handler->display->display_options['fields']['name']['alter']['make_link'] = 0;
+  $handler->display->display_options['fields']['name']['alter']['absolute'] = 0;
+  $handler->display->display_options['fields']['name']['alter']['word_boundary'] = 0;
+  $handler->display->display_options['fields']['name']['alter']['ellipsis'] = 0;
+  $handler->display->display_options['fields']['name']['alter']['strip_tags'] = 0;
+  $handler->display->display_options['fields']['name']['alter']['trim'] = 0;
+  $handler->display->display_options['fields']['name']['alter']['html'] = 0;
+  $handler->display->display_options['fields']['name']['hide_empty'] = 0;
+  $handler->display->display_options['fields']['name']['empty_zero'] = 0;
+  $handler->display->display_options['fields']['name']['link_to_user'] = 1;
+  $handler->display->display_options['fields']['name']['overwrite_anonymous'] = 0;
+  /* Field: Draggableviews: User */
+  $handler->display->display_options['fields']['draggableviews']['id'] = 'draggableviews';
+  $handler->display->display_options['fields']['draggableviews']['table'] = 'users';
+  $handler->display->display_options['fields']['draggableviews']['field'] = 'draggableviews';
+  $handler->display->display_options['fields']['draggableviews']['element_label_colon'] = 1;
+  $handler->display->display_options['fields']['draggableviews']['element_default_classes'] = 0;
+  $handler->display->display_options['fields']['draggableviews']['hide_empty'] = 0;
+  $handler->display->display_options['fields']['draggableviews']['empty_zero'] = 0;
+  $handler->display->display_options['fields']['draggableviews']['hide_alter_empty'] = 0;
+  $handler->display->display_options['fields']['draggableviews']['draggableviews']['ajax'] = 0;
+  /* Field: User: E-mail */
+  $handler->display->display_options['fields']['mail']['id'] = 'mail';
+  $handler->display->display_options['fields']['mail']['table'] = 'users';
+  $handler->display->display_options['fields']['mail']['field'] = 'mail';
+  $handler->display->display_options['fields']['mail']['alter']['alter_text'] = 0;
+  $handler->display->display_options['fields']['mail']['alter']['make_link'] = 0;
+  $handler->display->display_options['fields']['mail']['alter']['absolute'] = 0;
+  $handler->display->display_options['fields']['mail']['alter']['external'] = 0;
+  $handler->display->display_options['fields']['mail']['alter']['replace_spaces'] = 0;
+  $handler->display->display_options['fields']['mail']['alter']['trim_whitespace'] = 0;
+  $handler->display->display_options['fields']['mail']['alter']['nl2br'] = 0;
+  $handler->display->display_options['fields']['mail']['alter']['word_boundary'] = 1;
+  $handler->display->display_options['fields']['mail']['alter']['ellipsis'] = 1;
+  $handler->display->display_options['fields']['mail']['alter']['more_link'] = 0;
+  $handler->display->display_options['fields']['mail']['alter']['strip_tags'] = 0;
+  $handler->display->display_options['fields']['mail']['alter']['trim'] = 0;
+  $handler->display->display_options['fields']['mail']['alter']['html'] = 0;
+  $handler->display->display_options['fields']['mail']['element_label_colon'] = 1;
+  $handler->display->display_options['fields']['mail']['element_default_classes'] = 1;
+  $handler->display->display_options['fields']['mail']['hide_empty'] = 0;
+  $handler->display->display_options['fields']['mail']['empty_zero'] = 0;
+  $handler->display->display_options['fields']['mail']['hide_alter_empty'] = 1;
+  /* Sort criterion: Draggableviews: Weight */
+  $handler->display->display_options['sorts']['weight']['id'] = 'weight';
+  $handler->display->display_options['sorts']['weight']['table'] = 'draggableviews_structure';
+  $handler->display->display_options['sorts']['weight']['field'] = 'weight';
+  $handler->display->display_options['sorts']['weight']['draggableviews_setting_view'] = 'users:page';
+  $handler->display->display_options['sorts']['weight']['draggableviews_setting_new_items_bottom_list'] = 1;
+  /* Filter criterion: User: Active */
+  $handler->display->display_options['filters']['status']['id'] = 'status';
+  $handler->display->display_options['filters']['status']['table'] = 'users';
+  $handler->display->display_options['filters']['status']['field'] = 'status';
+  $handler->display->display_options['filters']['status']['value'] = '1';
+  $handler->display->display_options['filters']['status']['group'] = 1;
+  $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
+  /* Filter criterion: User: E-mail */
+  $handler->display->display_options['filters']['mail']['id'] = 'mail';
+  $handler->display->display_options['filters']['mail']['table'] = 'users';
+  $handler->display->display_options['filters']['mail']['field'] = 'mail';
+  $handler->display->display_options['filters']['mail']['operator'] = 'starts';
+  $handler->display->display_options['filters']['mail']['exposed'] = TRUE;
+  $handler->display->display_options['filters']['mail']['expose']['operator_id'] = 'mail_op';
+  $handler->display->display_options['filters']['mail']['expose']['label'] = 'E-mail';
+  $handler->display->display_options['filters']['mail']['expose']['operator'] = 'mail_op';
+  $handler->display->display_options['filters']['mail']['expose']['identifier'] = 'mail';
+  $handler->display->display_options['filters']['mail']['expose']['required'] = 0;
+  $handler->display->display_options['filters']['mail']['expose']['multiple'] = FALSE;
+
+  /* Display: Page */
+  $handler = $view->new_display('page', 'Page', 'page_1');
+  $handler->display->display_options['defaults']['fields'] = FALSE;
+  /* Field: User: Name */
+  $handler->display->display_options['fields']['name']['id'] = 'name';
+  $handler->display->display_options['fields']['name']['table'] = 'users';
+  $handler->display->display_options['fields']['name']['field'] = 'name';
+  $handler->display->display_options['fields']['name']['alter']['alter_text'] = 0;
+  $handler->display->display_options['fields']['name']['alter']['make_link'] = 0;
+  $handler->display->display_options['fields']['name']['alter']['absolute'] = 0;
+  $handler->display->display_options['fields']['name']['alter']['word_boundary'] = 0;
+  $handler->display->display_options['fields']['name']['alter']['ellipsis'] = 0;
+  $handler->display->display_options['fields']['name']['alter']['strip_tags'] = 0;
+  $handler->display->display_options['fields']['name']['alter']['trim'] = 0;
+  $handler->display->display_options['fields']['name']['alter']['html'] = 0;
+  $handler->display->display_options['fields']['name']['hide_empty'] = 0;
+  $handler->display->display_options['fields']['name']['empty_zero'] = 0;
+  $handler->display->display_options['fields']['name']['link_to_user'] = 1;
+  $handler->display->display_options['fields']['name']['overwrite_anonymous'] = 0;
+  /* Field: User: E-mail */
+  $handler->display->display_options['fields']['mail']['id'] = 'mail';
+  $handler->display->display_options['fields']['mail']['table'] = 'users';
+  $handler->display->display_options['fields']['mail']['field'] = 'mail';
+  $handler->display->display_options['fields']['mail']['alter']['alter_text'] = 0;
+  $handler->display->display_options['fields']['mail']['alter']['make_link'] = 0;
+  $handler->display->display_options['fields']['mail']['alter']['absolute'] = 0;
+  $handler->display->display_options['fields']['mail']['alter']['external'] = 0;
+  $handler->display->display_options['fields']['mail']['alter']['replace_spaces'] = 0;
+  $handler->display->display_options['fields']['mail']['alter']['trim_whitespace'] = 0;
+  $handler->display->display_options['fields']['mail']['alter']['nl2br'] = 0;
+  $handler->display->display_options['fields']['mail']['alter']['word_boundary'] = 1;
+  $handler->display->display_options['fields']['mail']['alter']['ellipsis'] = 1;
+  $handler->display->display_options['fields']['mail']['alter']['more_link'] = 0;
+  $handler->display->display_options['fields']['mail']['alter']['strip_tags'] = 0;
+  $handler->display->display_options['fields']['mail']['alter']['trim'] = 0;
+  $handler->display->display_options['fields']['mail']['alter']['html'] = 0;
+  $handler->display->display_options['fields']['mail']['element_label_colon'] = 1;
+  $handler->display->display_options['fields']['mail']['element_default_classes'] = 1;
+  $handler->display->display_options['fields']['mail']['hide_empty'] = 0;
+  $handler->display->display_options['fields']['mail']['empty_zero'] = 0;
+  $handler->display->display_options['fields']['mail']['hide_alter_empty'] = 1;
+  $handler->display->display_options['path'] = 'users-display';
+
+  /* Display: Set Page */
+  $handler = $view->new_display('page', 'Set Page', 'page');
+  $handler->display->display_options['path'] = 'users-set';
+
+  $views[$view->name] = $view;
+
+  $view = new view;
+  $view->name = 'nodes';
+  $view->description = '';
+  $view->tag = 'default';
+  $view->base_table = 'node';
+  $view->human_name = 'nodes';
+  $view->core = 7;
+  $view->api_version = '3.0';
+  $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
+
+  /* Display: Master */
+  $handler = $view->new_display('default', 'Master', 'default');
+  $handler->display->display_options['title'] = 'nodes';
+  $handler->display->display_options['access']['type'] = 'perm';
+  $handler->display->display_options['cache']['type'] = 'none';
+  $handler->display->display_options['query']['type'] = 'views_query';
+  $handler->display->display_options['query']['options']['query_comment'] = FALSE;
+  $handler->display->display_options['query']['options']['query_tags'] = FALSE;
+  $handler->display->display_options['exposed_form']['type'] = 'basic';
+  $handler->display->display_options['pager']['type'] = 'full';
+  $handler->display->display_options['pager']['options']['items_per_page'] = '10';
+  $handler->display->display_options['style_plugin'] = 'table';
+  /* Field: Content: Title */
+  $handler->display->display_options['fields']['title']['id'] = 'title';
+  $handler->display->display_options['fields']['title']['table'] = 'node';
+  $handler->display->display_options['fields']['title']['field'] = 'title';
+  $handler->display->display_options['fields']['title']['alter']['alter_text'] = 0;
+  $handler->display->display_options['fields']['title']['alter']['make_link'] = 0;
+  $handler->display->display_options['fields']['title']['alter']['absolute'] = 0;
+  $handler->display->display_options['fields']['title']['alter']['word_boundary'] = 0;
+  $handler->display->display_options['fields']['title']['alter']['ellipsis'] = 0;
+  $handler->display->display_options['fields']['title']['alter']['strip_tags'] = 0;
+  $handler->display->display_options['fields']['title']['alter']['trim'] = 0;
+  $handler->display->display_options['fields']['title']['alter']['html'] = 0;
+  $handler->display->display_options['fields']['title']['hide_empty'] = 0;
+  $handler->display->display_options['fields']['title']['empty_zero'] = 0;
+  $handler->display->display_options['fields']['title']['link_to_node'] = 1;
+  /* Field: Draggableviews: Content */
+  $handler->display->display_options['fields']['draggableviews']['id'] = 'draggableviews';
+  $handler->display->display_options['fields']['draggableviews']['table'] = 'node';
+  $handler->display->display_options['fields']['draggableviews']['field'] = 'draggableviews';
+  $handler->display->display_options['fields']['draggableviews']['element_label_colon'] = 1;
+  $handler->display->display_options['fields']['draggableviews']['element_default_classes'] = 0;
+  $handler->display->display_options['fields']['draggableviews']['hide_empty'] = 0;
+  $handler->display->display_options['fields']['draggableviews']['empty_zero'] = 0;
+  $handler->display->display_options['fields']['draggableviews']['hide_alter_empty'] = 0;
+  $handler->display->display_options['fields']['draggableviews']['draggableviews']['handler'] = 'draggableviews_handler_fieldapi';
+  $handler->display->display_options['fields']['draggableviews']['draggableviews']['ajax'] = 0;
+  $handler->display->display_options['fields']['draggableviews']['draggableviews']['draggableviews_handler_fieldapi'] = array(
+    'field' => 'field_data_field_weight:field_weight_value',
+  );
+  /* Sort criterion: Content: Weight (field_weight) */
+  $handler->display->display_options['sorts']['field_weight_value']['id'] = 'field_weight_value';
+  $handler->display->display_options['sorts']['field_weight_value']['table'] = 'field_data_field_weight';
+  $handler->display->display_options['sorts']['field_weight_value']['field'] = 'field_weight_value';
+  /* Filter criterion: Content: Published */
+  $handler->display->display_options['filters']['status']['id'] = 'status';
+  $handler->display->display_options['filters']['status']['table'] = 'node';
+  $handler->display->display_options['filters']['status']['field'] = 'status';
+  $handler->display->display_options['filters']['status']['value'] = 1;
+  $handler->display->display_options['filters']['status']['group'] = 1;
+  $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
+
+  /* Display: Set Page */
+  $handler = $view->new_display('page', 'Set Page', 'page');
+  $handler->display->display_options['path'] = 'nodes-set';
+
+  /* Display: Display Page */
+  $handler = $view->new_display('page', 'Display Page', 'page_1');
+  $handler->display->display_options['defaults']['fields'] = FALSE;
+  /* Field: Content: Title */
+  $handler->display->display_options['fields']['title']['id'] = 'title';
+  $handler->display->display_options['fields']['title']['table'] = 'node';
+  $handler->display->display_options['fields']['title']['field'] = 'title';
+  $handler->display->display_options['fields']['title']['alter']['alter_text'] = 0;
+  $handler->display->display_options['fields']['title']['alter']['make_link'] = 0;
+  $handler->display->display_options['fields']['title']['alter']['absolute'] = 0;
+  $handler->display->display_options['fields']['title']['alter']['word_boundary'] = 0;
+  $handler->display->display_options['fields']['title']['alter']['ellipsis'] = 0;
+  $handler->display->display_options['fields']['title']['alter']['strip_tags'] = 0;
+  $handler->display->display_options['fields']['title']['alter']['trim'] = 0;
+  $handler->display->display_options['fields']['title']['alter']['html'] = 0;
+  $handler->display->display_options['fields']['title']['hide_empty'] = 0;
+  $handler->display->display_options['fields']['title']['empty_zero'] = 0;
+  $handler->display->display_options['fields']['title']['link_to_node'] = 1;
+  $handler->display->display_options['path'] = 'nodes-display';
+
+  $views[$view->name] = $view;
+  
+  return $views;
+}
diff --git a/sites/all/modules/draggableviews/views/draggableviews.views.inc b/sites/all/modules/draggableviews/views/draggableviews.views.inc
new file mode 100644
index 0000000000000000000000000000000000000000..4a347278f2df715f24df7c7d8ef72339110de5d7
--- /dev/null
+++ b/sites/all/modules/draggableviews/views/draggableviews.views.inc
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * @file
+ * Views hooks implementations.
+ */
+
+/**
+ * Implements hook_views_data_alter().
+ */
+function draggableviews_views_data_alter(&$data) {
+
+  $data['draggableviews_structure']['weight'] = array(
+    'title' => t('Weight'),
+    'group' => t('Draggableviews'),
+    'field' => array(
+      'help' => t('Display the weight value.'),
+      'handler' => 'views_handler_field_numeric',
+      'click sortable' => TRUE,
+    ),
+    'sort' => array(
+      'help' => t('Sort entities by the draggableviews weight table field.'),
+      'handler' => 'draggableviews_handler_sort',
+    ),
+  );
+  $data['draggableviews_structure']['parent'] = array(
+    'title' => t('Parent'),
+    'help' => t('The parent entity id.'),
+    'group' => t('Draggableviews'),
+    'field' => array(
+      'handler' => 'views_handler_field_numeric',
+    ),
+  );
+
+  foreach (entity_get_info() as $entity_type => $info) {
+    if (isset($info['base table']) && isset($data[$info['base table']]['table'])) {
+      $data[$info['base table']]['draggableviews'] = array(
+        'title' => $data[$info['base table']]['table']['group'],
+        'group' => t('Draggableviews'),
+        'help' => t('Provide a draggable functionality.'),
+        'real field' => $info['entity keys']['id'],
+        'field' => array(
+          'handler' => 'draggableviews_handler_field_draggable',
+          'click sortable' => FALSE,
+        ),
+      );
+      // Explain to every entity how to join with draggableviews structure table.
+      $data['draggableviews_structure']['table']['join'][$info['base table']] = array(
+        'handler' => 'draggableviews_join_handler',
+        'left_table' => $info['base table'], // Because this is a direct link it could be left out.
+        'left_field' => $info['entity keys']['id'],
+        'field' => 'entity_id',
+      );
+    }
+  }
+}
diff --git a/sites/all/modules/draggableviews/views/draggableviews_handler_field_draggable.inc b/sites/all/modules/draggableviews/views/draggableviews_handler_field_draggable.inc
new file mode 100644
index 0000000000000000000000000000000000000000..9f4b130f1a347431830a700bfa6a791b2a5f26d3
--- /dev/null
+++ b/sites/all/modules/draggableviews/views/draggableviews_handler_field_draggable.inc
@@ -0,0 +1,199 @@
+<?php
+
+/**
+ * @file
+ * Views field handler. Contains all relevant Draggableviews
+ * options and related logic.
+ * Implements the Views Form API.
+ */
+
+class draggableviews_handler_field_draggable extends views_handler_field {
+
+  function construct() {
+    parent::construct();
+  }
+
+  function option_definition() {
+    $options = parent::option_definition();
+
+    $options['draggableviews'] = array(
+      'contains' => array(
+        'handler' => array('default' => 'draggableviews_handler_native'),
+        'hierarchy_handler' => array('default' => ''),
+        'save_button_label' => array('default' => 'Save'),
+        'ajax' => array('default' => FALSE),
+      ),
+    );
+
+    // Populate default values of form elements provided by handlers.
+    foreach (draggableviews_get_handlers() as $handler_id => $handler_object) {
+      $options['draggableviews']['contains'][$handler_id] = array('default' => $handler_object->option_definition());
+    }
+    return $options;
+  }
+
+  function options_form(&$form, &$form_state) {
+    parent::options_form($form, $form_state);
+
+    // Remove not needed settings options.
+    $form['alter']['#access'] = FALSE;
+    $form['style_settings']['#access'] = FALSE;
+    $form['empty_field_behavior']['#access'] = FALSE;
+
+    $form['draggableviews'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Draggable Views'),
+      '#collapsible' => TRUE,
+      '#collapsed' => FALSE,
+    );
+
+    $handler_options = array();
+    $handler_forms = array();
+    foreach (draggableviews_get_handlers() as $handler_id => $handler_object) {
+      $handler = ctools_get_plugins('draggableviews', 'handler', $handler_id);
+      $handler_options[$handler_id] = filter_xss($handler['label']);
+      $handler_forms[$handler_id] = $handler_object->options_form($this);
+    }
+
+    $form['draggableviews']['handler'] = array(
+      '#type' => 'select',
+      '#title' => t('Sort handler'),
+      '#options' => $handler_options,
+      '#default_value' => $this->options['draggableviews']['handler'],
+    );
+
+    // Add handler's form element as fielset that
+    // is active only if handler selected.
+    foreach ($handler_forms as $handler_id => $handler_form_element) {
+      // Skip empty handler's form elements.
+      if (empty($handler_form_element)) {
+        continue;
+      }
+      $form['draggableviews'][$handler_id] = array(
+        '#type' => 'fieldset',
+        '#title' => check_plain($form['draggableviews']['handler']['#options'][$handler_id]),
+        '#collapsible' => FALSE,
+        '#states' => array(
+          'visible' => array(
+            'select[name="options[draggableviews][handler]"]' => array('value' => $handler_id),
+          ),
+        ),
+      );
+      foreach ($handler_form_element as $key => $form_element) {
+        $form['draggableviews'][$handler_id][$key] = $form_element;
+      }
+    }
+
+    $hierarchy_handler_options = array('' => t('- None -'));
+    $hierarchy_handler_forms = array();
+    foreach (draggableviews_get_hierarchy_handlers() as $handler_id => $handler_object) {
+      $handler = ctools_get_plugins('draggableviews', 'hierarchy_handler', $handler_id);
+      $hierarchy_handler_options[$handler_id] = filter_xss($handler['label']);
+      $hierarchy_handler_forms[$handler_id] = $handler_object->options_form($this);
+    }
+
+    $form['draggableviews']['hierarchy_handler'] = array(
+      '#type' => 'select',
+      '#title' => t('Hierarchy handler'),
+      '#options' => $hierarchy_handler_options,
+      '#default_value' => $this->options['draggableviews']['hierarchy_handler'],
+    );
+
+    // Add handler's form element as fielset that
+    // is active only if handler selected.
+    foreach ($hierarchy_handler_forms as $handler_id => $hierarchy_handler_form_element) {
+      // Skip empty handler's form elements.
+      if (empty($hierarchy_handler_form_element)) {
+        continue;
+      }
+      $form['draggableviews'][$handler_id] = array(
+        '#type' => 'fieldset',
+        '#title' => check_plain($form['draggableviews']['handler']['#options'][$handler_id]),
+        '#collapsible' => FALSE,
+        '#states' => array(
+          'visible' => array(
+            'select[name="options[draggableviews][hierarchy_handler]"]' => array('value' => $handler_id),
+          ),
+        ),
+      );
+      foreach ($hierarchy_handler_form_element as $key => $form_element) {
+        $form['draggableviews'][$handler_id][$key] = $form_element;
+      }
+    }
+
+    $form['draggableviews']['save_button_label'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Custom Save button label'),
+      '#size' => 20,
+      '#description' => t("Allow to change Save button Label."),
+      '#default_value' => $this->options['draggableviews']['save_button_label'],
+    );
+
+    $form['draggableviews']['ajax'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Ajax'),
+      '#description' => t('Use ajax in draggable form.'),
+      '#default_value' => $this->options['draggableviews']['ajax'],
+    );
+  }
+
+  function render($values) {
+    if (user_access('access draggableviews')) {
+      return '<!--form-item-' . $this->options['id'] . '--' . $this->view->row_index . '-->';
+    }
+  }
+
+  /**
+   * The form which replaces the placeholder from render().
+   */
+  function views_form(&$form, &$form_state) {
+    // The view is empty, abort.
+    if (empty($this->view->result)) {
+      return;
+    }
+
+    $form[$this->options['id']] = array(
+      '#tree' => TRUE,
+    );
+    $range = count($this->view->result);
+    // At this point, the query has already been run, so we can access the results
+    // in order to get the base key value (for example, nid for nodes).
+    foreach ($this->view->result as $row_index => $row) {
+      $entity_id = $this->get_value($row);
+
+      $form[$this->options['id']][$row_index] = array(
+        '#tree' => TRUE,
+      );
+
+      $handler_object = draggableviews_get_handler_class($this->options['draggableviews']['handler']);
+
+      // Weight field selectbox.
+      $form[$this->options['id']][$row_index]['weight'] = array(
+        '#type' => 'select',
+        '#options' => range(-$range, $range),
+        '#attributes' => array('class' => array('draggableviews-weight')),
+        '#default_value' => $handler_object->get($this, $row_index),
+      );
+      // Item to keep id of the entity.
+      $form[$this->options['id']][$row_index]['id'] = array(
+        '#type' => 'hidden',
+        '#value' => $this->view->result[$row_index]->{$this->field_alias},
+        '#attributes' => array('class' => 'draggableviews-id'),
+      );
+      // Add parent and depth field.
+      if (!empty($this->options['draggableviews']['hierarchy_handler'])) {
+        $hierarchy_handler_object = draggableviews_get_handler_class($this->options['draggableviews']['hierarchy_handler'], 'hierarchy_handler');
+        $form[$this->options['id']][$row_index]['parent'] = array(
+          '#type' => 'hidden',
+          '#default_value' => $hierarchy_handler_object->get($this, $row_index),
+          '#attributes' => array('class' => 'draggableviews-parent'),
+        );
+        $form[$this->options['id']][$row_index]['depth'] = array(
+          '#type' => 'hidden',
+          '#default_value' => $hierarchy_handler_object->get_depth($this, $row_index),
+          '#attributes' => array('class' => 'draggableviews-depth'),
+        );
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/sites/all/modules/draggableviews/views/draggableviews_handler_sort.inc b/sites/all/modules/draggableviews/views/draggableviews_handler_sort.inc
new file mode 100644
index 0000000000000000000000000000000000000000..1931473a3b9d3806ab863f3d606e07362128184e
--- /dev/null
+++ b/sites/all/modules/draggableviews/views/draggableviews_handler_sort.inc
@@ -0,0 +1,112 @@
+<?php
+
+/**
+ * @file
+ * Native handler sort.
+ */
+
+/**
+ * Sort handler for ordering by weight.
+ */
+class draggableviews_handler_sort extends views_handler_sort {
+  function query() {
+    $this->ensure_my_table();
+    // If new items should be placed in the bottom.
+    if ($this->options['draggableviews_setting_new_items_bottom_list']) {
+      // New items will get big default instead of NULL
+      $alias = $this->table_alias . '_' . $this->field . '_coalesce';
+      $this->query->add_field(NULL, "COALESCE($this->table_alias.$this->field, 10000)", $alias);
+      $this->query->orderby[] = array(
+        'field' => $alias,
+        'direction' => drupal_strtoupper($this->options['order'])
+      );
+    }
+    else {
+      // New items will be placed at the top as have NULL value.
+      $this->query->add_orderby($this->table_alias, $this->real_field);
+    }
+  }
+
+  function option_definition() {
+    $options = parent::option_definition();
+
+    // This handler invokes few times for one view,
+    // in the first time the $this->view->name is empty,
+    // so we need this check.
+    if (is_object($this->view)) {
+      $options['draggableviews_setting_view'] = array('default' => $this->view->name);
+    }
+    else {
+      $options['draggableviews_setting_view'] = array('default' => 'self');
+    }
+
+    $options['draggableviews_setting_arguments'] = array('default' => 'all');
+    $options['draggableviews_setting_arguments_php'] = array('default' => '');
+    $options['draggableviews_setting_new_items_bottom_list'] = array('default' => TRUE);
+
+    return $options;
+  }
+
+  function options_form(&$form, &$form_state) {
+    parent::options_form($form, $form_state);
+    $form['expose_button']['#access'] = FALSE;
+    $form['order']['#description'] = t('Please remember to override settings of the sort criterion if you have display that sets weights and you choose descendling order.');
+
+    // Check whether current views display doesn't have draggableviews field.
+    // If it has, it means that this is setting view so we should set
+    // option draggableviews_setting_view to 'self'
+    $options = _draggableviews_get_views_options($this->view);
+
+    // If it is setting view.
+    if (!is_array($options)) {
+      $form['order']['#access'] = FALSE;
+      $options = isset($this->options['draggableviews_setting_view']) ? $this->options['draggableviews_setting_view'] : 'self';
+      $form['draggableviews_setting_view'] = array(
+        '#type' => 'value',
+        '#value' => $options,
+      );
+    }
+    else {
+      $form['draggableviews_setting_view'] = array(
+        '#type' => 'select',
+        '#title' => t('Display sort as'),
+        '#default_value' => $this->options['draggableviews_setting_view'],
+        '#options' => $options,
+        '#description' => t('Please choose the view and display that sets the order.')
+      );
+      // If there is no setting views available, show error message.
+      if (empty($options)) {
+        drupal_set_message(t('First you should create a view that sets sorting order.'), 'error');
+      }
+    }
+
+    $form['draggableviews_setting_arguments'] = array(
+      '#title' => t('Arguments handling'),
+      '#type' => 'radios',
+      '#options' => array(
+        'all' => t('Use all arguments'),
+        'none' => t('Do not use any arguments (use empty arguments)'),
+        'php' => t('Prepare arguments with PHP code'),
+      ),
+      '#default_value' => $this->options['draggableviews_setting_arguments'],
+      '#description' => t('When sorting order is saved all arguments passed are saved with order. In display view we can choose how to use these arguments.')
+    );
+    $form['draggableviews_setting_arguments_php'] = array(
+      '#title' => t('PHP code to prepare arguments'),
+      '#type' => 'textarea',
+      '#default_value' => $this->options['draggableviews_setting_arguments_php'],
+      '#description' => t('Enter the php code to prepare the arguments. Do not enter <?php ?>. The following variables are available - $view (the view), $arguments (existing arguments - manipulate these to alter the arguments used to sort).'),
+      '#states' => array(
+        'visible' => array(
+          'input[name="options[draggableviews_setting_arguments]"]' => array('value' => 'php'),
+        ),
+      ),
+    );
+    $form['draggableviews_setting_new_items_bottom_list'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('New items appear bottom of the list'),
+      '#description' => t('New items means elements (for example nodes) that do not have saved weight (newly created).'),
+      '#default_value' => $this->options['draggableviews_setting_new_items_bottom_list'],
+    );
+  }
+}
diff --git a/sites/all/modules/draggableviews/views/draggableviews_join_handler.inc b/sites/all/modules/draggableviews/views/draggableviews_join_handler.inc
new file mode 100644
index 0000000000000000000000000000000000000000..9a54515396719f8f08fc20f47d870fdb34881b8e
--- /dev/null
+++ b/sites/all/modules/draggableviews/views/draggableviews_join_handler.inc
@@ -0,0 +1,83 @@
+<?php
+
+/**
+ * @file
+ * Native handler join handler.
+ */
+
+/**
+ * Join handler for extra join conditions.
+ */
+class draggableviews_join_handler extends views_join {
+  /**
+   * Build the SQL for the join this object represents.
+   */
+  function build_join($select_query, $table, $view_query) {
+    $view = $view_query->view;
+
+    if (empty($this->definition['table formula'])) {
+      $right_table = $this->table;
+    }
+    else {
+      $right_table = $this->definition['table formula'];
+    }
+
+    if ($this->left_table) {
+      $left = $view_query->get_table_info($this->left_table);
+      $left_field = "$left[alias].$this->left_field";
+    }
+    else {
+      // This can be used if left_field is a formula or something. It should be used only *very* rarely.
+      $left_field = $this->left_field;
+    }
+
+    $condition = "$left_field = $table[alias].$this->field";
+
+    // Check whether setting view is set.
+    $arguments = array();
+    $weight_key = _draggableviews_get_draggable_sort($view);
+    if (!empty($view->sort[$weight_key]->options['draggableviews_setting_view'])) {
+      $condition .= " AND $table[alias].view_name = :view_name";
+      $condition .= " AND $table[alias].view_display = :view_display";
+
+      // If it is setting view, set current view name and display name.
+      if ($view->sort[$weight_key]->options['draggableviews_setting_view'] == 'self') {
+        $arguments[':view_name'] = $view->name;
+        $arguments[':view_display'] = $view->current_display;
+      }
+      else {
+        list($setting_view_name, $setting_view_display) = explode(':', $view->sort[$weight_key]->options['draggableviews_setting_view']);
+        $arguments[':view_name'] = $setting_view_name;
+        $arguments[':view_display'] = $setting_view_display;
+      }
+
+      // Arguments passed to view (including exposed filters).
+      $view_arguments = $view->args;
+      if (isset($view->exposed_raw_input)) {
+        $view_arguments += $view->exposed_raw_input;
+        ksort($view_arguments);
+      }
+      // Alter arguments according to sort criteria settings.
+      if ($view->sort[$weight_key]->options['draggableviews_setting_arguments'] == 'none') {
+        $view_arguments = array();
+      }
+      // If PHP arguments processing is set.
+      if ($view->sort[$weight_key]->options['draggableviews_setting_arguments'] == 'php') {
+        $clone_view = clone $view;
+        $view_arguments = _draggableviews_eval_return($view->sort[$weight_key]->options['draggableviews_setting_arguments_php'], $view_arguments, $clone_view);
+      }
+      $condition .= " AND $table[alias].args = :view_arguments";
+      $arguments[':view_arguments'] = json_encode($view_arguments);
+    }
+
+    $select_query->addJoin($this->type, $right_table, $table['alias'], $condition, $arguments);
+
+    // Add also parent field.
+    if ($order_view = _draggableviews_load_order_view($view)) {
+      if (isset($order_view->field['draggableviews']->options['draggableviews']['hierarchy_handler'])
+        && $order_view->field['draggableviews']->options['draggableviews']['hierarchy_handler'] == 'draggableviews_hierarchy_handler_native') {
+        $select_query->addField($table['alias'], 'parent', 'draggableviews_structure_parent');
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/sites/all/modules/entity/README.txt b/sites/all/modules/entity/README.txt
index 98b599fa230d34ec9c011775fbb3aba6deffcf72..ed048e42861f587683915dbf42cad6f0a0714f85 100644
--- a/sites/all/modules/entity/README.txt
+++ b/sites/all/modules/entity/README.txt
@@ -27,7 +27,8 @@ developing, you may stop reading now.
     itself.
 
   * Thus the module provides API functions like entity_save(), entity_create(),
-    entity_delete(), entity_view() and entity_access() among others.
+    entity_delete(), entity_revision_delete(), entity_view() and entity_access()
+    among others.
     entity_load(), entity_label() and entity_uri() are already provided by
     Drupal core.
 
@@ -48,17 +49,16 @@ developing, you may stop reading now.
    "Entity" class is provided. In particular, it is useful to extend this class
    in order to easily customize the entity type, e.g. saving.
 
- * The controller supports fieldable entities, however it does not yet support
-   revisions. There is also a controller which supports implementing exportable
-   entities.
+ * The controller supports fieldable entities and revisions. There is also a
+   controller which supports implementing exportable entities.
 
  * The Entity CRUD API helps with providing additional module integration too,
    e.g. exportable entities are automatically integrated with the Features
    module. These module integrations are implemented in separate controller
    classes, which may be overridden and deactivated on their own.
 
- * There is also an optional ui controller class, which assits with providing an
-   administrative UI for managing entities of a certain type.
+ * There is also an optional ui controller class, which assists with providing
+   an administrative UI for managing entities of a certain type.
 
  * For more details check out the documentation in the drupal.org handbook
    http://drupal.org/node/878804 as well as the API documentation, i.e.
diff --git a/sites/all/modules/entity/entity.api.php b/sites/all/modules/entity/entity.api.php
index 1dfb0cf0b5796e78d50cb21c4809191072712331..b37179182ce8deb001ba481764efe24874849340 100644
--- a/sites/all/modules/entity/entity.api.php
+++ b/sites/all/modules/entity/entity.api.php
@@ -74,6 +74,11 @@
  *   - status: (optional) The name of the entity property used by the entity
  *     CRUD API to save the exportable entity status using defined bit flags.
  *     Defaults to 'status'. See entity_has_status().
+ *   - default revision: (optional) The name of the entity property used by
+ *     the entity CRUD API to determine if a newly-created revision should be
+ *     set as the default revision. Defaults to 'default_revision'.
+ *     Note that on entity insert the created revision will be always default
+ *     regardless of the value of this entity property.
  * - export: (optional) An array of information used for exporting. For ctools
  *   exportables compatibility any export-keys supported by ctools may be added
  *   to this array too.
@@ -198,6 +203,8 @@ function entity_crud_hook_entity_info() {
  *   this type.
  * - deletion callback: (optional) A callback that permanently deletes an
  *   entity of this type.
+ * - revision deletion callback: (optional) A callback that deletes a revision
+ *   of the entity.
  * - view callback: (optional) A callback to render a list of entities.
  *   See entity_metadata_view_node() as example.
  * - form callback: (optional) A callback that returns a fully built edit form
diff --git a/sites/all/modules/entity/entity.info b/sites/all/modules/entity/entity.info
index e0a30a65ebc0bc4c38f43b4d7effe7b0af70d807..9f3996a11baab436e86298cd163e1e961bbdaa74 100644
--- a/sites/all/modules/entity/entity.info
+++ b/sites/all/modules/entity/entity.info
@@ -25,9 +25,9 @@ files[] = views/handlers/entity_views_handler_field_uri.inc
 files[] = views/handlers/entity_views_handler_relationship_by_bundle.inc
 files[] = views/handlers/entity_views_handler_relationship.inc
 files[] = views/plugins/entity_views_plugin_row_entity_view.inc
-; Information added by drupal.org packaging script on 2012-05-25
-version = "7.x-1.0-rc3"
+; Information added by drupal.org packaging script on 2012-09-07
+version = "7.x-1.0-rc3+10-dev"
 core = "7.x"
 project = "entity"
-datestamp = "1337981155"
+datestamp = "1346977698"
 
diff --git a/sites/all/modules/entity/entity.module b/sites/all/modules/entity/entity.module
index 576e0e2fe3bccf1b687995ed2c7509bd0dee4669..a657245fe1948e25c345cc1f20708e6d0835983a 100644
--- a/sites/all/modules/entity/entity.module
+++ b/sites/all/modules/entity/entity.module
@@ -54,7 +54,11 @@ define('ENTITY_FIXED', 0x04 | 0x02);
  * @param $entity_type
  *   The type of the entity.
  * @param $op
- *   One of 'create', 'view', 'save', 'delete', 'access' or 'form'.
+ *   One of 'create', 'view', 'save', 'delete', 'revision delete', 'access' or
+ *   'form'.
+ *
+ * @return boolean
+ *   Whether the entity type supports the given operation.
  */
 function entity_type_supports($entity_type, $op) {
   $info = entity_get_info($entity_type);
@@ -62,6 +66,7 @@ function entity_type_supports($entity_type, $op) {
     'view' => 'view callback',
     'create' => 'creation callback',
     'delete' => 'deletion callback',
+    'revision delete' => 'revision deletion callback',
     'save' => 'save callback',
     'access' => 'access callback',
     'form' => 'form callback'
@@ -69,12 +74,16 @@ function entity_type_supports($entity_type, $op) {
   if (isset($info[$keys[$op]])) {
     return TRUE;
   }
-  if ($op != 'access' && in_array('EntityAPIControllerInterface', class_implements($info['controller class']))) {
-    return TRUE;
+  if ($op == 'revision delete') {
+    return in_array('EntityAPIControllerInterface', class_implements($info['controller class']));
   }
-  if ($op == 'form' && entity_ui_controller($entity_type)) {
-    return TRUE;
+  if ($op == 'form') {
+    return (bool) entity_ui_controller($entity_type);
+  }
+  if ($op != 'access') {
+    return in_array('EntityAPIControllerInterface', class_implements($info['controller class']));
   }
+  return FALSE;
 }
 
 /**
@@ -233,6 +242,109 @@ function entity_delete_multiple($entity_type, $ids) {
   }
 }
 
+/**
+ * Loads an entity revision.
+ *
+ * @param $entity_type
+ *   The type of the entity.
+ * @param $revision_id
+ *   The id of the revision to load.
+ *
+ * @return
+ *   The entity object, or FALSE if there is no entity with the given revision
+ *   id.
+ */
+function entity_revision_load($entity_type, $revision_id) {
+  $info = entity_get_info($entity_type);
+  if (!empty($info['entity keys']['revision'])) {
+    $entity_revisions = entity_load($entity_type, FALSE, array($info['entity keys']['revision'] => $revision_id));
+    return reset($entity_revisions);
+  }
+  return FALSE;
+}
+
+/**
+ * Deletes an entity revision.
+ *
+ * @param $entity_type
+ *   The type of the entity.
+ * @param $revision_id
+ *   The revision ID to delete.
+ *
+ * @return
+ *   TRUE if the entity revision could be deleted, FALSE otherwise.
+ */
+function entity_revision_delete($entity_type, $revision_id) {
+  $info = entity_get_info($entity_type);
+  if (isset($info['revision deletion callback'])) {
+    return $info['revision deletion callback']($revision_id, $entity_type);
+  }
+  elseif (in_array('EntityAPIControllerRevisionableInterface', class_implements($info['controller class']))) {
+    return entity_get_controller($entity_type)->deleteRevision($revision_id);
+  }
+  return FALSE;
+}
+
+/**
+ * Checks whether the given entity is the default revision.
+ *
+ * Note that newly created entities will always be created in default revision,
+ * thus TRUE is returned for not yet saved entities.
+ *
+ * @param $entity_type
+ *   The type of the entity.
+ * @param $entity
+ *   The entity object to check.
+ *
+ * @return boolean
+ *   A boolean indicating whether the entity is in default revision is returned.
+ *   If the entity is not revisionable or is new, TRUE is returned.
+ *
+ * @see entity_revision_set_default()
+ */
+function entity_revision_is_default($entity_type, $entity) {
+  $info = entity_get_info($entity_type);
+  if (empty($info['entity keys']['revision'])) {
+    return TRUE;
+  }
+  // Newly created entities will always be created in default revision.
+  if (!empty($entity->is_new) || empty($entity->{$info['entity keys']['id']})) {
+    return TRUE;
+  }
+  if (in_array('EntityAPIControllerRevisionableInterface', class_implements($info['controller class']))) {
+    $key = !empty($info['entity keys']['default revision']) ? $info['entity keys']['default revision'] : 'default_revision';
+    return !empty($entity->$key);
+  }
+  else {
+    // Else, just load the default entity and compare the ID. Usually, the
+    // entity should be already statically cached anyway.
+    $default = entity_load_single($entity_type, $entity->{$info['entity keys']['id']});
+    return $default->{$info['entity keys']['revision']} == $entity->{$info['entity keys']['revision']};
+  }
+}
+
+/**
+ * Sets a given entity revision as default revision.
+ *
+ * Note that the default revision flag will only be supported by entity types
+ * based upon the EntityAPIController, i.e. implementing the
+ * EntityAPIControllerRevisionableInterface.
+ *
+ * @param $entity_type
+ *   The type of the entity.
+ * @param $entity
+ *   The entity revision to update.
+ *
+ * @see entity_revision_is_default()
+ */
+function entity_revision_set_default($entity_type, $entity) {
+  $info = entity_get_info($entity_type);
+  if (!empty($info['entity keys']['revision'])) {
+    $key = !empty($info['entity keys']['default revision']) ? $info['entity keys']['default revision'] : 'default_revision';
+    $entity->$key = TRUE;
+  }
+}
+
 /**
  * Create a new entity object.
  *
@@ -903,14 +1015,16 @@ function template_preprocess_entity(&$variables) {
   $info = entity_get_info($entity_type);
 
   $variables['title'] = check_plain(entity_label($entity_type, $entity));
+
+  $uri = entity_uri($entity_type, $entity);
+  $variables['url'] = $uri ? url($uri['path'], $uri['options']) : FALSE;
+
   if (isset($variables['elements']['#page'])) {
     // If set by the caller, respect the page property.
     $variables['page'] = $variables['elements']['#page'];
   }
   else {
     // Else, try to automatically detect it.
-    $uri = entity_uri($entity_type, $entity);
-    $variables['url'] = $uri ? url($uri['path'], $uri['options']) : FALSE;
     $variables['page'] = $uri && $uri['path'] == $_GET['q'];
   }
 
@@ -1253,11 +1367,13 @@ function _entity_info_add_metadata(&$entity_info) {
   // Set access callbacks.
   $entity_info['node']['access callback'] = 'entity_metadata_no_hook_node_access';
   $entity_info['user']['access callback'] = 'entity_metadata_user_access';
+  $entity_info['file']['access callback'] = 'entity_metadata_file_access';
 
   // CRUD function callbacks.
   $entity_info['node']['creation callback'] = 'entity_metadata_create_node';
   $entity_info['node']['save callback'] = 'node_save';
   $entity_info['node']['deletion callback'] = 'node_delete';
+  $entity_info['node']['revision deletion callback'] = 'node_revision_delete';
   $entity_info['user']['creation callback'] = 'entity_metadata_create_object';
   $entity_info['user']['save callback'] = 'entity_metadata_user_save';
   $entity_info['user']['deletion callback'] = 'user_delete';
@@ -1268,6 +1384,9 @@ function _entity_info_add_metadata(&$entity_info) {
   $entity_info['node']['form callback'] = 'entity_metadata_form_node';
   $entity_info['user']['form callback'] = 'entity_metadata_form_user';
 
+  // URI callbacks.
+  $entity_info['file']['uri callback'] = 'entity_metadata_uri_file';
+
   // View callbacks.
   $entity_info['node']['view callback'] = 'entity_metadata_view_node';
   $entity_info['user']['view callback'] = 'entity_metadata_view_single';
diff --git a/sites/all/modules/entity/entity.test b/sites/all/modules/entity/entity.test
index aaebc619bbda99934354b8d2b99b54e5c5647499..746713e3d1ddb9caa765b7ae43ac799bf95ecbee 100644
--- a/sites/all/modules/entity/entity.test
+++ b/sites/all/modules/entity/entity.test
@@ -95,6 +95,113 @@ class EntityAPITestCase extends EntityWebTestCase {
     entity_test_delete_multiple($pids);
   }
 
+  /**
+   * Tests CRUD for entities supporting revisions.
+   */
+  function testCRUDRevisisions() {
+    module_enable(array('entity_feature'));
+
+    // Add text field to entity.
+    $field_info = array(
+      'field_name' => 'field_text',
+      'type' => 'text',
+      'entity_types' => array('entity_test2'),
+    );
+    field_create_field($field_info);
+
+    $instance = array(
+      'label' => 'Text Field',
+      'field_name' => 'field_text',
+      'entity_type' => 'entity_test2',
+      'bundle' => 'entity_test2',
+      'settings' => array(),
+      'required' => FALSE,
+    );
+    field_create_instance($instance);
+
+    // Create a test entity.
+    $entity_first_revision = entity_create('entity_test2', array('title' => 'first revision', 'name' => 'main', 'uid' => 1));
+    $entity_first_revision->field_text[LANGUAGE_NONE][0]['value'] = 'first revision text';
+    entity_save('entity_test2', $entity_first_revision);
+
+    $entities = array_values(entity_load('entity_test2', FALSE));
+    $this->assertEqual(count($entities), 1, 'Entity created.');
+    $this->assertTrue($entities[0]->default_revision, 'Initial entity revision is marked as default revision.');
+
+    // Saving the entity in revision mode should create a new revision.
+    $entity_second_revision = clone $entity_first_revision;
+    $entity_second_revision->title = 'second revision';
+    $entity_second_revision->is_new_revision = TRUE;
+    $entity_second_revision->default_revision = TRUE;
+    $entity_second_revision->field_text[LANGUAGE_NONE][0]['value'] = 'second revision text';
+
+    entity_save('entity_test2', $entity_second_revision);
+    $this->assertNotEqual($entity_second_revision->revision_id, $entity_first_revision->revision_id, 'Saving an entity in new revision mode creates a revision.');
+    $this->assertTrue($entity_second_revision->default_revision, 'New entity revision is marked as default revision.');
+
+    // Check the saved entity.
+    $entity = current(entity_load('entity_test2', array($entity_first_revision->pid), array(), TRUE));
+    $this->assertNotEqual($entity->title, $entity_first_revision->title, 'Default revision was changed.');
+
+    // Create third revision that is not default.
+    $entity_third_revision = clone $entity_first_revision;
+    $entity_third_revision->title = 'third revision';
+    $entity_third_revision->is_new_revision = TRUE;
+    $entity_third_revision->default_revision = FALSE;
+    $entity_third_revision->field_text[LANGUAGE_NONE][0]['value'] = 'third revision text';
+    entity_save('entity_test2', $entity_third_revision);
+    $this->assertNotEqual($entity_second_revision->revision_id, $entity_third_revision->revision_id, 'Saving an entity in revision mode creates a revision.');
+    $this->assertFalse($entity_third_revision->default_revision, 'Entity revision is not marked as default revision.');
+
+    $entity = current(entity_load('entity_test2', array($entity_first_revision->pid), array(), TRUE));
+    $this->assertEqual($entity->title, $entity_second_revision->title, 'Default revision was not changed.');
+    $this->assertEqual($entity->field_text[LANGUAGE_NONE][0]['value'], $entity_second_revision->field_text[LANGUAGE_NONE][0]['value'], 'Default revision text field was not changed.');
+
+    // Load not default revision.
+    $revision = entity_revision_load('entity_test2', $entity_third_revision->revision_id);
+    $this->assertEqual($revision->revision_id, $entity_third_revision->revision_id, 'Revision successfully loaded.');
+    $this->assertFalse($revision->default_revision, 'Entity revision is not marked as default revision after loading.');
+
+    // Save not default revision.
+    $entity_third_revision->title = 'third revision updated';
+    $entity_third_revision->field_text[LANGUAGE_NONE][0]['value'] = 'third revision text updated';
+    entity_save('entity_test2', $entity_third_revision);
+
+    // Ensure that not default revision has been changed.
+    $entity = entity_revision_load('entity_test2', $entity_third_revision->revision_id);
+    $this->assertEqual($entity->title, 'third revision updated', 'Not default revision was updated successfully.');
+    $this->assertEqual($entity->field_text[LANGUAGE_NONE][0]['value'], 'third revision text updated', 'Not default revision field was updated successfully.');
+
+    // Ensure that default revision has not been changed.
+    $entity = current(entity_load('entity_test2', array($entity_first_revision->pid), array(), TRUE));
+    $this->assertEqual($entity->title, $entity_second_revision->title, 'Default revision was not changed.');
+
+    // Try to delete default revision.
+    $result = entity_revision_delete('entity_test2', $entity_second_revision->revision_id);
+    $this->assertFalse($result, 'Default revision cannot be deleted.');
+
+    // Make sure default revision is still set after trying to delete it.
+    $entity = current(entity_load('entity_test2', array($entity_first_revision->pid), array(), TRUE));
+    $this->assertEqual($entity->revision_id, $entity_second_revision->revision_id, 'Second revision is still default.');
+
+    // Delete first revision.
+    $result = entity_revision_delete('entity_test2', $entity_first_revision->revision_id);
+    $this->assertTrue($result, 'Not default revision deleted.');
+
+    $entity = entity_revision_load('entity_test2', $entity_first_revision->revision_id);
+    $this->assertFalse($entity, 'First revision deleted.');
+
+    // Delete the entity and make sure third revision has been deleted as well.
+    entity_delete('entity_test2', $entity_second_revision->pid);
+    $entity_info = entity_get_info('entity_test2');
+    $result = db_select($entity_info['revision table'])
+      ->condition('revision_id', $entity_third_revision->revision_id)
+      ->countQuery()
+      ->execute()
+      ->fetchField();
+    $this->assertEqual($result, 0, 'Entity deleted with its all revisions.');
+  }
+
   /**
    * Tests CRUD API functions: entity_(create|delete|save)
    */
diff --git a/sites/all/modules/entity/entity_token.info b/sites/all/modules/entity/entity_token.info
index 74ffec06b7fbee244ec7a546ac0962c55929ce60..18579d9a9d308985cdc25be746d9456aeadd2690 100644
--- a/sites/all/modules/entity/entity_token.info
+++ b/sites/all/modules/entity/entity_token.info
@@ -5,9 +5,9 @@ files[] = entity_token.tokens.inc
 files[] = entity_token.module
 dependencies[] = entity
 
-; Information added by drupal.org packaging script on 2012-05-25
-version = "7.x-1.0-rc3"
+; Information added by drupal.org packaging script on 2012-09-07
+version = "7.x-1.0-rc3+10-dev"
 core = "7.x"
 project = "entity"
-datestamp = "1337981155"
+datestamp = "1346977698"
 
diff --git a/sites/all/modules/entity/includes/entity.controller.inc b/sites/all/modules/entity/includes/entity.controller.inc
index 1a2812e9c330c4376512c17e508d6c95d7e2b95b..2f87010656bf8542ea8e8e02a5db4ea5ce6fd5b4 100644
--- a/sites/all/modules/entity/includes/entity.controller.inc
+++ b/sites/all/modules/entity/includes/entity.controller.inc
@@ -120,13 +120,34 @@ interface EntityAPIControllerInterface extends DrupalEntityControllerInterface {
   public function view($entities, $view_mode = 'full', $langcode = NULL, $page = NULL);
 }
 
+/**
+ * Interface for EntityControllers of entities that support revisions.
+ */
+interface EntityAPIControllerRevisionableInterface extends EntityAPIControllerInterface {
+
+  /**
+   * Delete an entity revision.
+   *
+   * Note that the default revision of an entity cannot be deleted.
+   *
+   * @param $revision_id
+   *   The ID of the revision to delete.
+   *
+   * @return boolean
+   *   TRUE if the entity revision could be deleted, FALSE otherwise.
+   */
+  public function deleteRevision($revision_id);
+
+}
+
 /**
  * A controller implementing EntityAPIControllerInterface for the database.
  */
-class EntityAPIController extends DrupalDefaultEntityController implements EntityAPIControllerInterface {
+class EntityAPIController extends DrupalDefaultEntityController implements EntityAPIControllerRevisionableInterface {
 
   protected $cacheComplete = FALSE;
   protected $bundleKey;
+  protected $defaultRevisionKey;
 
   /**
    * Overridden.
@@ -139,6 +160,20 @@ class EntityAPIController extends DrupalDefaultEntityController implements Entit
       $info = entity_get_info($this->entityInfo['bundle of']);
       $this->bundleKey = $info['bundle keys']['bundle'];
     }
+    $this->defaultRevisionKey = !empty($this->entityInfo['entity keys']['default revision']) ? $this->entityInfo['entity keys']['default revision'] : 'default_revision';
+  }
+
+  /**
+   * Overrides DrupalDefaultEntityController::buildQuery().
+   */
+  protected function buildQuery($ids, $conditions = array(), $revision_id = FALSE) {
+    $query = parent::buildQuery($ids, $conditions, $revision_id);
+    if ($this->revisionKey) {
+      // Compare revision id of the base and revision table, if equal then this
+      // is the default revision.
+      $query->addExpression('base.' . $this->revisionKey . ' = revision.' . $this->revisionKey, $this->defaultRevisionKey);
+    }
+    return $query;
   }
 
   /**
@@ -275,6 +310,9 @@ class EntityAPIController extends DrupalDefaultEntityController implements Entit
     return $entities;
   }
 
+  /**
+   * Overrides DrupalDefaultEntityController::resetCache().
+   */
   public function resetCache(array $ids = NULL) {
     $this->cacheComplete = FALSE;
     parent::resetCache($ids);
@@ -288,7 +326,12 @@ class EntityAPIController extends DrupalDefaultEntityController implements Entit
    * Implements EntityAPIControllerInterface.
    */
   public function invoke($hook, $entity) {
-    if (!empty($this->entityInfo['fieldable']) && function_exists($function = 'field_attach_' . $hook)) {
+    // entity_revision_delete() invokes hook_entity_revision_delete() and
+    // hook_field_attach_delete_revision() just as node module does. So we need
+    // to adjust the name of our revision deletion field attach hook in order to
+    // stick to this pattern.
+    $field_attach_hook = ($hook == 'revision_delete' ? 'delete_revision' : $hook);
+    if (!empty($this->entityInfo['fieldable']) && function_exists($function = 'field_attach_' . $field_attach_hook)) {
       $function($this->entityType, $entity);
     }
 
@@ -341,6 +384,12 @@ class EntityAPIController extends DrupalDefaultEntityController implements Entit
       db_delete($this->entityInfo['base table'])
         ->condition($this->idKey, $ids, 'IN')
         ->execute();
+
+      if (isset($this->revisionTable)) {
+        db_delete($this->revisionTable)
+          ->condition($this->idKey, $ids, 'IN')
+          ->execute();
+      }
       // Reset the cache as soon as the changes have been applied.
       $this->resetCache($ids);
 
@@ -359,6 +408,26 @@ class EntityAPIController extends DrupalDefaultEntityController implements Entit
     }
   }
 
+  /**
+   * Implements EntityAPIControllerRevisionableInterface::deleteRevision().
+   */
+  public function deleteRevision($revision_id) {
+    if ($entity_revision = entity_revision_load($this->entityType, $revision_id)) {
+      // Prevent deleting the default revision.
+      if (entity_revision_is_default($this->entityType, $entity_revision)) {
+        return FALSE;
+      }
+
+      db_delete($this->revisionTable)
+        ->condition($this->revisionKey, $revision_id)
+        ->execute();
+
+      $this->invoke('revision_delete', $entity_revision);
+      return TRUE;
+    }
+    return FALSE;
+  }
+
   /**
    * Implements EntityAPIControllerInterface.
    *
@@ -375,21 +444,40 @@ class EntityAPIController extends DrupalDefaultEntityController implements Entit
         // entity using the id key if it is available.
         $entity->original = entity_load_unchanged($this->entityType, $entity->{$this->idKey});
       }
-
+      $entity->is_new = !empty($entity->is_new) || empty($entity->{$this->idKey});
       $this->invoke('presave', $entity);
 
-      if (!empty($entity->{$this->idKey}) && empty($entity->is_new)) {
-        $return = drupal_write_record($this->entityInfo['base table'], $entity, $this->idKey);
-        $this->resetCache(array($entity->{$this->idKey}));
-        $this->invoke('update', $entity);
-      }
-      else {
+      if ($entity->is_new) {
         $return = drupal_write_record($this->entityInfo['base table'], $entity);
+        if ($this->revisionKey) {
+          $this->saveRevision($entity);
+        }
         $this->invoke('insert', $entity);
       }
+      else {
+        // Update the base table if the entity doesn't have revisions or
+        // we are updating the default revision.
+        if (!$this->revisionKey || !empty($entity->{$this->defaultRevisionKey})) {
+          $return = drupal_write_record($this->entityInfo['base table'], $entity, $this->idKey);
+        }
+        if ($this->revisionKey) {
+          $return = $this->saveRevision($entity);
+        }
+        $this->resetCache(array($entity->{$this->idKey}));
+        $this->invoke('update', $entity);
+
+        // Field API always saves as default revision, so if the revision saved
+        // is not default we have to restore the field values of the default
+        // revision now by invoking field_attach_update() once again.
+        if ($this->revisionKey && !$entity->{$this->defaultRevisionKey} && !empty($this->entityInfo['fieldable'])) {
+          field_attach_update($this->entityType, $entity->original);
+        }
+      }
+
       // Ignore slave server temporarily.
       db_ignore_slave();
       unset($entity->is_new);
+      unset($entity->is_new_revision);
       unset($entity->original);
 
       return $return;
@@ -401,6 +489,54 @@ class EntityAPIController extends DrupalDefaultEntityController implements Entit
     }
   }
 
+  /**
+   * Saves an entity revision.
+   *
+   * @param Entity $entity
+   *   Entity revision to save.
+   */
+  protected function saveRevision($entity) {
+    // Convert the entity into an array as it might not have the same properties
+    // as the entity, it is just a raw structure.
+    $record = (array) $entity;
+    // File fields assumes we are using $entity->revision instead of
+    // $entity->is_new_revision, so we also support it and make sure it's set to
+    // the same value.
+    $entity->is_new_revision = !empty($entity->is_new_revision) || !empty($entity->revision) || $entity->is_new;
+    $entity->revision = &$entity->is_new_revision;
+    $entity->{$this->defaultRevisionKey} = !empty($entity->{$this->defaultRevisionKey}) || $entity->is_new;
+
+
+
+    // When saving a new revision, set any existing revision ID to NULL so as to
+    // ensure that a new revision will actually be created.
+    if ($entity->is_new_revision && isset($record[$this->revisionKey])) {
+      $record[$this->revisionKey] = NULL;
+    }
+
+    if ($entity->is_new_revision) {
+      drupal_write_record($this->revisionTable, $record);
+      $update_default_revision = $entity->{$this->defaultRevisionKey};
+    }
+    else {
+      drupal_write_record($this->revisionTable, $record, $this->revisionKey);
+      // @todo: Fix original entity to be of the same revision and check whether
+      // the default revision key has been set.
+      $update_default_revision = $entity->{$this->defaultRevisionKey} && $entity->{$this->revisionKey} != $entity->original->{$this->revisionKey};
+    }
+    // Make sure to update the new revision key for the entity.
+    $entity->{$this->revisionKey} = $record[$this->revisionKey];
+
+    // Mark this revision as the default one.
+    if ($update_default_revision) {
+      db_update($this->entityInfo['base table'])
+        ->fields(array($this->revisionKey => $record[$this->revisionKey]))
+        ->condition($this->idKey, $entity->{$this->idKey})
+        ->execute();
+    }
+    return $entity->is_new_revision ? SAVED_NEW : SAVED_UPDATED;
+  }
+
   /**
    * Implements EntityAPIControllerInterface.
    */
@@ -621,8 +757,17 @@ class EntityAPIControllerExportable extends EntityAPIController {
     if ($conditions) {
       foreach ($entities as $key => $entity) {
         $entity_values = (array) $entity;
-        if (array_diff_assoc($conditions, $entity_values)) {
-          unset($entities[$key]);
+        // We cannot use array_diff_assoc() here because condition values can
+        // also be arrays, e.g. '$conditions = array('status' => array(1, 2))'
+        foreach ($conditions as $condition_key => $condition_value) {
+          if (is_array($condition_value)) {
+            if (!isset($entity_values[$condition_key]) || !in_array($entity_values[$condition_key], $condition_value)) {
+              unset($entities[$key]);
+            }
+          }
+          elseif (!isset($entity_values[$condition_key]) || $entity_values[$condition_key] != $condition_value) {
+            unset($entities[$key]);
+          }
         }
       }
     }
diff --git a/sites/all/modules/entity/includes/entity.inc b/sites/all/modules/entity/includes/entity.inc
index 90a53c48b5ff205f6f7f595e675b0a1e5125b881..9bb9e3b06cc249993545b144ee2ff2483ed8a0f5 100644
--- a/sites/all/modules/entity/includes/entity.inc
+++ b/sites/all/modules/entity/includes/entity.inc
@@ -267,6 +267,21 @@ class Entity {
     return $this->$property;
   }
 
+  /**
+   * Checks whether the entity is the default revision.
+   *
+   * @return Boolean
+   *
+   * @see entity_revision_is_default()
+   */
+  public function isDefaultRevision() {
+    if (!empty($this->entityInfo['entity keys']['revision'])) {
+      $key = !empty($this->entityInfo['entity keys']['default revision']) ? $this->entityInfo['entity keys']['default revision'] : 'default_revision';
+      return !empty($this->$key);
+    }
+    return TRUE;
+  }
+
   /**
    * Magic method to only serialize what's necessary.
    */
diff --git a/sites/all/modules/entity/includes/entity.wrapper.inc b/sites/all/modules/entity/includes/entity.wrapper.inc
index e4d31098c278c6b7c8e9f44df16005bc0eecbd35..4ee1c3abb9f52fd17166b6849b0fa304523c2643 100644
--- a/sites/all/modules/entity/includes/entity.wrapper.inc
+++ b/sites/all/modules/entity/includes/entity.wrapper.inc
@@ -727,6 +727,15 @@ class EntityDrupalWrapper extends EntityStructureWrapper {
     return $this->data;
   }
 
+  /**
+   * Returns the entity prepared for rendering.
+   *
+   * @see entity_view()
+   */
+  public function view($view_mode = 'full', $langcode = NULL, $page = NULL) {
+    return entity_view($this->type(), array($this->value()), $view_mode, $langcode, $page);
+  }
+
   /**
    * Overridden to support setting the entity by either the object or the id.
    */
diff --git a/sites/all/modules/entity/modules/callbacks.inc b/sites/all/modules/entity/modules/callbacks.inc
index bfcc4362afa1d62aed076750f49e493d25d37a44..39b633454c7781a4f2f630a5a0ec8af7f5a5b8ce 100644
--- a/sites/all/modules/entity/modules/callbacks.inc
+++ b/sites/all/modules/entity/modules/callbacks.inc
@@ -33,7 +33,7 @@ function entity_metadata_book_get_properties($node, array $options, $name, $enti
 function entity_metadata_comment_get_properties($comment, array $options, $name) {
   switch ($name) {
     case 'name':
-      return $name = ($comment->uid == 0) ? variable_get('anonymous', t('Anonymous')) : $comment->name;
+      return $comment->name;
 
     case 'mail':
       if ($comment->uid != 0) {
@@ -509,7 +509,7 @@ function entity_metadata_field_verbatim_set($entity, $name, $items, $langcode, $
 function entity_metadata_field_get_language($entity_type, $entity, $field, $langcode = LANGUAGE_NONE, $fallback = FALSE) {
   // Try to figure out the default language used by the entity.
   // @todo: Update once http://drupal.org/node/1260640 has been fixed.
-  $default_langcode = isset($entity->language) ? $entity->language : LANGUAGE_NONE;
+  $default_langcode = !empty($entity->language) ? $entity->language : LANGUAGE_NONE;
 
   // Determine the right language to use.
   if ($default_langcode != LANGUAGE_NONE && field_is_translatable($entity_type, $field)) {
@@ -605,7 +605,14 @@ function entity_metadata_field_file_validate_item($items, $context) {
  */
 function entity_metadata_no_hook_node_access($op, $node = NULL, $account = NULL) {
   if (isset($node)) {
-    return node_access($op, $node, $account);
+    // If a non-default revision is given, incorporate revision access.
+    $default_revision = node_load($node->nid);
+    if ($node->vid != $default_revision->vid) {
+      return _node_revision_access($node, $op);
+    }
+    else {
+      return node_access($op, $node, $account);
+    }
   }
   // Is access to all nodes allowed?
   if (!user_access('access content', $account)) {
@@ -689,6 +696,26 @@ function entity_metadata_taxonomy_access($op, $entity = NULL, $account = NULL, $
   return FALSE;
 }
 
+/**
+ * Access callback for file entities.
+ */
+function entity_metadata_file_access($op, $file = NULL, $account = NULL, $entity_type) {
+  // We can only check access for the current user, so return FALSE on other accounts.
+  global $user;
+  if ($op == 'view' && isset($file) && (!isset($account) || $user->uid == $account->uid)) {
+    // Invoke hook_file_download() to obtain access information.
+    foreach (module_implements('file_download') as $module) {
+      $result = module_invoke($module, 'file_download', $file->uri);
+      if ($result == -1) {
+        return FALSE;
+      }
+    }
+    return TRUE;
+  }
+  return FALSE;
+}
+
+
 /**
  * Callback to determine access for properties which are fields.
  */
@@ -919,3 +946,12 @@ function entity_metadata_field_query($entity_type, $property, $value, $limit) {
   $result = $query->execute();
   return !empty($result[$entity_type]) ? array_keys($result[$entity_type]) : array();
 }
+
+/**
+ * Callback so that entity_uri() can generate a uri for file entities.
+ */
+function entity_metadata_uri_file($file) {
+  return array(
+    'path' => file_create_url($file->uri),
+  );
+}
diff --git a/sites/all/modules/entity/tests/entity_feature.info b/sites/all/modules/entity/tests/entity_feature.info
index 45e141aa154093824bfc2af7a86cbfe716cc4198..e9b201b25c7b8e7a5e91a5445bdf9b6161e36f18 100644
--- a/sites/all/modules/entity/tests/entity_feature.info
+++ b/sites/all/modules/entity/tests/entity_feature.info
@@ -6,9 +6,9 @@ files[] = entity_feature.module
 dependencies[] = entity_test
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-05-25
-version = "7.x-1.0-rc3"
+; Information added by drupal.org packaging script on 2012-09-07
+version = "7.x-1.0-rc3+10-dev"
 core = "7.x"
 project = "entity"
-datestamp = "1337981155"
+datestamp = "1346977698"
 
diff --git a/sites/all/modules/entity/tests/entity_test.info b/sites/all/modules/entity/tests/entity_test.info
index ac18875a03a7b518cea26f7bad2a5d6ab8b014bc..56e939433c1287c5543e81e11cf5a2731471c28f 100644
--- a/sites/all/modules/entity/tests/entity_test.info
+++ b/sites/all/modules/entity/tests/entity_test.info
@@ -7,9 +7,9 @@ files[] = entity_test.install
 dependencies[] = entity
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-05-25
-version = "7.x-1.0-rc3"
+; Information added by drupal.org packaging script on 2012-09-07
+version = "7.x-1.0-rc3+10-dev"
 core = "7.x"
 project = "entity"
-datestamp = "1337981155"
+datestamp = "1346977698"
 
diff --git a/sites/all/modules/entity/tests/entity_test.install b/sites/all/modules/entity/tests/entity_test.install
index dce2161b5f4ea2f2f9da573352e489d6f206beff..42ba4b66f5076b51e3baa1f2c4935c8f52635ca7 100644
--- a/sites/all/modules/entity/tests/entity_test.install
+++ b/sites/all/modules/entity/tests/entity_test.install
@@ -121,6 +121,44 @@ function entity_test_schema() {
       'name' => array('name'),
     ),
   );
+
+  // Add schema for the revision-test-entity.
+  $schema['entity_test2'] = $schema['entity_test'];
+  $schema['entity_test2']['fields']['revision_id'] = array(
+    'type' => 'int',
+    'unsigned' => TRUE,
+    'not null' => FALSE,
+    'default' => NULL,
+    'description' => 'The ID of the entity\'s default revision.',
+  );
+  $schema['entity_test2']['fields']['title'] = array(
+    'type' => 'varchar',
+    'length' => 255,
+    'not null' => TRUE,
+    'default' => '',
+  );
+
+  $schema['entity_test2_revision'] = $schema['entity_test'];
+  $schema['entity_test2_revision']['fields']['revision_id'] = array(
+    'type' => 'serial',
+    'not null' => TRUE,
+    'description' => 'Primary Key: Unique revision ID.',
+  );
+  $schema['entity_test2_revision']['fields']['pid'] = array(
+    'type' => 'int',
+    'unsigned' => TRUE,
+    'not null' => FALSE,
+    'default' => NULL,
+    'description' => 'The ID of the attached entity.',
+  );
+  $schema['entity_test2_revision']['fields']['title'] = array(
+    'type' => 'varchar',
+    'length' => 255,
+    'not null' => TRUE,
+    'default' => '',
+  );
+  $schema['entity_test2_revision']['primary key'] = array('revision_id');
+
   return $schema;
 }
 
diff --git a/sites/all/modules/entity/tests/entity_test.module b/sites/all/modules/entity/tests/entity_test.module
index 4076a9753cb0c9fa6adcdd2cb2c46b3a25e11eec..8c82afee8f6101fd050cd358e98ffad7c343feb6 100644
--- a/sites/all/modules/entity/tests/entity_test.module
+++ b/sites/all/modules/entity/tests/entity_test.module
@@ -45,6 +45,26 @@ function entity_test_entity_info() {
       ),
       'module' => 'entity_test',
     ),
+
+    'entity_test2' => array(
+      'label' => t('Test Entity (revision support)'),
+      'entity class' => 'EntityClassRevision',
+      'controller class' => 'EntityAPIController',
+      'base table' => 'entity_test2',
+      'revision table' => 'entity_test2_revision',
+      'fieldable' => TRUE,
+      'entity keys' => array(
+        'id' => 'pid',
+        'revision' => 'revision_id',
+      ),
+      // Make use of the class label() and uri() implementation by default.
+      'label callback' => 'entity_class_label',
+      'uri callback' => 'entity_class_uri',
+      'bundles' => array(),
+      'bundle keys' => array(
+        'bundle' => 'name',
+      ),
+    ),
   );
 
   // Add bundle info but bypass entity_load() as we cannot use it here.
@@ -141,6 +161,16 @@ class EntityClass extends Entity {
   }
 }
 
+/**
+ * Main class for test entities (with revision support).
+ */
+class EntityClassRevision extends EntityClass {
+
+  public function __construct(array $values = array(), $entityType = NULL) {
+    Entity::__construct($values, 'entity_test2');
+  }
+
+}
 
 /**
  *
@@ -155,7 +185,9 @@ class EntityClass extends Entity {
  * Implements hook_entity_insert().
  */
 function entity_test_entity_insert($entity, $entity_type) {
-  $_SESSION['entity_hook_test']['entity_insert'][] = entity_id($entity_type, $entity);
+  if ($entity_type == 'entity_test_type') {
+    $_SESSION['entity_hook_test']['entity_insert'][] = entity_id($entity_type, $entity);
+  }
 }
 
 /**
@@ -169,7 +201,9 @@ function entity_test_entity_update($entity, $entity_type) {
  * Implements hook_entity_delete().
  */
 function entity_test_entity_delete($entity, $entity_type) {
-  $_SESSION['entity_hook_test']['entity_delete'][] = entity_id($entity_type, $entity);
+  if ($entity_type == 'entity_test_type') {
+    $_SESSION['entity_hook_test']['entity_delete'][] = entity_id($entity_type, $entity);
+  }
 }
 
 /**
diff --git a/sites/all/modules/entity/tests/entity_test_i18n.info b/sites/all/modules/entity/tests/entity_test_i18n.info
index 4a3c27c4b724d9ce1178dc38704fe5654bfe98c7..235ade5d7a16ab7962039d73e37c52a7c8ec8d02 100644
--- a/sites/all/modules/entity/tests/entity_test_i18n.info
+++ b/sites/all/modules/entity/tests/entity_test_i18n.info
@@ -5,9 +5,9 @@ dependencies[] = i18n_string
 package = Multilingual - Internationalization
 core = 7.x
 hidden = TRUE
-; Information added by drupal.org packaging script on 2012-05-25
-version = "7.x-1.0-rc3"
+; Information added by drupal.org packaging script on 2012-09-07
+version = "7.x-1.0-rc3+10-dev"
 core = "7.x"
 project = "entity"
-datestamp = "1337981155"
+datestamp = "1346977698"
 
diff --git a/sites/all/modules/entity/views/entity.views.inc b/sites/all/modules/entity/views/entity.views.inc
index 56b606b244155a46ceec0813fa63993de7d5b575..23c6f6bab35b36267260c0b6b77f743e781fa7d5 100644
--- a/sites/all/modules/entity/views/entity.views.inc
+++ b/sites/all/modules/entity/views/entity.views.inc
@@ -316,6 +316,7 @@ function entity_views_plugins() {
     $base_tables = $data->data;
   }
   else {
+    $base_tables = array();
     foreach (views_fetch_data() as $table => $data) {
       if (!empty($data['table']['entity type']) && !empty($data['table']['base'])) {
         $base_tables[] = $table;
diff --git a/sites/all/modules/entityreference/entityreference.admin.css b/sites/all/modules/entityreference/entityreference.admin.css
new file mode 100644
index 0000000000000000000000000000000000000000..01d5850a6dff3223998327b3dd35fb3194aac9fb
--- /dev/null
+++ b/sites/all/modules/entityreference/entityreference.admin.css
@@ -0,0 +1,4 @@
+
+.entityreference-settings {
+  margin-left: 1.5em;
+}
diff --git a/sites/all/modules/entityreference/entityreference.feeds.inc b/sites/all/modules/entityreference/entityreference.feeds.inc
index 093fa5f88035e2d1e1382c733e92dd2a8d6a5918..d98a4ce93279804332e4fa7b1688303b3f710fc0 100644
--- a/sites/all/modules/entityreference/entityreference.feeds.inc
+++ b/sites/all/modules/entityreference/entityreference.feeds.inc
@@ -12,8 +12,7 @@
  */
 function entityreference_feeds_processor_targets_alter(&$targets, $entity_type, $bundle_name) {
 
-  foreach (field_info_instances($entity_type, $bundle_name) as
-           $name => $instance) {
+  foreach (field_info_instances($entity_type, $bundle_name) as $name => $instance) {
     $info = field_info_field($name);
     if ($info['type'] == 'entityreference') {
       $targets[$name] = array(
@@ -58,7 +57,8 @@ function entityreference_feeds_set_target($source, $entity, $target, $value, $ma
   // Assume that the passed in value could really be any number of values.
   if (is_array($value)) {
     $values = $value;
-  } else {
+  }
+  else {
     $values = array($value);
   }
 
diff --git a/sites/all/modules/entityreference/entityreference.info b/sites/all/modules/entityreference/entityreference.info
index 8c6d530632d69f7d0e0f598242bdcd5667c19114..ea0f6640468d19bbd0673fca50949f9cacc07bb8 100644
--- a/sites/all/modules/entityreference/entityreference.info
+++ b/sites/all/modules/entityreference/entityreference.info
@@ -19,10 +19,11 @@ files[] = views/entityreference_plugin_row_fields.inc
 
 ; Tests.
 files[] = tests/entityreference.handlers.test
+files[] = tests/entityreference.admin.test
 
-; Information added by drupal.org packaging script on 2012-05-30
-version = "7.x-1.0-rc3"
+; Information added by drupal.org packaging script on 2012-09-25
+version = "7.x-1.0-rc5"
 core = "7.x"
 project = "entityreference"
-datestamp = "1338411955"
+datestamp = "1348565045"
 
diff --git a/sites/all/modules/entityreference/entityreference.module b/sites/all/modules/entityreference/entityreference.module
index 170ac8c6e4120bf8e9008ae7e8916f9c29a802a5..14e45a42c5b5735892686b4110f49c48703b5283 100644
--- a/sites/all/modules/entityreference/entityreference.module
+++ b/sites/all/modules/entityreference/entityreference.module
@@ -15,7 +15,7 @@ function entityreference_ctools_plugin_directory($module, $plugin) {
 function entityreference_init() {
   // Include feeds.module integration.
   if (module_exists('feeds')) {
-    module_load_include('inc','entityreference','entityreference.feeds');
+    module_load_include('inc', 'entityreference', 'entityreference.feeds');
   }
 }
 
@@ -46,7 +46,7 @@ function entityreference_behavior_plugin_process(&$plugin, $info) {
 }
 
 /**
- * Implementation of hook_field_info().
+ * Implements hook_field_info().
  */
 function entityreference_field_info() {
   $field_info['entityreference'] = array(
@@ -97,14 +97,16 @@ function entityreference_menu() {
     'title' => 'Entity Reference Autocomplete',
     'page callback' => 'entityreference_autocomplete_callback',
     'page arguments' => array(2, 3, 4, 5),
-    'access callback' => TRUE,
+    'access callback' => 'entityreference_autocomplete_access_callback',
+    'access arguments' => array(2, 3, 4, 5),
     'type' => MENU_CALLBACK,
   );
   $items['entityreference/autocomplete/tags/%/%/%'] = array(
     'title' => 'Entity Reference Autocomplete',
     'page callback' => 'entityreference_autocomplete_callback',
     'page arguments' => array(2, 3, 4, 5),
-    'access callback' => TRUE,
+    'access callback' => 'entityreference_autocomplete_access_callback',
+    'access arguments' => array(2, 3, 4, 5),
     'type' => MENU_CALLBACK,
   );
 
@@ -215,19 +217,17 @@ function entityreference_field_validate($entity_type, $entity, $field, $instance
     }
   }
 
-  if (!$ids) {
-    return;
-  }
-
-  $valid_ids = entityreference_get_selection_handler($field, $instance, $entity_type, $entity)->validateReferencableEntities(array_keys($ids));
+  if ($ids) {
+    $valid_ids = entityreference_get_selection_handler($field, $instance, $entity_type, $entity)->validateReferencableEntities(array_keys($ids));
 
-  $invalid_entities = array_diff_key($ids, array_flip($valid_ids));
-  if ($invalid_entities) {
-    foreach ($invalid_entities as $id => $delta) {
-      $errors[$field['field_name']][$langcode][$delta][] = array(
-        'error' => 'entityreference_invalid_entity',
-        'message' => t('The referenced entity (@type: @id) is invalid.', array('@type' => $field['settings']['target_type'], '@id' => $id)),
-      );
+    $invalid_entities = array_diff_key($ids, array_flip($valid_ids));
+    if ($invalid_entities) {
+      foreach ($invalid_entities as $id => $delta) {
+        $errors[$field['field_name']][$langcode][$delta][] = array(
+          'error' => 'entityreference_invalid_entity',
+          'message' => t('The referenced entity (@type: @id) is invalid.', array('@type' => $field['settings']['target_type'], '@id' => $id)),
+        );
+      }
     }
   }
 
@@ -340,7 +340,13 @@ function entityreference_field_settings_form($field, $instance, $has_data) {
   // to the form state.
   $form = array(
     '#type' => 'container',
-    '#process' => array('_entityreference_field_settings_process'),
+    '#attached' => array(
+      'css' => array(drupal_get_path('module', 'entityreference') . '/entityreference.admin.css'),
+    ),
+    '#process' => array(
+      '_entityreference_field_settings_process',
+      '_entityreference_field_settings_ajax_process',
+    ),
     '#element_validate' => array('_entityreference_field_settings_validate'),
     '#field' => $field,
     '#instance' => $instance,
@@ -372,11 +378,7 @@ function _entityreference_field_settings_process($form, $form_state) {
     '#description' => t('The entity type that can be referenced through this field.'),
     '#disabled' => $has_data,
     '#size' => 1,
-    '#ajax' => array(
-      'callback' => 'entityreference_settings_ajax',
-      'wrapper' => $form['#id'],
-      'element' => $form['#array_parents'],
-    ),
+    '#ajax' => TRUE,
     '#limit_validation_errors' => array(),
   );
 
@@ -389,16 +391,19 @@ function _entityreference_field_settings_process($form, $form_state) {
   }
 
   $form['handler'] = array(
-    '#type' => 'radios',
-    '#title' => t('Entity selection mode'),
+    '#type' => 'fieldset',
+    '#title' => t('Entity selection'),
+    '#tree' => TRUE,
+    '#process' => array('_entityreference_form_process_merge_parent'),
+  );
+
+  $form['handler']['handler'] = array(
+    '#type' => 'select',
+    '#title' => t('Mode'),
     '#options' => $handlers_options,
     '#default_value' => $settings['handler'],
     '#required' => TRUE,
-    '#ajax' => array(
-      'callback' => 'entityreference_settings_ajax',
-      'wrapper' => $form['#id'],
-      'element' => $form['#array_parents'],
-    ),
+    '#ajax' => TRUE,
     '#limit_validation_errors' => array(),
   );
   $form['handler_submit'] = array(
@@ -411,38 +416,118 @@ function _entityreference_field_settings_process($form, $form_state) {
     '#submit' => array('entityreference_settings_ajax_submit'),
   );
 
-  $form['handler_settings'] = array(
+  $form['handler']['handler_settings'] = array(
     '#type' => 'container',
-    '#tree' => TRUE,
+    '#attributes' => array('class' => array('entityreference-settings')),
   );
 
   $handler = entityreference_get_selection_handler($field, $instance);
-  $form['handler_settings'] += $handler->settingsForm($field, $instance);
+  $form['handler']['handler_settings'] += $handler->settingsForm($field, $instance);
+
+  _entityreference_get_behavior_elements($form, $field, $instance, 'field');
+  if (!empty($form['behaviors'])) {
+    $form['behaviors'] += array(
+      '#type' => 'fieldset',
+      '#title' => t('Additional behaviors'),
+      '#parents' => array_merge($form['#parents'], array('handler_settings', 'behaviors')),
+    );
+  }
 
-  _entityreference_get_behavior_elements($form['handler_settings'], $field, $instance, 'field');
+  return $form;
+}
 
+function _entityreference_field_settings_ajax_process($form, $form_state) {
+  _entityreference_field_settings_ajax_process_element($form, $form);
   return $form;
 }
 
+function _entityreference_field_settings_ajax_process_element(&$element, $main_form) {
+  if (isset($element['#ajax']) && $element['#ajax'] === TRUE) {
+    $element['#ajax'] = array(
+      'callback' => 'entityreference_settings_ajax',
+      'wrapper' => $main_form['#id'],
+      'element' => $main_form['#array_parents'],
+    );
+  }
+
+  foreach (element_children($element) as $key) {
+    _entityreference_field_settings_ajax_process_element($element[$key], $main_form);
+  }
+}
+
+function _entityreference_form_process_merge_parent($element) {
+  $parents = $element['#parents'];
+  array_pop($parents);
+  $element['#parents'] = $parents;
+  return $element;
+}
+
+function _entityreference_element_validate_filter(&$element, &$form_state) {
+  $element['#value'] = array_filter($element['#value']);
+  form_set_value($element, $element['#value'], $form_state);
+}
+
 function _entityreference_field_settings_validate($form, &$form_state) {
   // Store the new values in the form state.
   $field = $form['#field'];
-
   if (isset($form_state['values']['field'])) {
-    $field = drupal_array_merge_deep($field, $form_state['values']['field']);
+    $field['settings'] = $form_state['values']['field']['settings'];
   }
   $form_state['entityreference']['field'] = $field;
+
+  unset($form_state['values']['field']['settings']['handler_submit']);
 }
 
 /**
  * Implements hook_field_instance_settings_form().
  */
 function entityreference_field_instance_settings_form($field, $instance) {
-  _entityreference_get_behavior_elements($form, $field, $instance, 'instance');
+  $form['settings'] = array(
+    '#type' => 'container',
+    '#attached' => array(
+      'css' => array(drupal_get_path('module', 'entityreference') . '/entityreference.admin.css'),
+    ),
+    '#weight' => 10,
+    '#tree' => TRUE,
+    '#process' => array(
+      '_entityreference_form_process_merge_parent',
+      '_entityreference_field_instance_settings_form',
+      '_entityreference_field_settings_ajax_process',
+    ),
+    '#element_validate' => array('_entityreference_field_instance_settings_validate'),
+    '#field' => $field,
+    '#instance' => $instance,
+  );
 
   return $form;
 }
 
+function _entityreference_field_instance_settings_form($form, $form_state) {
+  $field = isset($form_state['entityreference']['field']) ? $form_state['entityreference']['field'] : $form['#field'];
+  $instance = isset($form_state['entityreference']['instance']) ? $form_state['entityreference']['instance'] : $form['#instance'];
+
+  _entityreference_get_behavior_elements($form, $field, $instance, 'instance');
+  if (!empty($form['behaviors'])) {
+    $form['behaviors'] += array(
+      '#type' => 'fieldset',
+      '#title' => t('Additional behaviors'),
+      '#process' => array(
+        '_entityreference_field_settings_ajax_process',
+      ),
+    );
+  }
+  return $form;
+}
+
+function _entityreference_field_instance_settings_validate($form, &$form_state) {
+  // Store the new values in the form state.
+  $instance = $form['#instance'];
+  if (isset($form_state['values']['instance'])) {
+    $instance = drupal_array_merge_deep($instance, $form_state['values']['instance']);
+  }
+  $form_state['entityreference']['instance'] = $instance;
+}
+
 /**
  * Get the field or instance elements for the field configuration.
  */
@@ -461,35 +546,39 @@ function _entityreference_get_behavior_elements(&$element, $field, $instance, $l
         $settings = !empty($instance['settings']['behaviors'][$name]) ? $instance['settings']['behaviors'][$name] : array();
       }
       $settings += array('status' => $plugin['force enabled']);
+
+      // Render the checkbox.
       $element['behaviors'][$name] = array(
-        '#type' => 'fieldset',
-        '#title' => $plugin['title'],
-        '#default_value' => $settings['status'],
+        '#tree' => TRUE,
       );
       $element['behaviors'][$name]['status'] = array(
         '#type' => 'checkbox',
-        '#title' => t('Enable %title', array('%title' => $plugin['title'])),
+        '#title' => check_plain($plugin['title']),
         '#description' => $plugin['description'],
         '#default_value' => $settings['status'],
         '#disabled' => $plugin['force enabled'],
+        '#ajax' => TRUE,
       );
 
-      $handler = _entityreference_get_behavior_handler($name);
-      if ($behavior_elements = $handler->settingsForm($field, $instance)) {
-        $enable_element = $level == 'field' ? 'field[settings][handler_settings][behaviors]' : 'instance[settings][behaviors]';
-        foreach ($behavior_elements as $key => &$behavior_element) {
-          $behavior_element += array(
-            '#default_value' => !empty($settings[$key]) ? $settings[$key] : NULL,
-            '#states' => array(
-              'visible' => array(
-                ':input[name="' . $enable_element . '[' . $name . '][status]"]' => array('checked' => TRUE),
-              ),
+      if ($settings['status']) {
+        $handler = _entityreference_get_behavior_handler($name);
+        if ($behavior_elements = $handler->settingsForm($field, $instance)) {
+          foreach ($behavior_elements as $key => &$behavior_element) {
+            $behavior_element += array(
+              '#default_value' => !empty($settings[$key]) ? $settings[$key] : NULL,
+            );
+          }
+
+          // Get the behavior settings.
+          $behavior_elements += array(
+            '#type' => 'container',
+            '#process' => array('_entityreference_form_process_merge_parent'),
+            '#attributes' => array(
+              'class' => array('entityreference-settings'),
             ),
           );
+          $element['behaviors'][$name]['settings'] = $behavior_elements;
         }
-
-        // Get the behavior settings.
-        $element['behaviors'][$name] += $behavior_elements;
       }
     }
   }
@@ -692,10 +781,16 @@ function entityreference_field_widget_form(&$form, &$form_state, $field, $instan
     }
 
     $autocomplete_path .= '/' . $field['field_name'] . '/' . $instance['entity_type'] . '/' . $instance['bundle'] . '/';
+    // Use <NULL> as a placeholder in the URL when we don't have an entity.
+    // Most webservers collapse two consecutive slashes.
+    $id = 'NULL';
     if ($entity) {
-      list($id) = entity_extract_ids($entity_type, $entity);
-      $autocomplete_path .= $id;
+      list($eid) = entity_extract_ids($entity_type, $entity);
+      if ($eid) {
+        $id = $eid;
+      }
     }
+    $autocomplete_path .= $id;
 
     if ($instance['widget']['type'] == 'entityreference_autocomplete') {
       $element += array(
@@ -729,7 +824,8 @@ function _entityreference_autocomplete_validate($element, &$form_state, $form) {
     // Take "label (entity id)', match the id from parenthesis.
     if (preg_match("/.+\((\d+)\)/", $element['#value'], $matches)) {
       $value = $matches[1];
-    } else {
+    }
+    else {
       // Try to get a match from the input string when the user didn't use the
       // autocomplete but filled in a value manually.
       $field = field_info_field($element['#field_name']);
@@ -753,7 +849,8 @@ function _entityreference_autocomplete_tags_validate($element, &$form_state, $fo
         $value[] = array(
           'target_id' => $matches[1],
         );
-      } else {
+      }
+      else {
         // Try to get a match from the input string when the user didn't use the
         // autocomplete but filled in a value manually.
         $field = field_info_field($element['#field_name']);
@@ -775,6 +872,30 @@ function entityreference_field_widget_error($element, $error) {
   form_error($element, $error['message']);
 }
 
+/**
+ * Menu Access callback for the autocomplete widget.
+ *
+ * @param $type
+ *   The widget type (i.e. 'single' or 'tags').
+ * @param $field_name
+ *   The name of the entity-reference field.
+ * @param $entity_type
+ *   The entity type.
+ * @param $bundle_name
+ *   The bundle name.
+ * @return
+ *   True if user can access this menu item.
+ */
+function entityreference_autocomplete_access_callback($type, $field_name, $entity_type, $bundle_name) {
+  $field = field_info_field($field_name);
+  $instance = field_info_instance($entity_type, $field_name, $bundle_name);
+
+  if (!$field || !$instance || $field['type'] != 'entityreference' || !field_access('edit', $field, $entity_type)) {
+    return FALSE;
+  }
+  return TRUE;
+}
+
 /**
  * Menu callback: autocomplete the label of an entity.
  *
@@ -797,11 +918,13 @@ function entityreference_autocomplete_callback($type, $field_name, $entity_type,
   $instance = field_info_instance($entity_type, $field_name, $bundle_name);
   $matches = array();
 
-  if (!$field || !$instance || $field['type'] != 'entityreference' || !field_access('edit', $field, $entity_type)) {
-    return MENU_ACCESS_DENIED;
+  $entity = NULL;
+  if ($entity_id !== 'NULL') {
+    $entity = entity_load_single($entity_type, $entity_id);
+    if (!$entity || !entity_access('view', $entity_type, $entity)) {
+      return MENU_ACCESS_DENIED;
+    }
   }
-
-  $entity = $entity_id !== '' ? entity_load_single($entity_type, $entity_id) : NULL;
   $handler = entityreference_get_selection_handler($field, $instance, $entity_type, $entity);
 
   if ($type == 'tags') {
@@ -818,7 +941,7 @@ function entityreference_autocomplete_callback($type, $field_name, $entity_type,
     $tag_last = $string;
   }
 
-  if (!empty($tag_last)) {
+  if (isset($tag_last)) {
     // Get an array of matching entities.
     $entity_labels = $handler->getReferencableEntities($tag_last, $instance['widget']['settings']['match_operator'], 10);
 
@@ -862,6 +985,7 @@ function entityreference_field_formatter_info() {
       'field types' => array('entityreference'),
       'settings' => array(
         'view_mode' => '',
+        'links' => TRUE,
       ),
     ),
   );
@@ -899,6 +1023,12 @@ function entityreference_field_formatter_settings_form($field, $instance, $view_
         '#default_value' => $settings['view_mode'],
       );
     }
+
+    $element['links'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Show links'),
+      '#default_value' => $settings['links'],
+    );
   }
 
   return $element;
@@ -920,6 +1050,7 @@ function entityreference_field_formatter_settings_summary($field, $instance, $vi
   if ($display['type'] == 'entityreference_entity_view') {
     $entity_info = entity_get_info($field['settings']['target_type']);
     $summary[] = t('Rendered as @mode', array('@mode' => isset($entity_info['view modes'][$settings['view_mode']]['label']) ? $entity_info['view modes'][$settings['view_mode']]['label'] : $settings['view_mode']));
+    $summary[] = !empty($settings['links']) ? t('Display links') : t('Do not display links');
   }
 
   return implode('<br />', $summary);
@@ -976,6 +1107,7 @@ function entityreference_field_formatter_prepare_view($entity_type, $entities, $
  */
 function entityreference_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
   $result = array();
+  $settings = $display['settings'];
 
   switch ($display['type']) {
     case 'entityreference_label':
@@ -1011,7 +1143,11 @@ function entityreference_field_formatter_view($entity_type, $entity, $field, $in
 
         $entity = clone $item['entity'];
         unset($entity->content);
-        $result[$delta] = entity_view($field['settings']['target_type'], array($item['target_id'] => $entity), $display['settings']['view_mode'], $langcode, FALSE);
+        $result[$delta] = entity_view($field['settings']['target_type'], array($item['target_id'] => $entity), $settings['view_mode'], $langcode, FALSE);
+
+        if (empty($settings['links']) && isset($result[$delta][$field['settings']['target_type']][$item['target_id']]['links'])) {
+          $result[$delta][$field['settings']['target_type']][$item['target_id']]['links']['#access'] = FALSE;
+        }
         $depth = 0;
       }
       break;
diff --git a/sites/all/modules/entityreference/examples/entityreference_behavior_example/entityreference_behavior_example.info b/sites/all/modules/entityreference/examples/entityreference_behavior_example/entityreference_behavior_example.info
index 516c54255d4f879ffbb7b5f5e117518aadb37ddf..78ff3d95ade2cf0fd261c0f99d7007cb3dc8d9be 100644
--- a/sites/all/modules/entityreference/examples/entityreference_behavior_example/entityreference_behavior_example.info
+++ b/sites/all/modules/entityreference/examples/entityreference_behavior_example/entityreference_behavior_example.info
@@ -4,9 +4,9 @@ core = 7.x
 package = Fields
 dependencies[] = entityreference
 
-; Information added by drupal.org packaging script on 2012-05-30
-version = "7.x-1.0-rc3"
+; Information added by drupal.org packaging script on 2012-09-25
+version = "7.x-1.0-rc5"
 core = "7.x"
 project = "entityreference"
-datestamp = "1338411955"
+datestamp = "1348565045"
 
diff --git a/sites/all/modules/entityreference/examples/entityreference_behavior_example/plugins/behavior/EntityReferenceFieldBehaviorExample.class.php b/sites/all/modules/entityreference/examples/entityreference_behavior_example/plugins/behavior/EntityReferenceFieldBehaviorExample.class.php
index 416104302a1832f54a7d9ad3ca668b2fa670ce43..6d2a7a8622a5b547db6fa88fc257ceac3d53124f 100644
--- a/sites/all/modules/entityreference/examples/entityreference_behavior_example/plugins/behavior/EntityReferenceFieldBehaviorExample.class.php
+++ b/sites/all/modules/entityreference/examples/entityreference_behavior_example/plugins/behavior/EntityReferenceFieldBehaviorExample.class.php
@@ -3,19 +3,19 @@
 class EntityReferenceFieldBehaviorExample extends EntityReference_BehaviorHandler_Abstract {
 
   public function load($entity_type, $entities, $field, $instances, $langcode, &$items) {
-    drupal_set_message('Do something on load!');
+    drupal_set_message(t('Do something on load!'));
   }
 
   public function insert($entity_type, $entity, $field, $instance, $langcode, &$items) {
-    drupal_set_message('Do something on insert!');
+    drupal_set_message(t('Do something on insert!'));
   }
 
   public function update($entity_type, $entity, $field, $instance, $langcode, &$items) {
-    drupal_set_message('Do something on update!');
+    drupal_set_message(t('Do something on update!'));
   }
 
   public function delete($entity_type, $entity, $field, $instance, $langcode, &$items) {
-    drupal_set_message('Do something on delete!');
+    drupal_set_message(t('Do something on delete!'));
   }
 
   /**
diff --git a/sites/all/modules/entityreference/examples/entityreference_behavior_example/plugins/behavior/EntityReferenceInstanceBehaviorExample.class.php b/sites/all/modules/entityreference/examples/entityreference_behavior_example/plugins/behavior/EntityReferenceInstanceBehaviorExample.class.php
index 6e6f3291820b74d623c43d4feed970a3bff8281e..c09ab43496221ce8dee009f9cdf3312cc20bc2fd 100644
--- a/sites/all/modules/entityreference/examples/entityreference_behavior_example/plugins/behavior/EntityReferenceInstanceBehaviorExample.class.php
+++ b/sites/all/modules/entityreference/examples/entityreference_behavior_example/plugins/behavior/EntityReferenceInstanceBehaviorExample.class.php
@@ -3,19 +3,19 @@
 class EntityReferenceInstanceBehaviorExample extends EntityReference_BehaviorHandler_Abstract {
 
   public function load($entity_type, $entities, $field, $instances, $langcode, &$items) {
-    drupal_set_message('Do something on load, on the instance level!');
+    drupal_set_message(t('Do something on load, on the instance level!'));
   }
 
   public function insert($entity_type, $entity, $field, $instance, $langcode, &$items) {
-    drupal_set_message('Do something on insert, on the instance level!');
+    drupal_set_message(t('Do something on insert, on the instance level!'));
   }
 
   public function update($entity_type, $entity, $field, $instance, $langcode, &$items) {
-    drupal_set_message('Do something on update, on the instance level!');
+    drupal_set_message(t('Do something on update, on the instance level!'));
   }
 
   public function delete($entity_type, $entity, $field, $instance, $langcode, &$items) {
-    drupal_set_message('Do something on delete, on the instance level!');
+    drupal_set_message(t('Do something on delete, on the instance level!'));
   }
 
   /**
diff --git a/sites/all/modules/entityreference/plugins/selection/EntityReference_SelectionHandler_Generic.class.php b/sites/all/modules/entityreference/plugins/selection/EntityReference_SelectionHandler_Generic.class.php
index 7db4045402abcbb2c9f842869f3084fac02f505e..9c3425805e93aa1a87744065c8b5bbd830186ccb 100644
--- a/sites/all/modules/entityreference/plugins/selection/EntityReference_SelectionHandler_Generic.class.php
+++ b/sites/all/modules/entityreference/plugins/selection/EntityReference_SelectionHandler_Generic.class.php
@@ -41,6 +41,14 @@ class EntityReference_SelectionHandler_Generic implements EntityReference_Select
   public static function settingsForm($field, $instance) {
     $entity_info = entity_get_info($field['settings']['target_type']);
 
+    // Merge-in default values.
+    $field['settings']['handler_settings'] += array(
+      'target_bundles' => array(),
+      'sort' => array(
+        'type' => 'none',
+      )
+    );
+
     if (!empty($entity_info['entity keys']['bundle'])) {
       $bundles = array();
       foreach ($entity_info['bundles'] as $bundle_name => $bundle_info) {
@@ -48,13 +56,14 @@ class EntityReference_SelectionHandler_Generic implements EntityReference_Select
       }
 
       $form['target_bundles'] = array(
-        '#type' => 'select',
+        '#type' => 'checkboxes',
         '#title' => t('Target bundles'),
         '#options' => $bundles,
-        '#default_value' => isset($field['settings']['handler_settings']['target_bundles']) ? $field['settings']['handler_settings']['target_bundles'] : array(),
+        '#default_value' => $field['settings']['handler_settings']['target_bundles'],
         '#size' => 6,
         '#multiple' => TRUE,
-        '#description' => t('The bundles of the entity type that can be referenced. Optional, leave empty for all bundles.')
+        '#description' => t('The bundles of the entity type that can be referenced. Optional, leave empty for all bundles.'),
+        '#element_validate' => array('_entityreference_element_validate_filter'),
       );
     }
     else {
@@ -65,64 +74,80 @@ class EntityReference_SelectionHandler_Generic implements EntityReference_Select
     }
 
     $form['sort']['type'] = array(
-      '#type' => 'radios',
+      '#type' => 'select',
       '#title' => t('Sort by'),
       '#options' => array(
         'none' => t("Don't sort"),
         'property' => t('A property of the base table of the entity'),
         'field' => t('A field attached to this entity'),
       ),
-      '#default_value' => isset($field['settings']['handler_settings']['sort']['type']) ? $field['settings']['handler_settings']['sort']['type'] : 'none',
+      '#ajax' => TRUE,
+      '#limit_validation_errors' => array(),
+      '#default_value' => $field['settings']['handler_settings']['sort']['type'],
     );
 
-    $form['sort']['property'] = array(
-      '#type' => 'select',
-      '#title' => t('Sort property'),
-      '#options' => drupal_map_assoc($entity_info['schema_fields_sql']['base table']),
-      '#default_value' => isset($field['settings']['handler_settings']['sort']['property']) ? $field['settings']['handler_settings']['sort']['property'] : '',
-      '#states' => array(
-        'visible' => array(
-          ':input[name="field[settings][handler_settings][sort][type]"]' => array('value' => 'property'),
-        ),
-      ),
+    $form['sort']['settings'] = array(
+      '#type' => 'container',
+      '#attributes' => array('class' => array('entityreference-settings')),
+      '#process' => array('_entityreference_form_process_merge_parent'),
     );
 
-    $fields = array();
-    foreach (field_info_instances($field['settings']['target_type']) as $bundle_name => $bundle_instances) {
-      foreach ($bundle_instances as $instance_name => $instance_info) {
-        $field_info = field_info_field($instance_name);
-        foreach ($field_info['columns'] as $column_name => $column_info) {
-          $fields[$instance_name . ':' . $column_name] = t('@label (column @column)', array('@label' => $instance_info['label'], '@column' => $column_name));
+    if ($field['settings']['handler_settings']['sort']['type'] == 'property') {
+      // Merge-in default values.
+      $field['settings']['handler_settings']['sort'] += array(
+        'property' => NULL,
+      );
+
+      $form['sort']['settings']['property'] = array(
+        '#type' => 'select',
+        '#title' => t('Sort property'),
+        '#required' => TRUE,
+        '#options' => drupal_map_assoc($entity_info['schema_fields_sql']['base table']),
+        '#default_value' => $field['settings']['handler_settings']['sort']['property'],
+      );
+    }
+    elseif ($field['settings']['handler_settings']['sort']['type'] == 'field') {
+      // Merge-in default values.
+      $field['settings']['handler_settings']['sort'] += array(
+        'field' => NULL,
+      );
+
+      $fields = array();
+      foreach (field_info_instances($field['settings']['target_type']) as $bundle_name => $bundle_instances) {
+        foreach ($bundle_instances as $instance_name => $instance_info) {
+          $field_info = field_info_field($instance_name);
+          foreach ($field_info['columns'] as $column_name => $column_info) {
+            $fields[$instance_name . ':' . $column_name] = t('@label (column @column)', array('@label' => $instance_info['label'], '@column' => $column_name));
+          }
         }
       }
+
+      $form['sort']['settings']['field'] = array(
+        '#type' => 'select',
+        '#title' => t('Sort field'),
+        '#required' => TRUE,
+        '#options' => $fields,
+        '#default_value' => $field['settings']['handler_settings']['sort']['field'],
+      );
     }
 
-    $form['sort']['field'] = array(
-      '#type' => 'select',
-      '#title' => t('Sort field'),
-      '#options' => $fields,
-      '#default_value' => isset($field['settings']['handler_settings']['sort']['type']) ? $field['settings']['handler_settings']['sort']['type'] : '',
-      '#states' => array(
-        'visible' => array(
-          ':input[name="field[settings][handler_settings][sort][type]"]' => array('value' => 'field'),
-        ),
-      ),
-    );
+    if ($field['settings']['handler_settings']['sort']['type'] != 'none') {
+      // Merge-in default values.
+      $field['settings']['handler_settings']['sort'] += array(
+        'direction' => 'ASC',
+      );
 
-    $form['sort']['direction'] = array(
-      '#type' => 'select',
-      '#title' => t('Sort direction'),
-      '#options' => array(
-        'ASC' => t('Ascending'),
-        'DESC' => t('Descending'),
-      ),
-      '#default_value' => isset($field['settings']['handler_settings']['sort']['direction']) ? $field['settings']['handler_settings']['sort']['direction'] : 'ASC',
-      '#states' => array(
-        'invisible' => array(
-          ':input[name="field[settings][handler_settings][sort][type]"]' => array('value' => 'none'),
+      $form['sort']['settings']['direction'] = array(
+        '#type' => 'select',
+        '#title' => t('Sort direction'),
+        '#required' => TRUE,
+        '#options' => array(
+          'ASC' => t('Ascending'),
+          'DESC' => t('Descending'),
         ),
-      ),
-    );
+        '#default_value' => $field['settings']['handler_settings']['sort']['direction'],
+      );
+    }
 
     return $form;
   }
@@ -331,7 +356,7 @@ class EntityReference_SelectionHandler_Generic_user extends EntityReference_Sele
       // database.
       $conditions = &$query->conditions();
       foreach ($conditions as $key => $condition) {
-        if ($condition['field'] == 'users.name') {
+        if ($key !== '#conjunction' && is_string($condition['field']) && $condition['field'] === 'users.name') {
           // Remove the condition.
           unset($conditions[$key]);
 
@@ -387,8 +412,8 @@ class EntityReference_SelectionHandler_Generic_comment extends EntityReference_S
     // in the database. We have to alter the query ourself to go fetch the
     // bundle.
     $conditions = &$query->conditions();
-    foreach ($conditions as $id => &$condition) {
-      if (is_array($condition) && $condition['field'] == 'node_type') {
+    foreach ($conditions as $key => &$condition) {
+      if ($key !== '#conjunction' && is_string($condition['field']) && $condition['field'] === 'node_type') {
         $condition['field'] = $node_alias . '.type';
         foreach ($condition['value'] as &$value) {
           if (substr($value, 0, 13) == 'comment_node_') {
@@ -454,8 +479,8 @@ class EntityReference_SelectionHandler_Generic_taxonomy_term extends EntityRefer
     // column in the database. We have to alter the query ourself to go fetch
     // the bundle.
     $conditions = &$query->conditions();
-    foreach ($conditions as $id => &$condition) {
-      if (is_array($condition) && $condition['field'] == 'vocabulary_machine_name') {
+    foreach ($conditions as $key => &$condition) {
+      if ($key !== '#conjunction' && is_string($condition['field']) && $condition['field'] === 'vocabulary_machine_name') {
         $condition['field'] = $vocabulary_alias . '.machine_name';
         break;
       }
diff --git a/sites/all/modules/entityreference/plugins/selection/EntityReference_SelectionHandler_Views.class.php b/sites/all/modules/entityreference/plugins/selection/EntityReference_SelectionHandler_Views.class.php
index e3f87f099b2cff851891374196b8549b41e2c77c..0cdc67ede488a7d3e65099772635ea5a3d932b3e 100644
--- a/sites/all/modules/entityreference/plugins/selection/EntityReference_SelectionHandler_Views.class.php
+++ b/sites/all/modules/entityreference/plugins/selection/EntityReference_SelectionHandler_Views.class.php
@@ -30,22 +30,22 @@ class EntityReference_SelectionHandler_Views implements EntityReference_Selectio
     foreach ($displays as $data) {
       list($view, $display_id) = $data;
       if ($view->base_table == $entity_info['base table']) {
-        $options[$view->name . ':' . $display_id] = $view->name .' - ' . $view->display[$display_id]->display_title;
+        $options[$view->name . ':' . $display_id] = $view->name . ' - ' . $view->display[$display_id]->display_title;
       }
     }
 
+    // The value of the 'view_and_display' select below will need to be split
+    // into 'view_name' and 'view_display' in the final submitted values, so
+    // we massage the data at validate time on the wrapping element (not
+    // ideal).
+    $form['view']['#element_validate'] = array('entityreference_view_settings_validate');
+
     if ($options) {
-      // The value of the 'view_and_display' select below will need to be split
-      // into 'view_name' and 'view_display' in the final submitted values, so
-      // we massage the data at validate time on the wrapping element (not
-      // ideal).
-      $form['view']['#element_validate'] = array('entityreference_view_settings_validate');
-
-      $options = array('' => '<' . t('none') . '>') + $options;
-      $default = !empty($view_settings['view_name']) ? $view_settings['view_name'] . ':' .$view_settings['display_name'] : '';
+      $default = !empty($view_settings['view_name']) ? $view_settings['view_name'] . ':' . $view_settings['display_name'] : NULL;
       $form['view']['view_and_display'] = array(
         '#type' => 'select',
         '#title' => t('View used to select the entities'),
+        '#required' => TRUE,
         '#options' => $options,
         '#default_value' => $default,
         '#description' => '<p>' . t('Choose the view and display that select the entities that can be referenced.<br />Only views with a display of type "Entity Reference" are eligible.') . '</p>',
@@ -133,6 +133,13 @@ class EntityReference_SelectionHandler_Views implements EntityReference_Selectio
     return $result;
   }
 
+  /**
+   * Implements EntityReferenceHandler::validateAutocompleteInput().
+   */
+  public function validateAutocompleteInput($input, &$element, &$form_state, $form) {
+    return NULL;
+  }
+
   /**
    * Implements EntityReferenceHandler::getLabel().
    */
@@ -155,8 +162,8 @@ function entityreference_view_settings_validate($element, &$form_state, $form) {
     list($view, $display) = explode(':', $element['view_and_display']['#value']);
   }
   else {
-    $view = '';
-    $display = '';
+    form_error($element, t('The views entity selection mode requires a view.'));
+    return;
   }
 
   // Explode the 'args' string into an actual array. Beware, explode() turns an
diff --git a/sites/all/modules/entityreference/plugins/selection/abstract.inc b/sites/all/modules/entityreference/plugins/selection/abstract.inc
index fc5117c590681f627882e6f0203d1677a1305a0f..1d2ea0d302e5e34644cd20e2c80d2ffaa19f7de4 100644
--- a/sites/all/modules/entityreference/plugins/selection/abstract.inc
+++ b/sites/all/modules/entityreference/plugins/selection/abstract.inc
@@ -1,6 +1,7 @@
 <?php
 
 /**
+ * @file
  * Abstraction of the selection logic of an entity reference field.
  *
  * Implementations that wish to provide an implementation of this should
diff --git a/sites/all/modules/entityreference/tests/entityreference.admin.test b/sites/all/modules/entityreference/tests/entityreference.admin.test
new file mode 100644
index 0000000000000000000000000000000000000000..9a1211981d9146a1a0f8ee980e6751a39b872930
--- /dev/null
+++ b/sites/all/modules/entityreference/tests/entityreference.admin.test
@@ -0,0 +1,114 @@
+<?php
+
+/**
+ * @file
+ * Contains EntityReferenceHandlersTestCase
+ */
+
+/**
+ * Test for Entity Reference admin UI.
+ */
+class EntityReferenceAdminTestCase extends DrupalWebTestCase {
+  public static function getInfo() {
+    return array(
+      'name' => 'Entity Reference UI',
+      'description' => 'Tests for the administrative UI.',
+      'group' => 'Entity Reference',
+    );
+  }
+
+  public function setUp() {
+    parent::setUp(array('field_ui', 'entity', 'ctools', 'entityreference'));
+
+    // Create test user.
+    $this->admin_user = $this->drupalCreateUser(array('access content', 'administer content types'));
+    $this->drupalLogin($this->admin_user);
+
+    // Create content type, with underscores.
+    $type_name = strtolower($this->randomName(8)) . '_test';
+    $type = $this->drupalCreateContentType(array('name' => $type_name, 'type' => $type_name));
+    $this->type = $type->type;
+    // Store a valid URL name, with hyphens instead of underscores.
+    $this->hyphen_type = str_replace('_', '-', $this->type);
+  }
+
+  protected function assertFieldSelectOptions($name, $expected_options) {
+    $xpath = $this->buildXPathQuery('//select[@name=:name]', array(':name' => $name));
+    $fields = $this->xpath($xpath);
+    if ($fields) {
+      $field = $fields[0];
+      $options = $this->getAllOptionsList($field);
+      return $this->assertIdentical($options, $expected_options);
+    }
+    else {
+      return $this->fail(t('Unable to find field @name', array('@name' => $name)));
+    }
+  }
+
+  /**
+   * Extract all the options of a select element.
+   */
+  protected function getAllOptionsList($element) {
+    $options = array();
+    // Add all options items.
+    foreach ($element->option as $option) {
+      $options[] = (string) $option['value'];
+    }
+    // TODO: support optgroup.
+    return $options;
+  }
+
+  public function testFieldAdminHandler() {
+    $bundle_path = 'admin/structure/types/manage/' . $this->hyphen_type;
+
+    // First step: 'Add new field' on the 'Manage fields' page.
+    $this->drupalPost($bundle_path . '/fields', array(
+      'fields[_add_new_field][label]' => 'Test label',
+      'fields[_add_new_field][field_name]' => 'test',
+      'fields[_add_new_field][type]' => 'entityreference',
+      'fields[_add_new_field][widget_type]' => 'entityreference_autocomplete',
+    ), t('Save'));
+
+    // Node should be selected by default.
+    $this->assertFieldByName('field[settings][target_type]', 'node');
+    // The base handler should be selected by default.
+    $this->assertFieldByName('field[settings][handler]', 'base');
+
+    // The base handler settings should be diplayed.
+    $entity_type = 'node';
+    $entity_info = entity_get_info($entity_type);
+    foreach ($entity_info['bundles'] as $bundle_name => $bundle_info) {
+      $this->assertFieldByName('field[settings][handler_settings][target_bundles][' . $bundle_name . ']');
+    }
+
+    // Test the sort settings.
+    $options = array('none', 'property', 'field');
+    $this->assertFieldSelectOptions('field[settings][handler_settings][sort][type]', $options);
+    // Option 0: no sort.
+    $this->assertFieldByName('field[settings][handler_settings][sort][type]', 'none');
+    $this->assertNoFieldByName('field[settings][handler_settings][sort][property]');
+    $this->assertNoFieldByName('field[settings][handler_settings][sort][field]');
+    $this->assertNoFieldByName('field[settings][handler_settings][sort][direction]');
+    // Option 1: sort by property.
+    $this->drupalPostAJAX(NULL, array('field[settings][handler_settings][sort][type]' => 'property'), 'field[settings][handler_settings][sort][type]');
+    $this->assertFieldByName('field[settings][handler_settings][sort][property]', '');
+    $this->assertNoFieldByName('field[settings][handler_settings][sort][field]');
+    $this->assertFieldByName('field[settings][handler_settings][sort][direction]', 'ASC');
+    // Option 2: sort by field.
+    $this->drupalPostAJAX(NULL, array('field[settings][handler_settings][sort][type]' => 'field'), 'field[settings][handler_settings][sort][type]');
+    $this->assertNoFieldByName('field[settings][handler_settings][sort][property]');
+    $this->assertFieldByName('field[settings][handler_settings][sort][field]', '');
+    $this->assertFieldByName('field[settings][handler_settings][sort][direction]', 'ASC');
+    // Set back to no sort.
+    $this->drupalPostAJAX(NULL, array('field[settings][handler_settings][sort][type]' => 'none'), 'field[settings][handler_settings][sort][type]');
+
+    // Second step: 'Instance settings' form.
+    $this->drupalPost(NULL, array(), t('Save field settings'));
+
+    // Third step: confirm.
+    $this->drupalPost(NULL, array(), t('Save settings'));
+
+    // Check that the field appears in the overview form.
+    $this->assertFieldByXPath('//table[@id="field-overview"]//td[1]', 'Test label', t('Field was created and appears in the overview page.'));
+  }
+}
diff --git a/sites/all/modules/entityreference/tests/entityreference.handlers.test b/sites/all/modules/entityreference/tests/entityreference.handlers.test
index 598cb8fb7535e4e61251bdcda31a7820b3a8c575..6c2ceca00f6985931999d4d1509f128cd58ffdc0 100644
--- a/sites/all/modules/entityreference/tests/entityreference.handlers.test
+++ b/sites/all/modules/entityreference/tests/entityreference.handlers.test
@@ -1,5 +1,10 @@
 <?php
 
+/**
+ * @file
+ * Contains EntityReferenceHandlersTestCase
+ */
+
 /**
  * Test for Entity Reference handlers.
  */
diff --git a/sites/all/modules/entityreference/views/entityreference_plugin_display.inc b/sites/all/modules/entityreference/views/entityreference_plugin_display.inc
index 1fc645018ac65ba1cdc98f17748d6c35c89557dd..7a1b768ad040751486f61e03aab28b51ecb2c569 100644
--- a/sites/all/modules/entityreference/views/entityreference_plugin_display.inc
+++ b/sites/all/modules/entityreference/views/entityreference_plugin_display.inc
@@ -57,8 +57,8 @@ class entityreference_plugin_display extends views_plugin_display {
     // Make sure the id field is included in the results, and save its alias
     // so that references_plugin_style can retrieve it.
     $this->id_field_alias = $id_field = $this->view->query->add_field($this->view->base_table, $this->view->base_field);
-    if (strpos($id_field, '.') === false) {
-      $id_field = $this->view->base_table .'.'.$this->id_field_alias;
+    if (strpos($id_field, '.') === FALSE) {
+      $id_field = $this->view->base_table . '.' . $this->id_field_alias;
     }
 
     // Restrict the autocomplete options based on what's been typed already.
@@ -94,7 +94,7 @@ class entityreference_plugin_display extends views_plugin_display {
   }
 
   /**
-   * Extend the default validation. 
+   * Extend the default validation.
    */
   function validate() {
     $errors = parent::validate();
diff --git a/sites/all/modules/entityreference/views/entityreference_plugin_row_fields.inc b/sites/all/modules/entityreference/views/entityreference_plugin_row_fields.inc
index 400603f3f29036e176f7f9275181415d1692ef57..dc3c4b68a81203017706641de63586a4b9a81c86 100644
--- a/sites/all/modules/entityreference/views/entityreference_plugin_row_fields.inc
+++ b/sites/all/modules/entityreference/views/entityreference_plugin_row_fields.inc
@@ -21,7 +21,7 @@ class entityreference_plugin_row_fields extends views_plugin_row_fields {
     parent::options_form($form, $form_state);
 
     // Expand the description of the 'Inline field' checkboxes.
-    $form['inline']['#description'] .= '<br>' . t("<strong>Note:</strong> In 'Entity Reference' displays, all fields will be displayed inline unless an explicit selection of inline fields is made here." );
+    $form['inline']['#description'] .= '<br />' . t("<strong>Note:</strong> In 'Entity Reference' displays, all fields will be displayed inline unless an explicit selection of inline fields is made here." );
   }
 
   function pre_render($row) {
diff --git a/sites/all/modules/masquerade/LICENSE.txt b/sites/all/modules/masquerade/LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2c095c8d3f42488e8168f9710a4ffbfc4125a159
--- /dev/null
+++ b/sites/all/modules/masquerade/LICENSE.txt
@@ -0,0 +1,274 @@
+GNU GENERAL PUBLIC LICENSE
+
+              Version 2, June 1991
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave,
+Cambridge, MA 02139, USA. Everyone is permitted to copy and distribute
+verbatim copies of this license document, but changing it is not allowed.
+
+                  Preamble
+
+The licenses for most software are designed to take away your freedom to
+share and change it. By contrast, the GNU General Public License is
+intended to guarantee your freedom to share and change free software--to
+make sure the software is free for all its users. This General Public License
+applies to most of the Free Software Foundation's software and to any other
+program whose authors commit to using it. (Some other Free Software
+Foundation software is covered by the GNU Library General Public License
+instead.) You can apply it to your programs, too.
+
+When we speak of free software, we are referring to freedom, not price. Our
+General Public Licenses are designed to make sure that you have the
+freedom to distribute copies of free software (and charge for this service if
+you wish), that you receive source code or can get it if you want it, that you
+can change the software or use pieces of it in new free programs; and that
+you know you can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to
+deny you these rights or to ask you to surrender the rights. These restrictions
+translate to certain responsibilities for you if you distribute copies of the
+software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis or for
+a fee, you must give the recipients all the rights that you have. You must make
+sure that they, too, receive or can get the source code. And you must show
+them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and (2)
+offer you this license which gives you legal permission to copy, distribute
+and/or modify the software.
+
+Also, for each author's protection and ours, we want to make certain that
+everyone understands that there is no warranty for this free software. If the
+software is modified by someone else and passed on, we want its recipients
+to know that what they have is not the original, so that any problems
+introduced by others will not reflect on the original authors' reputations.
+
+Finally, any free program is threatened constantly by software patents. We
+wish to avoid the danger that redistributors of a free program will individually
+obtain patent licenses, in effect making the program proprietary. To prevent
+this, we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and modification
+follow.
+
+           GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND
+               MODIFICATION
+
+0. This License applies to any program or other work which contains a notice
+placed by the copyright holder saying it may be distributed under the terms
+of this General Public License. The "Program", below, refers to any such
+program or work, and a "work based on the Program" means either the
+Program or any derivative work under copyright law: that is to say, a work
+containing the Program or a portion of it, either verbatim or with
+modifications and/or translated into another language. (Hereinafter, translation
+is included without limitation in the term "modification".) Each licensee is
+addressed as "you".
+
+Activities other than copying, distribution and modification are not covered
+by this License; they are outside its scope. The act of running the Program is
+not restricted, and the output from the Program is covered only if its contents
+constitute a work based on the Program (independent of having been made
+by running the Program). Whether that is true depends on what the Program
+does.
+
+1. You may copy and distribute verbatim copies of the Program's source
+code as you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this License
+and to the absence of any warranty; and give any other recipients of the
+Program a copy of this License along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and you
+may at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Program or any portion of it,
+thus forming a work based on the Program, and copy and distribute such
+modifications or work under the terms of Section 1 above, provided that you
+also meet all of these conditions:
+
+a) You must cause the modified files to carry prominent notices stating that
+you changed the files and the date of any change.
+
+b) You must cause any work that you distribute or publish, that in whole or in
+part contains or is derived from the Program or any part thereof, to be
+licensed as a whole at no charge to all third parties under the terms of this
+License.
+
+c) If the modified program normally reads commands interactively when run,
+you must cause it, when started running for such interactive use in the most
+ordinary way, to print or display an announcement including an appropriate
+copyright notice and a notice that there is no warranty (or else, saying that
+you provide a warranty) and that users may redistribute the program under
+these conditions, and telling the user how to view a copy of this License.
+(Exception: if the Program itself is interactive but does not normally print such
+an announcement, your work based on the Program is not required to print
+an announcement.)
+
+These requirements apply to the modified work as a whole. If identifiable
+sections of that work are not derived from the Program, and can be
+reasonably considered independent and separate works in themselves, then
+this License, and its terms, do not apply to those sections when you distribute
+them as separate works. But when you distribute the same sections as part
+of a whole which is a work based on the Program, the distribution of the
+whole must be on the terms of this License, whose permissions for other
+licensees extend to the entire whole, and thus to each and every part
+regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your rights to
+work written entirely by you; rather, the intent is to exercise the right to
+control the distribution of derivative or collective works based on the
+Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of a
+storage or distribution medium does not bring the other work under the scope
+of this License.
+
+3. You may copy and distribute the Program (or a work based on it, under
+Section 2) in object code or executable form under the terms of Sections 1
+and 2 above provided that you also do one of the following:
+
+a) Accompany it with the complete corresponding machine-readable source
+code, which must be distributed under the terms of Sections 1 and 2 above
+on a medium customarily used for software interchange; or,
+
+b) Accompany it with a written offer, valid for at least three years, to give
+any third party, for a charge no more than your cost of physically performing
+source distribution, a complete machine-readable copy of the corresponding
+source code, to be distributed under the terms of Sections 1 and 2 above on
+a medium customarily used for software interchange; or,
+
+c) Accompany it with the information you received as to the offer to distribute
+corresponding source code. (This alternative is allowed only for
+noncommercial distribution and only if you received the program in object
+code or executable form with such an offer, in accord with Subsection b
+above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source code
+means all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation and
+installation of the executable. However, as a special exception, the source
+code distributed need not include anything that is normally distributed (in
+either source or binary form) with the major components (compiler, kernel,
+and so on) of the operating system on which the executable runs, unless that
+component itself accompanies the executable.
+
+If distribution of executable or object code is made by offering access to
+copy from a designated place, then offering equivalent access to copy the
+source code from the same place counts as distribution of the source code,
+even though third parties are not compelled to copy the source along with the
+object code.
+
+4. You may not copy, modify, sublicense, or distribute the Program except as
+expressly provided under this License. Any attempt otherwise to copy,
+modify, sublicense or distribute the Program is void, and will automatically
+terminate your rights under this License. However, parties who have received
+copies, or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+5. You are not required to accept this License, since you have not signed it.
+However, nothing else grants you permission to modify or distribute the
+Program or its derivative works. These actions are prohibited by law if you
+do not accept this License. Therefore, by modifying or distributing the
+Program (or any work based on the Program), you indicate your acceptance
+of this License to do so, and all its terms and conditions for copying,
+distributing or modifying the Program or works based on it.
+
+6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the original
+licensor to copy, distribute or modify the Program subject to these terms and
+conditions. You may not impose any further restrictions on the recipients'
+exercise of the rights granted herein. You are not responsible for enforcing
+compliance by third parties to this License.
+
+7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues), conditions
+are imposed on you (whether by court order, agreement or otherwise) that
+contradict the conditions of this License, they do not excuse you from the
+conditions of this License. If you cannot distribute so as to satisfy
+simultaneously your obligations under this License and any other pertinent
+obligations, then as a consequence you may not distribute the Program at all.
+For example, if a patent license would not permit royalty-free redistribution
+of the Program by all those who receive copies directly or indirectly through
+you, then the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply and
+the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents or
+other property right claims or to contest validity of any such claims; this
+section has the sole purpose of protecting the integrity of the free software
+distribution system, which is implemented by public license practices. Many
+people have made generous contributions to the wide range of software
+distributed through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing to
+distribute software through any other system and a licensee cannot impose
+that choice.
+
+This section is intended to make thoroughly clear what is believed to be a
+consequence of the rest of this License.
+
+8. If the distribution and/or use of the Program is restricted in certain
+countries either by patents or by copyrighted interfaces, the original copyright
+holder who places the Program under this License may add an explicit
+geographical distribution limitation excluding those countries, so that
+distribution is permitted only in or among countries not thus excluded. In such
+case, this License incorporates the limitation as if written in the body of this
+License.
+
+9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will be
+similar in spirit to the present version, but may differ in detail to address new
+problems or concerns.
+
+Each version is given a distinguishing version number. If the Program specifies
+a version number of this License which applies to it and "any later version",
+you have the option of following the terms and conditions either of that
+version or of any later version published by the Free Software Foundation. If
+the Program does not specify a version number of this License, you may
+choose any version ever published by the Free Software Foundation.
+
+10. If you wish to incorporate parts of the Program into other free programs
+whose distribution conditions are different, write to the author to ask for
+permission. For software which is copyrighted by the Free Software
+Foundation, write to the Free Software Foundation; we sometimes make
+exceptions for this. Our decision will be guided by the two goals of
+preserving the free status of all derivatives of our free software and of
+promoting the sharing and reuse of software generally.
+
+               NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE,
+THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT
+PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
+STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
+WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
+NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR
+AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR
+ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
+LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL,
+SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
+ARISING OUT OF THE USE OR INABILITY TO USE THE
+PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA
+OR DATA BEING RENDERED INACCURATE OR LOSSES
+SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE
+PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN
+IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGES.
+
+          END OF TERMS AND CONDITIONS
diff --git a/sites/all/modules/masquerade/README.txt b/sites/all/modules/masquerade/README.txt
new file mode 100644
index 0000000000000000000000000000000000000000..200b1290bd9da745ac1e5a7c83c792b00a08b476
--- /dev/null
+++ b/sites/all/modules/masquerade/README.txt
@@ -0,0 +1,38 @@
+= Masquerade =
+
+The Masquerade module allows users to temporarily switch to another user
+account. It keeps a record of the original user account, so users can easily
+switch back to the previous account.
+
+== Installation and Configuration ==
+
+To install the Masquerade module, extract the module to your modules folder,
+such as sites/all/modules. After enabling the module, it can be configured
+under Administer > Configuration > People > Masquerade. To enable users to
+masquerade, assign the appropriate "masquerade module" permissions to the roles
+available on your site. For example:
+
+ * To allow members of the 'customer support' role to masquerade as any
+   non-admin user, add the 'masquerade as user' permission to the role. In the
+   Masquerade configuration, set 'administrator' as an administrator role
+   to prevent customer support users from masquerading as those users.
+
+ * To allow members of the 'tech support' role to masquerade as 'administrator', add the 'masquerade as admin' permission to the role. Then,
+   in the Masquerade configuration, set 'administrator' as an
+   administrator role.
+
+== Quick Switch Menu ==
+
+By default, when a user is selected for the 'Menu Quick Switch user', the Masquerade module adds two menu items to the 'Navigation' menu:
+
+ * Masquerade as 'the user selected': When clicked, the user can quick switch to the user selected.
+
+ * Switch back: This menu item appears while masquerading so that you can switch back to your original user.
+
+== Help and Support ==
+
+This module was developed by a number of contributors. For more information
+about this module, see:
+
+Project Page: http://drupal.org/project/masquerade
+Issue Queue: http://drupal.org/project/issues/masquerade
diff --git a/sites/all/modules/masquerade/masquerade.info b/sites/all/modules/masquerade/masquerade.info
new file mode 100644
index 0000000000000000000000000000000000000000..fd510be6553db1a1efd31c8eef890f35a064c472
--- /dev/null
+++ b/sites/all/modules/masquerade/masquerade.info
@@ -0,0 +1,12 @@
+name = Masquerade
+description = "This module allows permitted users to masquerade as other users."
+core = 7.x
+files[] = masquerade.test
+configure = admin/config/people/masquerade
+
+; Information added by drupal.org packaging script on 2011-09-17
+version = "7.x-1.0-rc4"
+core = "7.x"
+project = "masquerade"
+datestamp = "1316220424"
+
diff --git a/sites/all/modules/masquerade/masquerade.install b/sites/all/modules/masquerade/masquerade.install
new file mode 100644
index 0000000000000000000000000000000000000000..a10d0920b38ad2316e1402e5fa7ec2a15af51a9c
--- /dev/null
+++ b/sites/all/modules/masquerade/masquerade.install
@@ -0,0 +1,183 @@
+<?php
+
+/**
+ * @file
+ * masquerade.install
+ *
+ * Install, uninstall and update hooks for the Masquarade module.
+ */
+
+/**
+ * Implements hook_schema().
+ *
+ * @return array
+ */
+function masquerade_schema() {
+  return array(
+    'masquerade' => array(
+      'description' => 'Each masquerading user has their session recorded into the masquerade table. Each record represents a masquerading user.',
+      'fields' => array(
+        'sid' => array(
+          'description' => 'The current session for this masquerading user corresponding to their {sessions}.sid.',
+          'type' => 'varchar',
+          'length' => '64',
+          'not null' => TRUE,
+          'default' => ''),
+        'uid_from' => array(
+          'description' => 'The {users}.uid corresponding to a session.',
+          'type' => 'int',
+          'not null' => TRUE,
+          'default' => 0,
+          'disp-width' => '10'),
+        'uid_as' => array(
+          'description' => 'The {users}.uid this session is masquerading as.',
+          'type' => 'int',
+          'not null' => TRUE,
+          'default' => 0,
+          'disp-width' => '10'),
+      ),
+      'indexes' => array(
+        'sid' => array('sid', 'uid_from'),
+        'sid_2' => array('sid', 'uid_as'),
+      ),
+    ),
+    'masquerade_users' => array(
+      'description' => 'Per-user permission table granting permissions to switch as a specific user.',
+      'fields' => array(
+        'uid_from' => array(
+          'description' => 'The {users}.uid that can masquerade as {masquerade_users}.uid_to.',
+          'type' => 'int',
+          'not null' => TRUE,
+          'default' => 0,
+          'disp-width' => 10,
+        ),
+        'uid_to' => array(
+          'description' => 'The {users}.uid that {masquerade_users}.uid_from can masquerade as.',
+          'type' => 'int',
+          'not null' => TRUE,
+          'default' => 0,
+          'disp-width' => 10,
+        ),
+      ),
+      'primary key' => array('uid_from', 'uid_to'),
+    ),
+  );
+}
+
+/**
+ * Implements hook_install().
+ */
+function masquerade_install() {
+  db_update('system')
+    ->fields(array('weight' => -10))
+    ->condition('name', 'masquerade')
+    ->execute();
+}
+
+/**
+ * Implements hook_uninstall().
+ */
+function masquerade_uninstall() {
+  variable_del('masquerade_test_user');
+  variable_del('masquerade_admin_roles');
+  variable_del('masquerade_quick_switches');
+}
+
+/**
+ * Reformat variable value.
+ */
+function masquerade_update_6001() {
+  variable_set('masquerade_quick_switches', implode(',', variable_get('masquerade_quick_switches', array())));
+}
+
+/**
+ * Make the sid column match the length of the core sessions table (64 characters).
+ */
+function masquerade_update_6002() {
+  db_drop_index('masquerade', 'sid');
+  db_drop_index('masquerade', 'sid_2');
+  db_change_field('masquerade', 'sid', 'sid', array(
+    'type' => 'varchar',
+    'length' => '64',
+    'not null' => TRUE,
+    'default' => '')
+  );
+  db_add_index('masquerade', 'sid', array('sid', 'uid_from'));
+  db_add_index('masquerade', 'sid_2', array('sid', 'uid_as'));
+}
+
+/**
+ * Change masquerade_quick_switches variable to store a serialized array of
+ * user ID's. Reverts update 6001.
+ */
+function masquerade_update_6003() {
+  $users = variable_get('masquerade_quick_switches', NULL);
+  if (!empty($users)) {
+    $user_ids = drupal_explode_tags($users);
+    if (!empty($user_ids)) {
+      variable_set('masquerade_quick_switches', $user_ids);
+    }
+  }
+  else {
+    variable_del('masquerade_quick_switches');
+  }
+}
+
+/**
+ * Set the weight of the masquerade module to -10, but only if it hasn't
+ * previously been changed.
+ */
+function masquerade_update_6004() {
+  db_update('system')
+    ->fields(array('weight' => -10))
+    ->condition('name', 'masquerade')
+    ->execute();
+}
+
+/**
+ * Add a table storing specific user pairings a user can masquerade as.
+ */
+function masquerade_update_6005() {
+  $schema = array(
+    'masquerade_users' => array(
+      'fields' => array(
+        'uid_from' => array(
+          'type' => 'int',
+          'not null' => TRUE,
+          'default' => 0,
+          'disp-width' => 10,
+        ),
+        'uid_to' => array(
+          'type' => 'int',
+          'not null' => TRUE,
+          'default' => 0,
+          'disp-width' => 10,
+        ),
+      ),
+      'primary key' => array('uid_from', 'uid_to'),
+    )
+  );
+  db_create_table('masquerade_users', $schema['masquerade_users']);
+}
+
+/**
+ * Update masquerade block delta.
+ */
+function masquerade_update_7000() {
+  db_update('block')
+    ->fields(array('delta' => 'masquerade'))
+    ->condition('module', 'masquerade')
+    ->condition('delta', 0)
+    ->execute();
+}
+
+/**
+ * Update masquerade block caching.
+ */
+function masquerade_update_7001() {
+  db_update('block')
+    ->fields(array('cache' => DRUPAL_NO_CACHE))
+    ->condition('module', 'masqurade')
+    ->condition('delta', 'masquerade')
+    ->execute();
+}
diff --git a/sites/all/modules/masquerade/masquerade.module b/sites/all/modules/masquerade/masquerade.module
new file mode 100644
index 0000000000000000000000000000000000000000..34411adb13ca2450a36793a001823658232f7064
--- /dev/null
+++ b/sites/all/modules/masquerade/masquerade.module
@@ -0,0 +1,842 @@
+<?php
+
+/**
+ * @file
+ * The masquerade module allows administrators to masquerade as other user.
+ */
+
+/**
+ * Implements hook_help().
+ */
+function masquerade_help($path, $arg) {
+  switch ($path) {
+    case 'admin/help#masquerade':
+      return t('<p>The masquerade module adds a link on a user\'s profile page that allows permitted users to masquerade as that user. Upon masquerading, a link to "switch back" to the original user will appear in the menu. While masquerading, the option to masquerade as another user will not appear. All masquerading transactions are logged, and $user->masquerading will be set; this could be displayed via theme.</p><p>In the masquerade settings a list of roles are presented; any checked role is considered an "administrator" and requires the second level "masquerade as admin" permission to masquerade as. User #1 is automatically considered an administrator, regardless of roles.</p>');
+    case 'admin/settings/masquerade':
+      return t('Only the users with <strong>masquerade as admin</strong> permission, will be able to masquerade as the users who belong to the roles selected below. User #1 is automatically considered an administrator, regardless of roles.');
+  }
+}
+
+/**
+ * Implements hook_permission().
+ *
+ * @return array
+ */
+function masquerade_permission() {
+  return array(
+    'masquerade as user' => array(
+      'title' => t('Masquerade as user'),
+      'description' => t('Masquerade as another user.'),
+    ),
+    'masquerade as admin' => array(
+      'title' => t('Masquerade as admin'),
+      'description' => t('Masquerade as the site admin (UID 1).'),
+    ),
+    'administer masquerade' => array(
+      'title' => t('Administer Masquerade'),
+      'description' => t('Perform administration tasks and configure the Masquerade module.'),
+    ),
+  );
+}
+
+/**
+ * Implements hook_init().
+ */
+function masquerade_init() {
+  global $user;
+
+  // Try to load masqing uid from masquerade table.
+  $uid = db_query("SELECT uid_from FROM {masquerade} WHERE sid = :sid AND uid_as = :uid_as", array(
+    ':sid' => session_id(),
+    ':uid_as' => $user->uid,
+  ))->fetchField();
+
+  // We are using identical operator (===) instead of equal (==) because if
+  // $uid === 0 we want to store the session variable. If there's no record in
+  // masquerade table we clear the session variable.
+  if ($uid === FALSE) {
+    if (isset($_SESSION)) {
+      unset($_SESSION['masquerading']);
+    }
+  }
+  else {
+    $_SESSION['masquerading'] = $uid;
+  }
+}
+
+/**
+ * Implements hook_cron().
+ *
+ * Cleanup masquerade records where people didn't use the switch back link
+ * that would have cleanly removed the user switch record.
+ */
+function masquerade_cron() {
+  // see http://drupal.org/node/268487 before modifying this query
+  $subquery = db_select('sessions', 's');
+  $subquery->addField('s', 'sid');
+
+  $query = db_delete('masquerade');
+  $query->condition('sid', $subquery, 'NOT IN');
+  $query->execute();
+}
+
+/**
+ * Implements hook_menu().
+ */
+function masquerade_menu() {
+  $items = array();
+
+  $default_test_user = _masquerade_user_load(variable_get('masquerade_test_user', ''));
+  if ($default_test_user && ($default_test_user->uid || $default_test_user->name == variable_get('anonymous', t('Anonymous')))) {
+    $items['masquerade/switch/' . $default_test_user->uid] = array(
+      'title' => 'Masquerade as @testuser',
+      'title arguments' => array('@testuser' => $default_test_user->name),
+      'page callback' => 'masquerade_switch_user_page',
+      'page arguments' => array(2),
+      'access callback' => 'masquerade_menu_access',
+      'access arguments' => array('switch'),
+      'type' => MENU_NORMAL_ITEM,
+    );
+  }
+
+  $items['masquerade/switch/%'] = array(
+    'title' => 'Masquerading',
+    'page callback' => 'masquerade_switch_user_page',
+    'page arguments' => array(2),
+    'access callback' => 'masquerade_menu_access',
+    'access arguments' => array('switch', 2),
+    'type' => MENU_NORMAL_ITEM,
+  );
+  $items['masquerade/unswitch'] = array(
+    'title' => 'Switch back',
+    'page callback' => 'masquerade_switch_back_page',
+    'access callback' => 'masquerade_menu_access',
+    'access arguments' => array('unswitch'),
+    'type' => MENU_NORMAL_ITEM,
+  );
+  $items['masquerade/autocomplete'] = array(
+    'title' => '',
+    'page callback' => 'masquerade_autocomplete',
+    'access callback' => 'masquerade_menu_access',
+    'access arguments' => array('autocomplete'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['masquerade/autocomplete-users'] = array(
+    'title' => '',
+    'page callback' => 'masquerade_autocomplete_multiple',
+    'access callback' => 'masquerade_menu_access',
+    'access arguments' => array('autocomplete'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['masquerade/autocomplete-user'] = array(
+    'title' => 'Masquerade autocomplete',
+    'page callback' => 'masquerade_autocomplete_multiple',
+    'page arguments' => array(2, FALSE),
+    'access arguments' => array('access user profiles'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/config/people/masquerade'] = array(
+    'title' => 'Masquerade',
+    'description' => 'Masquerade module allows administrators to masquerade as other users.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('masquerade_admin_settings'),
+    'access callback' => 'user_access',
+    'access arguments' => array('administer masquerade'),
+    'type' => MENU_NORMAL_ITEM,
+  );
+
+  return $items;
+}
+
+/**
+ * Implements hook_menu_alter().
+ *
+ * We need to add a token to the Masquerade paths to protect against CSRF
+ * attacks. Since menu items in Drupal do not support dynamic elements these
+ * tokens need to be added during rendering via masquerade_translated_menu_link_alter().
+ * Set the 'alter'-option to TRUE to make sure
+ * the links get passed through masquerade_translated_menu_link_alter.
+ */
+function masquerade_menu_alter(&$items) {
+  $default_test_user = _masquerade_user_load(variable_get('masquerade_test_user', ''));
+  if (isset($default_test_user->uid)) {
+    $items['masquerade/switch/' . $default_test_user->uid]['options']['alter'] = TRUE;
+  }
+  $items['masquerade/switch/%']['options']['alter'] = TRUE;
+  $items['masquerade/unswitch']['options']['alter'] = TRUE;
+}
+
+/**
+ * Implements hook_translated_menu_link_alter().
+ *
+ * Dynamically add the CSRF protection token to the Masquerade menu items.
+ */
+function masquerade_translated_menu_link_alter(&$item, $map) {
+  if (isset($item['page_callback'])) {
+    if ($item['page_callback'] == 'masquerade_switch_user_page' && isset($map[2])) {
+      $item['localized_options']['query']['token'] = drupal_get_token('masquerade/switch/' . $map[2]);
+    }
+    elseif ($item['page_callback'] == 'masquerade_switch_back_page') {
+      $item['localized_options']['query']['token'] = drupal_get_token('masquerade/unswitch');
+    }
+  }
+}
+
+/**
+ * Implements hook_user_operations().
+ */
+function masquerade_user_operations() {
+  return array(
+    'masquerade' => array(
+      'label' => t('Masquerade as user'),
+      'callback' => 'masquerade_user_operations_masquerade',
+    ),
+  );
+}
+
+/**
+ * Callback for user operation.
+ */
+function masquerade_user_operations_masquerade(array $accounts) {
+  // Only process the first account since switching to multiple makes no sense.
+  if (($uid = current($accounts)) && masquerade_menu_access('switch', $uid)) {
+    masquerade_switch_user($uid);
+  }
+}
+
+/**
+ * Determine if the current user has permission to switch users.
+ *
+ * @param string $type
+ *   Either 'switch', 'unswitch', 'user', or 'autocomplete'.
+ *
+ * @param object $uid
+ *   An optional parameter indicating a specific uid to switch to.
+ *   Otherwise, return if the user can switch to any user account.
+ *
+ * @return
+ *   TRUE, if the user can perform the requested action, FALSE otherwise.
+ */
+
+function masquerade_menu_access($type, $uid = NULL) {
+  switch ($type) {
+    case 'unswitch':
+      return isset($_SESSION['masquerading']) || arg(2) == 'menu-customize' || arg(2) == 'menu';
+    case 'autocomplete':
+      return isset($_SESSION['masquerading']) || (user_access('masquerade as user') || user_access('masquerade as admin'));
+      break;
+    case 'user':
+      global $user;
+      return db_query("SELECT TRUE FROM {masquerade_users} WHERE uid_from = :uid_from", array(':uid_from' => $user->uid))->fetchField();
+      break;
+    case 'switch':
+      $switch_to_account = FALSE;
+      global $user;
+      if ($uid) {
+        if (!is_numeric($uid)) {
+          return FALSE;
+        }
+        $account = user_load($uid);
+        $switch_to_account = db_query("SELECT TRUE FROM {masquerade_users} WHERE uid_from = :uid_from AND uid_to = :uid_to", array(
+          ':uid_from' => $user->uid,
+          ':uid_to' => $account->uid
+        ))->fetchField();
+      }
+      return !isset($_SESSION['masquerading']) && (user_access('masquerade as user') || user_access('masquerade as admin') || $switch_to_account);
+      break;
+  }
+}
+
+/**
+ * Admin settings form.
+ */
+function masquerade_admin_settings() {
+  // create a list of roles; all selected roles are considered administrative.
+  $roles = user_roles();
+  $form['masquerade_admin_roles'] = array(
+    '#type' => 'checkboxes',
+    '#title' => t('Roles that are considered "administrators" for masquerading'),
+    '#options' => $roles,
+    '#default_value' => variable_get('masquerade_admin_roles', array()),
+  );
+
+  $test_name = _masquerade_user_load(variable_get('masquerade_test_user', ''));
+
+  $form['masquerade_test_user'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Menu <em>Quick Switch</em> user'),
+    '#autocomplete_path' => 'masquerade/autocomplete',
+    '#default_value' => isset($test_name->name) ? check_plain($test_name->name) : '',
+    '#description' => t('Enter the username of an account you wish to switch easily between via a menu item.'),
+    '#maxlength' => NULL,
+  );
+
+  $quick_switch = user_load_multiple(variable_get('masquerade_quick_switches', array()));
+  $quick_switch_users = array();
+  foreach ($quick_switch as $uid => $account) {
+    if ($uid == 0) {
+      $account->name = variable_get('anonymous', t('Anonymous'));
+    }
+    $quick_switch_users[] = $account->name;
+  }
+  $form['masquerade_quick_switches'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Masquerade Block <em>Quick Switch</em> users'),
+    '#autocomplete_path' => 'masquerade/autocomplete-users',
+    '#default_value' => drupal_implode_tags($quick_switch_users),
+    '#description' => t('Enter the usernames, separated by commas, of accounts to show as quick switch links in the Masquerade block.'),
+    '#maxlength' => NULL,
+  );
+
+  $form = system_settings_form($form);
+  $form['#validate'][] = 'masquerade_admin_settings_validate';
+  $form['#submit'][] = 'masquerade_admin_settings_submit';
+
+  return $form;
+}
+
+function masquerade_admin_settings_validate($form, &$form_state) {
+  if (!empty($form_state['values']['masquerade_test_user'])) {
+    $test_user = _masquerade_user_load($form_state['values']['masquerade_test_user']);
+    if (!$test_user) {
+      form_set_error('masquerade_test_user', t('%user does not exist. Please enter a valid username.', array('%user' => $form_state['values']['masquerade_test_user'])));
+    }
+  }
+  // Needs to rebuild menu in masquerade_admin_settings_submit().
+  $form_state['masquerade_rebuild_menu'] = (variable_get('masquerade_test_user', '') != $form_state['values']['masquerade_test_user']);
+
+  // A comma-separated list of users.
+  $masquerade_switches = drupal_explode_tags($form_state['values']['masquerade_quick_switches']);
+  // Change user names to user ID's for system_settings_form_submit() to save.
+  $masquerade_uids = array();
+  foreach ($masquerade_switches as $switch_user) {
+    $test_user = _masquerade_user_load($switch_user);
+    if (!$test_user) {
+      form_set_error('masquerade_quick_switches', t('%user does not exist. Please enter a valid username.', array('%user' => $switch_user)));
+    }
+    else {
+      $masquerade_uids[] = $test_user->uid;
+    }
+  }
+  $form_state['values']['masquerade_quick_switches'] = $masquerade_uids;
+}
+
+function masquerade_admin_settings_submit($form, &$form_state) {
+  // Rebuild the menu system so the menu "Quick Switch" user is updated.
+  if ($form_state['masquerade_rebuild_menu']) {
+    menu_rebuild();
+  }
+}
+
+/**
+ * Wrapper around user_load() to allow the loading of anonymous users.
+ *
+ * @param $username
+ *   The username of the user you wish to load (i.e. $user->name). To load the
+ *   anonymous user, pass the value of the 'anonymous' variable.
+ *
+ * @return
+ *   A fully-loaded $user object upon successful user load or FALSE if user
+ *   cannot be loaded.
+ */
+function _masquerade_user_load($username) {
+  $account = FALSE;
+  if (!empty($username)) {
+    $anon = variable_get('anonymous', t('Anonymous'));
+    $account = user_load_by_name(($username == $anon ? '' : $username));
+    if (isset($account->uid) && empty($account->uid)) {
+      // Anonymous user should have a name.
+      $account->name = $anon;
+    }
+  }
+  return $account;
+}
+
+/**
+ * Implements hook_user_logout().
+ */
+function masquerade_user_logout($account) {
+  if (!empty($account->masquerading)) {
+    global $user;
+    cache_clear_all($user->uid, 'cache_menu', TRUE);
+    $real_user = user_load($user->masquerading);
+    watchdog('masquerade', "User %user no longer masquerading as %masq_as.", array('%user' => $real_user->name, '%masq_as' => $user->name), WATCHDOG_INFO);
+
+    $query = db_delete('masquerade');
+    $query->condition('sid', session_id());
+    $query->condition('uid_as', $account->uid);
+    $query->execute();
+  }
+}
+
+/**
+ * Implements hook_user_view().
+ */
+function masquerade_user_view($account, $view_mode, $langcode) {
+  // check if user qualifies as admin
+  $roles = array_keys(array_filter(variable_get('masquerade_admin_roles', array())));
+  $perm = $account->uid == 1 || array_intersect(array_keys((array)$account->roles), $roles) ?
+    'masquerade as admin' :
+    'masquerade as user';
+
+  global $user;
+
+  if (user_access($perm) && empty($account->masquerading) && $user->uid != $account->uid) {
+    $account->content['masquerade'] = array(
+      '#markup' => l(t('Masquerade as !user', array('!user' => $account->name)),
+        'masquerade/switch/' . $account->uid,
+        array('query' => array(
+          'token' => drupal_get_token('masquerade/switch/' . $account->uid)),
+          'destination' => $_GET['q'],
+          'attributes' => array('class' => 'masquerade-switch'),
+        )),
+      '#weight' => 10,
+    );
+  }
+}
+
+/**
+ * Implements hook_form_FORM_ID_alter().
+ */
+function masquerade_form_user_profile_form_alter(&$form, &$form_state, $form_id) {
+  if ($form['#user_category'] != 'account') {
+    // Do not show this form for different categories.
+    return;
+  }
+  $form['masquerade'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Masquerade settings'),
+    '#access' => user_access('administer masquerade'),
+  );
+  $edit_user = $form['#user'];
+  $uids = db_query("SELECT uid_to FROM {masquerade_users} WHERE uid_from = :uid_from", array(':uid_from' => $edit_user->uid))
+    ->fetchCol();
+  $users = user_load_multiple($uids);
+  $masquerade_users = array();
+  foreach ($users as $uid => $account) {
+    if ($uid == 0) {
+      $masquerade_users[] = variable_get('anonymous', t('Anonymous'));
+    }
+    else {
+      $masquerade_users[] = $account->name;
+    }
+  }
+  $form['masquerade']['masquerade_users'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Enter the users this user is able to masquerade as'),
+    '#description' => t('Enter a comma separated list of user names that this user can masquerade as.'),
+    '#autocomplete_path' => 'masquerade/autocomplete-user',
+    '#default_value' => drupal_implode_tags($masquerade_users),
+    '#maxlength' => NULL,
+  );
+  $form['#validate'][] = 'masquerade_user_validate';
+  $form['#submit'][] = 'masquerade_user_submit';
+}
+
+/**
+ * Validates user account form.
+ */
+function masquerade_user_validate(&$form, $form_state) {
+  if (isset($form_state['values']['masquerade_users'])) {
+    $users = drupal_explode_tags($form_state['values']['masquerade_users']);
+    foreach ($users as $username) {
+      if (!_masquerade_user_load($username)) {
+        form_set_error('masquerade_users', t('%user is not a valid user name.', array('%user' => $username)));
+      }
+    }
+  }
+}
+
+/**
+ * Submit handler for masquerade users form element.
+ */
+function masquerade_user_submit(&$form, $form_state) {
+  global $_masquerade_old_session_id;
+  $_masquerade_old_session_id = session_id();
+}
+
+/**
+ * Implements hook_user_update().
+ */
+function masquerade_user_update(&$edit, $account, $category) {
+  global $_masquerade_old_session_id;
+  if ($category == 'account' && isset($edit['masquerade_users'])) {
+    $query = db_delete('masquerade_users');
+    $query->condition('uid_from', $account->uid);
+    $query->execute();
+    // Save users from settings form.
+    $users = drupal_explode_tags($edit['masquerade_users']);
+    $query = db_insert('masquerade_users')->fields(array('uid_from', 'uid_to'));
+    foreach ($users as $username) {
+      if ($to_user = _masquerade_user_load($username)) {
+        $query->values(array(
+          'uid_from' => $account->uid,
+          'uid_to' => $to_user->uid,
+        ));
+      }
+    }
+    $query->execute();
+    $edit['masquerade_users'] = NULL;
+
+    // Update user session...
+    // @TODO check other way of session API.
+    if (!empty($_masquerade_old_session_id)) {
+      $query = db_update('masquerade');
+      $query->fields(array(
+        'sid' => session_id(),
+      ));
+      $query->condition('sid', $_masquerade_old_session_id);
+      $query->execute();
+    }
+  }
+}
+
+/**
+ * Implements hook_user_delete().
+ */
+function masquerade_user_delete($account) {
+  // Cleanup tables.
+  $query = db_delete('masquerade_users');
+  $conditions = db_or();
+  $conditions->condition('uid_from', $account->uid);
+  $conditions->condition('uid_to', $account->uid);
+  $query->condition($conditions);
+  $query->execute();
+  // Cleanup variables.
+  $switches = variable_get('masquerade_quick_switches', array());
+  $switches_new = array_diff($switches, array($account->uid));
+  if ($switches != $switches_new) {
+    variable_set('masquerade_quick_switches', $switches_new);
+    // @TODO Implement block cache cleaning.
+    menu_rebuild();
+  }
+}
+
+/**
+ * Implements hook_block_info().
+ */
+function masquerade_block_info() {
+  $blocks = array();
+  $blocks['masquerade'] = array(
+    'info' => t('Masquerade'),
+    'cache' => DRUPAL_NO_CACHE,
+  );
+  return $blocks;
+}
+
+/**
+ * Implements hook_block_view().
+ */
+function masquerade_block_view($delta = '') {
+  $block = array();
+  switch ($delta) {
+    case 'masquerade':
+      if (isset($_SESSION['masquerading']) || (user_access('masquerade as user') || user_access('masquerade as admin'))) {
+        $block['subject'] = t('Masquerade');
+        $block['content'] = drupal_get_form('masquerade_block_1');
+      }
+      break;
+  }
+  return $block;
+}
+
+/**
+ * Masquerade block form.
+ */
+function masquerade_block_1() {
+  global $user;
+  $quick_switch_links = array();
+  $markup_value = '';
+  if (isset($_SESSION['masquerading'])) {
+    $quick_switch_links[] = l(t('Switch back'), 'masquerade/unswitch', array('query' => array('token' => drupal_get_token('masquerade/unswitch'))));
+    if ($user->uid > 0) {
+      $markup_value = t('You are masquerading as <a href="@user-url">%masq_as</a>.', array('@user-url' => url('user/' . $user->uid), '%masq_as' => $user->name));
+    }
+    else {
+      $markup_value = t('You are masquerading as %anonymous.', array('%anonymous' => variable_get('anonymous', t('Anonymous'))));
+    }
+  }
+  else {
+    $quick_switches = variable_get('masquerade_quick_switches', array());
+
+    // Add in user-specific switches, and prevent duplicates.
+    $user_switches = db_query("SELECT uid_to FROM {masquerade_users} WHERE uid_from = :uid_from", array(':uid_from' => $user->uid))->fetchCol();
+    $masquerade_switches = array_unique(array_merge($quick_switches, $user_switches));
+
+    foreach ($masquerade_switches as $switch_user) {
+      if (!isset($_SESSION['user']->uid) || $switch_user != $_SESSION['user']->uid) {
+        $account = user_load($switch_user);
+        if (isset($account->uid)) {
+          $switch_link = 'masquerade/switch/' . $account->uid;
+          if ($account->uid) {
+            $quick_switch_links[] = l($account->name, $switch_link, array('query' => array('token' => drupal_get_token($switch_link))));
+          }
+          if ($switch_user == 0) {
+            $account->name = variable_get('anonymous', t('Anonymous'));
+            $quick_switch_links[] = l($account->name, $switch_link, array('query' => array('token' => drupal_get_token($switch_link))));
+          }
+        }
+      }
+    }
+
+    if (masquerade_menu_access('autocomplete')) {
+      $markup_value .= t('Enter the username to masquerade as.');
+      $form['masquerade_user_field'] = array(
+        '#prefix' => '<div class="container-inline">',
+        '#type' => 'textfield',
+        '#size' => '18',
+        '#default_value' => '',
+        '#autocomplete_path' => 'masquerade/autocomplete',
+        '#required' => TRUE,
+      );
+      $form['submit'] = array(
+        '#type' => 'submit',
+        '#value' => t('Go'),
+        '#suffix' => '</div>',
+      );
+    }
+
+  }
+  if ($quick_switch_links) {
+    $markup_value .= '<div id="quick_switch_links">' . t('Quick switches:') . theme('item_list', array('items' => $quick_switch_links)) . '</div>';
+  }
+  $form['masquerade_desc'] = array(
+    '#prefix' => '<div class="form-item"><div class="description">',
+    '#markup' => $markup_value,
+    '#suffix' => '</div></div>',
+  );
+  return $form;
+}
+
+/**
+ * Masquerade block form validation.
+ */
+function masquerade_block_1_validate($form, &$form_state) {
+  global $user;
+  //unset($form);
+  $name = $form_state['values']['masquerade_user_field'];
+  if (isset($_SESSION['masquerading'])) {
+    form_set_error('masquerade_user_field', t('You are already masquerading. Please <a href="@unswitch">switch back</a> to your account to masquerade as another user.', array('@unswitch' => url('masquerade/unswitch', array('query' => array('token' => drupal_get_token('masquerade/unswitch')))))));
+  }
+  if ($name != variable_get('anonymous', t('Anonymous')) && module_exists('alt_login')) {
+    $alt_login = db_query("SELECT u.name FROM {users} u INNER JOIN {alt_login} al ON u.uid = al.uid WHERE al.alt_login = :alt_login", array(
+      ':alt_login' => $name
+    ))->fetchObject();
+    if ($alt_login->name) {
+      $name = $alt_login->name;
+    }
+  }
+  $masq_user = _masquerade_user_load($name);
+  if (!$masq_user) {
+    form_set_error('masquerade_user_field', t('User %masq_as does not exist. Please enter a valid username.', array('%masq_as' => $form_state['values']['masquerade_user_field'])));
+  }
+  elseif ($masq_user->uid == $user->uid) {
+    form_set_error('masquerade_user_field', t('You cannot masquerade as yourself. Please choose a different user to masquerade as.'));
+  }
+  elseif (variable_get('maintenance_mode', 0) && !user_access('administer site configuration', $masq_user)) {
+    form_set_error('masquerade_user_field', t('It is not possible to masquerade in off-line mode as !user does not have the %config-perm permission. Please <a href="@site-maintenance">set the site status</a> to "online" to masquerade as !user.', array('!user' => theme('username', array('account' => $masq_user)), '%config-perm' => 'administer site configuration', '@site-maintenance' => url('admin/settings/site-maintenance'))));
+  }
+  else {
+    $form_state['values']['masquerade_user_field'] = $name;
+  }
+}
+
+/**
+ * Masquerade block form submission.
+ */
+function masquerade_block_1_submit($form, &$form_state) {
+  //unset($form);
+  $masq_user = _masquerade_user_load($form_state['values']['masquerade_user_field']);
+  if (!masquerade_switch_user($masq_user->uid)) {
+    drupal_access_denied();
+  }
+  else {
+    drupal_goto($_SERVER['HTTP_REFERER']);
+  }
+}
+
+/**
+ * Returns JS array for Masquerade autocomplete fields.
+ */
+function masquerade_autocomplete($string) {
+  $matches = array();
+  // Anonymous user goes first to be visible for user.
+  $anonymous = variable_get('anonymous', t('Anonymous'));
+  if (stripos($anonymous, $string) === 0) {
+    $matches[$anonymous] = $anonymous;
+  }
+  // Other suggestions.
+  $result = db_query_range("SELECT name FROM {users} WHERE LOWER(name) LIKE LOWER(:string)", 0, 10, array(
+    ':string' => $string . '%',
+  ));
+  foreach ($result as $user) {
+    $matches[$user->name] = check_plain($user->name);
+  }
+  if (module_exists('devel')) {
+    $GLOBALS['devel_shutdown'] = FALSE;
+  }
+  drupal_json_output($matches);
+}
+
+/**
+ * Returns JS array for Masquerade autocomplete fields.
+ *
+ * Supports multiple entries separated by a comma.
+ *
+ * @param $string
+ *   The string of autocmplete value submitted by the user.
+ * @param $add_anonymous
+ *   Flag to include Anonymous user into result.
+ */
+function masquerade_autocomplete_multiple($string, $add_anonymous = TRUE) {
+  $matches = array();
+  // The user enters a comma-separated list of users. We only autocomplete the last user.
+  $users_typed = drupal_explode_tags($string);
+  // Fetch last string.
+  $last_string = drupal_strtolower(array_pop($users_typed));
+  if ($last_string) {
+    $prefix = count($users_typed) ? implode(', ', $users_typed) . ', ' : '';
+    if ($add_anonymous) {
+      // Anonymous user goes first to be visible for user.
+      $anonymous = variable_get('anonymous', t('Anonymous'));
+      if (stripos($anonymous, $last_string) === 0) {
+        $matches[$prefix . $anonymous] = $anonymous;
+      }
+    }
+    // Other suggestions.
+    $result = db_query_range("SELECT name FROM {users} WHERE LOWER(name) LIKE :string", 0, 10, array(
+      ':string' => $last_string . '%',
+    ));
+    foreach ($result as $user) {
+      $matches[$prefix . $user->name] = check_plain($user->name);
+    }
+
+    // Remove existing tags.
+    $matches = array_diff($matches, $users_typed);
+
+    // @todo Check compatibility for D7.
+    if (module_exists('alt_login')) {
+      $result = db_query_range("SELECT u.alt_login AS alt_login FROM {alt_login} u WHERE LOWER(u.alt_login) LIKE LOWER(:string)", 0, 10, array(
+        ':string' => $last_string . '%',
+      ));
+      foreach ($result as $user) {
+        $matches[$user->alt_login] = check_plain($user->alt_login);
+      }
+    }
+  }
+  if (module_exists('devel')) {
+    $GLOBALS['devel_shutdown'] = FALSE;
+  }
+  drupal_json_output($matches);
+}
+
+/**
+ * Page callback to switch users.
+ */
+function masquerade_switch_user_page($uid) {
+  if (isset($_GET['token']) && drupal_valid_token($_GET['token'], 'masquerade/switch/' . $uid) && masquerade_switch_user($uid)) {
+    drupal_goto($_SERVER['HTTP_REFERER']);
+  }
+  else {
+    drupal_access_denied();
+  }
+}
+
+/**
+ * Allows a user with the right permissions to become the selected user.
+ *
+ * @param $uid
+ *   The user ID to switch to.
+ *
+ * @return
+ *   TRUE if the user was sucessfully switched, or FALSE if there was an error.
+ */
+function masquerade_switch_user($uid) {
+  global $user;
+  if (!is_numeric($uid)) {
+    drupal_set_message(t('A user id was not correctly passed to the switching function.'));
+    watchdog('masquerade', 'The user id provided to switch users was not numeric.', NULL, WATCHDOG_ERROR);
+    return drupal_goto($_SERVER['HTTP_REFERER']);
+  }
+
+  $new_user = user_load($uid);
+
+  $roles = array_keys(array_filter(variable_get('masquerade_admin_roles', array())));
+  $perm = $uid == 1 || array_intersect(array_keys($new_user->roles), $roles) ?
+    'masquerade as admin' :
+    'masquerade as user';
+
+  // Check to see if we need admin permission.
+  $results = db_query_range('SELECT 1 FROM {masquerade_users} WHERE uid_from = :uid_from AND uid_to = :uid_to', 0, 1, array(
+    ':uid_from' => $user->uid,
+    ':uid_to' => $new_user->uid,
+  ));
+  if (!user_access($perm) && !isset($_SESSION['masquerading']) && !$results->fetchField()) {
+    watchdog('masquerade', 'This user requires administrative permissions to switch to the user %user.', array('%user' => $new_user->name), WATCHDOG_ERROR);
+    return FALSE;
+  }
+
+  if ($user->uid == $uid || isset($user->masquerading)) {
+    watchdog('masquerade', 'This user is already %user.', array('%user' => $new_user->name), WATCHDOG_ERROR);
+    return FALSE;
+  }
+
+  if (variable_get('maintenance_mode', 0) && !user_access('administer site configuration', $new_user)) {
+    drupal_set_message(t('It is not possible to masquerade in off-line mode as %user does not have the %config-perm permission. Please <a href="@site-maintenance">set the site status</a> to "online" to masquerade as %user.', array('%user' => $new_user->name, '%config-perm' => 'administer site configuration', '@site-maintenance' => url('admin/settings/site-maintenance'))));
+    return FALSE;
+  }
+
+  $query = db_insert('masquerade');
+  $query->fields(array(
+    'uid_from' => $user->uid,
+    'uid_as' => $new_user->uid,
+    'sid' => session_id(),
+  ));
+  $query->execute();
+  // switch user
+
+  watchdog('masquerade', 'User %user now masquerading as %masq_as.', array('%user' => $user->name, '%masq_as' => $new_user->name ? $new_user->name : variable_get('anonymous', t('Anonymous'))), WATCHDOG_INFO);
+  drupal_set_message(t('You are now masquerading as !masq_as.', array('!masq_as' => theme('username', array('account' => $new_user)))));
+  $user->masquerading = $new_user->uid;
+  $user = $new_user;
+  return TRUE;
+}
+
+/**
+ * Allows a user who is currently masquerading to become a new user.
+ */
+function masquerade_switch_back_page() {
+  if (isset($_GET['token']) && drupal_valid_token($_GET['token'], 'masquerade/unswitch')) {
+    global $user;
+    $olduser = $user;
+    masquerade_switch_back();
+    drupal_set_message(t('You are no longer masquerading as !masq_as and are now logged in as !user.', array('!user' => theme('username', array('account' => $user)), '!masq_as' => theme('username', array('account' => $olduser)))));
+    drupal_goto($_SERVER['HTTP_REFERER']);
+  }
+  else {
+    drupal_access_denied();
+  }
+}
+
+/**
+ * Function for a masquerading user to switch back to the previous user.
+ */
+function masquerade_switch_back() {
+  // switch user
+  global $user;
+  cache_clear_all($user->uid, 'cache_menu', TRUE);
+  $uid = db_query("SELECT m.uid_from FROM {masquerade} m WHERE m.sid = :sid AND m.uid_as = :uid_as ", array(
+    ':sid' => session_id(),
+    ':uid_as' => $user->uid,
+  ))->fetchField();
+  // erase record
+  $conditions = db_or();
+  $conditions->condition('sid', session_id());
+  $conditions->condition('uid_as', $user->uid);
+  $query = db_delete('masquerade');
+  $query->condition($conditions);
+  $query->execute();
+  $oldname = ($user->uid == 0 ? variable_get('anonymous', t('Anonymous')) : $user->name);
+  $user = user_load($uid);
+  watchdog('masquerade', 'User %user no longer masquerading as %masq_as.', array('%user' => $user->name, '%masq_as' => $oldname), WATCHDOG_INFO);
+}
diff --git a/sites/all/modules/masquerade/masquerade.test b/sites/all/modules/masquerade/masquerade.test
new file mode 100644
index 0000000000000000000000000000000000000000..ac01d0853cda23588f3b88437d8af53663bffcdc
--- /dev/null
+++ b/sites/all/modules/masquerade/masquerade.test
@@ -0,0 +1,47 @@
+<?php
+
+/**
+ * @file
+ * masquerade.test
+ *
+ * Test the form permissions and switch ability of the Masquarade module.
+ */
+
+class MasqueradeTestCase extends DrupalWebTestCase {
+  public static function getInfo() {
+    return array(
+      'name' => 'Masquerade tests',
+      'description' => 'Tests user switching with the Masquerade module.',
+      'group' => 'Masquerade',
+    );
+  }
+
+  public function setUp() {
+    parent::setUp('masquerade');
+  }
+
+  public function testMasquerade() {
+    $admin_perms = array(
+      'administer site configuration',
+      'administer permissions',
+      'masquerade as user',
+    );
+    $admin = $this->drupalCreateUser($admin_perms);
+    $user = $this->drupalCreateUser();
+
+    $this->drupalLogin($admin);
+
+    //test admin form
+    $this->drupalGet('admin/config/development/masquerade');
+
+    //test switch
+    $this->drupalGet('masquerade/switch/' . $user->uid);
+    $this->assertText('Now masquerading as ' . $user->name);
+
+    //test unswitch
+    $this->drupalGet('masquerade/unswitch');
+    $this->assertText('No longer masquerading as ' . $user->name);
+  }
+
+}
+
diff --git a/sites/all/modules/token/tests/token_test.info b/sites/all/modules/token/tests/token_test.info
index 28ebbeb3a422abcea24a8eab162ab9435b7b022b..a344aa29bd899a1049cb917cd3805f1dea474581 100644
--- a/sites/all/modules/token/tests/token_test.info
+++ b/sites/all/modules/token/tests/token_test.info
@@ -5,9 +5,9 @@ core = 7.x
 files[] = token_test.module
 hidden = TRUE
 
-; Information added by drupal.org packaging script on 2012-05-15
-version = "7.x-1.1"
+; Information added by drupal.org packaging script on 2012-09-24
+version = "7.x-1.4"
 core = "7.x"
 project = "token"
-datestamp = "1337115392"
+datestamp = "1348497279"
 
diff --git a/sites/all/modules/token/token.css b/sites/all/modules/token/token.css
index 5c3b3ba3c2d2fb7f8a1aa54b1af55684f57907bc..5432f0fc3f3e80e98b819ec18208359e6f9692b7 100644
--- a/sites/all/modules/token/token.css
+++ b/sites/all/modules/token/token.css
@@ -4,6 +4,10 @@
   margin-left: 19px;
 }
 
+.ui-dialog-content .token-tree {
+  margin-left: 0;
+}
+
 .token-tree td, .token-tree th {
   padding-top: 0;
   padding-bottom: 0;
diff --git a/sites/all/modules/token/token.info b/sites/all/modules/token/token.info
index f111902a07b4c0a171971b22e4fbccd9d9692fdc..8d14814aca2c3bd773606c2d749be8d076bd8a2f 100644
--- a/sites/all/modules/token/token.info
+++ b/sites/all/modules/token/token.info
@@ -7,9 +7,9 @@ files[] = token.tokens.inc
 files[] = token.pages.inc
 files[] = token.test
 
-; Information added by drupal.org packaging script on 2012-05-15
-version = "7.x-1.1"
+; Information added by drupal.org packaging script on 2012-09-24
+version = "7.x-1.4"
 core = "7.x"
 project = "token"
-datestamp = "1337115392"
+datestamp = "1348497279"
 
diff --git a/sites/all/modules/token/token.js b/sites/all/modules/token/token.js
index 59715f473cb152c28836ad9ad5534e8753cb95e0..88a75c1017e2e29cc8c0da42d73a989e43890f29 100644
--- a/sites/all/modules/token/token.js
+++ b/sites/all/modules/token/token.js
@@ -9,6 +9,32 @@ Drupal.behaviors.tokenTree = {
   }
 };
 
+Drupal.behaviors.tokenDialog = {
+  attach: function (context, settings) {
+    $('a.token-dialog', context).once('token-dialog').click(function() {
+      var url = $(this).attr('href');
+      var dialog = $('<div style="display: none" class="loading">' + Drupal.t('Loading token browser...') + '</div>').appendTo('body');
+      dialog.dialog({
+        title: $(this).attr('title') || Drupal.t('Available tokens'),
+        width: 700,
+        close: function(event, ui) {
+          dialog.remove();
+        }
+      });
+      // Load the token tree using AJAX.
+      dialog.load(
+        url,
+        {},
+        function (responseText, textStatus, XMLHttpRequest) {
+          dialog.removeClass('loading');
+        }
+      );
+      // Prevent browser from following the link.
+      return false;
+    });
+  }
+}
+
 Drupal.behaviors.tokenInsert = {
   attach: function (context, settings) {
     // Keep track of which textfield was last selected/focused.
diff --git a/sites/all/modules/token/token.module b/sites/all/modules/token/token.module
index 56e3cebb4a1d93b4bc155686da4cb685e88266b0..7bba8a7427b71731961bbf3dd1a151af76781698 100644
--- a/sites/all/modules/token/token.module
+++ b/sites/all/modules/token/token.module
@@ -11,7 +11,7 @@
 define('TOKEN_MAX_DEPTH', 9);
 
 /**
- * Impelements hook_help().
+ * Implements hook_help().
  */
 function token_help($path, $arg) {
   if ($path == 'admin/help#token') {
@@ -73,6 +73,13 @@ function token_menu() {
     'file' => 'token.pages.inc',
   );*/
 
+  $items['token/tree'] = array(
+    'page callback' => 'token_page_output_tree',
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+    'file' => 'token.pages.inc',
+  );
+
   // Devel token pages.
   if (module_exists('devel')) {
     $items['node/%node/devel/token'] = array(
@@ -146,16 +153,37 @@ function token_type_load($token_type) {
  * Implements hook_theme().
  */
 function token_theme() {
-  return array(
-    'tree_table' => array(
-      'variables' => array('header' => array(), 'rows' => array(), 'attributes' => array(), 'empty' => '', 'caption' => ''),
-      'file' => 'token.pages.inc',
+  $info['tree_table'] = array(
+    'variables' => array(
+      'header' => array(),
+      'rows' => array(),
+      'attributes' => array(),
+      'empty' => '',
+      'caption' => '',
     ),
-    'token_tree' => array(
-      'variables' => array('token_types' => array(), 'global_types' => TRUE, 'click_insert' => TRUE, 'show_restricted' => FALSE, 'recursion_limit' => 3),
-      'file' => 'token.pages.inc',
+    'file' => 'token.pages.inc',
+  );
+  $info['token_tree'] = array(
+    'variables' => array(
+      'token_types' => array(),
+      'global_types' => TRUE,
+      'click_insert' => TRUE,
+      'show_restricted' => FALSE,
+      'recursion_limit' => 3,
+      'dialog' => FALSE,
+    ),
+    'file' => 'token.pages.inc',
+  );
+  $info['token_tree_link'] = array(
+    'variables' => array(
+      'text' => NULL,
+      'options' => array(),
+      'dialog' => TRUE,
     ),
+    'file' => 'token.pages.inc',
   );
+
+  return $info;
 }
 
 /**
@@ -175,6 +203,17 @@ function token_library() {
     ),
   );
 
+  $libraries['dialog'] = array(
+    'title' => 'Token dialog',
+    'version' => '1.0',
+    'js' => array(
+      drupal_get_path('module', 'token') . '/token.js' => array(),
+    ),
+    'dependencies' => array(
+      array('system', 'ui.dialog'),
+    ),
+  );
+
   return $libraries;
 }
 
@@ -274,14 +313,17 @@ function token_field_display_alter(&$display, $context) {
     // use the default token formatter.
     if (empty($view_mode_settings[$context['view_mode']]['custom_settings'])) {
       $field_type_info = field_info_field_types($context['field']['type']);
-      if (!empty($field_type_info['default_token_formatter'])) {
-        $display['type'] = $field_type_info['default_token_formatter'];
 
-        $formatter_info = field_info_formatter_types($display['type']);
-        $display['settings'] = isset($formatter_info['settings']) ? $formatter_info['settings'] : array();
-        $display['settings']['label'] = 'hidden';
-        $display['module'] = $formatter_info['module'];
-      }
+      // If the field has specified a specific formatter to be used by default
+      // with tokens, use that, otherwise use the default formatter.
+      $formatter = !empty($field_type_info['default_token_formatter']) ? $field_type_info['default_token_formatter'] : $field_type_info['default_formatter'];
+
+      // Now that we have a formatter, fill in all the settings.
+      $display['type'] = $formatter;
+      $formatter_info = field_info_formatter_types($formatter);
+      $display['settings'] = isset($formatter_info['settings']) ? $formatter_info['settings'] : array();
+      $display['settings']['label'] = 'hidden';
+      $display['module'] = $formatter_info['module'];
     }
   }
 }
@@ -400,10 +442,12 @@ function token_entity_info_alter(&$info) {
  * Adds missing token support for core modules.
  */
 function token_module_implements_alter(&$implementations, $hook) {
-  if ($hook == 'tokens' || $hook == 'token_info') {
+  module_load_include('inc', 'token', 'token.tokens');
+
+  if ($hook == 'tokens' || $hook == 'token_info' || $hook == 'token_info_alter' || $hook == 'tokens_alter') {
     foreach (_token_core_supported_modules() as $module) {
-      if (module_exists($module)) {
-        $implementations[$module] = TRUE;
+      if (module_exists($module) && function_exists($module . '_' . $hook)) {
+        $implementations[$module] = FALSE;
       }
     }
     // Move token.module to get included first since it is responsible for
@@ -674,7 +718,7 @@ function token_element_validate(&$element, &$form_state) {
   }
 
   // Check if the field defines specific token types.
-  if (!empty($element['#token_types'])) {
+  if (isset($element['#token_types'])) {
     $invalid_tokens = token_get_invalid_tokens_by_context($tokens, $element['#token_types']);
     if ($invalid_tokens) {
       form_error($element, t('The %element-title is using the following invalid tokens: @invalid-tokens.', array('%element-title' => $title, '@invalid-tokens' => implode(', ', $invalid_tokens))));
diff --git a/sites/all/modules/token/token.pages.inc b/sites/all/modules/token/token.pages.inc
index d2f06e96e084588bd9a5ce6b24139222a16c0f67..905943ca074a3392a8e4a5c1de9d5f79da80d821 100644
--- a/sites/all/modules/token/token.pages.inc
+++ b/sites/all/modules/token/token.pages.inc
@@ -5,6 +5,63 @@
  * User page callbacks for the token module.
  */
 
+/**
+ * Theme a link to a token tree either as a regular link or a dialog.
+ */
+function theme_token_tree_link($variables) {
+  if (empty($variables['text'])) {
+    $variables['text'] = t('Browse available tokens.');
+  }
+
+  if (!empty($variables['dialog'])) {
+    drupal_add_library('token', 'dialog');
+    $variables['options']['attributes']['class'][] = 'token-dialog';
+  }
+
+  $info = token_theme();
+  $variables['options']['query']['options'] = array_intersect_key($variables, $info['token_tree']['variables']);
+
+  // We should never pass the dialog option to theme_token_tree(). It is only
+  // used for this function.
+  unset($variables['options']['query']['options']['dialog']);
+
+  // Add a security token so that the tree page should only work when used
+  // when the dialog link is output with theme('token_tree_link').
+  $variables['options']['query']['token'] = drupal_get_token('token-tree:' . serialize($variables['options']['query']['options']));
+
+  // Because PHP converts query strings with arrays into a different syntax on
+  // the next request, the options have to be encoded with JSON in the query
+  // string so that we can reliably decode it for token comparison.
+  $variables['options']['query']['options'] = drupal_json_encode($variables['options']['query']['options']);
+
+  // Set the token tree to open in a separate window.
+  $variables['options']['attributes'] + array('target' => '_blank');
+
+  return l($variables['text'], 'token/tree', $variables['options']);
+}
+
+/**
+ * Page callback to output a token tree as an empty page.
+ */
+function token_page_output_tree() {
+  $options = isset($_GET['options']) ? drupal_json_decode($_GET['options']) : array();
+
+  // Check the token against the serialized options to prevent random access to
+  // the token browser page.
+  if (!isset($_GET['token']) || !drupal_valid_token($_GET['token'], 'token-tree:' . serialize($options))) {
+    return MENU_ACCESS_DENIED;
+  }
+
+  // Force the dialog option to be false so we're not creating a dialog within
+  // a dialog.
+  $options['dialog'] = FALSE;
+
+  $output = theme('token_tree', $options);
+  print '<html><head><title></title>' . drupal_get_css() . drupal_get_js() . '</head>';
+  print '<body class="token-tree">' . $output . '</body></html>';
+  drupal_exit();
+}
+
 /**
  * Theme a tree table.
  *
@@ -32,6 +89,10 @@ function theme_tree_table($variables) {
  * @ingroup themeable
  */
 function theme_token_tree($variables) {
+  if (!empty($variables['dialog'])) {
+    return theme_token_tree_link($variables);
+  }
+
   $token_types = $variables['token_types'];
   $info = token_get_info();
 
diff --git a/sites/all/modules/token/token.test b/sites/all/modules/token/token.test
index 9482ecf1fa0421b6b14dea2a6acdbe17fe433d09..b7e9582425595cee521d51ff5593161fd542817e 100644
--- a/sites/all/modules/token/token.test
+++ b/sites/all/modules/token/token.test
@@ -1069,11 +1069,17 @@ class TokenBlockTestCase extends TokenTestHelper {
   }
 
   public function testBlockTitleTokens() {
-    $edit['title'] = '[current-page:title] block title';
+    $edit['title'] = '[user:name]';
     $edit['info'] = 'Test token title block';
     $edit['body[value]'] = 'This is the test token title block.';
-    $edit['regions[bartik]'] = 'sidebar_first';
     $this->drupalPost('admin/structure/block/add', $edit, 'Save block');
+    // Ensure token validation is working on the block.
+    $this->assertText('The Block title is using the following invalid tokens: [user:name].');
+
+    // Create the block for real now with a valid title.
+    $edit['title'] = '[current-page:title] block title';
+    $edit['regions[bartik]'] = 'sidebar_first';
+    $this->drupalPost(NULL, $edit, 'Save block');
 
     $this->drupalGet('node');
     $this->assertText('Welcome to ' . variable_get('site_name', 'Drupal') . ' block title');
diff --git a/sites/all/modules/unl/features/unl_news/unl_news.info b/sites/all/modules/unl/features/unl_news/unl_news.info
index b11e59266d359e34bc0700424f9774c771e7a68f..09d5f66d567d90236960d1912bcba8bbcdbe4950 100644
--- a/sites/all/modules/unl/features/unl_news/unl_news.info
+++ b/sites/all/modules/unl/features/unl_news/unl_news.info
@@ -14,4 +14,4 @@ name = "UNL News"
 package = "Features"
 php = "5.2.4"
 project = "unl_news"
-version = "7.x-1.0-beta6"
+version = "7.x-7.6"
diff --git a/sites/all/modules/unl/includes/common.php b/sites/all/modules/unl/includes/common.php
index 088a0447abcfe7ba03270adfdc37ac4a60da0efd..799549df25d495ca8c256b48b398f59890ff8604 100644
--- a/sites/all/modules/unl/includes/common.php
+++ b/sites/all/modules/unl/includes/common.php
@@ -18,7 +18,10 @@ function unl_load_zend_framework() {
  * Custom function to get the db prefix of the 'main' site.
  */
 function unl_get_shared_db_prefix() {
-  require 'sites/default/settings.php';
+  if (file_exists(DRUPAL_ROOT . '/sites/all/settings.php')) {
+    require DRUPAL_ROOT . '/sites/all/settings.php';
+  }
+  require DRUPAL_ROOT . '/sites/default/settings.php';
   $shared_prefix = $databases['default']['default']['prefix'];
 
   return $shared_prefix;
diff --git a/sites/all/modules/unl/unl.module b/sites/all/modules/unl/unl.module
index 167b28f4235ad3fafc1331f8fa817304fa44e322..25ad04d2ce49671dcbbb03b26fcafec14906ada5 100644
--- a/sites/all/modules/unl/unl.module
+++ b/sites/all/modules/unl/unl.module
@@ -294,6 +294,14 @@ function unl_preprocess_page(&$vars) {
 function unl_menu() {
   $items = array();
 
+  // Output html snippets for regions.
+   $items['sharedcode/%'] = array(
+    'title' => 'sharedcode files',
+    'access arguments' => array('access content'),
+    'page callback' => 'unl_sharedcode',
+    'page arguments' => array(1),
+  );
+
   // Returns confirmation 'user_loggedin' if user is logged into the system
    $items['user/unl/whoami'] = array(
     'title' => 'UNL Whoami Tool',
@@ -500,6 +508,48 @@ function unl_menu_alter(&$items) {
   $items['admin/modules/uninstall']['access callback'] = 'unl_user_is_administrator';
 }
 
+/**
+ * Custom function that creates html snippet output at sharedcode/% paths to
+ *   mimic files that once existed on static UNL templated sites.
+ */
+function unl_sharedcode($file = null) {
+  foreach (system_region_list($GLOBALS['theme']) as $region_key => $region_name) {
+    if ($blocks = block_get_blocks_by_region($region_key)) {
+      $regions[$region_key] = $blocks;
+    }
+    else {
+      $regions[$region_key] = array();
+    }
+  }
+
+  switch ($file) {
+    case 'footer.html':
+    case 'footer_content':
+      $region = 'footercontent';
+      break;
+    case 'footerContactInfo.html':
+    case 'contact_us':
+      $region = 'contactinfo';
+      break;
+    case 'navigation.html':
+    case 'navigation_links':
+      $region = 'navlinks';
+      break;
+    case 'relatedLinks.html':
+    case 'related_links':
+      $region = 'leftcollinks';
+      break;
+    default:
+      drupal_not_found();
+      return;
+  }
+
+  drupal_add_http_header('Content-Type', 'text/html; charset=utf-8');
+  drupal_add_http_header('Content-Language', 'en');
+  print render($regions[$region]);
+  exit;
+}
+
 /**
  * Implementation of hook_file_validate().
  * Fires when files are uploaded after Drupal Core sanitization but before saving to file system or db
@@ -1422,7 +1472,9 @@ function unl_query_alter(QueryAlterableInterface $query) {
     if ($usersTableAlias) {
       // Get rid of pagination.
       // @TODO: Even though users w/o role are not returned, pagination for them does. Fix this rather than using limit.
-      $query->limit(10000);
+      if ($query->hasTag('pager')) {
+        $query->limit(10000);
+      }
       // Join it with the users_roles tables so that only users with roles are seleceted.
       $query->join('users_roles', 'unl_distinct_prefix_r', $usersTableAlias . '.uid = unl_distinct_prefix_r.uid');
       if (!unl_user_is_administrator()) {
diff --git a/sites/all/modules/unl/unl_cas/unl_cas.info b/sites/all/modules/unl/unl_cas/unl_cas.info
index 65389813aa04f2c76c948424206750ded16cee32..5288b3ebb349df3698a6a77e1fc46e5b3f6821bf 100644
--- a/sites/all/modules/unl/unl_cas/unl_cas.info
+++ b/sites/all/modules/unl/unl_cas/unl_cas.info
@@ -3,7 +3,7 @@ description = Enables CAS authentication/registration of users through login.unl
 package = UNL
 dependencies[] = unl
 core = 7.x
-version = "7.x-1.0-beta1"
+version = "7.x-7.6"
 configure = admin/config/people/unl_cas
 
 files[] = unl_cas.module
diff --git a/sites/all/modules/unl/unl_varnish/unl_varnish.info b/sites/all/modules/unl/unl_varnish/unl_varnish.info
index 1e44ffb0a0ae385217596d83c478dbdae0960ab8..40fcd30085f380a60d210d28c03d59906a77069c 100644
--- a/sites/all/modules/unl/unl_varnish/unl_varnish.info
+++ b/sites/all/modules/unl/unl_varnish/unl_varnish.info
@@ -4,6 +4,6 @@ description = Extends the Varnish module to do a few extra tasks.
 package = UNL
 dependencies[] = varnish
 core = 7.x
-version = "7.x-1.0-20110706"
+version = "7.x-7.6"
 
 files[] = unl_varnish.module
diff --git a/sites/all/modules/unl/unl_varnish/unl_varnish.module b/sites/all/modules/unl/unl_varnish/unl_varnish.module
index 2ba80c4337e35a39aa80634e1c2facede0a3b4df..2f2f3920ac694d9e881eab11741df5f01ceb5c77 100644
--- a/sites/all/modules/unl/unl_varnish/unl_varnish.module
+++ b/sites/all/modules/unl/unl_varnish/unl_varnish.module
@@ -1,40 +1,64 @@
 <?php
 
 /**
+ * Implements hook_form_FORM_ID_alter().
  * Modifies the system performance settings form to add a button to purge the varnish cache.
  */
 function unl_varnish_form_system_performance_settings_alter(&$form, &$form_state, $form_id) {
-  $form['clear_cache']['#weight'] = -2;
+  $form['clear_cache']['#weight'] = -3;
+
+  // Add purge varnish button for single site
   $form['purge_varnish'] = array(
     '#type' => 'fieldset',
-    '#title' => 'Purge Varnish',
-    '#access' => user_access('administer varnish'),
+    '#title' => t('Purge varnish'),
+    '#access' => user_access('administer site configuration'),
+    '#weight' => -2,
+    'purge' => array(
+      '#type' => 'submit',
+      '#value' => t('Purge varnish cache'),
+      '#submit' => array('unl_varnish_purge_submit'),
+    ),
+  );
+
+  // Add system-wide varnish purge for the default site only
+  $form['purge_varnish_all_sites'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Purge varnish on all sites'),
+    '#access' => user_access('administer varnish') && conf_path() == 'sites/default',
     '#weight' => -1,
-  
+
     'varnish_path' => array(
       '#type' => 'radios',
       '#required' => TRUE,
       '#options' => array(
-        '^/wdn' => 'Just WDN template files (/wdn)',
-        '^/'	=> 'Everything',
+        '^/wdn' => 'Only WDN template files (/wdn)',
+        '^/' => 'Everything',
       ),
       '#default_value' => '^/wdn',
     ),
-    
+
     'purge' => array(
       '#type' => 'submit',
-      '#value' => 'Purge varnish cache',
-      '#submit' => array('unl_varnish_purge_submit'),
+      '#value' => t('Purge varnish system-wide'),
+      '#submit' => array('unl_varnish_purge_all_sites_submit'),
     ),
   );
-  
+
   return $form;
 }
 
 /**
- * Uses the varnish module to purge varnish at the requested path.
+ * Submit callback: Uses the varnish module to purge varnish.
  */
 function unl_varnish_purge_submit($form, &$form_state) {
+  varnish_purge_all_pages();
+  drupal_set_message(t('Varnish purged.'));
+}
+
+/**
+ * Submit callback: Uses the varnish module to purge varnish at the requested path.
+ */
+function unl_varnish_purge_all_sites_submit($form, &$form_state) {
   $path = $form_state['values']['varnish_path'];
   _varnish_terminal_run("purge.url $path");
   drupal_set_message("Varnish purged paths matching $path.", 'status');
@@ -60,3 +84,13 @@ function unl_varnish_file_update($file) {
 function unl_varnish_node_update($node) {
   varnish_purge_all_pages();
 }
+
+/**
+ * Implements hook_form_alter().
+ */
+function unl_varnish_form_alter(&$form, $form_state, $form_id) {
+  // Purges varnish when a Draggable Views form is saved.
+  if (array_key_exists('draggableviews', $form)) {
+    $form['#submit'][] = 'varnish_purge_all_pages';
+  }
+}
diff --git a/sites/all/modules/wysiwyg/CHANGELOG.txt b/sites/all/modules/wysiwyg/CHANGELOG.txt
index 2b79f35bb1408c23a5381e044f13b860285e0c48..2072654e95fedb56a35d1436945749fd373fe960 100644
--- a/sites/all/modules/wysiwyg/CHANGELOG.txt
+++ b/sites/all/modules/wysiwyg/CHANGELOG.txt
@@ -1,6 +1,25 @@
 
 Wysiwyg 7.x-2.x, xxxx-xx-xx
 ---------------------------
+#1388224 by ksenzee, sun, TwoD: Fixed editors detaching on form submissions.
+#682160 by n_vashenko, TwoD: Fixed lists plugin support for TinyMCE.
+#1414354 by Merco: Fixed none.js breaks if textarea.js is not loaded.
+#1064600 by TwoD: Fixed maximized editors hidden under Drupal's toolbar.
+#1405786 by logaritmisk: Fixed CKEditor being wider than parent elements.
+#1531896 by Chi: Fixed strict warning for WYMeditor.
+#1442226 by robertom: Fixed inverted list button names for WYMeditor.
+#1352426 by TwoD, sun: Added install notes (CKEditor edition clarification).
+#1112212 by timdiacon, TwoD: Added language direction buttons for CKEditor.
+#1398560 by markwittens: Fixed TinyMCE removing the longdesc attribute.
+#970452 by smk-ka, sun, TwoD, drzraf: Fixed outdated TinyMCE plugin info.
+#1155678 by james.elliott, Jody Lynn, sun: Add Drupal.detachBehaviors support.
+#624018 by smk-ka, quartsize, dagmar, nedjo, rickvug, catch, sun: Added Features support.
+#1238766 by Dave Reid: Fixed Missing cells in profile plugins table.
+#1073106 by scottrouse: Fixed 'Input Format' should be 'Text Format'.
+#1153458 by TwoD: Fixed TinyMCE 'Verify HTML' setting ignored.
+#1125582 by TwoD: Fixed TinyMCE fullscreen plugin deletes content.
+#1078834 by sun: Fixed coding standards errors.
+#1173476 by jim0203, sun: Fixed installation instructions in README.txt.
 
 
 Wysiwyg 7.x-2.1, 2011-06-19
diff --git a/sites/all/modules/wysiwyg/LICENSE.txt b/sites/all/modules/wysiwyg/LICENSE.txt
index 2c095c8d3f42488e8168f9710a4ffbfc4125a159..d159169d1050894d3ea3b98e1c965c4058208fe1 100644
--- a/sites/all/modules/wysiwyg/LICENSE.txt
+++ b/sites/all/modules/wysiwyg/LICENSE.txt
@@ -1,274 +1,339 @@
-GNU GENERAL PUBLIC LICENSE
-
-              Version 2, June 1991
-
-Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave,
-Cambridge, MA 02139, USA. Everyone is permitted to copy and distribute
-verbatim copies of this license document, but changing it is not allowed.
-
-                  Preamble
-
-The licenses for most software are designed to take away your freedom to
-share and change it. By contrast, the GNU General Public License is
-intended to guarantee your freedom to share and change free software--to
-make sure the software is free for all its users. This General Public License
-applies to most of the Free Software Foundation's software and to any other
-program whose authors commit to using it. (Some other Free Software
-Foundation software is covered by the GNU Library General Public License
-instead.) You can apply it to your programs, too.
-
-When we speak of free software, we are referring to freedom, not price. Our
-General Public Licenses are designed to make sure that you have the
-freedom to distribute copies of free software (and charge for this service if
-you wish), that you receive source code or can get it if you want it, that you
-can change the software or use pieces of it in new free programs; and that
-you know you can do these things.
-
-To protect your rights, we need to make restrictions that forbid anyone to
-deny you these rights or to ask you to surrender the rights. These restrictions
-translate to certain responsibilities for you if you distribute copies of the
-software, or if you modify it.
-
-For example, if you distribute copies of such a program, whether gratis or for
-a fee, you must give the recipients all the rights that you have. You must make
-sure that they, too, receive or can get the source code. And you must show
-them these terms so they know their rights.
-
-We protect your rights with two steps: (1) copyright the software, and (2)
-offer you this license which gives you legal permission to copy, distribute
-and/or modify the software.
-
-Also, for each author's protection and ours, we want to make certain that
-everyone understands that there is no warranty for this free software. If the
-software is modified by someone else and passed on, we want its recipients
-to know that what they have is not the original, so that any problems
-introduced by others will not reflect on the original authors' reputations.
-
-Finally, any free program is threatened constantly by software patents. We
-wish to avoid the danger that redistributors of a free program will individually
-obtain patent licenses, in effect making the program proprietary. To prevent
-this, we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-The precise terms and conditions for copying, distribution and modification
-follow.
-
-           GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND
-               MODIFICATION
-
-0. This License applies to any program or other work which contains a notice
-placed by the copyright holder saying it may be distributed under the terms
-of this General Public License. The "Program", below, refers to any such
-program or work, and a "work based on the Program" means either the
-Program or any derivative work under copyright law: that is to say, a work
-containing the Program or a portion of it, either verbatim or with
-modifications and/or translated into another language. (Hereinafter, translation
-is included without limitation in the term "modification".) Each licensee is
-addressed as "you".
-
-Activities other than copying, distribution and modification are not covered
-by this License; they are outside its scope. The act of running the Program is
-not restricted, and the output from the Program is covered only if its contents
-constitute a work based on the Program (independent of having been made
-by running the Program). Whether that is true depends on what the Program
-does.
-
-1. You may copy and distribute verbatim copies of the Program's source
-code as you receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice and
-disclaimer of warranty; keep intact all the notices that refer to this License
-and to the absence of any warranty; and give any other recipients of the
-Program a copy of this License along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and you
-may at your option offer warranty protection in exchange for a fee.
-
-2. You may modify your copy or copies of the Program or any portion of it,
-thus forming a work based on the Program, and copy and distribute such
-modifications or work under the terms of Section 1 above, provided that you
-also meet all of these conditions:
-
-a) You must cause the modified files to carry prominent notices stating that
-you changed the files and the date of any change.
-
-b) You must cause any work that you distribute or publish, that in whole or in
-part contains or is derived from the Program or any part thereof, to be
-licensed as a whole at no charge to all third parties under the terms of this
-License.
-
-c) If the modified program normally reads commands interactively when run,
-you must cause it, when started running for such interactive use in the most
-ordinary way, to print or display an announcement including an appropriate
-copyright notice and a notice that there is no warranty (or else, saying that
-you provide a warranty) and that users may redistribute the program under
-these conditions, and telling the user how to view a copy of this License.
-(Exception: if the Program itself is interactive but does not normally print such
-an announcement, your work based on the Program is not required to print
-an announcement.)
-
-These requirements apply to the modified work as a whole. If identifiable
-sections of that work are not derived from the Program, and can be
-reasonably considered independent and separate works in themselves, then
-this License, and its terms, do not apply to those sections when you distribute
-them as separate works. But when you distribute the same sections as part
-of a whole which is a work based on the Program, the distribution of the
-whole must be on the terms of this License, whose permissions for other
-licensees extend to the entire whole, and thus to each and every part
-regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest your rights to
-work written entirely by you; rather, the intent is to exercise the right to
-control the distribution of derivative or collective works based on the
-Program.
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
 
 In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of a
-storage or distribution medium does not bring the other work under the scope
-of this License.
-
-3. You may copy and distribute the Program (or a work based on it, under
-Section 2) in object code or executable form under the terms of Sections 1
-and 2 above provided that you also do one of the following:
-
-a) Accompany it with the complete corresponding machine-readable source
-code, which must be distributed under the terms of Sections 1 and 2 above
-on a medium customarily used for software interchange; or,
-
-b) Accompany it with a written offer, valid for at least three years, to give
-any third party, for a charge no more than your cost of physically performing
-source distribution, a complete machine-readable copy of the corresponding
-source code, to be distributed under the terms of Sections 1 and 2 above on
-a medium customarily used for software interchange; or,
-
-c) Accompany it with the information you received as to the offer to distribute
-corresponding source code. (This alternative is allowed only for
-noncommercial distribution and only if you received the program in object
-code or executable form with such an offer, in accord with Subsection b
-above.)
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
 
 The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source code
-means all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation and
-installation of the executable. However, as a special exception, the source
-code distributed need not include anything that is normally distributed (in
-either source or binary form) with the major components (compiler, kernel,
-and so on) of the operating system on which the executable runs, unless that
-component itself accompanies the executable.
-
-If distribution of executable or object code is made by offering access to
-copy from a designated place, then offering equivalent access to copy the
-source code from the same place counts as distribution of the source code,
-even though third parties are not compelled to copy the source along with the
-object code.
-
-4. You may not copy, modify, sublicense, or distribute the Program except as
-expressly provided under this License. Any attempt otherwise to copy,
-modify, sublicense or distribute the Program is void, and will automatically
-terminate your rights under this License. However, parties who have received
-copies, or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-5. You are not required to accept this License, since you have not signed it.
-However, nothing else grants you permission to modify or distribute the
-Program or its derivative works. These actions are prohibited by law if you
-do not accept this License. Therefore, by modifying or distributing the
-Program (or any work based on the Program), you indicate your acceptance
-of this License to do so, and all its terms and conditions for copying,
-distributing or modifying the Program or works based on it.
-
-6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the original
-licensor to copy, distribute or modify the Program subject to these terms and
-conditions. You may not impose any further restrictions on the recipients'
-exercise of the rights granted herein. You are not responsible for enforcing
-compliance by third parties to this License.
-
-7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues), conditions
-are imposed on you (whether by court order, agreement or otherwise) that
-contradict the conditions of this License, they do not excuse you from the
-conditions of this License. If you cannot distribute so as to satisfy
-simultaneously your obligations under this License and any other pertinent
-obligations, then as a consequence you may not distribute the Program at all.
-For example, if a patent license would not permit royalty-free redistribution
-of the Program by all those who receive copies directly or indirectly through
-you, then the only way you could satisfy both it and this License would be to
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
 refrain entirely from distribution of the Program.
 
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply and
-the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any patents or
-other property right claims or to contest validity of any such claims; this
-section has the sole purpose of protecting the integrity of the free software
-distribution system, which is implemented by public license practices. Many
-people have made generous contributions to the wide range of software
-distributed through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing to
-distribute software through any other system and a licensee cannot impose
-that choice.
-
-This section is intended to make thoroughly clear what is believed to be a
-consequence of the rest of this License.
-
-8. If the distribution and/or use of the Program is restricted in certain
-countries either by patents or by copyrighted interfaces, the original copyright
-holder who places the Program under this License may add an explicit
-geographical distribution limitation excluding those countries, so that
-distribution is permitted only in or among countries not thus excluded. In such
-case, this License incorporates the limitation as if written in the body of this
-License.
-
-9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will be
-similar in spirit to the present version, but may differ in detail to address new
-problems or concerns.
-
-Each version is given a distinguishing version number. If the Program specifies
-a version number of this License which applies to it and "any later version",
-you have the option of following the terms and conditions either of that
-version or of any later version published by the Free Software Foundation. If
-the Program does not specify a version number of this License, you may
-choose any version ever published by the Free Software Foundation.
-
-10. If you wish to incorporate parts of the Program into other free programs
-whose distribution conditions are different, write to the author to ask for
-permission. For software which is copyrighted by the Free Software
-Foundation, write to the Free Software Foundation; we sometimes make
-exceptions for this. Our decision will be guided by the two goals of
-preserving the free status of all derivatives of our free software and of
-promoting the sharing and reuse of software generally.
-
-               NO WARRANTY
-
-11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE,
-THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT
-PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
-STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
-WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
-PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
-NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR
-AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR
-ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
-LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL,
-SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
-ARISING OUT OF THE USE OR INABILITY TO USE THE
-PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA
-OR DATA BEING RENDERED INACCURATE OR LOSSES
-SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE
-PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN
-IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGES.
-
-          END OF TERMS AND CONDITIONS
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/sites/all/modules/wysiwyg/README.txt b/sites/all/modules/wysiwyg/README.txt
index cc81447a1134273260d9b6e6c7358e02d15d31c5..75d2b14c5c2ceab36dd4beba949862c4f4bf8873 100644
--- a/sites/all/modules/wysiwyg/README.txt
+++ b/sites/all/modules/wysiwyg/README.txt
@@ -18,7 +18,8 @@ To submit bug reports and feature suggestions, or to track changes:
 
 -- INSTALLATION --
 
-* Install as usual, see http://drupal.org/node/70151 for further information.
+* Install as usual, see
+  http://drupal.org/documentation/install/modules-themes/modules-7
 
 * Go to Administration » Configuration » Content authoring » Wysiwyg,
   and follow the displayed installation instructions to download and install one
diff --git a/sites/all/modules/wysiwyg/editors/ckeditor.inc b/sites/all/modules/wysiwyg/editors/ckeditor.inc
index 0a56fe0815e21633c862d84b360a9f09cd4fdc7f..fcf168ec311e4a5b98e4938b62be652b061ffdec 100644
--- a/sites/all/modules/wysiwyg/editors/ckeditor.inc
+++ b/sites/all/modules/wysiwyg/editors/ckeditor.inc
@@ -27,8 +27,11 @@ function wysiwyg_ckeditor_editor() {
         ),
       ),
     ),
+    'install note callback' => 'wysiwyg_ckeditor_install_note',
     'version callback' => 'wysiwyg_ckeditor_version',
     'themes callback' => 'wysiwyg_ckeditor_themes',
+    'settings form callback' => 'wysiwyg_ckeditor_settings_form',
+    'init callback' => 'wysiwyg_ckeditor_init',
     'settings callback' => 'wysiwyg_ckeditor_settings',
     'plugin callback' => 'wysiwyg_ckeditor_plugins',
     'plugin settings callback' => 'wysiwyg_ckeditor_plugin_settings',
@@ -48,6 +51,13 @@ function wysiwyg_ckeditor_editor() {
   return $editor;
 }
 
+/**
+ * Return an install note.
+ */
+function wysiwyg_ckeditor_install_note() {
+  return '<p class="warning">' . t('Do NOT download the "CKEditor for Drupal" edition.') . '</p>';
+}
+
 /**
  * Detect editor version.
  *
@@ -111,6 +121,69 @@ function wysiwyg_ckeditor_themes($editor, $profile) {
   }
 }
 
+/**
+ * Enhances the editor profile settings form for CKEditor.
+ *
+ * Adds support for CKEditor's advanced stylesSets, which are a more advanced
+ * implementation and combination of block formats and font styles that allow
+ * to adjust the HTML element, attributes, and CSS styles at once.
+ *
+ * @see http://docs.cksource.com/CKEditor_3.x/Developers_Guide/Styles
+ * @see http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.stylesSet
+ */
+function wysiwyg_ckeditor_settings_form(&$form, &$form_state) {
+  if (version_compare($form_state['wysiwyg']['editor']['installed version'], '3.2.1', '>=')) {
+    // Replace CSS classes element description to explain the advanced syntax.
+    $form['css']['css_classes']['#description'] = t('Optionally define CSS classes for the "Font style" dropdown list.<br />Enter one class on each line in the format: !format. Example: !example<br />If left blank, CSS classes are automatically imported from loaded stylesheet(s).', array(
+      '!format' => '<code>[label]=[element].[class]</code>',
+      '!example' => '<code>Title=h1.title</code>',
+    ));
+    $form['css']['css_classes']['#element_validate'][] = 'wysiwyg_ckeditor_settings_form_validate_css_classes';
+  }
+  else {
+    // Versions below 3.2.1 do not support Font styles at all.
+    $form['css']['css_classes']['#access'] = FALSE;
+  }
+}
+
+/**
+ * #element_validate handler for CSS classes element altered by wysiwyg_ckeditor_settings_form().
+ */
+function wysiwyg_ckeditor_settings_form_validate_css_classes($element, &$form_state) {
+  if (wysiwyg_ckeditor_settings_parse_styles($element['#value']) === FALSE) {
+    form_error($element, t('The specified CSS classes are syntactically incorrect.'));
+  }
+}
+
+/**
+ * Returns an initialization JavaScript for this editor library.
+ *
+ * @param array $editor
+ *   The editor library definition.
+ * @param string $library
+ *   The library variant key from $editor['libraries'].
+ * @param object $profile
+ *   The (first) wysiwyg editor profile.
+ *
+ * @return string
+ *   A string containing inline JavaScript to execute before the editor library
+ *   script is loaded.
+ */
+function wysiwyg_ckeditor_init($editor) {
+  // CKEditor unconditionally searches for its library filename in SCRIPT tags
+  // on the page upon loading the library in order to determine the base path to
+  // itself. When JavaScript aggregation is enabled, this search fails and all
+  // relative constructed paths within CKEditor are broken. The library has a
+  // CKEditor.basePath property, but it is not publicly documented and thus not
+  // reliable. The official documentation suggests to solve the issue through
+  // the global window variable.
+  // @see http://docs.cksource.com/CKEditor_3.x/Developers_Guide/Specifying_the_Editor_Path
+  $library_path = base_path() . $editor['library path'] . '/';
+  return <<<EOL
+window.CKEDITOR_BASEPATH = '$library_path';
+EOL;
+}
+
 /**
  * Return runtime editor settings for a given wysiwyg profile.
  *
@@ -127,8 +200,7 @@ function wysiwyg_ckeditor_themes($editor, $profile) {
  */
 function wysiwyg_ckeditor_settings($editor, $config, $theme) {
   $settings = array(
-    'baseHref' => $GLOBALS['base_url'] . '/',
-    'width' => '100%',
+    'width' => 'auto',
     // For better compatibility with smaller textareas.
     'resize_minWidth' => 450,
     'height' => 420,
@@ -167,7 +239,7 @@ function wysiwyg_ckeditor_settings($editor, $config, $theme) {
         $settings['contentsCss'] = reset(wysiwyg_get_css());
       }
       elseif ($config['css_setting'] == 'self' && isset($config['css_path'])) {
-        $settings['contentsCss'] = strtr($config['css_path'], array('%b' => base_path(), '%t' => path_to_theme()));
+        $settings['contentsCss'] = strtr($config['css_path'], array('%b' => base_path(), '%t' => drupal_get_path('theme', variable_get('theme_default', NULL))));
       }
     }
     else {
@@ -175,16 +247,25 @@ function wysiwyg_ckeditor_settings($editor, $config, $theme) {
         $settings['contentsCss'] = wysiwyg_get_css();
       }
       elseif ($config['css_setting'] == 'self' && isset($config['css_path'])) {
-        $settings['contentsCss'] = explode(',', strtr($config['css_path'], array('%b' => base_path(), '%t' => path_to_theme())));
+        $settings['contentsCss'] = explode(',', strtr($config['css_path'], array('%b' => base_path(), '%t' => drupal_get_path('theme', variable_get('theme_default', NULL)))));
       }
     }
   }
 
+  // Parse and define the styles set for the Styles plugin (3.2.1+).
+  // @todo This should be a plugin setting, but Wysiwyg does not support
+  //   plugin-specific settings yet.
+  if (!empty($config['buttons']['default']['Styles']) && version_compare($editor['installed version'], '3.2.1', '>=')) {
+    if ($styles = wysiwyg_ckeditor_settings_parse_styles($config['css_classes'])) {
+      $settings['stylesSet'] = $styles;
+    }
+  }
+
   if (isset($config['language'])) {
     $settings['language'] = $config['language'];
   }
   if (isset($config['resizing'])) {
-    // CKEditor tests "!== false", so ensure it is a Boolean.
+    // CKEditor performs a type-agnostic comparison on this particular setting.
     $settings['resize_enabled'] = (bool) $config['resizing'];
   }
   if (isset($config['toolbar_loc'])) {
@@ -240,6 +321,51 @@ function wysiwyg_ckeditor_settings($editor, $config, $theme) {
   return $settings;
 }
 
+/**
+ * Parses CSS classes settings string into a stylesSet JavaScript settings array.
+ *
+ * @param string $css_classes
+ *   A string containing CSS class definitions to add to the Style dropdown
+ *   list, separated by newlines.
+ *
+ * @return array|false
+ *   An array containing the parsed stylesSet definition, or FALSE on parse
+ *   error.
+ *
+ * @see wysiwyg_ckeditor_settings_form()
+ * @see wysiwyg_ckeditor_settings_form_validate_css_classes()
+ *
+ * @todo This should be a plugin setting, but Wysiwyg does not support
+ *   plugin-specific settings yet.
+ */
+function wysiwyg_ckeditor_settings_parse_styles($css_classes) {
+  $set = array();
+  $input = trim($css_classes);
+  if (empty($input)) {
+    return $set;
+  }
+  // Handle both Unix and Windows line-endings.
+  foreach (explode("\n", str_replace("\r", '', $input)) as $line) {
+    $line = trim($line);
+    // [label]=[element].[class][.[class]][...] pattern expected.
+    if (!preg_match('@^.+= *[a-zA-Z0-9]+(\.[a-zA-Z0-9_ -]+)*$@', $line)) {
+      return FALSE;
+    }
+    list($label, $selector) = explode('=', $line, 2);
+    $classes = explode('.', $selector);
+    $element = array_shift($classes);
+
+    $style = array();
+    $style['name'] = trim($label);
+    $style['element'] = trim($element);
+    if (!empty($classes)) {
+      $style['attributes']['class'] = implode(' ', array_map('trim', $classes));
+    }
+    $set[] = $style;
+  }
+  return $set;
+}
+
 /**
  * Build a JS settings array of native external plugins that need to be loaded separately.
  */
@@ -294,6 +420,7 @@ function wysiwyg_ckeditor_plugins($editor) {
         'Bold' => t('Bold'), 'Italic' => t('Italic'), 'Underline' => t('Underline'),
         'Strike' => t('Strike-through'),
         'JustifyLeft' => t('Align left'), 'JustifyCenter' => t('Align center'), 'JustifyRight' => t('Align right'), 'JustifyBlock' => t('Justify'),
+        'BidiLtr' => t('Left-to-right'), 'BidiRtl' => t('Right-to-left'),
         'BulletedList' => t('Bullet list'), 'NumberedList' => t('Numbered list'),
         'Outdent' => t('Outdent'), 'Indent' => t('Indent'),
         'Undo' => t('Undo'), 'Redo' => t('Redo'),
@@ -325,6 +452,10 @@ function wysiwyg_ckeditor_plugins($editor) {
   if (version_compare($editor['installed version'], '3.1.0.4885', '<')) {
     unset($plugins['default']['buttons']['CreateDiv']);
   }
+  if (version_compare($editor['installed version'], '3.4.0.5808', '<')) {
+    unset($plugins['default']['buttons']['BidiLtr']);
+    unset($plugins['default']['buttons']['BidiRtl']);
+  }
   if (version_compare($editor['installed version'], '3.5.0.6260', '<')) {
     unset($plugins['default']['buttons']['Iframe']);
   }
diff --git a/sites/all/modules/wysiwyg/editors/epiceditor.inc b/sites/all/modules/wysiwyg/editors/epiceditor.inc
new file mode 100644
index 0000000000000000000000000000000000000000..7c8976867df34c5908645e491858ff896d4455f3
--- /dev/null
+++ b/sites/all/modules/wysiwyg/editors/epiceditor.inc
@@ -0,0 +1,102 @@
+<?php
+
+/**
+ * @file
+ * Editor integration functions for EpicEditor.
+ */
+
+/**
+ * Plugin implementation of hook_editor().
+ */
+function wysiwyg_epiceditor_editor() {
+  $editor['epiceditor'] = array(
+    'title' => 'EpicEditor',
+    'vendor url' => 'http://oscargodson.github.com/EpicEditor',
+    'download url' => 'http://oscargodson.github.com/EpicEditor/docs/downloads/EpicEditor-v0.1.1.zip',
+    'libraries' => array(
+      '' => array(
+        'title' => 'Minified',
+        'files' => array('js/epiceditor.min.js'),
+      ),
+      'src' => array(
+        'title' => 'Source',
+        'files' => array('js/epiceditor.js'),
+      ),
+    ),
+    'version callback' => 'wysiwyg_epiceditor_version',
+    'themes callback' => 'wysiwyg_epiceditor_themes',
+    'settings callback' => 'wysiwyg_epiceditor_settings',
+    'versions' => array(
+      '0.1.1' => array(
+        'js files' => array('epiceditor.js'),
+      ),
+    ),
+  );
+  return $editor;
+}
+
+/**
+ * Detect editor version.
+ *
+ * @param $editor
+ *   An array containing editor properties as returned from hook_editor().
+ *
+ * @return
+ *   The installed editor version.
+ */
+function wysiwyg_epiceditor_version($editor) {
+  $library = $editor['library path'] . '/js/epiceditor.js';
+  if (!file_exists($library)) {
+    return;
+  }
+  // @todo Do not load the entire file; use fgets() instead.
+  $library = file_get_contents($library, 'r');
+  $version = preg_match('%EpicEditor\.version = \'(.*)\'\;%', $library, $matches);
+  if (!isset($matches[1])) {
+    return;
+  }
+  return $matches[1];
+}
+
+/**
+ * Determine available editor themes or check/reset a given one.
+ *
+ * @param $editor
+ *   A processed hook_editor() array of editor properties.
+ * @param $profile
+ *   A wysiwyg editor profile.
+ *
+ * @return
+ *   An array of theme names. The first returned name should be the default
+ *   theme name.
+ */
+function wysiwyg_epiceditor_themes($editor, $profile) {
+  return array('epic-dark', 'epic-light');
+  // @todo Use the preview themes somewhere.
+  //return array('preview-dark', 'github');
+}
+
+/**
+ * Return runtime editor settings for a given wysiwyg profile.
+ *
+ * @param $editor
+ *   A processed hook_editor() array of editor properties.
+ * @param $config
+ *   An array containing wysiwyg editor profile settings.
+ * @param $theme
+ *   The name of a theme/GUI/skin to use.
+ *
+ * @return
+ *   A settings array to be populated in
+ *   Drupal.settings.wysiwyg.configs.{editor}
+ */
+function wysiwyg_epiceditor_settings($editor, $config, $theme) {
+  $settings = array(
+    'basePath' => base_path() . $editor['library path'],
+    'clientSideStorage' => FALSE,
+    'theme' => $theme,
+    //'preview_theme' => '',
+  );
+  return $settings;
+}
+
diff --git a/sites/all/modules/wysiwyg/editors/fckeditor.inc b/sites/all/modules/wysiwyg/editors/fckeditor.inc
index 70954da69bcd2c737111acd672406da95743e9d9..27bcb7b38f1048a5d6a64c08190768dcc7ebfed7 100644
--- a/sites/all/modules/wysiwyg/editors/fckeditor.inc
+++ b/sites/all/modules/wysiwyg/editors/fckeditor.inc
@@ -131,8 +131,8 @@ function wysiwyg_fckeditor_settings($editor, $config, $theme) {
     if ($config['css_setting'] == 'theme') {
       $settings['EditorAreaCSS'] = implode(',', wysiwyg_get_css());
     }
-    else if ($config['css_setting'] == 'self' && isset($config['css_path'])) {
-      $settings['EditorAreaCSS'] = strtr($config['css_path'], array('%b' => base_path(), '%t' => path_to_theme()));
+    elseif ($config['css_setting'] == 'self' && isset($config['css_path'])) {
+      $settings['EditorAreaCSS'] = strtr($config['css_path'], array('%b' => base_path(), '%t' => drupal_get_path('theme', variable_get('theme_default', NULL))));
     }
   }
 
diff --git a/sites/all/modules/wysiwyg/editors/js/ckeditor-3.0.js b/sites/all/modules/wysiwyg/editors/js/ckeditor-3.0.js
index d2cf300564d1e2b4bd6e618e5fbe50766bc498cd..f2889283268515a9146a78ab54289fe2165693d1 100644
--- a/sites/all/modules/wysiwyg/editors/js/ckeditor-3.0.js
+++ b/sites/all/modules/wysiwyg/editors/js/ckeditor-3.0.js
@@ -23,6 +23,10 @@ Drupal.wysiwyg.editor.init.ckeditor = function(settings) {
         }
       }
     }
+    // Register Font styles (versions 3.2.1 and above).
+    if (Drupal.settings.wysiwyg.configs.ckeditor[format].stylesSet) {
+      CKEDITOR.stylesSet.add(format, Drupal.settings.wysiwyg.configs.ckeditor[format].stylesSet);
+    }
   }
 };
 
@@ -34,6 +38,8 @@ Drupal.wysiwyg.editor.attach.ckeditor = function(context, params, settings) {
   // Apply editor instance settings.
   CKEDITOR.config.customConfig = '';
 
+  var $drupalToolbar = $('#toolbar', Drupal.overlayChild ? window.parent.document : document);
+
   settings.on = {
     instanceReady: function(ev) {
       var editor = ev.editor;
@@ -125,6 +131,19 @@ Drupal.wysiwyg.editor.attach.ckeditor = function(context, params, settings) {
 
     focus: function(ev) {
       Drupal.wysiwyg.activeId = ev.editor.name;
+    },
+
+    afterCommandExec: function(ev) {
+      // Fix Drupal toolbar obscuring editor toolbar in fullscreen mode.
+      if (ev.data.name != 'maximize') {
+        return;
+      }
+      if (ev.data.command.state == CKEDITOR.TRISTATE_ON) {
+        $drupalToolbar.hide();
+      }
+      else {
+        $drupalToolbar.show();
+      }
     }
   };
 
@@ -139,16 +158,19 @@ Drupal.wysiwyg.editor.attach.ckeditor = function(context, params, settings) {
  *   containing all instances or the passed in params.field instance, but
  *   always return an array to simplify all detach functions.
  */
-Drupal.wysiwyg.editor.detach.ckeditor = function(context, params) {
+Drupal.wysiwyg.editor.detach.ckeditor = function (context, params, trigger) {
+  var method = (trigger == 'serialize') ? 'updateElement' : 'destroy';
   if (typeof params != 'undefined') {
     var instance = CKEDITOR.instances[params.field];
     if (instance) {
-      instance.destroy();
+      instance[method]();
     }
   }
   else {
     for (var instanceName in CKEDITOR.instances) {
-      CKEDITOR.instances[instanceName].destroy();
+      if (CKEDITOR.instances.hasOwnProperty(instanceName)) {
+        CKEDITOR.instances[instanceName][method]();
+      }
     }
   }
 };
@@ -208,9 +230,18 @@ Drupal.wysiwyg.editor.instance.ckeditor = {
     // @todo Don't know if we need this yet.
     return content;
   },
+
   insert: function(content) {
     content = this.prepareContent(content);
     CKEDITOR.instances[this.field].insertHtml(content);
+  },
+
+  setContent: function (content) {
+    CKEDITOR.instances[this.field].setData(content);
+  },
+
+  getContent: function () {
+    return CKEDITOR.instances[this.field].getData();
   }
 };
 
diff --git a/sites/all/modules/wysiwyg/editors/js/epiceditor.js b/sites/all/modules/wysiwyg/editors/js/epiceditor.js
new file mode 100644
index 0000000000000000000000000000000000000000..03c48017cd0dc2d6443d59fd4d7e959f8801f6b4
--- /dev/null
+++ b/sites/all/modules/wysiwyg/editors/js/epiceditor.js
@@ -0,0 +1,38 @@
+(function($) {
+
+/**
+ * Attach this editor to a target element.
+ */
+Drupal.wysiwyg.editor.attach.epiceditor = function (context, params, settings) {
+  var $target = $('#' + params.field);
+  var containerId = params.field + '-epiceditor';
+  var defaultContent = $target.val();
+  $target.hide().after('<div id="' + containerId + '" />');
+
+  settings.container = containerId;
+  settings.file = {
+    defaultContent: defaultContent
+  };
+  settings.theme = {
+    preview: '/themes/preview/preview-dark.css',
+    editor: '/themes/editor/' + settings.theme + '.css'
+  }
+  var editor = new EpicEditor(settings).load();
+  $target.data('epiceditor', editor);
+};
+
+/**
+ * Detach a single or all editors.
+ */
+Drupal.wysiwyg.editor.detach.epiceditor = function (context, params, trigger) {
+  var $target = $('#' + params.field);
+  var editor = $target.data('epiceditor');
+
+  $target.val(editor.exportFile());
+
+  editor.unload(function () {
+    $target.show();
+  });
+};
+
+})(jQuery);
diff --git a/sites/all/modules/wysiwyg/editors/js/fckeditor-2.6.js b/sites/all/modules/wysiwyg/editors/js/fckeditor-2.6.js
index 4ee2cff739822b614109b262c9337d9ca4d4ee38..fd915e3fe0291d258770ca7c3cda93c39047d2aa 100644
--- a/sites/all/modules/wysiwyg/editors/js/fckeditor-2.6.js
+++ b/sites/all/modules/wysiwyg/editors/js/fckeditor-2.6.js
@@ -21,7 +21,7 @@ Drupal.wysiwyg.editor.attach.fckeditor = function(context, params, settings) {
 /**
  * Detach a single or all editors.
  */
-Drupal.wysiwyg.editor.detach.fckeditor = function(context, params) {
+Drupal.wysiwyg.editor.detach.fckeditor = function (context, params, trigger) {
   var instances = [];
   if (typeof params != 'undefined' && typeof FCKeditorAPI != 'undefined') {
     var instance = FCKeditorAPI.GetInstance(params.field);
@@ -36,6 +36,11 @@ Drupal.wysiwyg.editor.detach.fckeditor = function(context, params) {
   for (var instanceName in instances) {
     var instance = instances[instanceName];
     instance.UpdateLinkedField();
+    if (trigger == 'serialize') {
+      // The editor is not being removed from the DOM, so updating the linked
+      // field is the only action necessary.
+      continue;
+    }
     // Since we already detach the editor and update the textarea, the submit
     // event handler needs to be removed to prevent data loss (in IE).
     // FCKeditor uses 2 nested iFrames; instance.EditingArea.Window is the
@@ -175,6 +180,16 @@ Drupal.wysiwyg.editor.instance.fckeditor = {
     var instance = FCKeditorAPI.GetInstance(this.field);
     // @see FCK.InsertHtml(), FCK.InsertElement()
     instance.InsertHtml(content);
+  },
+
+  getContent: function () {
+    var instance = FCKeditorAPI.GetInstance(this.field);
+    return instance.GetData();
+  },
+
+  setContent: function (content) {
+    var instance = FCKeditorAPI.GetInstance(this.field);
+    instance.SetHTML(content);
   }
 };
 
diff --git a/sites/all/modules/wysiwyg/editors/js/fckeditor.config.js b/sites/all/modules/wysiwyg/editors/js/fckeditor.config.js
index d3fbc2fc1d73c6e87679ab5cf9605a9a3bf6692f..42efc32260c0b17e5efa87e5aefa5416392c16b6 100644
--- a/sites/all/modules/wysiwyg/editors/js/fckeditor.config.js
+++ b/sites/all/modules/wysiwyg/editors/js/fckeditor.config.js
@@ -40,6 +40,19 @@ for (var setting in wysiwygSettings) {
   }
 }
 
+// Fix Drupal toolbar obscuring editor toolbar in fullscreen mode.
+var oldFitWindowExecute = FCKFitWindow.prototype.Execute;
+var $drupalToolbar = window.parent.jQuery('#toolbar', Drupal.overlayChild ? window.parent.window.parent.document : window.parent.document);
+FCKFitWindow.prototype.Execute = function() {
+  oldFitWindowExecute.apply(this, arguments);
+  if (this.IsMaximized) {
+    $drupalToolbar.hide();
+  }
+  else {
+    $drupalToolbar.show();
+  }
+}
+
 /**
  * Initialize this editor instance.
  */
diff --git a/sites/all/modules/wysiwyg/editors/js/jwysiwyg.js b/sites/all/modules/wysiwyg/editors/js/jwysiwyg.js
index ae47853221f914daf80763d3779c3698c8eacc1e..d3e7490f78e0d4614b40c723329354c8cc7d0b25 100644
--- a/sites/all/modules/wysiwyg/editors/js/jwysiwyg.js
+++ b/sites/all/modules/wysiwyg/editors/js/jwysiwyg.js
@@ -11,15 +11,33 @@ Drupal.wysiwyg.editor.attach.jwysiwyg = function(context, params, settings) {
 /**
  * Detach a single or all editors.
  */
-Drupal.wysiwyg.editor.detach.jwysiwyg = function(context, params) {
+Drupal.wysiwyg.editor.detach.jwysiwyg = function (context, params, trigger) {
   var $field = $('#' + params.field);
   var editor = $field.data('wysiwyg');
   if (typeof editor != 'undefined') {
     editor.saveContent();
-    editor.element.remove();
+    if (trigger != 'serialize') {
+      editor.element.remove();
+    }
   }
   $field.removeData('wysiwyg');
-  $field.show();
+  if (trigger != 'serialize') {
+    $field.show();
+  }
+};
+
+Drupal.wysiwyg.editor.instance.jwysiwyg = {
+  insert: function (content) {
+    $('#' + this.field).wysiwyg('insertHtml', content);
+  },
+
+  setContent: function (content) {
+    $('#' + this.field).wysiwyg('setContent', content);
+  },
+
+  getContent: function () {
+    return $('#' + this.field).wysiwyg('getContent');
+  }
 };
 
 })(jQuery);
diff --git a/sites/all/modules/wysiwyg/editors/js/markitup.js b/sites/all/modules/wysiwyg/editors/js/markitup.js
index 66918114405863423af003bc37c9ce01d5933615..00e10b978a54528007c47209fe620b8beb45e5ea 100644
--- a/sites/all/modules/wysiwyg/editors/js/markitup.js
+++ b/sites/all/modules/wysiwyg/editors/js/markitup.js
@@ -17,7 +17,10 @@ Drupal.wysiwyg.editor.attach.markitup = function(context, params, settings) {
 /**
  * Detach a single or all editors.
  */
-Drupal.wysiwyg.editor.detach.markitup = function(context, params) {
+Drupal.wysiwyg.editor.detach.markitup = function (context, params, trigger) {
+  if (trigger == 'serialize') {
+    return;
+  }
   if (typeof params != 'undefined') {
     $('#' + params.field, context).markItUpRemove();
   }
@@ -26,4 +29,18 @@ Drupal.wysiwyg.editor.detach.markitup = function(context, params) {
   }
 };
 
+Drupal.wysiwyg.editor.instance.markitup = {
+  insert: function (content) {
+    $.markItUp({ replaceWith: content });
+  },
+
+  setContent: function (content) {
+    $('#' + this.field).val(content);
+  },
+
+  getContent: function () {
+    return $('#' + this.field).val();
+  }
+};
+
 })(jQuery);
diff --git a/sites/all/modules/wysiwyg/editors/js/nicedit.js b/sites/all/modules/wysiwyg/editors/js/nicedit.js
index d5d979575f3bea34f9c6918f571b084c7927cf55..10b7809c5d5997cecadf111530ee1453ae6616c5 100644
--- a/sites/all/modules/wysiwyg/editors/js/nicedit.js
+++ b/sites/all/modules/wysiwyg/editors/js/nicedit.js
@@ -30,12 +30,17 @@ Drupal.wysiwyg.editor.attach.nicedit = function(context, params, settings) {
  *
  * See Drupal.wysiwyg.editor.detach.none() for a full description of this hook.
  */
-Drupal.wysiwyg.editor.detach.nicedit = function(context, params) {
+Drupal.wysiwyg.editor.detach.nicedit = function (context, params, trigger) {
   if (typeof params != 'undefined') {
     var instance = nicEditors.findEditor(params.field);
     if (instance) {
-      instance.ne.removeInstance(params.field);
-      instance.ne.removePanel();
+      if (trigger == 'serialize') {
+        instance.saveContent();
+      }
+      else {
+        instance.ne.removeInstance(params.field);
+        instance.ne.removePanel();
+      }
     }
   }
   else {
@@ -43,10 +48,17 @@ Drupal.wysiwyg.editor.detach.nicedit = function(context, params) {
       // Save contents of all editors back into textareas.
       var instances = nicEditors.editors[e].nicInstances;
       for (var i = 0; i < instances.length; i++) {
-        instances[i].remove();
+        if (trigger == 'serialize') {
+          instances[i].saveContent();
+        }
+        else {
+          instances[i].remove();
+        }
       }
       // Remove all editor instances.
-      nicEditors.editors[e].nicInstances = [];
+      if (trigger != 'serialize') {
+        nicEditors.editors[e].nicInstances = [];
+      }
     }
   }
 };
@@ -62,7 +74,7 @@ Drupal.wysiwyg.editor.instance.nicedit = {
     // IE.
     if (document.selection) {
       editingArea.focus();
-      sel.createRange().text = content;
+      sel.createRange().pasteHTML(content);
     }
     else {
       // Convert selection to a range.
@@ -89,6 +101,14 @@ Drupal.wysiwyg.editor.instance.nicedit = {
       // Only fragment children are inserted.
       range.insertNode(fragment);
     }
+  },
+
+  setContent: function (content) {
+    nicEditors.findEditor(this.field).setContent(content);
+  },
+
+  getContent: function () {
+    return nicEditors.findEditor(this.field).getContent();
   }
 };
 
diff --git a/sites/all/modules/wysiwyg/editors/js/none.js b/sites/all/modules/wysiwyg/editors/js/none.js
index 34020240c288afc5e89269402c15685e18d1c2a1..762f7fb2b5d495489d31b9b49f64e4b4cb410da3 100644
--- a/sites/all/modules/wysiwyg/editors/js/none.js
+++ b/sites/all/modules/wysiwyg/editors/js/none.js
@@ -17,7 +17,7 @@ Drupal.wysiwyg.editor.attach.none = function(context, params, settings) {
   if (params.resizable) {
     var $wrapper = $('#' + params.field).parents('.form-textarea-wrapper:first');
     $wrapper.addClass('resizable');
-    if (Drupal.behaviors.textarea.attach) {
+    if (Drupal.behaviors.textarea) {
       Drupal.behaviors.textarea.attach();
     }
   }
@@ -26,6 +26,9 @@ Drupal.wysiwyg.editor.attach.none = function(context, params, settings) {
 /**
  * Detach a single or all editors.
  *
+ * The editor syncs its contents back to the original field before its instance
+ * is removed.
+ *
  * @param context
  *   A DOM element, supplied by Drupal.attachBehaviors().
  * @param params
@@ -33,9 +36,18 @@ Drupal.wysiwyg.editor.attach.none = function(context, params, settings) {
  *   only the editor instance in params.field should be detached. Otherwise,
  *   all editors should be detached and saved, so they can be submitted in
  *   AJAX/AHAH applications.
+ * @param trigger
+ *   A string describing why the editor is being detached.
+ *   Possible triggers are:
+ *   - unload: (default) Another or no editor is about to take its place.
+ *   - move: Currently expected to produce the same result as unload.
+ *   - serialize: The form is about to be serialized before an AJAX request or
+ *     a normal form submission. If possible, perform a quick detach and leave
+ *     the editor's GUI elements in place to avoid flashes or scrolling issues.
+ * @see Drupal.detachBehaviors
  */
-Drupal.wysiwyg.editor.detach.none = function(context, params) {
-  if (typeof params != 'undefined') {
+Drupal.wysiwyg.editor.detach.none = function (context, params, trigger) {
+  if (typeof params != 'undefined' && (trigger != 'serialize')) {
     var $wrapper = $('#' + params.field).parents('.form-textarea-wrapper:first');
     $wrapper.removeOnce('textarea').removeClass('.resizable-textarea')
       .find('.grippie').remove();
@@ -65,6 +77,14 @@ Drupal.wysiwyg.editor.instance.none = {
     else {
       editor.value += content;
     }
+  },
+
+  setContent: function (content) {
+    $('#' + this.field).val(content);
+  },
+
+  getContent: function () {
+    return $('#' + this.field).val();
   }
 };
 
diff --git a/sites/all/modules/wysiwyg/editors/js/openwysiwyg.js b/sites/all/modules/wysiwyg/editors/js/openwysiwyg.js
index 89a5337edc16f7cd5a01b48ea7b4672c64d67d3e..a01e8a0b1ea5cb0a82dd0949bc49ee46302bf305 100644
--- a/sites/all/modules/wysiwyg/editors/js/openwysiwyg.js
+++ b/sites/all/modules/wysiwyg/editors/js/openwysiwyg.js
@@ -23,6 +23,19 @@ WYSIWYG.getEditor = function (n) {
 
 (function($) {
 
+// Fix Drupal toolbar obscuring editor toolbar in fullscreen mode.
+var oldMaximize = WYSIWYG.maximize;
+WYSIWYG.maximize = function (n) {
+var $drupalToolbar = $('#toolbar', Drupal.overlayChild ? window.parent.document : document);
+  oldMaximize.apply(this, arguments);
+  if (this.maximized[n]) {
+    $drupalToolbar.hide();
+  }
+  else {
+    $drupalToolbar.show();
+  }
+}
+
 /**
  * Attach this editor to a target element.
  */
@@ -45,24 +58,84 @@ Drupal.wysiwyg.editor.attach.openwysiwyg = function(context, params, settings) {
 /**
  * Detach a single or all editors.
  */
-Drupal.wysiwyg.editor.detach.openwysiwyg = function(context, params) {
+Drupal.wysiwyg.editor.detach.openwysiwyg = function (context, params, trigger) {
   if (typeof params != 'undefined') {
     var instance = WYSIWYG.config[params.field];
     if (typeof instance != 'undefined') {
       WYSIWYG.updateTextArea(params.field);
-      jQuery('#wysiwyg_div_' + params.field).remove();
-      delete instance;
+      if (trigger != 'serialize') {
+        jQuery('#wysiwyg_div_' + params.field).remove();
+        delete instance;
+      }
+    }
+    if (trigger != 'serialize') {
+      jQuery('#' + params.field).show();
     }
-    jQuery('#' + params.field).show();
   }
   else {
     jQuery.each(WYSIWYG.config, function(field) {
       WYSIWYG.updateTextArea(field);
-      jQuery('#wysiwyg_div_' + field).remove();
-      delete this;
-      jQuery('#' + field).show();
+      if (trigger != 'serialize') {
+        jQuery('#wysiwyg_div_' + field).remove();
+        delete this;
+        jQuery('#' + field).show();
+      }
     });
   }
 };
 
+/**
+ * Instance methods for openWYSIWYG.
+ */
+Drupal.wysiwyg.editor.instance.openwysiwyg = {
+  insert: function (content) {
+    // If IE has dropped focus content will be inserted at the top of the page.
+    $('#wysiwyg' + this.field).contents().find('body').focus();
+    WYSIWYG.insertHTML(content, this.field);
+  },
+
+  setContent: function (content) {
+    // Based on openWYSIWYG's _generate() method.
+    var doc = WYSIWYG.getEditorWindow(this.field).document;
+    if (WYSIWYG.config[this.field].ReplaceLineBreaks) {
+      content = content.replace(/\n\r|\n/ig, '<br />');
+    }
+    if (WYSIWYG.viewTextMode[this.field]) {
+      var html = document.createTextNode(content);
+      doc.body.innerHTML = '';
+      doc.body.appendChild(html);
+    }
+    else {
+      doc.open();
+      doc.write(content);
+      doc.close();
+    }
+  },
+
+  getContent: function () {
+    // Based on openWYSIWYG's updateTextarea() method.
+    var content = '';
+    var doc = WYSIWYG.getEditorWindow(this.field).document;
+    if (WYSIWYG.viewTextMode[this.field]) {
+      if (WYSIWYG_Core.isMSIE) {
+        content = doc.body.innerText;
+      }
+      else {
+        var range = doc.body.ownerDocument.createRange();
+        range.selectNodeContents(doc.body);
+        content = range.toString();
+      }
+    }
+    else {
+      content = doc.body.innerHTML;
+    }
+    content = WYSIWYG.stripURLPath(this.field, content);
+    content = WYSIWYG_Core.replaceRGBWithHexColor(content);
+    if (WYSIWYG.config[this.field].ReplaceLineBreaks) {
+      content = content.replace(/(\r\n)|(\n)/ig, '');
+    }
+    return content;
+  }
+};
+
 })(jQuery);
diff --git a/sites/all/modules/wysiwyg/editors/js/tinymce-2.js b/sites/all/modules/wysiwyg/editors/js/tinymce-2.js
index 088021f710eb9e5cd62aefb993ddff7803b7630c..61a60ade44a6533f0afa7d450e9f0c26da857abb 100644
--- a/sites/all/modules/wysiwyg/editors/js/tinymce-2.js
+++ b/sites/all/modules/wysiwyg/editors/js/tinymce-2.js
@@ -10,18 +10,8 @@
  *   An object containing editor settings for each input format.
  */
 Drupal.wysiwyg.editor.init.tinymce = function(settings) {
-  // If JS compression is enabled, TinyMCE is unable to autodetect its global
-  // settinge, hence we need to define them manually.
-  // @todo Move global library settings somewhere else.
-  tinyMCE.baseURL = settings.global.editorBasePath;
-  tinyMCE.srcMode = (settings.global.execMode == 'src' ? '_src' : '');
-  tinyMCE.gzipMode = (settings.global.execMode == 'gzip');
-
   // Initialize editor configurations.
   for (var format in settings) {
-    if (format == 'global') {
-      continue;
-    }
     tinyMCE.init(settings[format]);
     if (Drupal.settings.wysiwyg.plugins[format]) {
       // Load native external plugins.
@@ -67,7 +57,7 @@ Drupal.wysiwyg.editor.attach.tinymce = function(context, params, settings) {
  *
  * See Drupal.wysiwyg.editor.detach.none() for a full desciption of this hook.
  */
-Drupal.wysiwyg.editor.detach.tinymce = function(context, params) {
+Drupal.wysiwyg.editor.detach.tinymce = function (context, params, trigger) {
   if (typeof params != 'undefined') {
     tinyMCE.removeMCEControl(tinyMCE.getEditorId(params.field));
     $('#' + params.field).removeAttr('style');
diff --git a/sites/all/modules/wysiwyg/editors/js/tinymce-3.js b/sites/all/modules/wysiwyg/editors/js/tinymce-3.js
index bbb453cb6e36c04e783602d43f9d053be2c47ca1..4e64c7dbf628071c16192df48774899d159b2f5f 100644
--- a/sites/all/modules/wysiwyg/editors/js/tinymce-3.js
+++ b/sites/all/modules/wysiwyg/editors/js/tinymce-3.js
@@ -11,19 +11,21 @@
  *   An object containing editor settings for each input format.
  */
 Drupal.wysiwyg.editor.init.tinymce = function(settings) {
-  // If JS compression is enabled, TinyMCE is unable to autodetect its global
-  // settinge, hence we need to define them manually.
-  // @todo Move global library settings somewhere else.
-  tinyMCE.baseURL = settings.global.editorBasePath;
-  tinyMCE.srcMode = (settings.global.execMode == 'src' ? '_src' : '');
-  tinyMCE.gzipMode = (settings.global.execMode == 'gzip');
+  // Fix Drupal toolbar obscuring editor toolbar in fullscreen mode.
+  var $drupalToolbar = $('#toolbar', Drupal.overlayChild ? window.parent.document : document);
+  tinyMCE.onAddEditor.add(function (mgr, ed) {
+    if (ed.id == 'mce_fullscreen') {
+      $drupalToolbar.hide();
+    }
+  });
+  tinyMCE.onRemoveEditor.add(function (mgr, ed) {
+    if (ed.id == 'mce_fullscreen') {
+      $drupalToolbar.show();
+    }
+  });
 
   // Initialize editor configurations.
   for (var format in settings) {
-    if (format == 'global') {
-      continue;
-    };
-    tinyMCE.init(settings[format]);
     if (Drupal.settings.wysiwyg.plugins[format]) {
       // Load native external plugins.
       // Array syntax required; 'native' is a predefined token in JavaScript.
@@ -50,7 +52,9 @@ Drupal.wysiwyg.editor.attach.tinymce = function(context, params, settings) {
   ed.onEvent.add(function(ed, e) {
     Drupal.wysiwyg.activeId = ed.id;
   });
-  /* START UNL CHANGE
+  // Indicate that the DOM has been loaded (in case of Ajax).
+  tinymce.dom.Event.domLoaded = true;
+/* START UNL CHANGE
   // Make toolbar buttons wrappable (required for IE).
   ed.onPostRender.add(function (ed) {
     var $toolbar = $('<div class="wysiwygToolbar"></div>');
@@ -60,7 +64,7 @@ Drupal.wysiwyg.editor.attach.tinymce = function(context, params, settings) {
     $('#' + ed.editorContainer + ' table.mceLayout td.mceToolbar').append($toolbar);
     $('#' + ed.editorContainer + ' table.mceToolbar').remove();
   });
-   END UNL CHANGE */
+END UNL CHANGE */
   // Remove TinyMCE's internal mceItem class, which was incorrectly added to
   // submitted content by Wysiwyg <2.1. TinyMCE only temporarily adds the class
   // for placeholder elements. If preemptively set, the class prevents (native)
@@ -80,20 +84,24 @@ Drupal.wysiwyg.editor.attach.tinymce = function(context, params, settings) {
  *
  * See Drupal.wysiwyg.editor.detach.none() for a full desciption of this hook.
  */
-Drupal.wysiwyg.editor.detach.tinymce = function(context, params) {
+Drupal.wysiwyg.editor.detach.tinymce = function (context, params, trigger) {
   if (typeof params != 'undefined') {
     var instance = tinyMCE.get(params.field);
     if (instance) {
       instance.save();
-      instance.remove();
+      if (trigger != 'serialize') {
+        instance.remove();
+      }
     }
   }
   else {
     // Save contents of all editors back into textareas.
     tinyMCE.triggerSave();
-    // Remove all editor instances.
-    for (var instance in tinyMCE.editors) {
-      tinyMCE.editors[instance].remove();
+    if (trigger != 'serialize') {
+      // Remove all editor instances.
+      for (var instance in tinyMCE.editors) {
+        tinyMCE.editors[instance].remove();
+      }
     }
   }
 };
@@ -139,16 +147,18 @@ Drupal.wysiwyg.editor.instance.tinymce = {
 
         // Attach: Replace plain text with HTML representations.
         ed.onBeforeSetContent.add(function(ed, data) {
+          var editorId = (ed.id == 'mce_fullscreen' ? ed.getParam('fullscreen_editor_id') : ed.id);
           if (typeof Drupal.wysiwyg.plugins[plugin].attach == 'function') {
-            data.content = Drupal.wysiwyg.plugins[plugin].attach(data.content, pluginSettings, ed.id);
+            data.content = Drupal.wysiwyg.plugins[plugin].attach(data.content, pluginSettings, editorId);
             data.content = Drupal.wysiwyg.editor.instance.tinymce.prepareContent(data.content);
           }
         });
 
         // Detach: Replace HTML representations with plain text.
         ed.onGetContent.add(function(ed, data) {
+          var editorId = (ed.id == 'mce_fullscreen' ? ed.getParam('fullscreen_editor_id') : ed.id);
           if (typeof Drupal.wysiwyg.plugins[plugin].detach == 'function') {
-            data.content = Drupal.wysiwyg.plugins[plugin].detach(data.content, pluginSettings, ed.id);
+            data.content = Drupal.wysiwyg.plugins[plugin].detach(data.content, pluginSettings, editorId);
           }
         });
 
@@ -176,7 +186,7 @@ Drupal.wysiwyg.editor.instance.tinymce = {
   },
 
   openDialog: function(dialog, params) {
-    var instanceId = this.isFullscreen() ? 'mce_fullscreen' : this.field;
+    var instanceId = this.getInstanceId();
     var editor = tinyMCE.get(instanceId);
     editor.windowManager.open({
       file: dialog.url + '/' + instanceId,
@@ -187,8 +197,7 @@ Drupal.wysiwyg.editor.instance.tinymce = {
   },
 
   closeDialog: function(dialog) {
-    var instanceId = this.isFullscreen() ? 'mce_fullscreen' : this.field;
-    var editor = tinyMCE.get(instanceId);
+    var editor = tinyMCE.get(this.getInstanceId());
     editor.windowManager.close(dialog);
   },
 
@@ -223,13 +232,25 @@ Drupal.wysiwyg.editor.instance.tinymce = {
 
   insert: function(content) {
     content = this.prepareContent(content);
-    var instanceId = this.isFullscreen() ? 'mce_fullscreen' : this.field;
-    tinyMCE.execInstanceCommand(instanceId, 'mceInsertContent', false, content);
+    tinyMCE.execInstanceCommand(this.getInstanceId(), 'mceInsertContent', false, content);
+  },
+
+  setContent: function (content) {
+    content = this.prepareContent(content);
+    tinyMCE.execInstanceCommand(this.getInstanceId(), 'mceSetContent', false, content);
+  },
+
+  getContent: function () {
+    return tinyMCE.get(this.getInstanceId()).getContent();
   },
 
   isFullscreen: function() {
     // TinyMCE creates a completely new instance for fullscreen mode.
     return tinyMCE.activeEditor.id == 'mce_fullscreen' && tinyMCE.activeEditor.getParam('fullscreen_editor_id') == this.field;
+  },
+
+  getInstanceId: function () {
+    return this.isFullscreen() ? 'mce_fullscreen' : this.field;
   }
 };
 
diff --git a/sites/all/modules/wysiwyg/editors/js/whizzywig-56.js b/sites/all/modules/wysiwyg/editors/js/whizzywig-56.js
index 229a70b27f802e2a9b26f9089c954cb69b97c0dd..3fc2fe57c1e73d6dd3acfa35c2086e15b5448cb3 100644
--- a/sites/all/modules/wysiwyg/editors/js/whizzywig-56.js
+++ b/sites/all/modules/wysiwyg/editors/js/whizzywig-56.js
@@ -80,39 +80,28 @@ Drupal.wysiwyg.editor.attach.whizzywig = function(context, params, settings) {
   // Attach editor.
   makeWhizzyWig(params.field, (settings.buttons ? settings.buttons : 'all'));
   // Whizzywig fails to detect and set initial textarea contents.
-  var instance = $('#whizzy' + params.field).get(0);
-  if (instance) {
-    instance.contentWindow.document.body.innerHTML = tidyD($field.val());
-  }
+  $('#whizzy' + params.field).contents().find('body').html(tidyD($field.val()));
 };
 
 /**
  * Detach a single or all editors.
  */
-Drupal.wysiwyg.editor.detach.whizzywig = function(context, params) {
+Drupal.wysiwyg.editor.detach.whizzywig = function (context, params, trigger) {
   var detach = function (index) {
-    var id = whizzies[index];
-    var instance = $('#whizzy' + id).get(0);
-    if (!instance) {
-      return;
-    }
-    var editingArea = instance.contentWindow.document;
-    var $field = $('#' + id);
-    // Whizzywig shows the original textarea in source mode.
-    if ($field.css('display') == 'block') {
-      editingArea.body.innerHTML = $field.val();
-    }
+    var id = whizzies[index], $field = $('#' + id), instance = Drupal.wysiwyg.instances[id];
 
     // Save contents of editor back into textarea.
-    $field.val(tidyH(editingArea));
+    $field.val(instance.getContent());
+    // If the editor is just being serialized (not detached), our work is done.
+    if (trigger == 'serialize') {
+      return;
+    }
     // Remove editor instance.
     $('#' + id + '-whizzywig').remove();
     whizzies.splice(index, 1);
 
     // Restore original textarea styling.
-    var originalValues = Drupal.wysiwyg.instances[id];
-    $field.removeAttr('style');
-    $field.attr('style', originalValues.originalStyle);
+    $field.removeAttr('style').attr('style', instance.originalStyle);
   };
 
   if (typeof params != 'undefined') {
@@ -130,4 +119,37 @@ Drupal.wysiwyg.editor.detach.whizzywig = function(context, params) {
   }
 };
 
+/**
+ * Instance methods for Whizzywig.
+ */
+Drupal.wysiwyg.editor.instance.whizzywig = {
+  insert: function (content) {
+    // Whizzywig executes any string beginning with 'js:'.
+    insHTML(content.replace(/^js:/, 'js&colon;'));
+  },
+
+  setContent: function (content) {
+    // Whizzywig shows the original textarea in source mode.
+    if ($field.css('display') == 'block') {
+      $('#' + this.field).val(content);
+    }
+    else {
+      var doc = $('#whizzy' + this.field).contents()[0];
+      doc.open();
+      doc.write(content);
+      doc.close();
+    }
+  },
+
+  getContent: function () {
+    // Whizzywig's tidyH() expects a document node. Clone the editing iframe's
+    // document so tidyH() won't mess with it if this gets called while editing.
+    var clone = $($('#whizzy' + this.field).contents()[0].documentElement).clone()[0].ownerDocument;
+    // Whizzywig shows the original textarea in source mode so update the body.
+    if ($field.css('display') == 'block') {
+     clone.body.innerHTML = $('#' + this.field).val();
+    }
+    return tidyH(clone);
+  }
+};
 })(jQuery);
diff --git a/sites/all/modules/wysiwyg/editors/js/whizzywig-60.js b/sites/all/modules/wysiwyg/editors/js/whizzywig-60.js
index dc995f6c5d56276136e68d302985ec4c493c6468..bbc6e649dc04b00692d67828c797e83d42a47ef3 100644
--- a/sites/all/modules/wysiwyg/editors/js/whizzywig-60.js
+++ b/sites/all/modules/wysiwyg/editors/js/whizzywig-60.js
@@ -29,42 +29,31 @@ Drupal.wysiwyg.editor.attach.whizzywig = function(context, params, settings) {
   // Attach editor.
   makeWhizzyWig(params.field, (settings.buttons ? settings.buttons : 'all'));
   // Whizzywig fails to detect and set initial textarea contents.
-  var instance = $('#whizzy' + params.field).get(0);
-  if (instance) {
-    instance.contentWindow.document.body.innerHTML = tidyD($field.val());
-  }
+  $('#whizzy' + params.field).contents().find('body').html(tidyD($field.val()));
 };
 
 /**
  * Detach a single or all editors.
  */
-Drupal.wysiwyg.editor.detach.whizzywig = function(context, params) {
+Drupal.wysiwyg.editor.detach.whizzywig = function (context, params, trigger) {
   var detach = function (index) {
-    var id = whizzies[index];
-    var instance = $('#whizzy' + id).get(0);
-    if (!instance) {
-      return;
-    }
-    var editingArea = instance.contentWindow.document;
-    var $field = $('#' + id);
-    // Whizzywig shows the original textarea in source mode.
-    if ($field.css('display') == 'block') {
-      editingArea.body.innerHTML = $field.val();
-    }
+    var id = whizzies[index], $field = $('#' + id), instance = Drupal.wysiwyg.instances[id];
 
     // Save contents of editor back into textarea.
-    $field.val(tidyH(editingArea));
+    $field.val(instance.getContent());
+    // If the editor is just being serialized (not detached), our work is done.
+    if (trigger == 'serialize') {
+      return;
+    }
     // Move original textarea back to its previous location.
-    $container = $('#CONTAINER' + id);
+    var $container = $('#CONTAINER' + id);
     $field.insertBefore($container);
     // Remove editor instance.
     $container.remove();
     whizzies.splice(index, 1);
 
     // Restore original textarea styling.
-    var originalValues = Drupal.wysiwyg.instances[id];
-    $field.removeAttr('style');
-    $field.attr('style', originalValues.originalStyle);
+    $field.removeAttr('style').attr('style', instance.originalStyle);
   }
 
   if (typeof params != 'undefined') {
@@ -82,4 +71,37 @@ Drupal.wysiwyg.editor.detach.whizzywig = function(context, params) {
   }
 };
 
+/**
+ * Instance methods for Whizzywig.
+ */
+Drupal.wysiwyg.editor.instance.whizzywig = {
+  insert: function (content) {
+    // Whizzywig executes any string beginning with 'js:'.
+    insHTML(content.replace(/^js:/, 'js&colon;'));
+  },
+
+  setContent: function (content) {
+    // Whizzywig shows the original textarea in source mode.
+    if ($field.css('display') == 'block') {
+      $('#' + this.field).val(content);
+    }
+    else {
+      var doc = $('#whizzy' + this.field).contents()[0];
+      doc.open();
+      doc.write(content);
+      doc.close();
+    }
+  },
+
+  getContent: function () {
+    // Whizzywig's tidyH() expects a document node. Clone the editing iframe's
+    // document so tidyH() won't mess with it if this gets called while editing.
+    var clone = $($('#whizzy' + this.field).contents()[0].documentElement).clone()[0].ownerDocument;
+    // Whizzywig shows the original textarea in source mode so update the body.
+    if ($field.css('display') == 'block') {
+     clone.body.innerHTML = $('#' + this.field).val();
+    }
+    return tidyH(clone);
+  }
+};
 })(jQuery);
diff --git a/sites/all/modules/wysiwyg/editors/js/whizzywig.js b/sites/all/modules/wysiwyg/editors/js/whizzywig.js
index e98bc4da81ebecb8a286985538edd58a34645dcb..e89ac5f09d1bed1b7d2a1cfca7cdd5f9132c1166 100644
--- a/sites/all/modules/wysiwyg/editors/js/whizzywig.js
+++ b/sites/all/modules/wysiwyg/editors/js/whizzywig.js
@@ -71,41 +71,28 @@ Drupal.wysiwyg.editor.attach.whizzywig = function(context, params, settings) {
   // Attach editor.
   makeWhizzyWig(params.field, (settings.buttons ? settings.buttons : 'all'));
   // Whizzywig fails to detect and set initial textarea contents.
-  var instance = $('#whizzy' + params.field).get(0);
-  if (instance) {
-    instance.contentWindow.document.body.innerHTML = tidyD($field.val());
-  }
+  $('#whizzy' + params.field).contents().find('body').html(tidyD($field.val()));
 };
 
 /**
  * Detach a single or all editors.
  */
-Drupal.wysiwyg.editor.detach.whizzywig = function(context, params) {
+Drupal.wysiwyg.editor.detach.whizzywig = function (context, params, trigger) {
   var detach = function (index) {
-    var id = whizzies[index];
-    var instance = $('#whizzy' + id).get(0);
-    if (!instance) {
-      return;
-    }
-    var body = instance.contentWindow.document.body;
-    var $field = $('#' + id);
-    // Whizzywig shows the original textarea in source mode.
-    if ($field.css('display') == 'block') {
-      body.innerHTML = $field.val();
-    }
-    body.innerHTML = tidyH(body.innerHTML);
+    var id = whizzies[index], $field = $('#' + id), instance = Drupal.wysiwyg.instances[id];
 
     // Save contents of editor back into textarea.
-    $field.val(window.get_xhtml ? get_xhtml(body) : body.innerHTML);
-    $field.val($field.val().replace(location.href + '#', '#'));
+    $field.val(instance.getContent());
+    // If the editor is just being serialized (not detached), our work is done.
+    if (trigger == 'serialize') {
+      return;
+    }
     // Remove editor instance.
     $('#' + id + '-whizzywig').remove();
     whizzies.splice(index, 1);
 
     // Restore original textarea styling.
-    var originalValues = Drupal.wysiwyg.instances[id];
-    $field.removeAttr('style');
-    $field.attr('style', originalValues.originalStyle);
+    $field.removeAttr('style').attr('style', instance.originalStyle);
   };
 
   if (typeof params != 'undefined') {
@@ -123,4 +110,45 @@ Drupal.wysiwyg.editor.detach.whizzywig = function(context, params) {
   }
 };
 
+/**
+ * Instance methods for Whizzywig.
+ */
+Drupal.wysiwyg.editor.instance.whizzywig = {
+  insert: function (content) {
+    // Whizzywig executes any string beginning with 'js:'.
+    insHTML(content.replace(/^js:/, 'js&colon;'));
+  },
+
+  setContent: function (content) {
+    var $field = $('#' + this.field);
+    // Whizzywig shows the original textarea in source mode.
+    if ($field.css('display') == 'block') {
+      $field.val(content);
+    }
+    else {
+      var doc = $('#whizzy' + this.field).contents()[0];
+      doc.open();
+      doc.write(content);
+      doc.close();
+    }
+  },
+
+  getContent: function () {
+    var $field = $('#' + this.field),
+    // Whizzywig shows the original textarea in source mode.
+    content = ($field.css('display') == 'block' ?
+      $field.val() : $('#whizzy' + this.field).contents().find('body').html()
+    );
+
+    content = tidyH(content);
+    // Whizzywig's get_xhtml() addon, if defined, expects a DOM node.
+    if ($.isFunction(window.get_xhtml)) {
+      var pre = document.createElement('pre');
+      pre.innerHTML = content;
+      content = get_xhtml(pre);
+    }
+    return content.replace(location.href + '#', '#');
+  }
+};
+
 })(jQuery);
diff --git a/sites/all/modules/wysiwyg/editors/js/wymeditor.js b/sites/all/modules/wysiwyg/editors/js/wymeditor.js
index ed66784831b3d4b6124452408f2198ddb8febb34..4989dc60beed5aa5146f1c01ad6dc99338012c4a 100644
--- a/sites/all/modules/wysiwyg/editors/js/wymeditor.js
+++ b/sites/all/modules/wysiwyg/editors/js/wymeditor.js
@@ -19,37 +19,55 @@ Drupal.wysiwyg.editor.attach.wymeditor = function (context, params, settings) {
 /**
  * Detach a single or all editors.
  */
-Drupal.wysiwyg.editor.detach.wymeditor = function (context, params) {
+Drupal.wysiwyg.editor.detach.wymeditor = function (context, params, trigger) {
   if (typeof params != 'undefined') {
     var $field = $('#' + params.field);
     var index = $field.data(WYMeditor.WYM_INDEX);
     if (typeof index != 'undefined') {
       var instance = WYMeditor.INSTANCES[index];
       instance.update();
-      $(instance._box).remove();
-      $(instance._element).show();
-      delete instance;
+      if (trigger != 'serialize') {
+        $(instance._box).remove();
+        $(instance._element).show();
+        delete instance;
+      }
+    }
+    if (trigger != 'serialize') {
+      $field.show();
     }
-    $field.show();
   }
   else {
     jQuery.each(WYMeditor.INSTANCES, function () {
       this.update();
-      $(this._box).remove();
-      $(this._element).show();
-      delete this;
+      if (trigger != 'serialize') {
+        $(this._box).remove();
+        $(this._element).show();
+        delete this;
+      }
     });
   }
 };
 
 Drupal.wysiwyg.editor.instance.wymeditor = {
   insert: function (content) {
+    this.getInstance().insert(content);
+  },
+
+  setContent: function (content) {
+    this.getInstance().html(content);
+  },
+
+  getContent: function () {
+    return this.getInstance().xhtml();
+  },
+
+  getInstance: function () {
     var $field = $('#' + this.field);
     var index = $field.data(WYMeditor.WYM_INDEX);
     if (typeof index != 'undefined') {
-      var instance = WYMeditor.INSTANCES[index];
-      instance.insert(content);
+      return WYMeditor.INSTANCES[index];
     }
+    return null;
   }
 };
 
diff --git a/sites/all/modules/wysiwyg/editors/js/yui.js b/sites/all/modules/wysiwyg/editors/js/yui.js
index ad8be368e7b3f931f373193ed6bcd4cdd9e8249b..3f4e7c63a31d9ba95040f9927e09f88a2a8b2cce 100644
--- a/sites/all/modules/wysiwyg/editors/js/yui.js
+++ b/sites/all/modules/wysiwyg/editors/js/yui.js
@@ -2,12 +2,70 @@
 
 /**
  * Attach this editor to a target element.
+ *
+ * Since buttons must be added before the editor is rendered, we add plugins
+ * buttons on attach event rather than in init.
  */
 Drupal.wysiwyg.editor.attach.yui = function(context, params, settings) {
   // Apply theme.
   $('#' + params.field).parent().addClass('yui-skin-' + settings.theme);
+
+  // Load plugins stylesheet.
+  for (var plugin in Drupal.settings.wysiwyg.plugins[params.format].drupal) {
+    settings.extracss += settings.extracss+' @import "'+Drupal.settings.wysiwyg.plugins[params.format].drupal[plugin].css+'"; ';
+  }
+
   // Attach editor.
   var editor = new YAHOO.widget.Editor(params.field, settings);
+
+  editor.on('toolbarLoaded', function() {
+    // Load Drupal plugins.
+    for (var plugin in Drupal.settings.wysiwyg.plugins[params.format].drupal) {
+      Drupal.wysiwyg.instances[params.field].addPlugin(plugin, Drupal.settings.wysiwyg.plugins[params.format].drupal[plugin], Drupal.settings.wysiwyg.plugins.drupal[plugin]);
+    }
+  });
+
+  // Allow plugins to act on setEditorHTML.
+  var oldSetEditorHTML = editor.setEditorHTML;
+  editor.setEditorHTML = function (content) {
+    for (var plugin in Drupal.settings.wysiwyg.plugins[params.format].drupal) {
+      var pluginSettings = Drupal.settings.wysiwyg.plugins.drupal[plugin];
+      if (typeof Drupal.wysiwyg.plugins[plugin].attach == 'function') {
+        content = Drupal.wysiwyg.plugins[plugin].attach(content, pluginSettings, params.field);
+        content = Drupal.wysiwyg.instances[params.field].prepareContent(content);
+      }
+    }
+    oldSetEditorHTML.call(this, content);
+  };
+
+  // Allow plugins to act on getEditorHTML.
+  var oldGetEditorHTML = editor.getEditorHTML;
+  editor.getEditorHTML = function () {
+    var content = oldGetEditorHTML.call(this);
+    for (var plugin in Drupal.settings.wysiwyg.plugins[params.format].drupal) {
+      var pluginSettings = Drupal.settings.wysiwyg.plugins.drupal[plugin];
+      if (typeof Drupal.wysiwyg.plugins[plugin].detach == 'function') {
+        content = Drupal.wysiwyg.plugins[plugin].detach(content, pluginSettings, params.field);
+      }
+    }
+    return content;
+  }
+
+  // Reload the editor contents to give Drupal plugins a chance to act.
+  editor.on('editorContentLoaded', function (e) {
+    e.target.setEditorHTML(oldGetEditorHTML.call(e.target));
+  });
+
+  editor.on('afterNodeChange', function (e) {
+    for (var plugin in Drupal.settings.wysiwyg.plugins[params.format].drupal) {
+      if (typeof Drupal.wysiwyg.plugins[plugin].isNode == 'function') {
+        if (Drupal.wysiwyg.plugins[plugin].isNode(e.target._getSelectedElement())) {
+          this.toolbar.selectButton(plugin);
+        }
+      }
+    }
+  });
+
   editor.render();
 };
 
@@ -16,19 +74,71 @@ Drupal.wysiwyg.editor.attach.yui = function(context, params, settings) {
  *
  * See Drupal.wysiwyg.editor.detach.none() for a full desciption of this hook.
  */
-Drupal.wysiwyg.editor.detach.yui = function(context, params) {
+Drupal.wysiwyg.editor.detach.yui = function (context, params, trigger) {
+  var method = (trigger && trigger == 'serialize') ? 'saveHTML' : 'destroy';
   if (typeof params != 'undefined') {
-    var instance = YAHOO.widget.EditorInfo.getEditorById(params.field);
+    var instance = YAHOO.widget.EditorInfo._instances[params.field];
     if (instance) {
-      instance.destroy();
+      instance[method]();
+      if (method == 'destroy') {
+        delete YAHOO.widget.EditorInfo._instances[params.field];
+      }
     }
   }
   else {
     for (var e in YAHOO.widget.EditorInfo._instances) {
       // Save contents of all editors back into textareas.
       var instance = YAHOO.widget.EditorInfo._instances[e];
-      instance.destroy();
+      instance[method]();
+      if (method == 'destroy') {
+        delete YAHOO.widget.EditorInfo._instances[e];
+      }
+    }
+  }
+};
+
+/**
+ * Instance methods for YUI Editor.
+ */
+Drupal.wysiwyg.editor.instance.yui = {
+  addPlugin: function (plugin, settings, pluginSettings) {
+    if (typeof Drupal.wysiwyg.plugins[plugin] != 'object') {
+      return;
     }
+    var editor = YAHOO.widget.EditorInfo.getEditorById(this.field);
+    var button = editor.toolbar.getButtonByValue(plugin);
+    $(button._button).parent().css('background', 'transparent url(' + settings.icon + ') no-repeat center');
+    // 'this' will reference the toolbar while inside the event handler.
+    var instanceId = this.field;
+    editor.toolbar.on(plugin + 'Click', function (e) {
+      var selectedElement = editor._getSelectedElement();
+      // @todo Using .html() will cause XTHML vs HTML conflicts.
+      var data = {
+        format: 'html',
+        node: selectedElement,
+        content: $(selectedElement).html()
+      };
+      Drupal.wysiwyg.plugins[plugin].invoke(data, pluginSettings, instanceId);
+    });
+  },
+
+  prepareContent: function (content) {
+    var editor = YAHOO.widget.EditorInfo.getEditorById(this.field);
+    content = editor.cleanHTML(content);
+    return content;
+  },
+
+  insert: function (content) {
+    YAHOO.widget.EditorInfo.getEditorById(this.field).cmd_inserthtml(content);
+  },
+
+  setContent: function (content) {
+    YAHOO.widget.EditorInfo.getEditorById(this.field).setEditorHTML(content);
+  },
+
+  getContent: function () {
+    var instance = YAHOO.widget.EditorInfo.getEditorById(this.field);
+    return instance.cleanHTML(instance.getEditorHTML(content));
   }
 };
 
diff --git a/sites/all/modules/wysiwyg/editors/nicedit.inc b/sites/all/modules/wysiwyg/editors/nicedit.inc
index 779660c99019f52f3f3680b636b90a393e5eaa46..6acc800dc22c56ec1d30cb22f894aa4f090479da 100644
--- a/sites/all/modules/wysiwyg/editors/nicedit.inc
+++ b/sites/all/modules/wysiwyg/editors/nicedit.inc
@@ -77,13 +77,13 @@ function wysiwyg_nicedit_settings($editor, $config, $theme) {
   // Add editor content stylesheet.
   if (isset($config['css_setting'])) {
     if ($config['css_setting'] == 'theme') {
-      $css = path_to_theme() . '/style.css';
+      $css = drupal_get_path('theme', variable_get('theme_default', NULL)) . '/style.css';
       if (file_exists($css)) {
         $settings['externalCSS'] = base_path() . $css;
       }
     }
-    else if ($config['css_setting'] == 'self' && isset($config['css_path'])) {
-      $settings['externalCSS'] = strtr($config['css_path'], array('%b' => base_path(), '%t' => path_to_theme()));
+    elseif ($config['css_setting'] == 'self' && isset($config['css_path'])) {
+      $settings['externalCSS'] = strtr($config['css_path'], array('%b' => base_path(), '%t' => drupal_get_path('theme', variable_get('theme_default', NULL))));
     }
   }
 
diff --git a/sites/all/modules/wysiwyg/editors/openwysiwyg.inc b/sites/all/modules/wysiwyg/editors/openwysiwyg.inc
index f521da56196163f8dea66bc75e182d468321b4f6..b3ad84dd050b621afb9f705dadd1762cb918ef23 100644
--- a/sites/all/modules/wysiwyg/editors/openwysiwyg.inc
+++ b/sites/all/modules/wysiwyg/editors/openwysiwyg.inc
@@ -102,8 +102,8 @@ function wysiwyg_openwysiwyg_settings($editor, $config, $theme) {
     if ($config['css_setting'] == 'theme') {
       $settings['CSSFile'] = reset(wysiwyg_get_css());
     }
-    else if ($config['css_setting'] == 'self' && isset($config['css_path'])) {
-      $settings['CSSFile'] = strtr($config['css_path'], array('%b' => base_path(), '%t' => path_to_theme()));
+    elseif ($config['css_setting'] == 'self' && isset($config['css_path'])) {
+      $settings['CSSFile'] = strtr($config['css_path'], array('%b' => base_path(), '%t' => drupal_get_path('theme', variable_get('theme_default', NULL))));
     }
   }
 
diff --git a/sites/all/modules/wysiwyg/editors/tinymce.inc b/sites/all/modules/wysiwyg/editors/tinymce.inc
index a7250f355707bbab3b633e4e358aa7a787e8613a..f3a92dd89622264b8f25aae7511ed76b4325b357 100644
--- a/sites/all/modules/wysiwyg/editors/tinymce.inc
+++ b/sites/all/modules/wysiwyg/editors/tinymce.inc
@@ -28,6 +28,7 @@ function wysiwyg_tinymce_editor() {
     ),
     'version callback' => 'wysiwyg_tinymce_version',
     'themes callback' => 'wysiwyg_tinymce_themes',
+    'init callback' => 'wysiwyg_tinymce_init',
     'settings callback' => 'wysiwyg_tinymce_settings',
     'plugin callback' => 'wysiwyg_tinymce_plugins',
     'plugin settings callback' => 'wysiwyg_tinymce_plugin_settings',
@@ -125,6 +126,40 @@ function wysiwyg_tinymce_themes($editor, $profile) {
   return array('advanced', 'simple');
 }
 
+/**
+ * Returns an initialization JavaScript for this editor library.
+ *
+ * @param array $editor
+ *   The editor library definition.
+ * @param string $library
+ *   The library variant key from $editor['libraries'].
+ * @param object $profile
+ *   The (first) wysiwyg editor profile.
+ *
+ * @return string
+ *   A string containing inline JavaScript to execute before the editor library
+ *   script is loaded.
+ */
+function wysiwyg_tinymce_init($editor, $library) {
+  // TinyMCE unconditionally searches for its library filename in SCRIPT tags on
+  // on the page upon loading the library in order to determine the base path to
+  // itself. When JavaScript aggregation is enabled, this search fails and all
+  // relative constructed paths within TinyMCE are broken. The library has a
+  // tinyMCE.baseURL property, but it is not publicly documented and thus not
+  // reliable. The official support forum suggests to solve the issue through
+  // the global window.tinyMCEPreInit variable also used by various serverside
+  // compressor scrips available from the official website.
+  // @see http://www.tinymce.com/forum/viewtopic.php?id=23286
+  $settings = drupal_json_encode(array(
+    'base' => base_path() . $editor['library path'],
+    'suffix' => (strpos($library, 'src') !== FALSE || strpos($library, 'dev') !== FALSE ? '_src' : ''),
+    'query' => '',
+  ));
+  return <<<EOL
+window.tinyMCEPreInit = $settings;
+EOL;
+}
+
 /**
  * Return runtime editor settings for a given wysiwyg profile.
  *
@@ -178,6 +213,7 @@ function wysiwyg_tinymce_settings($editor, $config, $theme) {
     $settings['remove_linebreaks'] = $config['remove_linebreaks'];
   }
   if (isset($config['verify_html'])) {
+    // TinyMCE performs a type-agnostic comparison on this particular setting.
     $settings['verify_html'] = (bool) $config['verify_html'];
   }
 
@@ -189,8 +225,8 @@ function wysiwyg_tinymce_settings($editor, $config, $theme) {
     if ($config['css_setting'] == 'theme') {
       $settings['content_css'] = implode(',', wysiwyg_get_css());
     }
-    else if ($config['css_setting'] == 'self' && isset($config['css_path'])) {
-      $settings['content_css'] = strtr($config['css_path'], array('%b' => base_path(), '%t' => path_to_theme()));
+    elseif ($config['css_setting'] == 'self' && isset($config['css_path'])) {
+      $settings['content_css'] = strtr($config['css_path'], array('%b' => base_path(), '%t' => drupal_get_path('theme', variable_get('theme_default', NULL))));
     }
   }
 
@@ -229,15 +265,15 @@ function wysiwyg_tinymce_settings($editor, $config, $theme) {
             $settings['extensions'][_wysiwyg_tinymce_plugin_name('add', $button)] = 1;
           }
           // Add external plugins to the list of extensions.
-          else if ($type == 'buttons' && empty($plugins[$plugin]['internal'])) {
+          elseif ($type == 'buttons' && empty($plugins[$plugin]['internal'])) {
             $settings['extensions'][_wysiwyg_tinymce_plugin_name('add', $plugin)] = 1;
           }
           // Add internal buttons that also need to be loaded as extension.
-          else if ($type == 'buttons' && !empty($plugins[$plugin]['load'])) {
+          elseif ($type == 'buttons' && !empty($plugins[$plugin]['load'])) {
             $settings['extensions'][$plugin] = 1;
           }
           // Add plain extensions.
-          else if ($type == 'extensions' && !empty($plugins[$plugin]['load'])) {
+          elseif ($type == 'extensions' && !empty($plugins[$plugin]['load'])) {
             $settings['extensions'][$plugin] = 1;
           }
           // Allow plugins to add valid HTML elements.
@@ -265,7 +301,7 @@ function wysiwyg_tinymce_settings($editor, $config, $theme) {
       $settings += array(
         'theme_advanced_resize_horizontal' => FALSE,
         'theme_advanced_resizing_use_cookie' => FALSE,
-        'theme_advanced_path_location' => isset($config['path_loc']) ? $config['path_loc'] : 'bottom',
+        'theme_advanced_statusbar_location' => isset($config['path_loc']) ? $config['path_loc'] : 'bottom',
         'theme_advanced_resizing' => isset($config['resizing']) ? $config['resizing'] : 1,
         'theme_advanced_toolbar_location' => isset($config['toolbar_loc']) ? $config['toolbar_loc'] : 'top',
         'theme_advanced_toolbar_align' => isset($config['toolbar_align']) ? $config['toolbar_align'] : 'left',
@@ -358,7 +394,7 @@ function _wysiwyg_tinymce_plugin_name($op, $name) {
     }
     return $name;
   }
-  else if ($op == 'remove') {
+  elseif ($op == 'remove') {
     if (strpos($name, '-') === 0) {
       return substr($name, 1);
     }
@@ -383,6 +419,8 @@ function wysiwyg_tinymce_plugins($editor) {
         'link' => t('Link'), 'unlink' => t('Unlink'), 'anchor' => t('Anchor'),
         'image' => t('Image'),
         'cleanup' => t('Clean-up'),
+        'formatselect' => t('Block format'), 'styleselect' => t('Styles'),
+        'fontselect' => t('Font'), 'fontsizeselect' => t('Font size'),
         'forecolor' => t('Forecolor'), 'backcolor' => t('Backcolor'),
         'sup' => t('Superscript'), 'sub' => t('Subscript'),
         'blockquote' => t('Blockquote'), 'code' => t('Source code'),
@@ -399,15 +437,15 @@ function wysiwyg_tinymce_plugins($editor) {
       'path' => $editor['library path'] . '/plugins/advhr',
       'buttons' => array('advhr' => t('Advanced horizontal rule')),
       'extended_valid_elements' => array('hr[class|width|size|noshade]'),
-      'url' => 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr',
+      'url' => 'http://www.tinymce.com/wiki.php/Plugin:advhr',
       'internal' => TRUE,
       'load' => TRUE,
     ),
     'advimage' => array(
       'path' => $editor['library path'] . '/plugins/advimage',
       'extensions' => array('advimage' => t('Advanced image')),
-      'extended_valid_elements' => array('img[src|alt|title|align|width|height|usemap|hspace|vspace|border|style|class|onmouseover|onmouseout|id|name]'),
-      'url' => 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage',
+      'extended_valid_elements' => array('img[src|alt|title|align|width|height|usemap|hspace|vspace|border|style|class|onmouseover|onmouseout|id|name|longdesc]'),
+      'url' => 'http://www.tinymce.com/wiki.php/Plugin:advimage',
       'internal' => TRUE,
       'load' => TRUE,
     ),
@@ -415,49 +453,42 @@ function wysiwyg_tinymce_plugins($editor) {
       'path' => $editor['library path'] . '/plugins/advlink',
       'extensions' => array('advlink' => t('Advanced link')),
       'extended_valid_elements' => array('a[name|href|target|title|class|onfocus|onblur|onclick|ondlbclick|onmousedown|onmouseup|onmouseover|onmouseout|onkeypress|onkeydown|onkeyup|id|style|rel]'),
-      'url' => 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink',
+      'url' => 'http://www.tinymce.com/wiki.php/Plugin:advlink',
       'internal' => TRUE,
       'load' => TRUE,
     ),
     'autosave' => array(
       'path' => $editor['library path'] . '/plugins/autosave',
       'extensions' => array('autosave' => t('Auto save')),
-      'url' => 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave',
+      'url' => 'http://www.tinymce.com/wiki.php/Plugin:autosave',
       'internal' => TRUE,
       'load' => TRUE,
     ),
     'contextmenu' => array(
       'path' => $editor['library path'] . '/plugins/contextmenu',
       'extensions' => array('contextmenu' => t('Context menu')),
-      'url' => 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu',
+      'url' => 'http://www.tinymce.com/wiki.php/Plugin:contextmenu',
       'internal' => TRUE,
       'load' => TRUE,
     ),
     'directionality' => array(
       'path' => $editor['library path'] . '/plugins/directionality',
       'buttons' => array('ltr' => t('Left-to-right'), 'rtl' => t('Right-to-left')),
-      'url' => 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality',
+      'url' => 'http://www.tinymce.com/wiki.php/Plugin:directionality',
       'internal' => TRUE,
       'load' => TRUE,
     ),
     'emotions' => array(
       'path' => $editor['library path'] . '/plugins/emotions',
       'buttons' => array('emotions' => t('Emotions')),
-      'url' => 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions',
+      'url' => 'http://www.tinymce.com/wiki.php/Plugin:emotions',
       'internal' => TRUE,
       'load' => TRUE,
     ),
-    'font' => array(
-      'path' => $editor['library path'] . '/plugins/font',
-      'buttons' => array('formatselect' => t('HTML block format'), 'fontselect' => t('Font'), 'fontsizeselect' => t('Font size'), 'styleselect' => t('Font style')),
-      'extended_valid_elements' => array('font[face|size|color|style],span[class|align|style]'),
-      'url' => 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/font',
-      'internal' => TRUE,
-    ),
     'fullscreen' => array(
       'path' => $editor['library path'] . '/plugins/fullscreen',
       'buttons' => array('fullscreen' => t('Fullscreen')),
-      'url' => 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen',
+      'url' => 'http://www.tinymce.com/wiki.php/Plugin:fullscreen',
       'internal' => TRUE,
       'load' => TRUE,
     ),
@@ -467,7 +498,7 @@ function wysiwyg_tinymce_plugins($editor) {
       'options' => array(
         'dialog_type' => array('modal'),
       ),
-      'url' => 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups',
+      'url' => 'http://www.tinymce.com/wiki.php/Plugin:inlinepopups',
       'internal' => TRUE,
       'load' => TRUE,
     ),
@@ -478,56 +509,56 @@ function wysiwyg_tinymce_plugins($editor) {
         'plugin_insertdate_dateFormat' => '%Y-%m-%d',
         'plugin_insertdate_timeFormat' => '%H:%M:%S',
       ),
-      'url' => 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime',
+      'url' => 'http://www.tinymce.com/wiki.php/Plugin:insertdatetime',
       'internal' => TRUE,
       'load' => TRUE,
     ),
     'layer' => array(
       'path' => $editor['library path'] . '/plugins/layer',
       'buttons' => array('insertlayer' => t('Insert layer'), 'moveforward' => t('Move forward'), 'movebackward' => t('Move backward'), 'absolute' => t('Absolute')),
-      'url' => 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer',
+      'url' => 'http://www.tinymce.com/wiki.php/Plugin:layer',
       'internal' => TRUE,
       'load' => TRUE,
     ),
     'paste' => array(
       'path' => $editor['library path'] . '/plugins/paste',
       'buttons' => array('pastetext' => t('Paste text'), 'pasteword' => t('Paste from Word'), 'selectall' => t('Select all')),
-      'url' => 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste',
+      'url' => 'http://www.tinymce.com/wiki.php/Plugin:paste',
       'internal' => TRUE,
       'load' => TRUE,
     ),
     'preview' => array(
       'path' => $editor['library path'] . '/plugins/preview',
       'buttons' => array('preview' => t('Preview')),
-      'url' => 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview',
+      'url' => 'http://www.tinymce.com/wiki.php/Plugin:preview',
       'internal' => TRUE,
       'load' => TRUE,
     ),
     'print' => array(
       'path' => $editor['library path'] . '/plugins/print',
       'buttons' => array('print' => t('Print')),
-      'url' => 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print',
+      'url' => 'http://www.tinymce.com/wiki.php/Plugin:print',
       'internal' => TRUE,
       'load' => TRUE,
     ),
     'searchreplace' => array(
       'path' => $editor['library path'] . '/plugins/searchreplace',
       'buttons' => array('search' => t('Search'), 'replace' => t('Replace')),
-      'url' => 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace',
+      'url' => 'http://www.tinymce.com/wiki.php/Plugin:searchreplace',
       'internal' => TRUE,
       'load' => TRUE,
     ),
     'style' => array(
       'path' => $editor['library path'] . '/plugins/style',
-      'buttons' => array('styleprops' => t('Style properties')),
-      'url' => 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style',
+      'buttons' => array('styleprops' => t('Advanced CSS styles')),
+      'url' => 'http://www.tinymce.com/wiki.php/Plugin:style',
       'internal' => TRUE,
       'load' => TRUE,
     ),
     'table' => array(
       'path' => $editor['library path'] . '/plugins/table',
       'buttons' => array('tablecontrols' => t('Table')),
-      'url' => 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/table',
+      'url' => 'http://www.tinymce.com/wiki.php/Plugin:table',
       'internal' => TRUE,
       'load' => TRUE,
     ),
@@ -537,7 +568,6 @@ function wysiwyg_tinymce_plugins($editor) {
       'path' => $editor['library path'] . '/plugins/flash',
       'buttons' => array('flash' => t('Flash')),
       'extended_valid_elements' => array('img[class|src|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name|obj|param|embed]'),
-      'url' => 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/flash',
       'internal' => TRUE,
       'load' => TRUE,
     );
@@ -546,14 +576,14 @@ function wysiwyg_tinymce_plugins($editor) {
     $plugins['media'] = array(
       'path' => $editor['library path'] . '/plugins/media',
       'buttons' => array('media' => t('Media')),
-      'url' => 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media',
+      'url' => 'http://www.tinymce.com/wiki.php/Plugin:media',
       'internal' => TRUE,
       'load' => TRUE,
     );
     $plugins['xhtmlxtras'] = array(
       'path' => $editor['library path'] . '/plugins/xhtmlxtras',
       'buttons' => array('cite' => t('Citation'), 'del' => t('Deleted'), 'abbr' => t('Abbreviation'), 'acronym' => t('Acronym'), 'ins' => t('Inserted'), 'attribs' => t('HTML attributes')),
-      'url' => 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras',
+      'url' => 'http://www.tinymce.com/wiki.php/Plugin:xhtmlxtras',
       'internal' => TRUE,
       'load' => TRUE,
     );
@@ -562,7 +592,7 @@ function wysiwyg_tinymce_plugins($editor) {
     $plugins['bbcode'] = array(
       'path' => $editor['library path'] . '/plugins/bbcode',
       'extensions' => array('bbcode' => t('BBCode')),
-      'url' => 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode',
+      'url' => 'http://www.tinymce.com/wiki.php/Plugin:bbcode',
       'internal' => TRUE,
       'load' => TRUE,
     );
@@ -570,7 +600,6 @@ function wysiwyg_tinymce_plugins($editor) {
       $plugins['safari'] = array(
         'path' => $editor['library path'] . '/plugins/safari',
         'extensions' => array('safari' => t('Safari compatibility')),
-        'url' => 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/safari',
         'internal' => TRUE,
         'load' => TRUE,
       );
@@ -580,7 +609,7 @@ function wysiwyg_tinymce_plugins($editor) {
     $plugins['autoresize'] = array(
       'path' => $editor['library path'] . '/plugins/autoresize',
       'extensions' => array('autoresize' => t('Auto resize')),
-      'url' => 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autoresize',
+      'url' => 'http://www.tinymce.com/wiki.php/Plugin:autoresize',
       'internal' => TRUE,
       'load' => TRUE,
     );
@@ -589,7 +618,7 @@ function wysiwyg_tinymce_plugins($editor) {
     $plugins['advlist'] = array(
       'path' => $editor['library path'] . '/plugins/advlist',
       'extensions' => array('advlist' => t('Advanced list')),
-      'url' => 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlist',
+      'url' => 'http://www.tinymce.com/wiki.php/Plugin:advlist',
       'internal' => TRUE,
       'load' => TRUE,
     );
@@ -598,11 +627,24 @@ function wysiwyg_tinymce_plugins($editor) {
     $plugins['wordcount'] = array(
       'path' => $editor['library path'] . '/plugins/wordcount',
       'extensions' => array('wordcount' => t('Word count')),
-      'url' => 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/wordcount',
       'internal' => TRUE,
       'load' => TRUE,
     );
   }
+  if (version_compare($editor['installed version'], '3.4.1', '>=')) {
+    $plugins['lists'] = array(
+      'path' => $editor['library path'] . 'plugins/lists',
+      'extensions' => array('lists' => t('List normalizer')),
+      'url' => 'http://www.tinymce.com/wiki.php/Plugin:lists',
+      'internal' => TRUE,
+      'load' => TRUE,
+      'extended_valid_elements' => array(
+        'li[class|dir|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title|type|value]',
+        'ol[class|compact|dir|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|start|style|title|type]',
+        'ul[class|compact|dir|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title|type]',
+      ),
+    );
+  }
   return $plugins;
 }
 
diff --git a/sites/all/modules/wysiwyg/editors/whizzywig.inc b/sites/all/modules/wysiwyg/editors/whizzywig.inc
index d82cc0fee17876695e785f16cdd552bc8cd52ef0..acfc7de327ed1e5d7828623f8a03cc21d8b198fb 100644
--- a/sites/all/modules/wysiwyg/editors/whizzywig.inc
+++ b/sites/all/modules/wysiwyg/editors/whizzywig.inc
@@ -104,13 +104,13 @@ function wysiwyg_whizzywig_settings($editor, $config, $theme) {
   // Add editor content stylesheet.
   if (isset($config['css_setting'])) {
     if ($config['css_setting'] == 'theme') {
-      $css = path_to_theme() . '/style.css';
+      $css = drupal_get_path('theme', variable_get('theme_default', NULL)) . '/style.css';
       if (file_exists($css)) {
         $settings['externalCSS'] = base_path() . $css;
       }
     }
-    else if ($config['css_setting'] == 'self' && isset($config['css_path'])) {
-      $settings['externalCSS'] = strtr($config['css_path'], array('%b' => base_path(), '%t' => path_to_theme()));
+    elseif ($config['css_setting'] == 'self' && isset($config['css_path'])) {
+      $settings['externalCSS'] = strtr($config['css_path'], array('%b' => base_path(), '%t' => drupal_get_path('theme', variable_get('theme_default', NULL))));
     }
   }
 
diff --git a/sites/all/modules/wysiwyg/editors/wymeditor.inc b/sites/all/modules/wysiwyg/editors/wymeditor.inc
index 3e8ffd24e698f53bb524424103663af981b792d2..5f44d641599c7053b930c64d56b3026f1ca99976 100644
--- a/sites/all/modules/wysiwyg/editors/wymeditor.inc
+++ b/sites/all/modules/wysiwyg/editors/wymeditor.inc
@@ -172,10 +172,11 @@ function wysiwyg_wymeditor_settings($editor, $config, $theme) {
   if (isset($config['css_setting'])) {
     if ($config['css_setting'] == 'theme') {
       // WYMeditor only supports one CSS file currently.
-      $settings['stylesheet'] = reset(wysiwyg_get_css());
+      $css = wysiwyg_get_css();
+      $settings['stylesheet'] = reset($css);
     }
-    else if ($config['css_setting'] == 'self' && isset($config['css_path'])) {
-      $settings['stylesheet'] = strtr($config['css_path'], array('%b' => base_path(), '%t' => path_to_theme()));
+    elseif ($config['css_setting'] == 'self' && isset($config['css_path'])) {
+      $settings['stylesheet'] = strtr($config['css_path'], array('%b' => base_path(), '%t' => drupal_get_path('theme', variable_get('theme_default', NULL))));
     }
   }
 
@@ -190,7 +191,7 @@ function wysiwyg_wymeditor_plugins($editor) {
     'default' => array(
       'buttons' => array(
         'Bold' => t('Bold'), 'Italic' => t('Italic'),
-        'InsertOrderedList' => t('Bullet list'), 'InsertUnorderedList' => t('Numbered list'),
+        'InsertOrderedList' => t('Numbered list'), 'InsertUnorderedList' => t('Bullet list'),
         'Outdent' => t('Outdent'), 'Indent' => t('Indent'),
         'Undo' => t('Undo'), 'Redo' => t('Redo'),
         'CreateLink' => t('Link'), 'Unlink' => t('Unlink'),
@@ -212,22 +213,22 @@ function wysiwyg_wymeditor_plugins($editor) {
  */
 function _wysiwyg_wymeditor_button_info() {
   return array(
-    'Bold' => array('title'=> 'Strong', 'css'=> 'wym_tools_strong'),
-    'Italic' => array('title'=> 'Emphasis', 'css'=> 'wym_tools_emphasis'),
-    'Superscript' => array('title'=> 'Superscript', 'css'=> 'wym_tools_superscript'),
-    'Subscript' => array('title'=> 'Subscript', 'css'=> 'wym_tools_subscript'),
-    'InsertOrderedList' => array('title'=> 'Ordered_List', 'css'=> 'wym_tools_ordered_list'),
-    'InsertUnorderedList' => array('title'=> 'Unordered_List', 'css'=> 'wym_tools_unordered_list'),
-    'Indent' => array('title'=> 'Indent', 'css'=> 'wym_tools_indent'),
-    'Outdent' => array('title'=> 'Outdent', 'css'=> 'wym_tools_outdent'),
-    'Undo' => array('title'=> 'Undo', 'css'=> 'wym_tools_undo'),
-    'Redo' => array('title'=> 'Redo', 'css'=> 'wym_tools_redo'),
-    'CreateLink' => array('title'=> 'Link', 'css'=> 'wym_tools_link'),
-    'Unlink' => array('title'=> 'Unlink', 'css'=> 'wym_tools_unlink'),
-    'InsertImage' => array('title'=> 'Image', 'css'=> 'wym_tools_image'),
-    'InsertTable' => array('title'=> 'Table', 'css'=> 'wym_tools_table'),
-    'Paste' => array('title'=> 'Paste_From_Word', 'css'=> 'wym_tools_paste'),
-    'ToggleHtml' => array('title'=> 'HTML', 'css'=> 'wym_tools_html'),
-    'Preview' => array('title'=> 'Preview', 'css'=> 'wym_tools_preview'),
+    'Bold' => array('title' => 'Strong', 'css' => 'wym_tools_strong'),
+    'Italic' => array('title' => 'Emphasis', 'css' => 'wym_tools_emphasis'),
+    'Superscript' => array('title' => 'Superscript', 'css' => 'wym_tools_superscript'),
+    'Subscript' => array('title' => 'Subscript', 'css' => 'wym_tools_subscript'),
+    'InsertOrderedList' => array('title' => 'Ordered_List', 'css' => 'wym_tools_ordered_list'),
+    'InsertUnorderedList' => array('title' => 'Unordered_List', 'css' => 'wym_tools_unordered_list'),
+    'Indent' => array('title' => 'Indent', 'css' => 'wym_tools_indent'),
+    'Outdent' => array('title' => 'Outdent', 'css' => 'wym_tools_outdent'),
+    'Undo' => array('title' => 'Undo', 'css' => 'wym_tools_undo'),
+    'Redo' => array('title' => 'Redo', 'css' => 'wym_tools_redo'),
+    'CreateLink' => array('title' => 'Link', 'css' => 'wym_tools_link'),
+    'Unlink' => array('title' => 'Unlink', 'css' => 'wym_tools_unlink'),
+    'InsertImage' => array('title' => 'Image', 'css' => 'wym_tools_image'),
+    'InsertTable' => array('title' => 'Table', 'css' => 'wym_tools_table'),
+    'Paste' => array('title' => 'Paste_From_Word', 'css' => 'wym_tools_paste'),
+    'ToggleHtml' => array('title' => 'HTML', 'css' => 'wym_tools_html'),
+    'Preview' => array('title' => 'Preview', 'css' => 'wym_tools_preview'),
   );
 }
diff --git a/sites/all/modules/wysiwyg/editors/yui.inc b/sites/all/modules/wysiwyg/editors/yui.inc
index 7e3c697c110e2fa2bef1c1803a8eed03a22dc744..36d0a5968650e866231c53b79056b8e4fc97f247 100644
--- a/sites/all/modules/wysiwyg/editors/yui.inc
+++ b/sites/all/modules/wysiwyg/editors/yui.inc
@@ -45,6 +45,14 @@ function wysiwyg_yui_editor() {
     'load callback' => 'wysiwyg_yui_load',
     'settings callback' => 'wysiwyg_yui_settings',
     'plugin callback' => 'wysiwyg_yui_plugins',
+    'plugin settings callback' => 'wysiwyg_yui_plugin_settings',
+    'proxy plugin' => array(
+      'drupal' => array(
+        'load' => TRUE,
+        'proxy' => TRUE,
+      ),
+    ),
+    'proxy plugin settings callback' => 'wysiwyg_yui_proxy_plugin_settings',
     'versions' => array(
       '2.7.0' => array(
         'js files' => array('yui.js'),
@@ -177,7 +185,7 @@ function wysiwyg_yui_settings($editor, $config, $theme) {
             }
           }
         }
-        else if ($button == 'fontname') {
+        elseif ($button == 'fontname') {
           $extra = array('menu' => array(
             array('text' => 'Arial', 'checked' => TRUE),
             array('text' => 'Arial Black'),
@@ -202,8 +210,8 @@ function wysiwyg_yui_settings($editor, $config, $theme) {
     if ($config['css_setting'] == 'theme') {
       $settings['extracss'] = wysiwyg_get_css();
     }
-    else if ($config['css_setting'] == 'self' && isset($config['css_path'])) {
-      $settings['extracss'] = strtr($config['css_path'], array('%b' => base_path(), '%t' => path_to_theme()));
+    elseif ($config['css_setting'] == 'self' && isset($config['css_path'])) {
+      $settings['extracss'] = strtr($config['css_path'], array('%b' => base_path(), '%t' => drupal_get_path('theme', variable_get('theme_default', NULL))));
       $settings['extracss'] = explode(',', $settings['extracss']);
     }
     // YUI only supports inline CSS, so we need to use @import directives.
@@ -233,8 +241,7 @@ function wysiwyg_yui_button_setting($editor, $plugin, $button, $extra = array())
   static $plugins;
 
   if (!isset($plugins)) {
-    // @todo Invoke all enabled plugins, not just internals.
-    $plugins = wysiwyg_yui_plugins($editor);
+    $plugins = wysiwyg_get_plugins($editor['name']);
   }
 
   // Return a simple separator.
@@ -269,6 +276,41 @@ function wysiwyg_yui_button_setting($editor, $plugin, $button, $extra = array())
   return $button;
 }
 
+/**
+ * Build a JS settings array of native external plugins that need to be loaded separately.
+ */
+function wysiwyg_yui_plugin_settings($editor, $profile, $plugins) {
+  $settings = array();
+  foreach ($plugins as $name => $plugin) {
+    if (!empty($plugin['load'])) {
+      // Add path for native external plugins; internal ones are loaded
+      // automatically.
+      if (empty($plugin['internal']) && isset($plugin['path'])) {
+        $settings[$name] = base_path() . $plugin['path'];
+      }
+    }
+  }
+  return $settings;
+}
+
+/**
+ * Build a JS settings array for Drupal plugins loaded via the proxy plugin.
+ */
+function wysiwyg_yui_proxy_plugin_settings($editor, $profile, $plugins) {
+  $settings = array();
+  foreach ($plugins as $name => $plugin) {
+    // Populate required plugin settings.
+    $settings[$name] = $plugin['dialog settings'] + array(
+      'title' => $plugin['title'],
+      'icon' => base_path() . $plugin['icon path'] . '/' . $plugin['icon file'],
+      'iconTitle' => $plugin['icon title'],
+      // @todo These should only be set if the plugin defined them.
+      'css' => base_path() . $plugin['css path'] . '/' . $plugin['css file'],
+    );
+  }
+  return $settings;
+}
+
 /**
  * Return internal plugins for this editor; semi-implementation of hook_wysiwyg_plugin().
  */
diff --git a/sites/all/modules/wysiwyg/tests/wysiwyg_test.info b/sites/all/modules/wysiwyg/tests/wysiwyg_test.info
index 1314897d1c9b89ad8f828f6590996330445506db..feee124436332e8a3786b30ad54a289ee373f140 100644
--- a/sites/all/modules/wysiwyg/tests/wysiwyg_test.info
+++ b/sites/all/modules/wysiwyg/tests/wysiwyg_test.info
@@ -6,9 +6,9 @@ hidden = TRUE
 dependencies[] = wysiwyg
 files[] = wysiwyg_test.module
 
-; Information added by drupal.org packaging script on 2011-06-19
-version = "7.x-2.1"
+; Information added by drupal.org packaging script on 2012-10-02
+version = "7.x-2.2"
 core = "7.x"
 project = "wysiwyg"
-datestamp = "1308450722"
+datestamp = "1349213776"
 
diff --git a/sites/all/modules/wysiwyg/tests/wysiwyg_test.module b/sites/all/modules/wysiwyg/tests/wysiwyg_test.module
index c908e29cf4fcf4016dba53d6e09918cc365f9e76..c2dd9a917af3a43bf7830c5872d91d8bfc9adaa3 100644
--- a/sites/all/modules/wysiwyg/tests/wysiwyg_test.module
+++ b/sites/all/modules/wysiwyg/tests/wysiwyg_test.module
@@ -5,3 +5,46 @@
  * Testing functionality for Wysiwyg module.
  */
 
+/**
+ * Implements hook_menu().
+ */
+function wysiwyg_test_menu() {
+  $items['wysiwyg-test/ajax'] = array(
+    'title' => 'Ajaxified form',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('wysiwyg_test_ajax_form'),
+    'access callback' => TRUE,
+  );
+  return $items;
+}
+
+/**
+ * Form constructor for an ajaxified form lazy-loading a textarea.
+ */
+function wysiwyg_test_ajax_form($form, &$form_state) {
+  $form['enable'] = array(
+    '#type' => 'checkbox',
+    '#title' => 'Load textarea',
+    '#ajax' => array(
+      'callback' => 'wysiwyg_test_ajax_form_callback',
+      'wrapper' => 'ajax-wrapper',
+    ),
+  );
+  $form['wrapper'] = array(
+    '#type' => 'container',
+    '#id' => 'ajax-wrapper',
+  );
+  return $form;
+}
+
+/**
+ * #ajax callback for wysiwyg_test_ajax_form().
+ */
+function wysiwyg_test_ajax_form_callback($form, &$form_state) {
+  $form['body'] = array(
+    '#type' => 'text_format',
+    '#default_value' => '',
+  );
+  form_builder($form['form_id']['#value'], $form, $form_state);
+  return $form['body'];
+}
diff --git a/sites/all/modules/wysiwyg/translations/da.po b/sites/all/modules/wysiwyg/translations/da.po
deleted file mode 100644
index 49838bcab4adec173f0569e6ff39f54dd496b0df..0000000000000000000000000000000000000000
--- a/sites/all/modules/wysiwyg/translations/da.po
+++ /dev/null
@@ -1,436 +0,0 @@
-# Danish translation of Drupal (wysiwyg_editor.module)
-# Copyright 2006 netbjarne <netbjarne@gmail.com>
-# Copyright 2007 Morten Wulff <wulff@ratatosk.net>
-msgid ""
-msgstr ""
-"Project-Id-Version: Danish translation of Drupal (wysiwyg_editor.module) $Id: da.po,v 1.2 2008/05/30 02:19:15 sun Exp $\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: 2007-12-16 19:47+0100\n"
-"Last-Translator: Morten Wulff <wulff@ratatosk.net>\n"
-"Language-Team: Danish <l10n@drupaldanmark.dk>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Poedit-Language: Danish\n"
-"X-Poedit-Country: DENMARK\n"
-
-#: wysiwyg_editor.module:17
-#: wysiwyg_editor.info:0
-msgid "TinyMCE"
-msgstr "TinyMCE"
-
-#: wysiwyg_editor.module:19
-msgid "Configure the rich editor."
-msgstr "Konfigurer editoren."
-
-#: wysiwyg_editor.module:116
-msgid "enable rich-text"
-msgstr "aktiver avanceret redigering"
-
-#: wysiwyg_editor.module:117
-msgid "disable rich-text"
-msgstr "deaktiver avanceret redigering"
-
-#: wysiwyg_editor.module:169
-msgid "Your current web browser does not support WYSIWYG editing."
-msgstr "Din browser understøtter ikke WYSIWYG redigering."
-
-#: wysiwyg_editor.module:250
-msgid "TinyMCE rich-text settings"
-msgstr "TinyMCE "
-
-#: wysiwyg_editor.module:258
-#: ;701
-msgid "Default state"
-msgstr "Standardtilstand"
-
-#: wysiwyg_editor.module:260
-#: ;703
-msgid "disabled"
-msgstr "deaktiveret"
-
-#: wysiwyg_editor.module:260
-#: ;703
-msgid "enabled"
-msgstr "aktiveret"
-
-#: wysiwyg_editor.module:261
-msgid "Should rich-text editing be enabled or disabled by default in textarea fields?"
-msgstr "Skal avanceret redigering være aktiveret for tekstfelter?"
-
-#: wysiwyg_editor.module:443
-msgid "administer"
-msgstr "administrer"
-
-#: wysiwyg_editor.module:444
-#: ;47;0
-msgid "wysiwyg_editor"
-msgstr "TinyMCE"
-
-#: wysiwyg_editor.module:445
-msgid "Add new TinyMCE profile"
-msgstr "Tilføj TinyMCE profil"
-
-#: wysiwyg_editor.module:451
-msgid "Edit wysiwyg_editor profile"
-msgstr "Rediger TinyMCE profil"
-
-#: wysiwyg_editor.module:457
-msgid "Deleted profile"
-msgstr "Profil slettet"
-
-#: wysiwyg_editor.module:461
-#: ;666
-msgid "Create profile"
-msgstr "Opret Profil"
-
-#: wysiwyg_editor.module:462
-#: ;670
-msgid "Update profile"
-msgstr "Opdater profil"
-
-#: wysiwyg_editor.module:465
-msgid "Your TinyMCE profile has been updated."
-msgstr "TinyMCE profil opdateret."
-
-#: wysiwyg_editor.module:465
-msgid "Your TinyMCE profile has been created."
-msgstr "TinyMCE profil oprettet."
-
-#: wysiwyg_editor.module:474
-msgid "TinyMCE settings"
-msgstr "TinyMCE indstillinger"
-
-#: wysiwyg_editor.module:478
-msgid "Could not find the TinyMCE engine installed at <strong>!wysiwyg_editor-directory</strong>. Please <a href=\"http://wysiwyg_editor.moxiecode.com/\">download TinyMCE</a>, uncompress it and copy the folder into !wysiwyg_editor-path."
-msgstr "Kan ikke finde TinyMCE i kataloget <strong>!wysiwyg_editor-directory</strong>. <a href=\"http://wysiwyg_editor.moxiecode.com/\">Hent TinyMCE</a>, udpak den og kopier kataloget til !wysiwyg_editor-path."
-
-#: wysiwyg_editor.module:658
-msgid "You must <a href=\"!access-control-url\">assign</a> at least one role with the 'access wysiwyg_editor' permission before creating a profile."
-msgstr "Du skal <a href=\"!access-control-url\">give</a> mindst én rolle tilladelsen 'brug TinyMCE' før du kan oprette en profil."
-
-#: wysiwyg_editor.module:661
-msgid "You will not be allowed to create a new profile since all user roles have already been assigned profiles. Either remove an existing wysiwyg_editor profile from at least one role or assign another role the 'access wysiwyg_editor' permission."
-msgstr "Du kan ikke oprette en ny profil, da alle roller allerede har fået tildelt profiler. Fjern en eksisterende TinyMCE profil fra en rolle, eller giv endnu en rolle tilladelsen 'brug TinyMCE'."
-
-#: wysiwyg_editor.module:664
-msgid "Not all user roles are shown since they already have wysiwyg_editor profiles. You must first unassign profiles in order to add them to a new one."
-msgstr "Ikke alle roller vises, da de allerede er tildelt TinyMCE profiler. Fratag en rolles profil, for at tildele en anden rolle profilen."
-
-#: wysiwyg_editor.module:675
-msgid "Basic setup"
-msgstr "Grundlæggende indstillinger"
-
-#: wysiwyg_editor.module:682
-msgid "Profile name"
-msgstr "Profilnavn"
-
-#: wysiwyg_editor.module:686
-msgid "Enter a name for this profile. This name is only visible within the wysiwyg_editor administration page."
-msgstr "Indtast et profilnavn. Navnet er kun synligt på TinyMCE administrationssiden."
-
-#: wysiwyg_editor.module:692
-msgid "Roles allowed to use this profile"
-msgstr "Roller der kan benytte denne profil"
-
-#: wysiwyg_editor.module:695
-msgid "Check at least one role. Only roles with 'access wysiwyg_editor' permission will be shown here."
-msgstr "Vælg mindst én rolle. Kun roller med tilladelsen 'brug TinyMCE' vises her."
-
-#: wysiwyg_editor.module:704
-msgid "Default editor state for users in this profile. Users will be able to override this state if the next option is enabled."
-msgstr "Standard TinyMCE tilstand for brugere med denne profil. Brugere har mulighed for at ændre denne tilstand, hvis næste valgmulighed er slået til."
-
-#: wysiwyg_editor.module:709
-msgid "Allow users to choose default"
-msgstr "Tillad bruger at vælge standardtilstand"
-
-#: wysiwyg_editor.module:711
-#: ;719;743;877;901;909;917
-msgid "false"
-msgstr "falsk"
-
-#: wysiwyg_editor.module:711
-#: ;719;743;877;901;909;917
-msgid "true"
-msgstr "sand"
-
-#: wysiwyg_editor.module:712
-msgid "If allowed, users will be able to choose their own TinyMCE default state by visiting their profile page."
-msgstr "Hvis tilladt, kan brugere selv vælge TinyMCE's standardtilstand på deres profilside."
-
-#: wysiwyg_editor.module:717
-msgid "Show disable/enable rich text editor toggle"
-msgstr "Vis omskifter for avanceret redigering"
-
-#: wysiwyg_editor.module:720
-msgid "Whether or not to show the disable/enable rich text editor toggle below the textarea. If false, editor defaults to the global default or user default (see above)."
-msgstr "Hvorvidt omskifteren for avanceret redigering skal vises under tekstfelter. Hvis slået fra, vil TinyMCE benytte sig af global eller brugervalgt indstilling (se ovenfor)."
-
-#: wysiwyg_editor.module:733
-msgid "Language"
-msgstr "Sprog"
-
-#: wysiwyg_editor.module:736
-msgid "The language for the TinyMCE interface. Language codes based on the <a href=\"http://www.loc.gov/standards/iso639-2/englangn.html\">ISO-639-2</a> format."
-msgstr "Sproget der anvendes i TinyMCE's brugerflade. Sprogkoder er baseret på <a href=\"http://www.loc.gov/standards/iso639-2/englangn.html\">ISO-639-2</a> format."
-
-#: wysiwyg_editor.module:741
-msgid "Safari browser warning"
-msgstr "Safari browser advarsel."
-
-#: wysiwyg_editor.module:744
-msgid "TinyMCE support for the Safari web browser is experimental and a warning message is displayed when that browser is detected. You can disable this message here."
-msgstr "TinyMCE's understøttelse af Safari browseren er eksperimentel, og der vises en advarsel hvis Safari browseren benyttes. Du kan deaktivere denne advarsel her."
-
-#: wysiwyg_editor.module:749
-msgid "Visibility"
-msgstr "Synlighed"
-
-#: wysiwyg_editor.module:769
-msgid "Show on every page except the listed pages."
-msgstr "Vis på alle sider undtaget de angivne."
-
-#: wysiwyg_editor.module:769
-msgid "Show on only the listed pages."
-msgstr "Vis kun på de angivne sider."
-
-#: wysiwyg_editor.module:770
-msgid "Enter one page per line as Drupal paths. The '*' character is a wildcard. Example paths are '!blog' for the blog page and !blog-wildcard for every personal blog. !front is the front page."
-msgstr "Indtast én side pr. linje som Drupal-stier. Brug '*'-tegnet som joker. Indtast f.eks. '!blog' for blogsiden og !blog-wildcard for alle personlige blogs. !front er forsiden."
-
-#: wysiwyg_editor.module:773
-msgid "Show if the following PHP code returns <code>TRUE</code> (PHP-mode, experts only)."
-msgstr "Vis hvis følgende PHP kode returnerer <code>SAND</code> (PHP tilstand, kun for eksperter)."
-
-#: wysiwyg_editor.module:774
-msgid "If the PHP-mode is chosen, enter PHP code between !php. Note that executing incorrect PHP-code can break your Drupal site."
-msgstr "Hvis PHP tilstanden er valgt, kan du indtaste PHP kode mellem !php. Bemærk at ugyldig PHP kode kan få dit Drupal-netsted til at holde op med at virke."
-
-#: wysiwyg_editor.module:778
-msgid "Show wysiwyg_editor on specific pages"
-msgstr "Vis TinyMCE på specifikke sider"
-
-#: wysiwyg_editor.module:784
-msgid "Pages"
-msgstr "Sider"
-
-#: wysiwyg_editor.module:792
-msgid "Buttons and plugins"
-msgstr "Knapper og udvidelsesmoduler"
-
-#: wysiwyg_editor.module:844
-msgid "Editor appearance"
-msgstr "TinyMCE's fremtoning"
-
-#: wysiwyg_editor.module:851
-msgid "Toolbar location"
-msgstr "Værktøjslinjens placering"
-
-#: wysiwyg_editor.module:853
-#: ;869
-msgid "bottom"
-msgstr "bund"
-
-#: wysiwyg_editor.module:853
-#: ;869
-msgid "top"
-msgstr "top"
-
-#: wysiwyg_editor.module:854
-msgid "Show toolbar at the top or bottom of the editor area?"
-msgstr "Vis værktøjslinjen over eller under tekstområdet?"
-
-#: wysiwyg_editor.module:859
-msgid "Toolbar alignment"
-msgstr "Værktøjslinjens justering"
-
-#: wysiwyg_editor.module:861
-msgid "center"
-msgstr "centreret"
-
-#: wysiwyg_editor.module:861
-msgid "left"
-msgstr "venstre"
-
-#: wysiwyg_editor.module:861
-msgid "right"
-msgstr "højre"
-
-#: wysiwyg_editor.module:862
-msgid "Align tool icons left, center, or right within the toolbar."
-msgstr "Placer knapper til venstre, i midten eller til højre i værktøjslinjen."
-
-#: wysiwyg_editor.module:867
-msgid "Path location"
-msgstr "Placering af sti"
-
-#: wysiwyg_editor.module:869
-msgid "none"
-msgstr "ingen"
-
-#: wysiwyg_editor.module:870
-msgid "Path to html elements (i.e. \"body>table>tr>td\"). Show at top, bottom, or not at all."
-msgstr "Sti til HTML elementer (f.eks. \"body>table>tr>td\"). Vis for oven, for neden, eller slet ikke."
-
-#: wysiwyg_editor.module:875
-msgid "Enable resizing button"
-msgstr "Aktiver knap til ændring af størrelse"
-
-#: wysiwyg_editor.module:878
-msgid " This option gives you the ability to enable/disable the resizing button. If enabled the <strong>Path location toolbar</strong> must be set to \"top\" or \"bottom\" in order to display the resize icon."
-msgstr "Mulighed for at aktivere knap til ændring af størrelse. Hvis aktiveret, skal <strong>Placering af sti</strong> være  \"for oven\" eller \"for neden\"."
-
-#: wysiwyg_editor.module:883
-msgid "Block formats"
-msgstr "Blokformater"
-
-#: wysiwyg_editor.module:887
-msgid "Comma separated list of HTML block formats. You can only remove elements, not add."
-msgstr "Komma separeret liste af HTML blokformater. Du kan kun fjerne elementer, ikke tilføje."
-
-#: wysiwyg_editor.module:892
-msgid "Cleanup and output"
-msgstr "Oprydning og uddata"
-
-#: wysiwyg_editor.module:899
-msgid "Verify HTML"
-msgstr "Kontroller HTML"
-
-#: wysiwyg_editor.module:902
-msgid "Should the HTML contents be verified or not? Verifying will strip &lt;head&gt tags, so choose false if you will be editing full page HTML."
-msgstr "Kontrol af HTML fjerner &lt;head&gt mærker, så deaktiver HTML kontrol, hvis du redigerer hele HTML sider."
-
-#: wysiwyg_editor.module:907
-msgid "Preformatted"
-msgstr "Preformatteret"
-
-#: wysiwyg_editor.module:910
-msgid "If this option is set to true, the editor will insert TAB characters on tab and preserve other whitespace characters just like a PRE HTML element does."
-msgstr "Hvis aktiveret, vil TinyMCE indsætte tabulator tegn og bevare andre mellemrum, som PRE HTML element gør det."
-
-#: wysiwyg_editor.module:915
-msgid "Convert &lt;font&gt; tags to styles"
-msgstr "Konverter &lt;font&gt; mærker til typografier"
-
-#: wysiwyg_editor.module:918
-msgid "If you set this option to true, font size, font family, font color and font background color will be replaced by inline styles."
-msgstr "Hvis aktiveret, vil font size, font family, font color og font background color blive erstattet med indlejrede typografier."
-
-#: wysiwyg_editor.module:923
-msgid "Remove linebreaks"
-msgstr "Fjern linjeskift"
-
-#: wysiwyg_editor.module:926
-msgid "Set this option to false to prevent TinyMCE from removing linebreaks from existing nodes.  True avoids conflicts with some filters."
-msgstr "Sæt denne til falsk for at forhindre TinyMCE i at fjerne linjeskift fra eksisterende indholdselementer. Vælges sand undgås konflikt med visse filtre."
-
-#: wysiwyg_editor.module:931
-msgid "Apply source formatting"
-msgstr "Anvend kilde-formattering"
-
-#: wysiwyg_editor.module:934
-msgid "This option makes TinyMCE apply source formatting.  Set this to true for a cleaner HTML source.  Choose false to avoid conflicts with some filters."
-msgstr "Anvend kilde-formatering. Vælg sand for at få renere HTML. Vælg falsk for at undgå konflikt med visse filtre."
-
-#: wysiwyg_editor.module:939
-msgid "CSS"
-msgstr "CSS"
-
-#: wysiwyg_editor.module:946
-msgid "Editor CSS"
-msgstr "TinyMCE CSS"
-
-#: wysiwyg_editor.module:948
-msgid "use theme css"
-msgstr "brug tema CSS"
-
-#: wysiwyg_editor.module:948
-msgid "define css"
-msgstr "definer CSS"
-
-#: wysiwyg_editor.module:948
-msgid "tinyMCE default"
-msgstr "TinyMCE standard"
-
-#: wysiwyg_editor.module:949
-msgid "Defines the CSS to be used in the editor area.<br />use theme css - load style.css from current site theme.<br/>define css - enter path for css file below.<br />tinyMCE default - uses default CSS from editor."
-msgstr "Afgør hvilken CSS der benyttes i TinyMCE.<br />Brug tema CSS - hent style.css fra det nuværende tema.<br/>Definer CSS - indtast stien til css filen herunder.<br />TinyMCE standard - bruger standard CSS fra editoren."
-
-#: wysiwyg_editor.module:954
-msgid "CSS path"
-msgstr "CSS sti"
-
-#: wysiwyg_editor.module:958
-msgid "Enter path to CSS file (<em>example: \"css/editor.css\"</em>) or a list of css files seperated by a comma (<em>example: /themes/garland/style.css,http://domain.com/customMCE.css</em>).<br />Macros: %h (host name: http://www.example.com/), %t (path to theme: theme/yourtheme/)<br />Be sure to select \"define css\" above."
-msgstr "Indtast stien til CSS filen (f.eks. \"css/editor.css\") eller en liste af css filer adskilt af komma (f.eks. \"/themes/garland/style.css,http://domain.com/customMCE.css\").<br />Makroer: %h (værtsnavn: http://www.example.com/), %t (sti til tema: theme/yourtheme/)<br />Husk at vælge \"definer css\" herover."
-
-#: wysiwyg_editor.module:963
-msgid "CSS classes"
-msgstr "CSS klasser"
-
-#: wysiwyg_editor.module:967
-msgid "Adds CSS classes to the \"styles\" droplist. Format is: &lt;title&gt;=&lt;class&gt;;<br/> Example: Header 1=header1;Header 2=header2;Header 3=header3 (note: no trailing ';')<br />Leave blank to automatically import list of CSS classes from style sheet."
-msgstr "Tilføj CSS klasser til \"typografi\" rullelisten. Formatet er: &lt;navn&gt;=&lt;klasse&gt;;<br/>F.eks. Overskrift 1=overskrift1;Overskrift 2=overskrift2;Overskrift 3=overskrift3 (bemærk: intet afsluttende ';')<br />Lad feltet være tomt for automatisk at importerer CSS klasserne fra stilarket."
-
-#: wysiwyg_editor.module:1049
-msgid "Profile"
-msgstr "Profil"
-
-#: wysiwyg_editor.module:1049
-msgid "Roles"
-msgstr "Roller"
-
-#: wysiwyg_editor.module:1049
-msgid "Operations"
-msgstr "Handlinger"
-
-#: wysiwyg_editor.module:1051
-msgid "edit"
-msgstr "rediger"
-
-#: wysiwyg_editor.module:1051
-msgid "delete"
-msgstr "slet"
-
-#: wysiwyg_editor.module:1054
-msgid "<p><a href=\"!create-profile-url\">Create new profile</a></p>"
-msgstr "<p><a href=\"!create-profile-url\">Opret profil</a></p>"
-
-#: wysiwyg_editor.module:1057
-msgid "No profiles found. Click here to <a href=\"!create-profile-url\">create a new profile</a>."
-msgstr "Ingen profiler fundet. <a href=\"!create-profile-url\">Opret profil</a>."
-
-#: wysiwyg_editor.module:1088
-msgid "You must give a profile name."
-msgstr "Du skal angive et profilnavn."
-
-#: wysiwyg_editor.module:1092
-msgid "You must select at least one role."
-msgstr "Du skal vælge mindst én rolle."
-
-#: wysiwyg_editor.module:46
-msgid "administer wysiwyg_editor"
-msgstr "administrer TinyMCE"
-
-#: wysiwyg_editor.module:46
-msgid "access wysiwyg_editor"
-msgstr "tilgå TinyMCE"
-
-#: wysiwyg_editor.module:47
-msgid "module"
-msgstr "modul"
-
-#: wysiwyg_editor.module:49
-msgid "/wysiwyg_editor/jscripts/tiny_mce/plugins/imagemanager/"
-msgstr "/wysiwyg_editor/jscripts/tiny_mce/plugins/imagemanager/"
-
-#: wysiwyg_editor.module:50
-msgid "access wysiwyg_editor imagemanager"
-msgstr "tilgå wysiwyg_editor billedhåndtering"
-
-#: wysiwyg_editor.info:0
-msgid "The most popular WYSIWYG editor for advanced content editing."
-msgstr "Den mest populære WYSIWYG-editor til avanceret redigering af indhold."
-
diff --git a/sites/all/modules/wysiwyg/translations/de.po b/sites/all/modules/wysiwyg/translations/de.po
deleted file mode 100644
index 478c100f1c8baf0728fc1c8df0b8990400beb84b..0000000000000000000000000000000000000000
--- a/sites/all/modules/wysiwyg/translations/de.po
+++ /dev/null
@@ -1,938 +0,0 @@
-# $Id: de.po,v 1.8 2009/06/17 21:22:23 hass Exp $
-#
-# LANGUAGE translation of Drupal (general)
-# Copyright YEAR NAME <EMAIL@ADDRESS>
-# Generated from file: wysiwyg_editor.module,v 1.90.4.23 2007/05/06 01:41:35 m3avrck
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: German translation of WYSIWYG editor\n"
-"POT-Creation-Date: 2009-06-17 21:00+0200\n"
-"PO-Revision-Date: 2009-06-17 23:21+0100\n"
-"Last-Translator: Alexander Haß\n"
-"Language-Team: Alexander Hass\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-"X-Poedit-Language: German\n"
-"X-Poedit-Country: GERMANY\n"
-
-#: wysiwyg.api.php:51;52
-msgid "My plugin title"
-msgstr "Mein Plugin-Titel"
-
-#: wysiwyg.api.php:61
-msgid "Button title (optional)"
-msgstr "Schaltknopftitel (optional)"
-
-#: wysiwyg.admin.inc:51
-msgid "%editor profile for %format"
-msgstr "%editor-Profil für %format"
-
-#: wysiwyg.admin.inc:60
-msgid "Basic setup"
-msgstr "Basis-Setup"
-
-#: wysiwyg.admin.inc:67
-msgid "Enabled by default"
-msgstr "Standardmäßig aktiviert"
-
-#: wysiwyg.admin.inc:70
-msgid "The default editor state for users having access to this profile. Users are able to override this state if the next option is enabled."
-msgstr "Der standardmäßige Status des Editors für Benutzer mit Zugriff auf dieses Profil. Benutzer können diese Einstellung übersteuern, wenn die nachfolgende Option aktiviert ist."
-
-#: wysiwyg.admin.inc:75
-msgid "Allow users to choose default"
-msgstr "Benutzer können Standardeinstellung auswählen"
-
-#: wysiwyg.admin.inc:78
-msgid "If allowed, users will be able to choose their own editor default state in their user account settings."
-msgstr "Sobald aktiviert, können Benutzer auf ihrer Profilseite ihren eigenen standardmäßigen Status des Editors auswählen."
-
-#: wysiwyg.admin.inc:83
-msgid "Show <em>enable/disable rich text</em> toggle link"
-msgstr "<em>Ein-/Auschalter</em> für Rich-Text anzeigen"
-
-#: wysiwyg.admin.inc:86
-msgid "Whether or not to show the <em>enable/disable rich text</em> toggle link below a textarea. If disabled, the user setting or global default is used (see above)."
-msgstr "Ob der <em>Rich-Text aktivieren/deaktivieren</em>-Link unterhalb eines Textfeldes angezeigt werden soll oder nicht. Sollte diese Einstellung deaktiviert sein, werden die Benutzereinstellungen oder globalen Standardwerte verwendet (siehe oberhalb)."
-
-#: wysiwyg.admin.inc:96
-msgid "Language"
-msgstr "Sprache"
-
-#: wysiwyg.admin.inc:99
-msgid "The language to use for the editor interface. Language codes are based on the <a href=\"http://www.loc.gov/standards/iso639-2/englangn.html\">ISO-639-2</a> format."
-msgstr "Die für die Eingabeoberfläche der Editors zu verwendende Sprache. Die Sprachcodes basieren auf dem <a href=\"http://www.loc.gov/standards/iso639-2/englangn.html\">ISO-639-2</a>-Format."
-
-#: wysiwyg.admin.inc:104
-msgid "Buttons and plugins"
-msgstr "Schaltflächen und Plugins"
-
-#: wysiwyg.admin.inc:149
-msgid "Editor appearance"
-msgstr "Erscheinungsbild des Editors"
-
-#: wysiwyg.admin.inc:156
-msgid "Toolbar location"
-msgstr "Position der Werkzeugleiste"
-
-#: wysiwyg.admin.inc:158;174
-msgid "Bottom"
-msgstr "Unten"
-
-#: wysiwyg.admin.inc:158;174
-msgid "Top"
-msgstr "Oben"
-
-#: wysiwyg.admin.inc:159
-msgid "This option controls whether the editor toolbar is displayed above or below the editing area."
-msgstr "Diese Option kontrolliert, ob die Editor-Werkzeugleiste über oder unter dem Bearbeitungsfeld angezeigt wird."
-
-#: wysiwyg.admin.inc:164
-msgid "Button alignment"
-msgstr "Ausrichtung der Schaltknöpfe"
-
-# context senstive issues
-#: wysiwyg.admin.inc:166
-#, fuzzy
-msgid "Center"
-msgstr "Mitte"
-
-#: wysiwyg.admin.inc:166
-msgid "Left"
-msgstr "Links"
-
-#: wysiwyg.admin.inc:166
-msgid "Right"
-msgstr "Rechts"
-
-#: wysiwyg.admin.inc:167
-msgid "This option controls the alignment of icons in the editor toolbar."
-msgstr "Diese Option kontrolliert die Anordnung der Symbole in der Editor-Werkzeugleiste."
-
-#: wysiwyg.admin.inc:172
-msgid "Path location"
-msgstr "Position der Pfad-Leiste"
-
-#: wysiwyg.admin.inc:174
-msgid "Hide"
-msgstr "Ausblenden"
-
-#: wysiwyg.admin.inc:175
-msgid "Where to display the path to HTML elements (i.e. <code>body > table > tr > td</code>)."
-msgstr "Wo der Pfad zu den HTML-Elementen angezeigt werden soll (d.h. <code>body > table > tr > td</code>)."
-
-#: wysiwyg.admin.inc:180
-msgid "Enable resizing button"
-msgstr "Schaltfläche zur Größenanpassung aktivieren"
-
-# "Path location toolbar" not literally
-#: wysiwyg.admin.inc:183
-msgid "This option gives you the ability to enable/disable the resizing button. If enabled, the Path location toolbar must be set to \"Top\" or \"Bottom\" in order to display the resize icon."
-msgstr "Diese Option ermöglicht die Schaltfläche zur Größenanpassung zu aktivieren/deaktivieren. Sobald aktiviert, muss die Pfad-Leiste auf „Oben“ oder „Unten“ eingestellt werden, damit das Symbol zur Größenanpassung angezeigt wird."
-
-#: wysiwyg.admin.inc:188
-msgid "Cleanup and output"
-msgstr "Bereinigung und Ausgabe"
-
-#: wysiwyg.admin.inc:195
-msgid "Verify HTML"
-msgstr "HTML prüfen"
-
-#: wysiwyg.admin.inc:198
-msgid "If enabled, potentially malicious code like <code>&lt;HEAD&gt;</code> tags will be removed from HTML contents."
-msgstr "Sobald aktiviert, wird potentiell bösartiger Code wie <code>&lt;HEAD&gt;</code>-Tags aus den HTML-Inhalten entfernt."
-
-#: wysiwyg.admin.inc:203
-msgid "Preformatted"
-msgstr "Vorformattiert"
-
-#: wysiwyg.admin.inc:206
-msgid "If enabled, the editor will insert TAB characters on tab and preserve other whitespace characters just like a PRE element in HTML does."
-msgstr "Sobald aktiviert, wird der Editor für Tabulatoren ein „TAB“-Zeichen einfügen und andere Leerzeichen beibehalten, wie dies mit einem „PRE“-HTML-Element der Fall wäre."
-
-#: wysiwyg.admin.inc:211
-msgid "Convert &lt;font&gt; tags to styles"
-msgstr "&lt;font&gt;-Tags zu Styles konvertieren"
-
-#: wysiwyg.admin.inc:214
-msgid "If enabled, HTML tags declaring the font size, font family, font color and font background color will be replaced by inline CSS styles."
-msgstr "Sobald aktiviert, werden HTML-Tags mit Schriftgröße, Schriftfamilie, Schriftfarbe und Schrifthintergrundfarbe durch Inline-Styles ersetzt."
-
-#: wysiwyg.admin.inc:219
-msgid "Remove linebreaks"
-msgstr "Zeilenumbrüche entfernen"
-
-#: wysiwyg.admin.inc:222
-msgid "If enabled, the editor will remove most linebreaks from contents. Disabling this option could avoid conflicts with other input filters."
-msgstr "Sobald aktiviert, wird der Editor die meisten Zeilenumbrüche aus dem Inhalt entfernen. Die Deaktivierung dieser Option kann Konflikte mit anderen Eingabefiltern verhindern."
-
-#: wysiwyg.admin.inc:227
-msgid "Apply source formatting"
-msgstr "Quellcodeformatierung anwenden"
-
-#: wysiwyg.admin.inc:230
-msgid "If enabled, the editor will re-format the HTML source code. Disabling this option could avoid conflicts with other input filters."
-msgstr "Sobald aktiviert, wird der Editor den HTML-Quelltext neu formatieren. Die Deaktivierung dieser Option kann Konflikte mit anderen Eingabefiltern verhindern."
-
-#: wysiwyg.admin.inc:235
-msgid "Force cleanup on standard paste"
-msgstr "Bereinigung beim standardmäßigen Einfügen erzwingen"
-
-#: wysiwyg.admin.inc:238
-msgid "If enabled, the default paste function (CTRL-V or SHIFT-INS) behaves like the \"paste from word\" plugin function."
-msgstr "Sobald aktiviert, verhält sich die standardmäßige Einfügen-Funktion (STRG+V oder STRG-Einf) wie die „aus MS-Word einfügen“-Funktion."
-
-#: wysiwyg.admin.inc:243
-msgid "CSS"
-msgstr "CSS"
-
-#: wysiwyg.admin.inc:250
-msgid "Block formats"
-msgstr "Blockformate"
-
-#: wysiwyg.admin.inc:254
-msgid "Comma separated list of HTML block formats. Possible values: <code>@format-list</code>."
-msgstr "Eine kommagetrennte Liste von HTML-Blockformaten. Mögliche Werte: <code>@format-list</code>."
-
-#: wysiwyg.admin.inc:259
-msgid "Editor CSS"
-msgstr "Editor-CSS"
-
-#: wysiwyg.admin.inc:261
-msgid "Use theme CSS"
-msgstr "CSS-Anweisungen des Themes verwenden"
-
-#: wysiwyg.admin.inc:261
-msgid "Define CSS"
-msgstr "CSS festlegen"
-
-#: wysiwyg.admin.inc:261
-msgid "Editor default CSS"
-msgstr "Standardmäßiges Editor-CSS"
-
-#: wysiwyg.admin.inc:262
-msgid "Defines the CSS to be used in the editor area.<br />Use theme CSS - loads stylesheets from current site theme.<br/>Define CSS - enter path for stylesheet files below.<br />Editor default CSS - uses default stylesheets from editor."
-msgstr "Legt das im Textfeld des Editors zu verwendende CSS fest.<br />CSS des Themes verwenden - läd Stylesheets aus dem aktuellen Website-Theme.<br/>CSS festlegen - Nachfolgend einen Pfad zu den Stylesheet-Dateien eingeben.<br />Standardmäßiges CSS des Editors - verwendet das standardmäßige CSS des Editors."
-
-#: wysiwyg.admin.inc:267
-msgid "CSS path"
-msgstr "CSS-Verzeichnis"
-
-#: wysiwyg.admin.inc:271
-msgid "If \"Define CSS\" was selected above, enter path to a CSS file or a list of CSS files separated by a comma."
-msgstr ""
-
-#: wysiwyg.admin.inc:271
-msgid "Available tokens: <code>%b</code> (base path, eg: <code>/</code>), <code>%t</code> (path to theme, eg: <code>themes/garland</code>)"
-msgstr "Verfügbare Platzhalter: <code>%b</code> (Basispfad, z.B.: <code>/</code>), <code>%t</code> (Pfad zum Theme, z.B.: <code>themes/garland</code>)"
-
-#: wysiwyg.admin.inc:271
-msgid "Example:"
-msgstr "Beispiel:"
-
-#: wysiwyg.admin.inc:276
-msgid "CSS classes"
-msgstr "CSS-Klassen"
-
-#: wysiwyg.admin.inc:278
-msgid "Optionally define CSS classes for the \"Font style\" dropdown list.<br />Enter one class on each line in the format: !format. Example: !example<br />If left blank, CSS classes are automatically imported from all loaded stylesheet(s)."
-msgstr ""
-
-#: wysiwyg.admin.inc:283;438
-msgid "Save"
-msgstr "Speichern"
-
-#: wysiwyg.admin.inc:317
-msgid "Wysiwyg profile for %format has been saved."
-msgstr "Das Wysiwyg-Profil für %format wurde gespeichert."
-
-#: wysiwyg.admin.inc:366
-msgid "No editor"
-msgstr "Kein Editor"
-
-#: wysiwyg.admin.inc:371
-msgid "<a href=\"!vendor-url\">@editor</a> (<a href=\"!download-url\">Download</a>)"
-msgstr "<a href=\"!vendor-url\">@editor</a> (<a href=\"!download-url\">Herunterladen</a>)"
-
-#: wysiwyg.admin.inc:372
-msgid "Not installed."
-msgstr "Nicht installiert."
-
-#: wysiwyg.admin.inc:386
-msgid "Extract the archive and copy its contents into a new folder in the following location:<br /><code>@editor-path</code>"
-msgstr "Das Archiv extrahieren und dessen Inhalt in ein neues Verzeichnis an der folgenden Stelle kopieren:<br /><code>@editor-path</code>"
-
-# not literally
-#: wysiwyg.admin.inc:387
-msgid "So the actual library can be found at:<br /><code>@library-filepath</code>"
-msgstr "Damit lässt sich die aktuelle Bibliothek hier finden:<br /><code>@library-filepath</code>"
-
-#: wysiwyg.admin.inc:402
-msgid "Installation instructions"
-msgstr "Installationsanweisungen"
-
-#: wysiwyg.admin.inc:405
-msgid "There are no editor libraries installed currently. The following list contains a list of currently supported editors:"
-msgstr "Derzeit sind keine Editor-Bibliotheken installiert. Die folgende Liste enthält eine Liste der derzeit unterstützten Editoren:"
-
-#: wysiwyg.admin.inc:430
-#: wysiwyg.module:26
-msgid "Edit"
-msgstr "Bearbeiten"
-
-#: wysiwyg.admin.inc:433;489
-#: wysiwyg.module:36
-msgid "Remove"
-msgstr "Entfernen"
-
-#: wysiwyg.admin.inc:450
-msgid "Input format"
-msgstr "Eingabeformat"
-
-#: wysiwyg.admin.inc:450
-msgid "Editor"
-msgstr "Editor"
-
-#: wysiwyg.admin.inc:450
-msgid "Operations"
-msgstr "Operationen"
-
-#: wysiwyg.admin.inc:487
-msgid "Are you sure you want to remove the profile for %name?"
-msgstr "Soll das Profil für %name wirklich gelöscht werden?"
-
-#: wysiwyg.admin.inc:489
-msgid "This action cannot be undone."
-msgstr "Diese Aktion kann nicht rückgängig gemacht werden."
-
-#: wysiwyg.admin.inc:489
-msgid "Cancel"
-msgstr "Abbrechen"
-
-#: wysiwyg.admin.inc:501
-msgid "Wysiwyg profile for %name has been deleted."
-msgstr "Das Wysiwyg-Profil für %name wurde gelöscht."
-
-#: wysiwyg.module:80
-msgid "A Wysiwyg profile can be associated to an input format. A Wysiwyg profile defines which client-side editor is loaded, what buttons or themes are enabled for the editor, how the editor is displayed, and a few other editor-specific functions."
-msgstr ""
-
-#: wysiwyg.module:306
-msgid "Disable rich-text"
-msgstr "Rich-Text deaktivieren"
-
-#: wysiwyg.module:307
-msgid "Enable rich-text"
-msgstr "Rich-Text aktivieren"
-
-#: wysiwyg.module:608
-msgid "Wysiwyg Editor settings"
-msgstr "Einstellungen für Wysiwyg-Editor"
-
-#: wysiwyg.module:615
-msgid "Enable editor by default"
-msgstr "Editor standardmäßig aktivieren"
-
-#: wysiwyg.module:618
-msgid "If enabled, rich-text editing is enabled by default in textarea fields."
-msgstr "Sobald aktiviert, wird die Rich-Text-Bearbeitung in Textfeldern standardmässig aktiviert."
-
-#: wysiwyg.module:702
-msgid "The version of %editor could not be detected."
-msgstr "Die Version von %editor konnte nicht erkannt werden."
-
-#: wysiwyg.module:715
-msgid "The installed version %version of %editor is not supported."
-msgstr "Die installierte Version %version von %editor ist nicht unterstützt."
-
-#: wysiwyg.module:14
-#: wysiwyg.info:0
-msgid "Wysiwyg"
-msgstr "Wysiwyg"
-
-#: wysiwyg.module:17
-msgid "Configure client-side editors."
-msgstr "Client-seitige Editor-Profile konfigurieren."
-
-#: wysiwyg.module:22
-msgid "Profiles"
-msgstr "Profile"
-
-#: wysiwyg.module:0
-msgid "wysiwyg"
-msgstr "wysiwyg"
-
-#: wysiwyg.install:10
-msgid "Stores Wysiwyg profiles."
-msgstr ""
-
-#: wysiwyg.info:0
-msgid "Allows users to edit contents with client-side editors."
-msgstr "Ermöglicht Benutzern die Bearbeitung von Inhalten mit clientseitigen Editoren."
-
-#: wysiwyg.info:0
-msgid "User interface"
-msgstr "Benutzeroberfläche"
-
-#: editors/fckeditor.inc:217
-#: editors/markitup.inc:105;170
-#: editors/nicedit.inc:103
-#: editors/openwysiwyg.inc:140
-#: editors/tinymce.inc:377
-#: editors/whizzywig.inc:113
-#: editors/yui.inc:276
-msgid "Bold"
-msgstr "Fett"
-
-#: editors/fckeditor.inc:217
-#: editors/markitup.inc:112;170
-#: editors/nicedit.inc:103
-#: editors/openwysiwyg.inc:140
-#: editors/tinymce.inc:377
-#: editors/whizzywig.inc:113
-#: editors/yui.inc:276
-msgid "Italic"
-msgstr "Kursiv"
-
-#: editors/fckeditor.inc:217
-#: editors/nicedit.inc:103
-#: editors/openwysiwyg.inc:140
-#: editors/tinymce.inc:377
-#: editors/whizzywig.inc:113
-#: editors/yui.inc:276
-msgid "Underline"
-msgstr "Unterstrichen"
-
-#: editors/fckeditor.inc:218
-#: editors/markitup.inc:119;171
-#: editors/nicedit.inc:104
-#: editors/openwysiwyg.inc:141
-#: editors/tinymce.inc:378
-#: editors/yui.inc:277
-msgid "Strike-through"
-msgstr "Durchgestrichen"
-
-#: editors/fckeditor.inc:219
-#: editors/nicedit.inc:105
-#: editors/openwysiwyg.inc:142
-#: editors/tinymce.inc:379
-#: editors/whizzywig.inc:114
-#: editors/yui.inc:278
-msgid "Align left"
-msgstr "Linksbündig"
-
-#: editors/fckeditor.inc:219
-#: editors/nicedit.inc:105
-#: editors/openwysiwyg.inc:142
-#: editors/tinymce.inc:379
-#: editors/whizzywig.inc:114
-#: editors/yui.inc:278
-msgid "Align center"
-msgstr "Zentriert"
-
-#: editors/fckeditor.inc:219
-#: editors/nicedit.inc:105
-#: editors/openwysiwyg.inc:142
-#: editors/tinymce.inc:379
-#: editors/whizzywig.inc:114
-#: editors/yui.inc:278
-msgid "Align right"
-msgstr "Rechtsbündig"
-
-#: editors/fckeditor.inc:219
-#: editors/openwysiwyg.inc:142
-#: editors/tinymce.inc:379
-#: editors/yui.inc:278
-msgid "Justify"
-msgstr "Blocksatz"
-
-#: editors/fckeditor.inc:220
-#: editors/nicedit.inc:106
-#: editors/openwysiwyg.inc:143
-#: editors/tinymce.inc:380
-#: editors/whizzywig.inc:115
-#: editors/yui.inc:279
-msgid "Bullet list"
-msgstr "Aufzählungszeichen"
-
-#: editors/fckeditor.inc:220
-#: editors/nicedit.inc:106
-#: editors/openwysiwyg.inc:143
-#: editors/tinymce.inc:380
-#: editors/whizzywig.inc:115
-#: editors/yui.inc:279
-msgid "Numbered list"
-msgstr "Nummerierte Liste"
-
-#: editors/fckeditor.inc:221
-#: editors/nicedit.inc:107
-#: editors/openwysiwyg.inc:144
-#: editors/tinymce.inc:381
-#: editors/whizzywig.inc:116
-#: editors/yui.inc:280
-msgid "Outdent"
-msgstr "Einzug verkleinern"
-
-#: editors/fckeditor.inc:221
-#: editors/nicedit.inc:107
-#: editors/openwysiwyg.inc:144
-#: editors/tinymce.inc:381
-#: editors/whizzywig.inc:116
-#: editors/yui.inc:280
-msgid "Indent"
-msgstr "Einzug vergrößern"
-
-#: editors/fckeditor.inc:222
-#: editors/openwysiwyg.inc:145
-#: editors/tinymce.inc:382
-#: editors/whizzywig.inc:117
-#: editors/yui.inc:281
-msgid "Undo"
-msgstr "Rückgängig"
-
-#: editors/fckeditor.inc:222
-#: editors/openwysiwyg.inc:145
-#: editors/tinymce.inc:382
-#: editors/whizzywig.inc:117
-#: editors/yui.inc:281
-msgid "Redo"
-msgstr "Wiederholen"
-
-# not literally and not context senstive issue, should be "Link einfügen/bearbeiten"
-#: editors/fckeditor.inc:223
-#: editors/markitup.inc:132;173
-#: editors/nicedit.inc:114
-#: editors/openwysiwyg.inc:146
-#: editors/tinymce.inc:383
-#: editors/whizzywig.inc:121
-#: editors/yui.inc:282
-#, fuzzy
-msgid "Link"
-msgstr "Link"
-
-#: editors/fckeditor.inc:223
-#: editors/nicedit.inc:114
-#: editors/tinymce.inc:383
-msgid "Unlink"
-msgstr "Link entfernen"
-
-#: editors/fckeditor.inc:223
-#: editors/tinymce.inc:383
-msgid "Anchor"
-msgstr "Anker"
-
-#: editors/fckeditor.inc:224
-#: editors/markitup.inc:126;172
-#: editors/nicedit.inc:108
-#: editors/openwysiwyg.inc:147
-#: editors/tinymce.inc:384
-#: editors/whizzywig.inc:118;122
-#: editors/yui.inc:283
-msgid "Image"
-msgstr "Bild"
-
-#: editors/fckeditor.inc:225
-#: editors/nicedit.inc:109
-#: editors/openwysiwyg.inc:149
-#: editors/tinymce.inc:386
-#: editors/whizzywig.inc:119
-msgid "Forecolor"
-msgstr "Vordergrundfarbe"
-
-#: editors/fckeditor.inc:225
-#: editors/nicedit.inc:109
-#: editors/openwysiwyg.inc:149
-#: editors/tinymce.inc:386
-#: editors/whizzywig.inc:119
-msgid "Backcolor"
-msgstr "Hintergrundfarbe"
-
-#: editors/fckeditor.inc:226
-msgid "Superscript"
-msgstr "Hochgestellt"
-
-#: editors/fckeditor.inc:226
-msgid "Subscript"
-msgstr "Tiefgestellt"
-
-#: editors/fckeditor.inc:227
-#: editors/openwysiwyg.inc:151
-#: editors/tinymce.inc:388
-msgid "Blockquote"
-msgstr "Zitatblock"
-
-#: editors/fckeditor.inc:227
-#: editors/nicedit.inc:116
-#: editors/openwysiwyg.inc:151
-#: editors/tinymce.inc:388
-#: editors/whizzywig.inc:125
-msgid "Source code"
-msgstr "Quellcode"
-
-#: editors/fckeditor.inc:228
-#: editors/nicedit.inc:111
-#: editors/openwysiwyg.inc:152
-#: editors/tinymce.inc:389
-#: editors/whizzywig.inc:120
-msgid "Horizontal rule"
-msgstr "Horizontale Linie"
-
-#: editors/fckeditor.inc:229
-#: editors/openwysiwyg.inc:153
-#: editors/tinymce.inc:390
-msgid "Cut"
-msgstr "Ausschneiden"
-
-#: editors/fckeditor.inc:229
-#: editors/openwysiwyg.inc:153
-#: editors/tinymce.inc:390
-msgid "Copy"
-msgstr "Kopieren"
-
-#: editors/fckeditor.inc:229
-#: editors/openwysiwyg.inc:153
-#: editors/tinymce.inc:390
-msgid "Paste"
-msgstr "Einfügen"
-
-#: editors/fckeditor.inc:230
-msgid "Paste Text"
-msgstr "Text einfügen"
-
-#: editors/fckeditor.inc:230
-#: editors/tinymce.inc:494
-msgid "Paste from Word"
-msgstr "Aus MS-Word einfügen"
-
-#: editors/fckeditor.inc:231
-msgid "Show blocks"
-msgstr "Blöcke anzeigen"
-
-#: editors/fckeditor.inc:232
-#: editors/openwysiwyg.inc:155
-#: editors/tinymce.inc:392
-#: editors/yui.inc:287
-msgid "Remove format"
-msgstr "Formatierungen entfernen"
-
-#: editors/fckeditor.inc:233
-#: editors/openwysiwyg.inc:156
-#: editors/tinymce.inc:393
-msgid "Character map"
-msgstr "Sonderzeichen"
-
-#: editors/fckeditor.inc:234
-msgid "About"
-msgstr "Über"
-
-#: editors/fckeditor.inc:235
-#: editors/nicedit.inc:115
-#: editors/openwysiwyg.inc:157
-#: editors/tinymce.inc:452
-#: editors/whizzywig.inc:112
-#: editors/yui.inc:288
-msgid "HTML block format"
-msgstr "HTML-Blockformat"
-
-#: editors/fckeditor.inc:235
-#: editors/nicedit.inc:115
-#: editors/openwysiwyg.inc:157
-#: editors/tinymce.inc:452
-#: editors/whizzywig.inc:112
-#: editors/yui.inc:288
-msgid "Font"
-msgstr "Schriftart"
-
-#: editors/fckeditor.inc:235
-#: editors/nicedit.inc:115
-#: editors/openwysiwyg.inc:157
-#: editors/tinymce.inc:452
-#: editors/whizzywig.inc:112
-#: editors/yui.inc:288
-msgid "Font size"
-msgstr "Schriftgröße"
-
-# ???
-#: editors/fckeditor.inc:235
-#: editors/tinymce.inc:452
-#, fuzzy
-msgid "Font style"
-msgstr "Formatstil"
-
-#: editors/fckeditor.inc:236
-#: editors/openwysiwyg.inc:161
-#: editors/tinymce.inc:529
-#: editors/whizzywig.inc:123
-msgid "Table"
-msgstr "Tabelle"
-
-#: editors/fckeditor.inc:237
-#: editors/tinymce.inc:515
-msgid "Search"
-msgstr "Suchen"
-
-#: editors/fckeditor.inc:237
-#: editors/tinymce.inc:515
-msgid "Replace"
-msgstr "Ersetzen"
-
-#: editors/fckeditor.inc:237
-#: editors/tinymce.inc:494
-msgid "Select all"
-msgstr "Alles markieren"
-
-#: editors/fckeditor.inc:238
-msgid "Create DIV container"
-msgstr "DIV-Block erstellen"
-
-#: editors/fckeditor.inc:239
-#: editors/tinymce.inc:538
-msgid "Flash"
-msgstr "Flash"
-
-#: editors/fckeditor.inc:239
-msgid "Smiley"
-msgstr "Smiley"
-
-#: editors/fckeditor.inc:240
-#, fuzzy
-msgid "FitWindow"
-msgstr "Fenster anpassen"
-
-#: editors/fckeditor.inc:241
-msgid "Check spelling"
-msgstr "Rechtschreibung überprüfen"
-
-#: editors/fckeditor.inc:248
-#, fuzzy
-msgid "Autogrow"
-msgstr "Automatische Größenanpassung"
-
-#: editors/fckeditor.inc:259
-#: editors/tinymce.inc:564
-msgid "BBCode"
-msgstr "BBCode"
-
-#: editors/fckeditor.inc:267
-#, fuzzy
-msgid "Table drag/resize"
-msgstr "Tabelle verschieben/skalieren"
-
-#: editors/fckeditor.inc:275
-msgid "Table: Cell properties"
-msgstr "Tabelle: Zellen-Eigenschaften"
-
-#: editors/fckeditor.inc:276
-msgid "Table: Insert row after"
-msgstr "Tabelle: Zeile unterhalb einfügen"
-
-#: editors/fckeditor.inc:277
-msgid "Table: Insert column after"
-msgstr "Tabelle: Spalte rechts danach einfügen"
-
-#: editors/fckeditor.inc:278
-msgid "Table: Insert cell after"
-msgstr "Tabelle: Zelle danach einfügen"
-
-#: editors/fckeditor.inc:279
-msgid "Table: Delete rows"
-msgstr "Tabelle: Zeilen entfernen"
-
-#: editors/fckeditor.inc:280
-msgid "Table: Delete columns"
-msgstr "Tabelle: Spalten löschen"
-
-#: editors/fckeditor.inc:281
-msgid "Table: Delete cells"
-msgstr "Tabelle: Zellen löschen"
-
-#: editors/fckeditor.inc:282
-msgid "Table: Merge cells"
-msgstr "Tabelle: Zellen verbinden"
-
-#: editors/fckeditor.inc:283
-msgid "Table: Horizontal split cell"
-msgstr "Tabelle: Zelle horizontal teilen"
-
-#: editors/markitup.inc:142;175
-#: editors/openwysiwyg.inc:159
-#: editors/tinymce.inc:501
-msgid "Preview"
-msgstr "Vorschau"
-
-#: editors/nicedit.inc:110
-#: editors/openwysiwyg.inc:150
-#: editors/tinymce.inc:387
-#: editors/yui.inc:285
-#, fuzzy
-msgid "Sup"
-msgstr "Hochgestellt"
-
-#: editors/nicedit.inc:110
-#: editors/openwysiwyg.inc:150
-#: editors/tinymce.inc:387
-#: editors/yui.inc:285
-#, fuzzy
-msgid "Sub"
-msgstr "Tiefgestellt"
-
-#: editors/openwysiwyg.inc:148
-#: editors/tinymce.inc:385
-#: editors/whizzywig.inc:124
-msgid "Clean-up"
-msgstr "Bereinigen"
-
-#: editors/openwysiwyg.inc:154
-#: editors/tinymce.inc:391
-msgid "Visual aid"
-msgstr "Optische Hilfe"
-
-#: editors/openwysiwyg.inc:158
-#: editors/tinymce.inc:459
-msgid "Fullscreen"
-msgstr "Vollbild"
-
-#: editors/openwysiwyg.inc:160
-#: editors/tinymce.inc:508
-msgid "Print"
-msgstr "Drucken"
-
-#: editors/openwysiwyg.inc:162
-#: editors/tinymce.inc:394
-msgid "Help"
-msgstr "Hilfe"
-
-#: editors/tinymce.inc:400
-msgid "Advanced horizontal rule"
-msgstr "Erweiterte horizontale Linie"
-
-#: editors/tinymce.inc:408
-#, fuzzy
-msgid "Advanced image"
-msgstr "Erweitertes Bild"
-
-#: editors/tinymce.inc:416
-#, fuzzy
-msgid "Advanced link"
-msgstr "Erweiterter Link"
-
-#: editors/tinymce.inc:424
-msgid "Auto save"
-msgstr "Hintergrundspeicherung"
-
-#: editors/tinymce.inc:431
-msgid "Context menu"
-msgstr "Kontextmenü"
-
-#: editors/tinymce.inc:438
-msgid "Left-to-right"
-msgstr "Links nach rechts"
-
-#: editors/tinymce.inc:438
-msgid "Right-to-left"
-msgstr "Rechts nach links"
-
-#: editors/tinymce.inc:445
-msgid "Emotions"
-msgstr "Emotionen"
-
-#: editors/tinymce.inc:466
-#, fuzzy
-msgid "Inline popups"
-msgstr "Inline-Popups"
-
-#: editors/tinymce.inc:476
-msgid "Insert date"
-msgstr "Datum einfügen"
-
-#: editors/tinymce.inc:476
-msgid "Insert time"
-msgstr "Zeit einfügen"
-
-#: editors/tinymce.inc:487
-msgid "Insert layer"
-msgstr "Ebene einfügen"
-
-# oder "In den Vordergrund"?
-#: editors/tinymce.inc:487
-#, fuzzy
-msgid "Move forward"
-msgstr "Eine Ebene nach vorne"
-
-# oder "In den Hintergrund"?
-#: editors/tinymce.inc:487
-#, fuzzy
-msgid "Move backward"
-msgstr "Eine Ebene nach hinten"
-
-#: editors/tinymce.inc:487
-msgid "Absolute"
-msgstr "Absolut"
-
-#: editors/tinymce.inc:494
-msgid "Paste text"
-msgstr "Text einfügen"
-
-#: editors/tinymce.inc:522
-msgid "Style properties"
-msgstr "Design-Einstellungen"
-
-#: editors/tinymce.inc:548
-#, fuzzy
-msgid "Media"
-msgstr "Medien"
-
-#: editors/tinymce.inc:555
-msgid "Citation"
-msgstr "Zitat"
-
-#: editors/tinymce.inc:555
-msgid "Deleted"
-msgstr "Gelöscht"
-
-#: editors/tinymce.inc:555
-msgid "Abbreviation"
-msgstr "Abkürzung"
-
-#: editors/tinymce.inc:555
-msgid "Acronym"
-msgstr "Akronym"
-
-# NICHT Eingefügt
-#: editors/tinymce.inc:555
-#, fuzzy
-msgid "Inserted"
-msgstr "Eingefügt"
-
-#: editors/tinymce.inc:571
-msgid "Safari compatibility"
-msgstr "Safari-Kompatibilität"
-
-#: editors/whizzywig.inc:126
-msgid "Spell check"
-msgstr "Rechtschreibprüfung"
-
-#: editors/yui.inc:284
-msgid "Font Color"
-msgstr "Schriftfarbe"
-
-#: editors/yui.inc:284
-msgid "Background Color"
-msgstr "Hintergrundfarbe"
-
-#: editors/yui.inc:286
-msgid "Show/hide hidden elements"
-msgstr "Ein-/Ausblenden versteckter Elemente"
-
-#: plugins/break.inc:14
-#, fuzzy
-msgid "Teaser break"
-msgstr "Anrisstext trennen"
-
-#: plugins/break.inc:17
-msgid "Separate the teaser and body of this content"
-msgstr "Separiert den Anrisstext und Textkörper des Inhalts an dieser Stelle"
-
diff --git a/sites/all/modules/wysiwyg/translations/el.po b/sites/all/modules/wysiwyg/translations/el.po
deleted file mode 100644
index 0741d81cfc5a34ed3523c91fac78c566ba794674..0000000000000000000000000000000000000000
--- a/sites/all/modules/wysiwyg/translations/el.po
+++ /dev/null
@@ -1,434 +0,0 @@
-# translation of el.po to Greek
-# Greek translation of Drupal (wysiwyg_editor.module)
-# $Id: el.po,v 1.2 2008/05/30 02:19:15 sun Exp $
-# LANGUAGE translation of Drupal (general)
-# Copyright YEAR NAME <EMAIL@ADDRESS>
-# Generated from file: wysiwyg_editor.module,v 1.91 2007/02/22 22:41:06 nedjo
-#
-# Vasileios Lourdas <lourdas_v@yahoo.gr>, 2007.
-# Vasileios Lourdas <vasilis@lourdas.name>, 2008.
-msgid ""
-msgstr ""
-"Project-Id-Version: el\n"
-"POT-Creation-Date: 2008-04-13 16:27+0300\n"
-"PO-Revision-Date: 2008-04-13 16:40+0300\n"
-"Last-Translator: Vasileios Lourdas <vasilis@lourdas.name>\n"
-"Language-Team: Greek <el@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms:  nplurals=2; plural=(n != 1);\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: wysiwyg_editor.module:17 wysiwyg_editor.info:0
-msgid "TinyMCE"
-msgstr "TinyMCE"
-
-#: wysiwyg_editor.module:19
-msgid "Configure the rich editor."
-msgstr "Παραμετροποίηση του πλήρους συντάκτη κειμένου."
-
-#: wysiwyg_editor.module:34
-msgid "<p style=\"font-size:x-small\">$Revision: 1.2 $ $Date: 2008/05/30 02:19:15 $</p><p>TinyMCE adds what-you-see-is-what-you-get (WYSIWYG) html editing to textareas. This editor can be enabled/disabled without reloading the page by clicking a link below each textarea.</p><p>Profiles can be defined based on user roles. A TinyMCE profile can define which pages receive this TinyMCE capability, what buttons or themes are enabled for the editor, how the editor is displayed, and a few other editor functions.</p><p>Lastly, only users with the <code>access wysiwyg_editor</code> <a href=\"!url\">permission</a> will be able to use TinyMCE.</p>"
-msgstr "<p style=\"font-size:x-small\">$Revision: 1.2 $ $Date: 2008/05/30 02:19:15 $</p><p>Το TinyMCE προσθέτει δυνατότητα επεξεργασίας HTML τύπου what-you-see-is-what-you-get (WYSIWYG) στις περιοχές κειμένου. Ο επεξεργαστής μπορεί να ενεργοποιηθεί/απενεργοποιηθεί χωρίς την επαναφόρτωση της σελίδας κάνοντας κλικ σε ένα σύνδεσμο κάτω από κάθε περιοχή κειμένου.</p><p>Τα προφίλ ορίζονται βάσει των ρόλων των χρηστών. Ένα προφίλ TinyMCE μπορεί να ορίσει σε ποιες σελίδες θα υπάρχει η δυνατότητα TinyMCE, ποια κουμπιά ή θεματικές παραλλαγές θα είναι ενεργοποιημένες στον επεξεργαστή, πως θα εμφανίζεται ο επεξεργαστής και ορισμένες άλλες λειτουργίες.</p><p>Τέλος, μόνο χρήστες με την <a href=\"!url\">άδεια</a> <code>πρόσβαση στο wysiwyg_editor</code> θα μπορούν να χρησιμοποιούν το TinyMCE.</p>"
-
-#: wysiwyg_editor.module:113
-msgid "enable rich-text"
-msgstr "ενεργοποίηση του πλήρους κειμένου"
-
-#: wysiwyg_editor.module:114
-msgid "disable rich-text"
-msgstr "απενεργοποίηση του πλήρους κειμένου"
-
-#: wysiwyg_editor.module:166
-msgid "Your current web browser does not support WYSIWYG editing."
-msgstr "Ο φυλλομετρητής σας δεν υποστηρίζει επεξεργασία WYSIWYG."
-
-#: wysiwyg_editor.module:247
-msgid "TinyMCE rich-text settings"
-msgstr "Ρυθμίσεις πλήρους-κειμένου TinyMCE"
-
-#: wysiwyg_editor.module:255;698
-msgid "Default state"
-msgstr "Εξ' ορισμού κατάσταση"
-
-#: wysiwyg_editor.module:257;700
-msgid "disabled"
-msgstr "απενεργοποιημένο"
-
-#: wysiwyg_editor.module:257;700
-msgid "enabled"
-msgstr "ενεργοποιημένο"
-
-#: wysiwyg_editor.module:258
-msgid "Should rich-text editing be enabled or disabled by default in textarea fields?"
-msgstr "Το πλήρες κείμενο στα πεδία περιοχής κειμένου θα πρέπει να είναι ενεργοποιημένο ή απενεργοποιημένο εξ' ορισμού;"
-
-#: wysiwyg_editor.module:440
-msgid "administer"
-msgstr "διαχείριση"
-
-#: wysiwyg_editor.module:441;44;0
-msgid "wysiwyg_editor"
-msgstr "wysiwyg_editor"
-
-#: wysiwyg_editor.module:442
-msgid "Add new TinyMCE profile"
-msgstr "Προσθήκη νέου προφίλ TinyMCE"
-
-#: wysiwyg_editor.module:448
-msgid "Edit wysiwyg_editor profile"
-msgstr "Επεξεργασία προφίλ wysiwyg_editor"
-
-#: wysiwyg_editor.module:454
-msgid "Deleted profile"
-msgstr "Το προφίλ διαγράφηκε"
-
-#: wysiwyg_editor.module:458;663
-msgid "Create profile"
-msgstr "Δημιουργία προφίλ"
-
-#: wysiwyg_editor.module:459;667
-msgid "Update profile"
-msgstr "Ενημέρωση προφίλ"
-
-#: wysiwyg_editor.module:462
-msgid "Your TinyMCE profile has been updated."
-msgstr "Το TinyMCE προφίλ σας έχει ενημερωθεί"
-
-#: wysiwyg_editor.module:462
-msgid "Your TinyMCE profile has been created."
-msgstr "Το TinyMCE προφίλ σας έχει δημιουργηθεί."
-
-#: wysiwyg_editor.module:471
-msgid "TinyMCE settings"
-msgstr "Ρυθμίσεις TinyMCE"
-
-#: wysiwyg_editor.module:475
-msgid "Could not find the TinyMCE engine installed at <strong>!wysiwyg_editor-directory</strong>. Please <a href=\"http://wysiwyg_editor.moxiecode.com/\">download TinyMCE</a>, uncompress it and copy the folder into !wysiwyg_editor-path."
-msgstr "Δε βρέθηκε εγκατεστημένη η μηχανή TinyMCE στον κατάλογο <strong>!wysiwyg_editor-directory</strong>. Παρακαλώ <a href=\"http://wysiwyg_editor.moxiecode.com/\">κατεβάστε το TinyMCE</a>, αποσυμπιέστε το και αντιγράψτε τον κατάλογό του στο !wysiwyg_editor-path."
-
-#: wysiwyg_editor.module:655
-msgid "You must <a href=\"!access-control-url\">assign</a> at least one role with the 'access wysiwyg_editor' permission before creating a profile."
-msgstr "Θα πρέπει να <a href=\"!access-control-url\">αποδώσετε</a> τουλάχιστον ένα ρόλο με το δικαίωμα 'πρόσβαση στο wysiwyg_editor' προτού δημιουργήσετε προφίλ."
-
-#: wysiwyg_editor.module:658
-msgid "You will not be allowed to create a new profile since all user roles have already been assigned profiles. Either remove an existing wysiwyg_editor profile from at least one role or assign another role the 'access wysiwyg_editor' permission."
-msgstr "Δεν μπορείτε να δημιουργήσετε νέο προφίλ, εφόσον σε όλους τους ρόλους χρηστών έχουν αποδωθεί προφίλ. Αφαιρέστε ένα υπάρχον προφίλ wysiwyg_editor από ένα τουλάχιστον ρόλο ή αποδώστε το δικαίωμα 'πρόσβαση στο wysiwyg_editor' σε άλλο ρόλο."
-
-#: wysiwyg_editor.module:661
-msgid "Not all user roles are shown since they already have wysiwyg_editor profiles. You must first unassign profiles in order to add them to a new one."
-msgstr "Δεν εμφανίζονται όλοι οι ρόλοι χρηστών εφόσον τους έχει αποδοθεί ήδη προφίλ wysiwyg_editor. Θα πρέπει πρώτα να αφαιρέσετε προφίλ προκειμένου να τους προσθέσετε ένα ακόμη."
-
-#: wysiwyg_editor.module:672
-msgid "Basic setup"
-msgstr "Βασική διαμόρφωση"
-
-#: wysiwyg_editor.module:679
-msgid "Profile name"
-msgstr "Όνομα προφίλ"
-
-#: wysiwyg_editor.module:683
-msgid "Enter a name for this profile. This name is only visible within the wysiwyg_editor administration page."
-msgstr "Εισάγετε ένα όνομα για το προφίλ αυτό. Το όνομα αυτό θα εμφανίζεται μόνο στις σελίδες διαχείρισης του wysiwyg_editor."
-
-#: wysiwyg_editor.module:689
-msgid "Roles allowed to use this profile"
-msgstr "Ρόλοι που τους επιτρέπεται να χρησιμοποιούν αυτό το προφίλ"
-
-#: wysiwyg_editor.module:692
-msgid "Check at least one role. Only roles with 'access wysiwyg_editor' permission will be shown here."
-msgstr "Επιλέξτε τουλάχιστον ένα ρόλο. Εδώ εμφανίζονται μόνο οι ρόλοι με το δικαίωμα 'πρόσβαση στο wysiwyg_editor'."
-
-#: wysiwyg_editor.module:701
-msgid "Default editor state for users in this profile. Users will be able to override this state if the next option is enabled."
-msgstr "Εξ' ορισμού κατάσταση του συντάκτη για τους χρήστες σε αυτό το προφίλ. Οι χρήστες θα μπορούν να αλλάξουν την κατάσταση αυτή αν η επόμενη επιλογή είναι ενεργοποιημένη."
-
-#: wysiwyg_editor.module:706
-msgid "Allow users to choose default"
-msgstr "Να επιτρέπεται στους χρήστες να επιλέγουν το εξ' ορισμού"
-
-#: wysiwyg_editor.module:708;716;740;874;898;906;914
-msgid "false"
-msgstr "ψευδές"
-
-#: wysiwyg_editor.module:708;716;740;874;898;906;914
-msgid "true"
-msgstr "αληθές"
-
-#: wysiwyg_editor.module:709
-msgid "If allowed, users will be able to choose their own TinyMCE default state by visiting their profile page."
-msgstr "Αν επιτρέπεται, οι χρήστες θα μπορούν να επιλέξουν την εξ' ορισμού κατάσταση για το TinyMCE τους επισκεπτόμενοι τη σελίδα του προφίλ τους."
-
-#: wysiwyg_editor.module:714
-msgid "Show disable/enable rich text editor toggle"
-msgstr "Εμφάνιση του διακόπτη απενεργοποίηση/ενεργοποίηση του συντάκτη πλήρους κειμένου"
-
-#: wysiwyg_editor.module:717
-msgid "Whether or not to show the disable/enable rich text editor toggle below the textarea. If false, editor defaults to the global default or user default (see above)."
-msgstr "Εμφάνιση ή όχι του διακόπτη για την απενεργοποίηση/ενεργοποίηση του συντάκτη πλήρους κειμένου κάτω από την περιοχή κειμένου. Αν όχι, ο συντάκτης θα είναι με βάση την εξ' ορισμού καθολική ή από το χρήστη κατάσταση (δείτε παραπάνω)"
-
-#: wysiwyg_editor.module:730
-msgid "Language"
-msgstr "Γλώσσα"
-
-#: wysiwyg_editor.module:733
-msgid "The language for the TinyMCE interface. Language codes based on the <a href=\"http://www.loc.gov/standards/iso639-2/englangn.html\">ISO-639-2</a> format."
-msgstr "Η γλώσσα για τη διεπαφή του TinyMCE. Οι κωδικοί των γλωσσών βασίζονται στη μορφή <a href=\"http://www.loc.gov/standards/iso639-2/englangn.html\">ISO-639-2</a>."
-
-#: wysiwyg_editor.module:738
-msgid "Safari browser warning"
-msgstr "Προειδοποίηση για το φυλλομετρητή Safari"
-
-#: wysiwyg_editor.module:741
-msgid "TinyMCE support for the Safari web browser is experimental and a warning message is displayed when that browser is detected. You can disable this message here."
-msgstr "Η υποστήριξη του φυλλομετρητή Safari από το TinyMCE είναι σε πειραματικό στάδιο και όταν εντοπίζεται ο φυλλομετρητής αυτός θα εμφανίζεται μια προειδοποίηση. Μπορείτε εδώ να απενεργοποιήσετε το μήνυμα αυτό."
-
-#: wysiwyg_editor.module:746
-msgid "Visibility"
-msgstr "Ορατότητα"
-
-#: wysiwyg_editor.module:766
-msgid "Show on every page except the listed pages."
-msgstr "Εμφάνιση σε όλες τις σελίδες εκτός από τις παρακάτω."
-
-#: wysiwyg_editor.module:766
-msgid "Show on only the listed pages."
-msgstr "Εμφάνιση μόνο στις παρακάτω σελίδες."
-
-#: wysiwyg_editor.module:767
-msgid "Enter one page per line as Drupal paths. The '*' character is a wildcard. Example paths are '!blog' for the blog page and !blog-wildcard for every personal blog. !front is the front page."
-msgstr "Εισάγετε μια σελίδα ανά γραμμή ως διαδρομές του Drupal. Ο χαρακτήρας '*' είναι χαρακτήρας μπαλαντέρ. Παραδείγματα διαδρομών είναι το '!blog' για τις σελίδες ιστολογίου και το !blog-wildcard για κάθε προσωπικό ιστολόγιο. Το !front είναι για την κεντρική σελίδα."
-
-#: wysiwyg_editor.module:770
-msgid "Show if the following PHP code returns <code>TRUE</code> (PHP-mode, experts only)."
-msgstr "Εμφάνιση ανάλογα με το αν ο παρακάτω κώδικας PHP επιστρέψει <code>TRUE</code> (κατάσταση PHP, για τους ειδικούς μόνο)."
-
-#: wysiwyg_editor.module:771
-msgid "If the PHP-mode is chosen, enter PHP code between !php. Note that executing incorrect PHP-code can break your Drupal site."
-msgstr "Αν επιλεχθεί η κατάσταση PHP, εισάγετε τον κώδικα PHP ανάμεσα στα !php. Σημειώστε ότι η εκτέλεση λάθους κώδικα μπορεί να προκαλέσει ζημιά στο Drupal ιστοχώρο σας."
-
-#: wysiwyg_editor.module:775
-msgid "Show wysiwyg_editor on specific pages"
-msgstr "Εμφάνιση του wysiwyg_editor σε συγκεκριμένες σελίδες"
-
-#: wysiwyg_editor.module:781
-msgid "Pages"
-msgstr "Σελίδες"
-
-#: wysiwyg_editor.module:789
-msgid "Buttons and plugins"
-msgstr "Κουμπιά και επιπλέον αρθρώματα"
-
-#: wysiwyg_editor.module:841
-msgid "Editor appearance"
-msgstr "Εμφάνιση συντάκτη κειμένου"
-
-#: wysiwyg_editor.module:848
-msgid "Toolbar location"
-msgstr "Τοποθεσία γραμμής εργαλείων"
-
-#: wysiwyg_editor.module:850;866
-msgid "bottom"
-msgstr "κάτω μέρος"
-
-#: wysiwyg_editor.module:850;866
-msgid "top"
-msgstr "πάνω μέρος"
-
-#: wysiwyg_editor.module:851
-msgid "Show toolbar at the top or bottom of the editor area?"
-msgstr "Να εμφανίζεται η γραμμή εργαλείων στο πάνω ή κάτω μέρος της περιοχής του συντάκτη;"
-
-#: wysiwyg_editor.module:856
-msgid "Toolbar alignment"
-msgstr "Στοίχιση γραμμής εργαλείων"
-
-#: wysiwyg_editor.module:858
-msgid "center"
-msgstr "κέντρο"
-
-#: wysiwyg_editor.module:858
-msgid "left"
-msgstr "αριστερά"
-
-#: wysiwyg_editor.module:858
-msgid "right"
-msgstr "δεξιά"
-
-#: wysiwyg_editor.module:859
-msgid "Align tool icons left, center, or right within the toolbar."
-msgstr "Στοίχιση των εικονιδίων των εργαλείων αριστερά, στο κέντρο ή δεξιά μέσα στη γραμμή εργαλείων."
-
-#: wysiwyg_editor.module:864
-msgid "Path location"
-msgstr "Τοποθεσία διαδρομής"
-
-#: wysiwyg_editor.module:866
-msgid "none"
-msgstr "κανένα"
-
-#: wysiwyg_editor.module:867
-msgid "Path to html elements (i.e. \"body>table>tr>td\"). Show at top, bottom, or not at all."
-msgstr "Η διαδρομή των στοιχείων html (πχ. \"body>table>tr>td\"). Να εμφανίζεται πάνω, κάτω ή καθόλου."
-
-#: wysiwyg_editor.module:872
-msgid "Enable resizing button"
-msgstr "Ενεργοποίηση πλήκτρου αλλαγής μεγέθους"
-
-#: wysiwyg_editor.module:875
-msgid " This option gives you the ability to enable/disable the resizing button. If enabled the <strong>Path location toolbar</strong> must be set to \"top\" or \"bottom\" in order to display the resize icon."
-msgstr "Η επιλογή αυτή δίνει τη δυνατότητα να ενεργοποιείτε/απενεργοποιείτε το πλήκτρο αλλαγής μεγέθους. Αν είναι ενεργοποιημένη, η <strong>γραμμή εργαλείων τοποθεσίας διαδρομής</strong> θα πρέπει να είναι \"πάνω\" ή \"κάτω\" για να εμφανίζεται το εικονίδιο αλλαγής μεγέθους."
-
-#: wysiwyg_editor.module:880
-msgid "Block formats"
-msgstr "Μορφές μπλοκ"
-
-#: wysiwyg_editor.module:884
-msgid "Comma separated list of HTML block formats. You can only remove elements, not add."
-msgstr "Λίστα μπλοκ μορφών HTML χωρισμένη με το κόμμα. Μπορείτε να αφαιρέσετε μόνο στοιχεία, όχι να προσθέσετε."
-
-#: wysiwyg_editor.module:889
-msgid "Cleanup and output"
-msgstr "Εκκαθάριση και έξοδος"
-
-#: wysiwyg_editor.module:896
-msgid "Verify HTML"
-msgstr "Επαλήθευση της HTML"
-
-#: wysiwyg_editor.module:899
-msgid "Should the HTML contents be verified or not? Verifying will strip &lt;head&gt tags, so choose false if you will be editing full page HTML."
-msgstr "Επαλήθευση ή όχι των στοιχείων της HTML; Η επαλήθευση θα αφαιρέσει τις σημάνσεις &lt;head&gt, οπότε επιλέξτε ψευδές αν θέλετε να επεξεργαστείτε πλήρεις σελίδες HTML."
-
-#: wysiwyg_editor.module:904
-msgid "Preformatted"
-msgstr "Προμορφοποιημένο"
-
-#: wysiwyg_editor.module:907
-msgid "If this option is set to true, the editor will insert TAB characters on tab and preserve other whitespace characters just like a PRE HTML element does."
-msgstr "Αν η επιλογή αυτή έχει ως τιμή αληθές, ο συντάκτης κειμένου θα εισάγει χαρακτήρες TAB και θα διατηρεί τους υπόλοιπους λευκούς χαρακτήρες (whitespaces), ακριβώς όπως κάνει και το στοιχείο PRE της HTML."
-
-#: wysiwyg_editor.module:912
-msgid "Convert &lt;font&gt; tags to styles"
-msgstr "Μετατροπή των σημάνσεων  &lt;font&gt; σε στυλ"
-
-#: wysiwyg_editor.module:915
-msgid "If you set this option to true, font size, font family, font color and font background color will be replaced by inline styles."
-msgstr "Αν η επιλογή αυτή έχει ως τιμή αληθές, το μέγεθος, η οικογένεια, το χρώμα των γραμματοσειρών και το χρώμα του υπόβαθρου θα αντικαθίστανται από στυλ μέσα στο κείμενο (inline)."
-
-#: wysiwyg_editor.module:920
-msgid "Remove linebreaks"
-msgstr "Αφαίρεση των αλλαγών γραμμών"
-
-#: wysiwyg_editor.module:923
-msgid "Set this option to false to prevent TinyMCE from removing linebreaks from existing nodes.  True avoids conflicts with some filters."
-msgstr "Θέστε την επιλογή αυτή σε ψευδές για να αποτρέψετε το TinyMCE να αφαιρεί τις αλλαγές γραμμών από τους υπάρχοντες κόμβους. Το αληθές αποφεύγει προβλήματα με ορισμένα φίλτρα."
-
-#: wysiwyg_editor.module:928
-msgid "Apply source formatting"
-msgstr "Εφαρμογή μορφοποίησης κώδικα"
-
-#: wysiwyg_editor.module:931
-msgid "This option makes TinyMCE apply source formatting.  Set this to true for a cleaner HTML source.  Choose false to avoid conflicts with some filters."
-msgstr "Η επιλογή αυτή ορίζει στο TinyMCE να εφαρμόζει μορφοποίηση κώδικα. Θέστε την επιλογή σε αληθές για ένα πιο ευανάγνωστο κώδικα HTML. Θέστε σε ψευδές για την αποφυγή προβλημάτων με ορισμένα φίλτρα."
-
-#: wysiwyg_editor.module:936
-msgid "CSS"
-msgstr "CSS"
-
-#: wysiwyg_editor.module:943
-msgid "Editor CSS"
-msgstr "Συντάκτης CSS"
-
-#: wysiwyg_editor.module:945
-msgid "use theme css"
-msgstr "χρησιμοποίηση css θεματικής παραλλαγής"
-
-#: wysiwyg_editor.module:945
-msgid "define css"
-msgstr "ορισμός css"
-
-#: wysiwyg_editor.module:945
-msgid "tinyMCE default"
-msgstr "προεπιλογή TinyMCE"
-
-#: wysiwyg_editor.module:946
-msgid "Defines the CSS to be used in the editor area.<br />use theme css - load style.css from current site theme.<br/>define css - enter path for css file below.<br />tinyMCE default - uses default CSS from editor."
-msgstr "Καθορίζει το CSS που θα χρησιμοποιηθεί στην περιοχή κειμένου του συντάκτη. <br />χρησιμοποίηση του θέματος css - χρησιμοποιεί το style.css από το τρέχων θέμα του ιστοχώρου. <br/>ορισμός του css - εισάγετε παρακάτω τη διαδρομή για το αρχείο του css<br />εξ' ορισμού του tinyMCE - χρησιμοποιεί το εξ' ορισμού CSS του συντάκτη κειμένου."
-
-#: wysiwyg_editor.module:951
-msgid "CSS path"
-msgstr "Διαδρομή CSS"
-
-#: wysiwyg_editor.module:955
-msgid "Enter path to CSS file (<em>example: \"css/editor.css\"</em>) or a list of css files seperated by a comma (<em>example: /themes/garland/style.css,http://domain.com/customMCE.css</em>).<br />Macros: %h (host name: http://www.example.com/), %t (path to theme: theme/yourtheme/)<br />Be sure to select \"define css\" above."
-msgstr "Εισάγετε τη διαδρομή για το αρχείο CSS (<em>παράδειγμα: \"css/editor.css\"</em>) ή μια λίστα αρχείων css χωρισμένα με το κόμμα (<em>παράδειγμα: /themes/garland/style.css,http://domain.com/customMCE.css</em>). <br />Μακροεντολές: %h (όνομα υπολογιστή: http://www.example.com/), %t (διαδρομή στο θέμα: theme/yourtheme/)<br />Σιγουρευτείτε να επιλέξετε το \"ορισμός του css\" παραπάνω."
-
-#: wysiwyg_editor.module:960
-msgid "CSS classes"
-msgstr "Κλάσεις CSS"
-
-#: wysiwyg_editor.module:964
-msgid "Adds CSS classes to the \"styles\" droplist. Format is: &lt;title&gt;=&lt;class&gt;;<br/> Example: Header 1=header1;Header 2=header2;Header 3=header3 (note: no trailing ';')<br />Leave blank to automatically import list of CSS classes from style sheet."
-msgstr "Προσθέτει κλάσεις css στη λίστα \"στυλ\". Η μορφοποίηση είναι &lt;τίτλος&gt;=&lt;κλάση&gt;;<br/> Παράδειγμα: Επικεφαλίδα 1=header1;Επικεφαλίδα 2=header2;Επικεφαλίδα 3=header3 (σημείωση: χωρίς το ';' στο τέλος)<br />Αφήστε το κενό για να εισαχθεί αυτόματα η λίστα των κλάσεων CSS από το αρχείο των στυλ."
-
-#: wysiwyg_editor.module:1046
-msgid "Profile"
-msgstr "Προφίλ"
-
-#: wysiwyg_editor.module:1046
-msgid "Roles"
-msgstr "Ρόλοι"
-
-#: wysiwyg_editor.module:1046
-msgid "Operations"
-msgstr "Λειτουργίες"
-
-#: wysiwyg_editor.module:1048
-msgid "edit"
-msgstr "επεξεργασία"
-
-#: wysiwyg_editor.module:1048
-msgid "delete"
-msgstr "διαγραφή"
-
-#: wysiwyg_editor.module:1051
-msgid "<p><a href=\"!create-profile-url\">Create new profile</a></p>"
-msgstr "<p><a href=\"!create-profile-url\">Δημιουργία νέου προφίλ</a></p>"
-
-#: wysiwyg_editor.module:1054
-msgid "No profiles found. Click here to <a href=\"!create-profile-url\">create a new profile</a>."
-msgstr "Δε βρέθηκαν προφίλ. Κάντε κλικ εδώ για να <a href=\"!create-profile-url\">δημιουργήσετε ένα νέο προφίλ</a>."
-
-#: wysiwyg_editor.module:1085
-msgid "You must give a profile name."
-msgstr "Πρέπει να εισάγετε ένα όνομα προφίλ."
-
-#: wysiwyg_editor.module:1089
-msgid "You must select at least one role."
-msgstr "Πρέπει να επιλέξετε τουλάχιστον ένα ρόλο."
-
-#: wysiwyg_editor.module:43
-msgid "administer wysiwyg_editor"
-msgstr "διαχείριση του wysiwyg_editor"
-
-#: wysiwyg_editor.module:43
-msgid "access wysiwyg_editor"
-msgstr "πρόσβαση στο wysiwyg_editor"
-
-#: wysiwyg_editor.module:44
-msgid "module"
-msgstr "άρθρωμα"
-
-#: wysiwyg_editor.module:46
-msgid "/wysiwyg_editor/jscripts/tiny_mce/plugins/imagemanager/"
-msgstr "/wysiwyg_editor/jscripts/tiny_mce/plugins/imagemanager/"
-
-#: wysiwyg_editor.module:47
-msgid "access wysiwyg_editor imagemanager"
-msgstr "πρόσβαση στο διαχειριστή εικόνων wysiwyg_editor"
-
-#: wysiwyg_editor.info:0
-msgid "The most popular WYSIWYG editor for advanced content editing."
-msgstr "Ο δημοφιλέστερος WYSIWYG συντάκτης κειμένου για προχωρημένη επεξεργασία περιεχομένου."
-
diff --git a/sites/all/modules/wysiwyg/translations/fi.po b/sites/all/modules/wysiwyg/translations/fi.po
deleted file mode 100644
index 7eece8cdcde16aba02f419799a9fd68dd1393197..0000000000000000000000000000000000000000
--- a/sites/all/modules/wysiwyg/translations/fi.po
+++ /dev/null
@@ -1,920 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: wysiwyg-6.x-2.0\n"
-"POT-Creation-Date: 2009-08-22 09:55+0300\n"
-"PO-Revision-Date: 2009-08-23 11:01+0200\n"
-"Last-Translator: Juhani Pirinen <juhani.pirinen@ontieto.com>\n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Poedit-Language: Finnish\n"
-"X-Poedit-Country: FINLAND\n"
-"X-Poedit-SourceCharset: utf-8\n"
-"X-Poedit-Bookmarks: -1,-1,-1,-1,-1,-1,54,-1,-1,-1\n"
-
-#: wysiwyg.api.php:51;52
-msgid "My plugin title"
-msgstr "Oman laajennusosan otsikko"
-
-#: wysiwyg.api.php:61
-msgid "Button title (optional)"
-msgstr "Painikkeen otsikko (vaihtoehtoinen)"
-
-#: wysiwyg.admin.inc:51
-msgid "%editor profile for %format"
-msgstr "%editor profiilili formaatille %format"
-
-#: wysiwyg.admin.inc:60
-msgid "Basic setup"
-msgstr "Perusasetukset"
-
-#: wysiwyg.admin.inc:67
-msgid "Enabled by default"
-msgstr "Käytössä oletusarvoisesti"
-
-#: wysiwyg.admin.inc:70
-msgid "The default editor state for users having access to this profile. Users are able to override this state if the next option is enabled."
-msgstr "Oletuseditoritila käyttäjille, joilla on pääsy tähän profiiliin. Käyttäjät pystyvät ohittamaan tämän tilan, jos seuraava valinta on käytössä."
-
-#: wysiwyg.admin.inc:75
-msgid "Allow users to choose default"
-msgstr "Salli käyttäjien valita oletus"
-
-#: wysiwyg.admin.inc:78
-msgid "If allowed, users will be able to choose their own editor default state in their user account settings."
-msgstr "Jos sallittu, käyttäjät pystyvät valitsemaan oman editorinsa oletustilan käyttäjätilinsä asetuksista."
-
-#: wysiwyg.admin.inc:83
-msgid "Show <em>enable/disable rich text</em> toggle link"
-msgstr "Näytä <em>ota editori käyttöön / poista editori käytöstä</em> kytkinlinkki"
-
-#: wysiwyg.admin.inc:86
-msgid "Whether or not to show the <em>enable/disable rich text</em> toggle link below a textarea. If disabled, the user setting or global default is used (see above)."
-msgstr "Joko näytetään tai ei näytetä <em>ota editori käyttöön / poista editori käytöstä</em> kytkinlinkki tekstialueen alla. Jos ei näytetä, käyttäjän asetus tai yleinen oletus on käytössä (katso yllä)."
-
-#: wysiwyg.admin.inc:96
-msgid "Language"
-msgstr "Kieli"
-
-#: wysiwyg.admin.inc:99
-msgid "The language to use for the editor interface. Language codes are based on the <a href=\"http://www.loc.gov/standards/iso639-2/englangn.html\">ISO-639-2</a> format."
-msgstr "Kieli, jota käytetään editorin käyttöliittymässä. Kielikoodit perustuvat <a href=\"http://www.loc.gov/standards/iso639-2/englangn.html\">ISO-639-2</a> formaattiin."
-
-#: wysiwyg.admin.inc:104
-msgid "Buttons and plugins"
-msgstr "Painikkeet ja laajennusosat"
-
-#: wysiwyg.admin.inc:149
-msgid "Editor appearance"
-msgstr "Editorin ulkoasu"
-
-#: wysiwyg.admin.inc:156
-msgid "Toolbar location"
-msgstr "Työkalupalkin sijainti"
-
-#: wysiwyg.admin.inc:158;174
-msgid "Bottom"
-msgstr "Alhaalla"
-
-#: wysiwyg.admin.inc:158;174
-msgid "Top"
-msgstr "Ylhäällä"
-
-#: wysiwyg.admin.inc:159
-msgid "This option controls whether the editor toolbar is displayed above or below the editing area."
-msgstr "Tämä valinta määrittelee näkyykö editorin työkalupalkki muokkausalueen ylä- vai alapuolella."
-
-#: wysiwyg.admin.inc:164
-msgid "Button alignment"
-msgstr "Painikkeiden tasaus"
-
-#: wysiwyg.admin.inc:166
-msgid "Center"
-msgstr "Keskellä"
-
-#: wysiwyg.admin.inc:166
-msgid "Left"
-msgstr "Vasemmalla"
-
-#: wysiwyg.admin.inc:166
-msgid "Right"
-msgstr "Oikealla"
-
-#: wysiwyg.admin.inc:167
-msgid "This option controls the alignment of icons in the editor toolbar."
-msgstr "Tämä valinta määrittelee kuvakkeiden tasauksen editorin työkalupalkissa."
-
-#: wysiwyg.admin.inc:172
-msgid "Path location"
-msgstr "Polun sijainti"
-
-#: wysiwyg.admin.inc:174
-msgid "Hide"
-msgstr "Piilossa"
-
-#: wysiwyg.admin.inc:175
-msgid "Where to display the path to HTML elements (i.e. <code>body > table > tr > td</code>)."
-msgstr "Missä näytetään polku HTML elementteihin (esim. <code>body > table > tr > td</code>)."
-
-#: wysiwyg.admin.inc:180
-msgid "Enable resizing button"
-msgstr "Ota käyttöön koonmuunnospainike"
-
-#: wysiwyg.admin.inc:183
-msgid "This option gives you the ability to enable/disable the resizing button. If enabled, the Path location toolbar must be set to \"Top\" or \"Bottom\" in order to display the resize icon."
-msgstr "Tämä valinta antaa mahdollisuuden ottaa käyttöön / poistaa käytöstä koonmuunnospainikkeen. Jos käytössä, Polun sijainti -työkalupalkki täytyy asettaa joko \"Ylös\" tai \"Alas\" jotta koonmuunnoskuvake näkyy."
-
-#: wysiwyg.admin.inc:188
-msgid "Cleanup and output"
-msgstr "Siistintä ja ulostulo"
-
-#: wysiwyg.admin.inc:195
-msgid "Verify HTML"
-msgstr "Tarkista HTML"
-
-#: wysiwyg.admin.inc:198
-msgid "If enabled, potentially malicious code like <code>&lt;HEAD&gt;</code> tags will be removed from HTML contents."
-msgstr "Jos käytössä, mahdolliset haitalliset koodit kuten <code>&lt;HEAD&gt;</code> merkkaukset poistetaan HTML sisällöstä."
-
-#: wysiwyg.admin.inc:203
-msgid "Preformatted"
-msgstr "Esimuotoiltu"
-
-#: wysiwyg.admin.inc:206
-msgid "If enabled, the editor will insert TAB characters on tab and preserve other whitespace characters just like a PRE element in HTML does."
-msgstr "Jos käytössä, editori lisää TAB merkkejä tab näppäimestä ja säilyttää muut whitespace merkit aivan kuten PRE elementti tekee HTML koodissa."
-
-#: wysiwyg.admin.inc:211
-msgid "Convert &lt;font&gt; tags to styles"
-msgstr "Muuntaa &lt;font&gt; merkkaukset tyyleiksi"
-
-#: wysiwyg.admin.inc:214
-msgid "If enabled, HTML tags declaring the font size, font family, font color and font background color will be replaced by inline CSS styles."
-msgstr "Jos käytössä, fonttikoon, fonttiperheen, fontin värin ja fontin taustavärin HTML merkkaukset korvataan rivinsisäisillä CSS tyyleillä."
-
-#: wysiwyg.admin.inc:219
-msgid "Remove linebreaks"
-msgstr "Poista rivinvaihdot"
-
-#: wysiwyg.admin.inc:222
-msgid "If enabled, the editor will remove most linebreaks from contents. Disabling this option could avoid conflicts with other input filters."
-msgstr "Jos käytössä, editori poistaa useimmat rivinvaihdot sisällöstä. Poistamalla käytöstä tämä valinta, voidaan välttää ristiriidat toisten syöttömuotojen kanssa."
-
-#: wysiwyg.admin.inc:227
-msgid "Apply source formatting"
-msgstr "Käytä lähdekoodin muotoilua"
-
-#: wysiwyg.admin.inc:230
-msgid "If enabled, the editor will re-format the HTML source code. Disabling this option could avoid conflicts with other input filters."
-msgstr "Jos käytössä, editori muotoilee uudelleen HTML lähdekoodin. Poistamalla käytöstä tämä valinta, voidaan välttää ristiriidat toisten syöttömuotojen kanssa."
-
-#: wysiwyg.admin.inc:235
-msgid "Force cleanup on standard paste"
-msgstr "Pakota siistintä normaalille liitä-toiminnolle"
-
-#: wysiwyg.admin.inc:238
-msgid "If enabled, the default paste function (CTRL-V or SHIFT-INS) behaves like the \"paste from word\" plugin function."
-msgstr "Jos käytössä, oletus liitä-toiminto (CTRL-V tai SHIFT-INS) käyttäytyy kuten \"liitä wordistä\" laajennusosan toiminto."
-
-#: wysiwyg.admin.inc:243
-msgid "CSS"
-msgstr "CSS"
-
-#: wysiwyg.admin.inc:250
-msgid "Block formats"
-msgstr "Kappalemerkkaukset"
-
-#: wysiwyg.admin.inc:254
-msgid "Comma separated list of HTML block formats. Possible values: <code>@format-list</code>."
-msgstr "Pilkulla eroteltu lista HTML kappaleiden merkkauksista.  Mahdolliset arvot: <code>@format-list</code>."
-
-#: wysiwyg.admin.inc:259
-msgid "Editor CSS"
-msgstr "Editorin CSS"
-
-#: wysiwyg.admin.inc:261
-msgid "Use theme CSS"
-msgstr "Käytä teeman CSS:ää"
-
-#: wysiwyg.admin.inc:261
-msgid "Define CSS"
-msgstr "Määrittele CSS"
-
-#: wysiwyg.admin.inc:261
-msgid "Editor default CSS"
-msgstr "Editorin oletus CSS"
-
-#: wysiwyg.admin.inc:262
-msgid "Defines the CSS to be used in the editor area.<br />Use theme CSS - loads stylesheets from current site theme.<br/>Define CSS - enter path for stylesheet files below.<br />Editor default CSS - uses default stylesheets from editor."
-msgstr "Määrittelee CSS:n, jota käytetään editorin alueella.<br>Käytä teeman CSS:ää - lataa tyylipohjat sivuston nykyisestä teemasta.<br>Määrittele CSS - anna polku tyylipohjatiedostoihin alla.<br>Editorin oletus CSS - käyttää editorin oletustyylipohjia."
-
-#: wysiwyg.admin.inc:267
-msgid "CSS path"
-msgstr "CSS polku"
-
-#: wysiwyg.admin.inc:271
-#, fuzzy
-msgid "If \"Define CSS\" was selected above, enter path to a CSS file or a list of CSS files separated by a comma."
-msgstr "Jos \"Määrittele CSS\"on valittu ylhäältä, anna polku CSS-tiedostoon tai CSS tiedostojen listaan, jotka on eroteltu pilkulla."
-
-#: wysiwyg.admin.inc:271
-msgid "Available tokens: <code>%b</code> (base path, eg: <code>/</code>), <code>%t</code> (path to theme, eg: <code>themes/garland</code>)"
-msgstr "Käytettävissä olevat merkit: <code>%b</code> (juuripolku, esim: <code>/</code>), <code>%t</code> (polku teemaan, esim: <code>themes/garland</code>)"
-
-#: wysiwyg.admin.inc:271
-msgid "Example:"
-msgstr "Esimerkki:"
-
-#: wysiwyg.admin.inc:276
-msgid "CSS classes"
-msgstr "CSS luokat"
-
-#: wysiwyg.admin.inc:278
-msgid "Optionally define CSS classes for the \"Font style\" dropdown list.<br />Enter one class on each line in the format: !format. Example: !example<br />If left blank, CSS classes are automatically imported from all loaded stylesheet(s)."
-msgstr "Vaihtoehtoisesti määrittele CSS luokat \"Fonttityyli\" pudotuslistalle.<br />Anna yksi luokka joka rivillä muodossa: !format. Esimerkki: !example<br />Jos jätetty tyhjäksi, CSS luokat tuodaan automaattisesti kaikista ladatuista tyylipohjista."
-
-#: wysiwyg.admin.inc:283;438
-msgid "Save"
-msgstr "Tallenna"
-
-#: wysiwyg.admin.inc:317
-msgid "Wysiwyg profile for %format has been saved."
-msgstr "Wysiwyg profiili %format on tallennettu."
-
-#: wysiwyg.admin.inc:366
-msgid "No editor"
-msgstr "Ei editoria"
-
-#: wysiwyg.admin.inc:371
-msgid "<a href=\"!vendor-url\">@editor</a> (<a href=\"!download-url\">Download</a>)"
-msgstr "<a href=\"!vendor-url\">@editor</a> (<a href=\"!download-url\">Lataa</a>)"
-
-#: wysiwyg.admin.inc:372
-msgid "Not installed."
-msgstr "Ei ole asennettu."
-
-#: wysiwyg.admin.inc:386
-msgid "Extract the archive and copy its contents into a new folder in the following location:<br /><code>@editor-path</code>"
-msgstr "Pura paketti ja kopioi sen sisältö uuteen kansioon seuraavaan sijaintiin: <br /><code>@editor-path</code>"
-
-#: wysiwyg.admin.inc:387
-msgid "So the actual library can be found at:<br /><code>@library-filepath</code>"
-msgstr "Jotta varsinainen kirjasto voidaan löytää sijainnista:<br /><code>@library-filepath</code>"
-
-#: wysiwyg.admin.inc:402
-msgid "Installation instructions"
-msgstr "Asennusohjeet"
-
-#: wysiwyg.admin.inc:405
-msgid "There are no editor libraries installed currently. The following list contains a list of currently supported editors:"
-msgstr "Editorin kirjastoja ei ole asennettu. Seuraava listaus sisältää tällä hetkellä tuetut editorit:"
-
-#: wysiwyg.admin.inc:430
-#: wysiwyg.module:26
-msgid "Edit"
-msgstr "Muokkaa"
-
-#: wysiwyg.admin.inc:433;489
-#: wysiwyg.module:36
-msgid "Remove"
-msgstr "Poista"
-
-#: wysiwyg.admin.inc:450
-msgid "Input format"
-msgstr "Syöttömuoto"
-
-#: wysiwyg.admin.inc:450
-msgid "Editor"
-msgstr "Editori"
-
-#: wysiwyg.admin.inc:450
-msgid "Operations"
-msgstr "Toimenpiteet"
-
-#: wysiwyg.admin.inc:487
-msgid "Are you sure you want to remove the profile for %name?"
-msgstr "Haluatko varmasti poistaa profiilin %name?"
-
-#: wysiwyg.admin.inc:489
-msgid "This action cannot be undone."
-msgstr "Tätä toimintoa ei voi perua."
-
-#: wysiwyg.admin.inc:489
-msgid "Cancel"
-msgstr "Peruuta"
-
-#: wysiwyg.admin.inc:501
-msgid "Wysiwyg profile for %name has been deleted."
-msgstr "Wysiwyg profiili %name on poistettu."
-
-#: wysiwyg.module:80
-msgid "A Wysiwyg profile can be associated to an input format. A Wysiwyg profile defines which client-side editor is loaded, what buttons or themes are enabled for the editor, how the editor is displayed, and a few other editor-specific functions."
-msgstr "Wysiwyg profiili voidaan liittää syöttömuotoon. Wysiwyg profiili määrittelee mikä asiakaspuolen editori ladataan, mitkä painikkeet tai teemat ovat käytössä editorissa, kuinka editori näytetään ja muutamia editorin omia toimintoja."
-
-#: wysiwyg.module:306
-msgid "Disable rich-text"
-msgstr "Poista editori käytöstä"
-
-#: wysiwyg.module:307
-msgid "Enable rich-text"
-msgstr "Ota editori käyttöön"
-
-#: wysiwyg.module:608
-msgid "Wysiwyg Editor settings"
-msgstr "Wysiwyg editorin asetukset"
-
-#: wysiwyg.module:615
-msgid "Enable editor by default"
-msgstr "Ota editori käyttöön oletuksena"
-
-#: wysiwyg.module:618
-msgid "If enabled, rich-text editing is enabled by default in textarea fields."
-msgstr "Jos käytössä, wysiwyg-editori on oletuksena käytössä tekstialuekentissä."
-
-#: wysiwyg.module:702
-msgid "The version of %editor could not be detected."
-msgstr "Editorin %editor versiota ei voitu havaita."
-
-#: wysiwyg.module:715
-msgid "The installed version %version of %editor is not supported."
-msgstr "Asennettu versio %version editorista %editor ei ole tuettu."
-
-#: wysiwyg.module:14
-#: wysiwyg.info:0
-msgid "Wysiwyg"
-msgstr "Wysiwyg"
-
-#: wysiwyg.module:17
-msgid "Configure client-side editors."
-msgstr "Määrittele asiakaspuolen editoriprofiilit"
-
-#: wysiwyg.module:22
-msgid "Profiles"
-msgstr "Profiilit"
-
-#: wysiwyg.install:10
-msgid "Stores Wysiwyg profiles."
-msgstr "Säilyttää Wysiwyg profiilit."
-
-#: wysiwyg.info:0
-msgid "Allows users to edit contents with client-side editors."
-msgstr "Sallii käyttäjän muokata sisältöä asiakaspuolen editoreilla."
-
-#: wysiwyg.info:0
-msgid "User interface"
-msgstr "Käyttöliittymä"
-
-#: editors/fckeditor.inc:217
-#: editors/markitup.inc:105;171
-#: editors/nicedit.inc:103
-#: editors/openwysiwyg.inc:141
-#: editors/tinymce.inc:377
-#: editors/whizzywig.inc:113
-#: editors/yui.inc:276
-msgid "Bold"
-msgstr "Lihavoitu"
-
-#: editors/fckeditor.inc:217
-#: editors/markitup.inc:112;171
-#: editors/nicedit.inc:103
-#: editors/openwysiwyg.inc:141
-#: editors/tinymce.inc:377
-#: editors/whizzywig.inc:113
-#: editors/yui.inc:276
-msgid "Italic"
-msgstr "Kursivoitu"
-
-#: editors/fckeditor.inc:217
-#: editors/nicedit.inc:103
-#: editors/openwysiwyg.inc:141
-#: editors/tinymce.inc:377
-#: editors/whizzywig.inc:113
-#: editors/yui.inc:276
-msgid "Underline"
-msgstr "Alleviivattu"
-
-#: editors/fckeditor.inc:218
-#: editors/markitup.inc:119;172
-#: editors/nicedit.inc:104
-#: editors/openwysiwyg.inc:142
-#: editors/tinymce.inc:378
-#: editors/yui.inc:277
-msgid "Strike-through"
-msgstr "Yliviivattu"
-
-#: editors/fckeditor.inc:219
-#: editors/nicedit.inc:105
-#: editors/openwysiwyg.inc:143
-#: editors/tinymce.inc:379
-#: editors/whizzywig.inc:114
-#: editors/yui.inc:278
-msgid "Align left"
-msgstr "Tasaa vasemmat reunat"
-
-#: editors/fckeditor.inc:219
-#: editors/nicedit.inc:105
-#: editors/openwysiwyg.inc:143
-#: editors/tinymce.inc:379
-#: editors/whizzywig.inc:114
-#: editors/yui.inc:278
-msgid "Align center"
-msgstr "Keskitä"
-
-#: editors/fckeditor.inc:219
-#: editors/nicedit.inc:105
-#: editors/openwysiwyg.inc:143
-#: editors/tinymce.inc:379
-#: editors/whizzywig.inc:114
-#: editors/yui.inc:278
-msgid "Align right"
-msgstr "Tasaa oikeat reunat"
-
-#: editors/fckeditor.inc:219
-#: editors/openwysiwyg.inc:143
-#: editors/tinymce.inc:379
-#: editors/yui.inc:278
-msgid "Justify"
-msgstr "Tasaa molemmat reunat"
-
-#: editors/fckeditor.inc:220
-#: editors/nicedit.inc:106
-#: editors/openwysiwyg.inc:144
-#: editors/tinymce.inc:380
-#: editors/whizzywig.inc:115
-#: editors/yui.inc:279
-msgid "Bullet list"
-msgstr "Luettelomerkkilista"
-
-#: editors/fckeditor.inc:220
-#: editors/nicedit.inc:106
-#: editors/openwysiwyg.inc:144
-#: editors/tinymce.inc:380
-#: editors/whizzywig.inc:115
-#: editors/yui.inc:279
-msgid "Numbered list"
-msgstr "Numeroitu lista"
-
-#: editors/fckeditor.inc:221
-#: editors/nicedit.inc:107
-#: editors/openwysiwyg.inc:145
-#: editors/tinymce.inc:381
-#: editors/whizzywig.inc:116
-#: editors/yui.inc:280
-msgid "Outdent"
-msgstr "Pienennä sisennystä"
-
-#: editors/fckeditor.inc:221
-#: editors/nicedit.inc:107
-#: editors/openwysiwyg.inc:145
-#: editors/tinymce.inc:381
-#: editors/whizzywig.inc:116
-#: editors/yui.inc:280
-msgid "Indent"
-msgstr "Suurenna sisennystä"
-
-#: editors/fckeditor.inc:222
-#: editors/openwysiwyg.inc:146
-#: editors/tinymce.inc:382
-#: editors/whizzywig.inc:117
-#: editors/yui.inc:281
-msgid "Undo"
-msgstr "Kumoa"
-
-#: editors/fckeditor.inc:222
-#: editors/openwysiwyg.inc:146
-#: editors/tinymce.inc:382
-#: editors/whizzywig.inc:117
-#: editors/yui.inc:281
-msgid "Redo"
-msgstr "Toista"
-
-#: editors/fckeditor.inc:223
-#: editors/markitup.inc:132;174
-#: editors/nicedit.inc:114
-#: editors/openwysiwyg.inc:147
-#: editors/tinymce.inc:383
-#: editors/whizzywig.inc:121
-#: editors/yui.inc:282
-msgid "Link"
-msgstr "Linkki"
-
-#: editors/fckeditor.inc:223
-#: editors/nicedit.inc:114
-#: editors/tinymce.inc:383
-msgid "Unlink"
-msgstr "Poista linkki"
-
-#: editors/fckeditor.inc:223
-#: editors/tinymce.inc:383
-msgid "Anchor"
-msgstr "Ankkuri"
-
-#: editors/fckeditor.inc:224
-#: editors/markitup.inc:126;173
-#: editors/nicedit.inc:108
-#: editors/openwysiwyg.inc:148
-#: editors/tinymce.inc:384
-#: editors/whizzywig.inc:118;122
-#: editors/yui.inc:283
-msgid "Image"
-msgstr "Kuva"
-
-#: editors/fckeditor.inc:225
-#: editors/nicedit.inc:109
-#: editors/openwysiwyg.inc:150
-#: editors/tinymce.inc:386
-#: editors/whizzywig.inc:119
-msgid "Forecolor"
-msgstr "Tekstiväri"
-
-#: editors/fckeditor.inc:225
-#: editors/nicedit.inc:109
-#: editors/openwysiwyg.inc:150
-#: editors/tinymce.inc:386
-#: editors/whizzywig.inc:119
-msgid "Backcolor"
-msgstr "Taustaväri"
-
-#: editors/fckeditor.inc:226
-msgid "Superscript"
-msgstr "Yläindeksi"
-
-#: editors/fckeditor.inc:226
-msgid "Subscript"
-msgstr "Alaindeksi"
-
-#: editors/fckeditor.inc:227
-#: editors/openwysiwyg.inc:152
-#: editors/tinymce.inc:388
-msgid "Blockquote"
-msgstr "Kappalelainaus"
-
-#: editors/fckeditor.inc:227
-#: editors/nicedit.inc:116
-#: editors/openwysiwyg.inc:152
-#: editors/tinymce.inc:388
-#: editors/whizzywig.inc:125
-msgid "Source code"
-msgstr "Lähdekoodi"
-
-#: editors/fckeditor.inc:228
-#: editors/nicedit.inc:111
-#: editors/openwysiwyg.inc:153
-#: editors/tinymce.inc:389
-#: editors/whizzywig.inc:120
-msgid "Horizontal rule"
-msgstr "Vaakaviiva"
-
-#: editors/fckeditor.inc:229
-#: editors/openwysiwyg.inc:154
-#: editors/tinymce.inc:390
-msgid "Cut"
-msgstr "Leikkaa"
-
-#: editors/fckeditor.inc:229
-#: editors/openwysiwyg.inc:154
-#: editors/tinymce.inc:390
-msgid "Copy"
-msgstr "Kopioi"
-
-#: editors/fckeditor.inc:229
-#: editors/openwysiwyg.inc:154
-#: editors/tinymce.inc:390
-msgid "Paste"
-msgstr "Liitä"
-
-#: editors/fckeditor.inc:230
-msgid "Paste Text"
-msgstr "Liitä teksti"
-
-#: editors/fckeditor.inc:230
-#: editors/tinymce.inc:494
-msgid "Paste from Word"
-msgstr "Liitä Wordista"
-
-#: editors/fckeditor.inc:231
-msgid "Show blocks"
-msgstr "Näytä elementit"
-
-#: editors/fckeditor.inc:232
-#: editors/openwysiwyg.inc:156
-#: editors/tinymce.inc:392
-#: editors/yui.inc:287
-msgid "Remove format"
-msgstr "Poista muotoilu"
-
-#: editors/fckeditor.inc:233
-#: editors/openwysiwyg.inc:157
-#: editors/tinymce.inc:393
-msgid "Character map"
-msgstr "Merkkikartta"
-
-#: editors/fckeditor.inc:234
-msgid "About"
-msgstr "Tietoja"
-
-#: editors/fckeditor.inc:235
-#: editors/nicedit.inc:115
-#: editors/openwysiwyg.inc:158
-#: editors/tinymce.inc:452
-#: editors/whizzywig.inc:112
-#: editors/yui.inc:288
-msgid "HTML block format"
-msgstr "HTML kappaleen merkkaus"
-
-#: editors/fckeditor.inc:235
-#: editors/nicedit.inc:115
-#: editors/openwysiwyg.inc:158
-#: editors/tinymce.inc:452
-#: editors/whizzywig.inc:112
-#: editors/yui.inc:288
-msgid "Font"
-msgstr "Fontti"
-
-#: editors/fckeditor.inc:235
-#: editors/nicedit.inc:115
-#: editors/openwysiwyg.inc:158
-#: editors/tinymce.inc:452
-#: editors/whizzywig.inc:112
-#: editors/yui.inc:288
-msgid "Font size"
-msgstr "Fonttikoko"
-
-#: editors/fckeditor.inc:235
-#: editors/tinymce.inc:452
-msgid "Font style"
-msgstr "Fonttityyli"
-
-#: editors/fckeditor.inc:236
-#: editors/openwysiwyg.inc:162
-#: editors/tinymce.inc:529
-#: editors/whizzywig.inc:123
-msgid "Table"
-msgstr "Taulukko"
-
-#: editors/fckeditor.inc:237
-#: editors/tinymce.inc:515
-msgid "Search"
-msgstr "Etsi"
-
-#: editors/fckeditor.inc:237
-#: editors/tinymce.inc:515
-msgid "Replace"
-msgstr "Korvaa"
-
-#: editors/fckeditor.inc:237
-#: editors/tinymce.inc:494
-msgid "Select all"
-msgstr "Valitse kaikki"
-
-#: editors/fckeditor.inc:238
-msgid "Create DIV container"
-msgstr "Luo DIV alue"
-
-#: editors/fckeditor.inc:239
-#: editors/tinymce.inc:538
-msgid "Flash"
-msgstr "Flash"
-
-#: editors/fckeditor.inc:239
-msgid "Smiley"
-msgstr "Hymiö"
-
-#: editors/fckeditor.inc:240
-msgid "FitWindow"
-msgstr "Sovita ikkunaan"
-
-#: editors/fckeditor.inc:241
-msgid "Check spelling"
-msgstr "Tarkista oikeinkirjoitus"
-
-#: editors/fckeditor.inc:248
-msgid "Autogrow"
-msgstr "Kasva automaattisesti"
-
-#: editors/fckeditor.inc:259
-#: editors/tinymce.inc:564
-msgid "BBCode"
-msgstr "BBCode"
-
-#: editors/fckeditor.inc:267
-msgid "Table drag/resize"
-msgstr "Taulukon vetäminen / koon muuttaminen"
-
-#: editors/fckeditor.inc:275
-msgid "Table: Cell properties"
-msgstr "Taulukko: Solun ominaisuudet"
-
-#: editors/fckeditor.inc:276
-msgid "Table: Insert row after"
-msgstr "Taulukko: Lisää rivi perään"
-
-#: editors/fckeditor.inc:277
-msgid "Table: Insert column after"
-msgstr "Taulukko: Lisää sarake perään"
-
-#: editors/fckeditor.inc:278
-msgid "Table: Insert cell after"
-msgstr "Taulukko: Lisää solu perään"
-
-#: editors/fckeditor.inc:279
-msgid "Table: Delete rows"
-msgstr "Taulukko: Poista rivit"
-
-#: editors/fckeditor.inc:280
-msgid "Table: Delete columns"
-msgstr "Taulukko: Poista sarakkeet"
-
-#: editors/fckeditor.inc:281
-msgid "Table: Delete cells"
-msgstr "Taulukko: Poista solut"
-
-#: editors/fckeditor.inc:282
-msgid "Table: Merge cells"
-msgstr "Taulukko: Yhdistä solut"
-
-#: editors/fckeditor.inc:283
-msgid "Table: Horizontal split cell"
-msgstr "Taulukko: Jaa solu vaakasuunnassa"
-
-#: editors/markitup.inc:142;176
-#: editors/openwysiwyg.inc:160
-#: editors/tinymce.inc:501
-msgid "Preview"
-msgstr "Esikatselu"
-
-#: editors/nicedit.inc:110
-#: editors/openwysiwyg.inc:151
-#: editors/tinymce.inc:387
-#: editors/yui.inc:285
-msgid "Sup"
-msgstr "Yläindeksi"
-
-#: editors/nicedit.inc:110
-#: editors/openwysiwyg.inc:151
-#: editors/tinymce.inc:387
-#: editors/yui.inc:285
-msgid "Sub"
-msgstr "Alaindeksi"
-
-#: editors/openwysiwyg.inc:149
-#: editors/tinymce.inc:385
-#: editors/whizzywig.inc:124
-msgid "Clean-up"
-msgstr "Poista muotoilu"
-
-#: editors/openwysiwyg.inc:155
-#: editors/tinymce.inc:391
-msgid "Visual aid"
-msgstr "Visuaalinen apu"
-
-#: editors/openwysiwyg.inc:159
-#: editors/tinymce.inc:459
-msgid "Fullscreen"
-msgstr "Kokoruututila"
-
-#: editors/openwysiwyg.inc:161
-#: editors/tinymce.inc:508
-msgid "Print"
-msgstr "Tulosta"
-
-#: editors/openwysiwyg.inc:163
-#: editors/tinymce.inc:394
-msgid "Help"
-msgstr "Ohje"
-
-#: editors/tinymce.inc:400
-msgid "Advanced horizontal rule"
-msgstr "Edistynyt vaakaviiva"
-
-#: editors/tinymce.inc:408
-msgid "Advanced image"
-msgstr "Edistynyt kuva"
-
-#: editors/tinymce.inc:416
-msgid "Advanced link"
-msgstr "Edistynyt linkki"
-
-#: editors/tinymce.inc:424
-msgid "Auto save"
-msgstr "Automaattinen tallennus"
-
-#: editors/tinymce.inc:431
-msgid "Context menu"
-msgstr "Kohdevalikko"
-
-#: editors/tinymce.inc:438
-msgid "Left-to-right"
-msgstr "Vasemmalta oikealle"
-
-#: editors/tinymce.inc:438
-msgid "Right-to-left"
-msgstr "Oikealta vasemmalle"
-
-#: editors/tinymce.inc:445
-msgid "Emotions"
-msgstr "Hymiöt"
-
-#: editors/tinymce.inc:466
-msgid "Inline popups"
-msgstr "Tekstinsisäiset ponnahdusikkunat"
-
-#: editors/tinymce.inc:476
-msgid "Insert date"
-msgstr "Lisää päiväys"
-
-#: editors/tinymce.inc:476
-msgid "Insert time"
-msgstr "Lisää aika"
-
-#: editors/tinymce.inc:487
-msgid "Insert layer"
-msgstr "Lisää taso"
-
-#: editors/tinymce.inc:487
-msgid "Move forward"
-msgstr "Siirrä eteenpäin"
-
-#: editors/tinymce.inc:487
-msgid "Move backward"
-msgstr "Siirrä taaksepäin"
-
-#: editors/tinymce.inc:487
-msgid "Absolute"
-msgstr "Absoluuttinen"
-
-#: editors/tinymce.inc:494
-msgid "Paste text"
-msgstr "Liitä teksti"
-
-#: editors/tinymce.inc:522
-msgid "Style properties"
-msgstr "Tyyliominaisuudet"
-
-#: editors/tinymce.inc:548
-msgid "Media"
-msgstr "Media"
-
-#: editors/tinymce.inc:555
-msgid "Citation"
-msgstr "Sitaatti"
-
-#: editors/tinymce.inc:555
-msgid "Deleted"
-msgstr "Poistettu"
-
-#: editors/tinymce.inc:555
-msgid "Abbreviation"
-msgstr "Lyhennetty muoto"
-
-#: editors/tinymce.inc:555
-msgid "Acronym"
-msgstr "Lyhenne"
-
-#: editors/tinymce.inc:555
-msgid "Inserted"
-msgstr "Lisätty"
-
-#: editors/tinymce.inc:571
-msgid "Safari compatibility"
-msgstr "Safari yhteensopivuus"
-
-#: editors/whizzywig.inc:126
-msgid "Spell check"
-msgstr "Oikoluku"
-
-#: editors/yui.inc:284
-msgid "Font Color"
-msgstr "Fontin väri"
-
-#: editors/yui.inc:284
-msgid "Background Color"
-msgstr "Taustaväri"
-
-#: editors/yui.inc:286
-msgid "Show/hide hidden elements"
-msgstr "Näytä/piilota piilotetut elementit"
-
-#: plugins/break.inc:14
-msgid "Teaser break"
-msgstr "Tiivistelmän katkaisu"
-
-#: plugins/break.inc:17
-msgid "Separate the teaser and body of this content"
-msgstr "Erota tämän sisällön tiivistelmä ja vartalo"
-
-#~ msgid "Home"
-#~ msgstr "Koti"
-#~ msgid "Administer"
-#~ msgstr "Ylläpitäjä"
-#~ msgid "Site configuration"
-#~ msgstr "Sivustoasetukset"
-#~ msgid "Wysiwyg profiles"
-#~ msgstr "Wysiwyg profiilit"
-#~ msgid "%format Wysiwyg profile"
-#~ msgstr "%format Wysiwyg profiili"
-#~ msgid "wysiwyg"
-#~ msgstr "wysiwyg"
-
diff --git a/sites/all/modules/wysiwyg/translations/fr.po b/sites/all/modules/wysiwyg/translations/fr.po
deleted file mode 100644
index 5e658f9511687961f071c363068c75a9794bfac7..0000000000000000000000000000000000000000
--- a/sites/all/modules/wysiwyg/translations/fr.po
+++ /dev/null
@@ -1,836 +0,0 @@
-# $Id: fr.po,v 1.2 2009/04/01 16:07:06 slybud Exp $
-#
-# French translation of Drupal (general)
-# Copyright YEAR NAME <EMAIL@ADDRESS>
-# Generated from files:
-#  wysiwyg.api.php,v 1.2 2008/10/29 12:20:20 sun
-#  wysiwyg.admin.inc,v 1.6.2.2 2009/02/12 09:29:42 sun
-#  wysiwyg.plugins.inc,v 1.1 2008/10/14 21:45:07 sun
-#  wysiwyg.module,v 1.17.2.5 2009/02/01 10:05:20 sun
-#  wysiwyg.info,v 1.1 2008/10/14 21:45:07 sun
-#  wysiwyg.install,v 1.3 2008/11/03 23:57:40 sun
-#  fckeditor.inc,v 1.6.2.5 2009/02/13 02:22:29 sun
-#  markitup.inc,v 1.1.2.2 2009/01/06 01:40:37 sun
-#  nicedit.inc,v 1.4 2008/12/05 15:35:23 sun
-#  tinymce.inc,v 1.17.2.10 2009/02/13 03:31:49 sun
-#  whizzywig.inc,v 1.1 2008/11/17 00:06:33 sun
-#  yui.inc,v 1.1 2008/12/08 18:58:10 sun
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: french translation for wysiwyg drupal6 module\n"
-"POT-Creation-Date: 2009-04-01 17:46+0200\n"
-"PO-Revision-Date: 2009-04-01 18:03+0100\n"
-"Last-Translator: Sylvain Moreau <sylvain.moreau@ows.fr>\n"
-"Language-Team: Stéphane Bordage, BREEK/reviewed by Sylvain Moreau, OWS <sbordage@breek.fr>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-"X-Poedit-Language: French\n"
-"X-Poedit-Country: FRANCE\n"
-
-#: wysiwyg.api.php:50;51
-msgid "My plugin title"
-msgstr "Titre de mon plugin"
-
-#: wysiwyg.api.php:60
-msgid "Button title (optional)"
-msgstr "Titre du bouton (optionnel)"
-
-#: wysiwyg.admin.inc:19
-msgid "Home"
-msgstr "Accueil"
-
-#: wysiwyg.admin.inc:20
-msgid "Administer"
-msgstr "Administrer"
-
-#: wysiwyg.admin.inc:21
-msgid "Site configuration"
-msgstr "Configuration du site"
-
-#: wysiwyg.admin.inc:22
-msgid "Wysiwyg profiles"
-msgstr "Profils wysiwyg "
-
-#: wysiwyg.admin.inc:78
-msgid "%format Wysiwyg profile"
-msgstr "Profil wysiwyg %format"
-
-#: wysiwyg.admin.inc:87
-msgid "Basic setup"
-msgstr "Paramétrage de base"
-
-#: wysiwyg.admin.inc:94
-msgid "Enabled by default"
-msgstr "Activé par défaut"
-
-#: wysiwyg.admin.inc:97
-msgid "The default editor state for users having access to this profile. Users are able to override this state if the next option is enabled."
-msgstr "L'état par défaut de l'éditeur pour les utilisateurs ayant accès à ce profil. Les utilisateurs peuvent surcharger cet état si la prochaine option (ci-dessous) est activée."
-
-#: wysiwyg.admin.inc:102
-msgid "Allow users to choose default"
-msgstr "Autoriser les utilisateurs à choisir un éditeur par défaut"
-
-#: wysiwyg.admin.inc:105
-msgid "If allowed, users will be able to choose their own editor default state in their user account settings."
-msgstr "Si autorisé, les utilisateurs pourront choisir leur éditeur par défaut dans les paramètres de leur compte utilisateur."
-
-#: wysiwyg.admin.inc:110
-msgid "Show <em>enable/disable rich text</em> toggle link"
-msgstr "Montrer un lien de basculement <em>activer / désactiver l'éditeur de texte riche</em>"
-
-#: wysiwyg.admin.inc:113
-msgid "Whether or not to show the <em>enable/disable rich text</em> toggle link below a textarea. If disabled, the user setting or global default is used (see above)."
-msgstr "Choisir de montrer ou non le lien  <em>activer / désactiver l'éditeur de texte riche</em> sous une zone de texte. Si désactivé, le paramétrage de l'utilisateur ou le paramétrage global par défaut est utilisé (voir ci-dessus)."
-
-#: wysiwyg.admin.inc:123
-msgid "Language"
-msgstr "Langue"
-
-#: wysiwyg.admin.inc:126
-msgid "The language to use for the editor interface. Language codes are based on the <a href=\"http://www.loc.gov/standards/iso639-2/englangn.html\">ISO-639-2</a> format."
-msgstr "La langue à utiliser pour l'interface de l'éditeur. Les codes de langue sont basés sur le format <a href=\"http://www.loc.gov/standards/iso639-2/englangn.html\">ISO-639-2</a>."
-
-#: wysiwyg.admin.inc:131
-msgid "Buttons and plugins"
-msgstr "Boutons et plugins"
-
-#: wysiwyg.admin.inc:176
-msgid "Editor appearance"
-msgstr "Apparence de l'éditeur"
-
-#: wysiwyg.admin.inc:183
-msgid "Toolbar location"
-msgstr "Place de la barre d'outils"
-
-#: wysiwyg.admin.inc:185;201
-msgid "Bottom"
-msgstr "En bas"
-
-#: wysiwyg.admin.inc:185;201
-msgid "Top"
-msgstr "En haut"
-
-#: wysiwyg.admin.inc:186
-msgid "This option controls whether the editor toolbar is displayed above or below the editing area."
-msgstr "Cette option contrôle si la barre d'outils est affichée au-dessus ou en-dessous des zones d'édition."
-
-#: wysiwyg.admin.inc:191
-msgid "Button alignment"
-msgstr "Alignement des boutons"
-
-#: wysiwyg.admin.inc:193
-msgid "Center"
-msgstr "Centrer"
-
-#: wysiwyg.admin.inc:193
-msgid "Left"
-msgstr "Gauche"
-
-#: wysiwyg.admin.inc:193
-msgid "Right"
-msgstr "Droite"
-
-#: wysiwyg.admin.inc:194
-msgid "This option controls the alignment of icons in the editor toolbar."
-msgstr "Cette option contrôle l'alignement des icônes dans la barre d'outils de l'éditeur."
-
-#: wysiwyg.admin.inc:199
-msgid "Path location"
-msgstr "Chemin"
-
-#: wysiwyg.admin.inc:201
-msgid "Hide"
-msgstr "Cacher"
-
-#: wysiwyg.admin.inc:202
-msgid "Where to display the path to HTML elements (i.e. <code>body > table > tr > td</code>)."
-msgstr "Où afficher le chemin des éléments HTML (par exemple <code>body > table > tr > td</code>)."
-
-#: wysiwyg.admin.inc:207
-msgid "Enable resizing button"
-msgstr "Activer le bouton de redimensionnement"
-
-#: wysiwyg.admin.inc:210
-msgid "This option gives you the ability to enable/disable the resizing button. If enabled, the Path location toolbar must be set to \"Top\" or \"Bottom\" in order to display the resize icon."
-msgstr "Cette option vous donne la possibilité d'activer/désactiver le bouton de redimensionnement. Si activé, le chemin de la barre d'outils doit être  \"haut\" ou \"bas\" de manière à pouvoir afficher l'icône."
-
-#: wysiwyg.admin.inc:215
-msgid "Cleanup and output"
-msgstr "Nettoyage et sortie"
-
-#: wysiwyg.admin.inc:222
-msgid "Verify HTML"
-msgstr "Vérifier le HTML"
-
-#: wysiwyg.admin.inc:225
-msgid "If enabled, potentially malicious code like <code>&lt;HEAD&gt;</code> tags will be removed from HTML contents."
-msgstr "Si activé, du code potentiellement dangereux (<code>&lt;HEAD&gt;</code> par exemple) sera supprimer du contenu HTML."
-
-#: wysiwyg.admin.inc:230
-msgid "Preformatted"
-msgstr "Texte préformaté"
-
-#: wysiwyg.admin.inc:233
-msgid "If enabled, the editor will insert TAB characters on tab and preserve other whitespace characters just like a PRE element in HTML does."
-msgstr "Si activé, l'éditeur insérera des carractères TAB et préservera les autres carractères d'espace comme l'élément PRE en HTML."
-
-#: wysiwyg.admin.inc:238
-msgid "Convert &lt;font&gt; tags to styles"
-msgstr "Convertir les balises &lt;font&gt; en styles"
-
-#: wysiwyg.admin.inc:241
-msgid "If enabled, HTML tags declaring the font size, font family, font color and font background color will be replaced by inline CSS styles."
-msgstr "Si activé, les balises HTML déclarant la taille, la famille, la couleur de la police et la couleur du fond seront remplacées par des styles CSS inline."
-
-#: wysiwyg.admin.inc:246
-msgid "Remove linebreaks"
-msgstr "Supprimer les sauts en fin de ligne"
-
-#: wysiwyg.admin.inc:249
-msgid "If enabled, the editor will remove most linebreaks from contents. Disabling this option could avoid conflicts with other input filters."
-msgstr "Si activé, l'éditeur supprimera la plupart des sauts en fin de ligne du contenu. Désactiver cette option peut permettre d'éviter des conflits avec d'autres filtres d'entrée."
-
-#: wysiwyg.admin.inc:254
-msgid "Apply source formatting"
-msgstr "Reformater le code"
-
-#: wysiwyg.admin.inc:257
-msgid "If enabled, the editor will re-format the HTML source code. Disabling this option could avoid conflicts with other input filters."
-msgstr "Si activé, l'éditeur reformatera le code source HTML. Désactiver cette option peut permettre d'éviter des conflits avec d'autres filtres d'entrée."
-
-#: wysiwyg.admin.inc:262
-msgid "Force cleanup on standard paste"
-msgstr "Forcer le nettoyage lors des collages standards"
-
-#: wysiwyg.admin.inc:265
-msgid "If enabled, the default paste function (CTRL-V or SHIFT-INS) behaves like the \"paste from word\" plugin function."
-msgstr "Si activé, la fonction par défaut de collage (CTRL-V ou SHIFT-INS) se comporte comme la fonction \"Copier depuis Word\"."
-
-#: wysiwyg.admin.inc:270
-msgid "CSS"
-msgstr "CSS"
-
-#: wysiwyg.admin.inc:277
-msgid "Block formats"
-msgstr "Formats de bloc"
-
-#: wysiwyg.admin.inc:281
-msgid "Comma separated list of HTML block formats. Possible values: <code>@format-list</code>."
-msgstr "Liste séparée par des virgules de formats de bloc HTML. Valeurs possibles : <code>@format-list</code>."
-
-#: wysiwyg.admin.inc:286
-msgid "Editor CSS"
-msgstr "Editeur CSS"
-
-#: wysiwyg.admin.inc:288
-msgid "Use theme CSS"
-msgstr "Utiliser la CSS du thème"
-
-#: wysiwyg.admin.inc:288
-msgid "Define CSS"
-msgstr "Définir une CSS"
-
-#: wysiwyg.admin.inc:288
-msgid "Editor default CSS"
-msgstr "CSS par défaut de l'Editeur"
-
-#: wysiwyg.admin.inc:289
-msgid "Defines the CSS to be used in the editor area.<br />Use theme CSS - loads stylesheets from current site theme.<br/>Define CSS - enter path for stylesheet files below.<br />Editor default CSS - uses default stylesheets from editor."
-msgstr "Définit la CSS à utiliser dans la zone de l'éditeur.<br />Utiliser la CSS du thème - charge les feuilles de style depuis le thème courant<br/>Définir la CSS - saisissez le chemin des fichiers des feuilles de style ci-desous<br />CSS par défaut de l'éditeur - utilise les feuilles de style par défaut de l'éditeur."
-
-#: wysiwyg.admin.inc:294
-msgid "CSS path"
-msgstr "Chemin de la CSS"
-
-#: wysiwyg.admin.inc:298
-msgid "If \"Define CSS\" has been selected above, enter path to a CSS file or a list of CSS files seperated by a comma."
-msgstr "Si \"Définir une CSS\" a été sélectionné ci-dessus, saisissez le chemin vers la CSS ou une liste de CSS, séparées par des vigules."
-
-#: wysiwyg.admin.inc:298
-msgid "Available tokens: %b (base path, f.e.: /), %t (path to theme, f.e.: themes/garland)"
-msgstr "Jetons (tokens) disponibles : %b (chemin de base, / par exemple), %t (chemin du thème, themes/garland par exemple)"
-
-#: wysiwyg.admin.inc:298
-msgid "Examples:"
-msgstr "Exemples:"
-
-#: wysiwyg.admin.inc:303
-msgid "CSS classes"
-msgstr "Classes CSS"
-
-#: wysiwyg.admin.inc:305
-msgid "Optionally define CSS classes for the \"Font style\" dropdown list.<br />Enter one class on each line in the format: !format. Example: !example<br />If left blank, CSS classes are automatically imported from all loaded stylesheet(s)."
-msgstr "Vous pouvez définir des classes CSS pour la liste déroulante \"Style de police\". Saisissez une classe par ligne dans le format : !example<br />Si vide, les classes CSS sont automatiquement importées depuis toutes les CSS chargées."
-
-#: wysiwyg.admin.inc:310;444
-msgid "Save"
-msgstr "Enregistrer"
-
-#: wysiwyg.admin.inc:343
-msgid "Wysiwyg profile for %format has been saved."
-msgstr "Le profil wysiwyg pour %format a été enregistré."
-
-#: wysiwyg.admin.inc:392
-msgid "No editor"
-msgstr "Aucun éditeur"
-
-#: wysiwyg.admin.inc:396
-msgid "<a href=\"!vendor-url\">@editor</a> (<a href=\"!download-url\">Download</a>)"
-msgstr "<a href=\"!vendor-url\">@editor</a> (<a href=\"!download-url\">Télécharger</a>)"
-
-#: wysiwyg.admin.inc:397
-msgid "Not installed."
-msgstr "Non installé."
-
-#: wysiwyg.admin.inc:398
-msgid "Extract the archive and copy its contents into a new folder in the following location:<br /><code>@editor-path</code>"
-msgstr "Extraire l'archive et la copier dans un nouveau répertoire ici : <br /><code>@editor-path</code>"
-
-#: wysiwyg.admin.inc:409
-msgid "Installation instructions"
-msgstr "Instructions d'installation"
-
-#: wysiwyg.admin.inc:412
-msgid "There are no editor libraries installed currently. The following list contains a list of currently supported editors:"
-msgstr "Il n'y a pas de librairie d'éditeur installée pour le moment. La liste suivante contient la liste des éditeurs supportés pour l'instant :"
-
-#: wysiwyg.admin.inc:436
-msgid "Edit"
-msgstr "Éditer"
-
-#: wysiwyg.admin.inc:439;496
-msgid "Remove"
-msgstr "Supprimer"
-
-#: wysiwyg.admin.inc:456
-msgid "Input format"
-msgstr "Format d'entrée"
-
-#: wysiwyg.admin.inc:456
-msgid "Editor"
-msgstr "Editeur"
-
-#: wysiwyg.admin.inc:456
-msgid "Operations"
-msgstr "Opérations"
-
-#: wysiwyg.admin.inc:494
-msgid "Are you sure you want to remove the profile for %name?"
-msgstr "Êtes-vous sur de vouloir supprimer le profil pour %name ?"
-
-#: wysiwyg.admin.inc:496
-msgid "This action cannot be undone."
-msgstr "Cette action est irréversible."
-
-#: wysiwyg.admin.inc:496
-msgid "Cancel"
-msgstr "Annuler"
-
-#: wysiwyg.admin.inc:507
-msgid "Wysiwyg profile for %name has been deleted."
-msgstr "Le profil wysiwyg pour %name  a été supprimé."
-
-#: wysiwyg.plugins.inc:15
-msgid "Teaser break"
-msgstr "Séparation du résumé"
-
-#: wysiwyg.module:41
-msgid "A Wysiwyg profile can be associated to an input format. A Wysiwyg profile defines, which client-side editor is loaded, can define what buttons or themes are enabled for the editor, how the editor is displayed, and a few other editor-specific functions."
-msgstr "Un profil wysiwyg peut être associé à un format d'entrée. Un profil wysiwyg définit quel éditeur est chargé côté client, et peut définir quels boutons ou thèmes sont activés pour l'éditeur, la manière dont l'éditeur est affiché, et quelques autres fonctions spécifiques à l'éditeur."
-
-#: wysiwyg.module:273
-msgid "Disable rich-text"
-msgstr "Désactiver le texte riche"
-
-#: wysiwyg.module:274
-msgid "Enable rich-text"
-msgstr "Activer le texte riche"
-
-#: wysiwyg.module:485
-msgid "Wysiwyg Editor settings"
-msgstr "Paramètres de l'éditeur wysiwyg"
-
-#: wysiwyg.module:492
-msgid "Enable editor by default"
-msgstr "Activer l'éditeur par défaut"
-
-#: wysiwyg.module:495
-msgid "If enabled, rich-text editing is enabled by default in textarea fields."
-msgstr "si activé, l'édition de texte riche est activé par défaut dans les textearea."
-
-#: wysiwyg.module:579
-msgid "The version of %editor could not be detected."
-msgstr "La version de %editor ne peut pas être détectée."
-
-#: wysiwyg.module:592
-msgid "The installed version %version of %editor is not supported."
-msgstr "La version instalée (%version) de %editor n'est pas supportée."
-
-#: wysiwyg.module:15
-#: wysiwyg.info:0
-msgid "Wysiwyg"
-msgstr "Wysiwyg"
-
-#: wysiwyg.module:17
-msgid "Configure client-side editor profiles."
-msgstr "Configurer les profiles d'éditeur côté client."
-
-#: wysiwyg.module:0
-msgid "wysiwyg"
-msgstr "wysiwyg"
-
-#: wysiwyg.install:10
-msgid "Stores Wysiwyg profiles."
-msgstr "Sauvegarde les profile Wysiwyg."
-
-#: wysiwyg.info:0
-msgid "Allows users to edit contents with client-side editors."
-msgstr "Autorise les utilisateurs à éditer des contenus avec des éditeurs de texte riche."
-
-#: wysiwyg.info:0
-msgid "User interface"
-msgstr "Interface utilisateur"
-
-#: editors/fckeditor.inc:166
-#: editors/markitup.inc:91;140
-#: editors/nicedit.inc:102
-#: editors/tinymce.inc:344
-#: editors/whizzywig.inc:110
-#: editors/yui.inc:227
-msgid "Bold"
-msgstr "Gras"
-
-#: editors/fckeditor.inc:166
-#: editors/markitup.inc:92;140
-#: editors/nicedit.inc:102
-#: editors/tinymce.inc:344
-#: editors/whizzywig.inc:110
-#: editors/yui.inc:227
-msgid "Italic"
-msgstr "Italique"
-
-#: editors/fckeditor.inc:166
-#: editors/nicedit.inc:102
-#: editors/tinymce.inc:344
-#: editors/whizzywig.inc:110
-#: editors/yui.inc:227
-msgid "Underline"
-msgstr "Souligné"
-
-#: editors/fckeditor.inc:167
-#: editors/markitup.inc:93;141
-#: editors/nicedit.inc:103
-#: editors/tinymce.inc:345
-#: editors/yui.inc:228
-msgid "Strike-through"
-msgstr "Barré"
-
-#: editors/fckeditor.inc:168
-#: editors/nicedit.inc:104
-#: editors/tinymce.inc:346
-#: editors/whizzywig.inc:111
-#: editors/yui.inc:229
-msgid "Align left"
-msgstr "Aligné à gauche"
-
-#: editors/fckeditor.inc:168
-#: editors/nicedit.inc:104
-#: editors/tinymce.inc:346
-#: editors/whizzywig.inc:111
-#: editors/yui.inc:229
-msgid "Align center"
-msgstr "Centré"
-
-#: editors/fckeditor.inc:168
-#: editors/nicedit.inc:104
-#: editors/tinymce.inc:346
-#: editors/whizzywig.inc:111
-#: editors/yui.inc:229
-msgid "Align right"
-msgstr "Aligné à droite"
-
-#: editors/fckeditor.inc:168
-#: editors/tinymce.inc:346
-msgid "Justify"
-msgstr "Justifier"
-
-#: editors/fckeditor.inc:169
-#: editors/nicedit.inc:105
-#: editors/tinymce.inc:347
-#: editors/whizzywig.inc:112
-#: editors/yui.inc:230
-msgid "Bullet list"
-msgstr "Liste à puces"
-
-#: editors/fckeditor.inc:169
-#: editors/nicedit.inc:105
-#: editors/tinymce.inc:347
-#: editors/whizzywig.inc:112
-#: editors/yui.inc:230
-msgid "Numbered list"
-msgstr "Liste ordonnée"
-
-#: editors/fckeditor.inc:170
-#: editors/nicedit.inc:106
-#: editors/tinymce.inc:348
-#: editors/whizzywig.inc:113
-#: editors/yui.inc:231
-msgid "Outdent"
-msgstr "Retrait positif"
-
-#: editors/fckeditor.inc:170
-#: editors/nicedit.inc:106
-#: editors/tinymce.inc:348
-#: editors/whizzywig.inc:113
-#: editors/yui.inc:231
-msgid "Indent"
-msgstr "Retrait négatif"
-
-#: editors/fckeditor.inc:171
-#: editors/tinymce.inc:349
-#: editors/whizzywig.inc:114
-msgid "Undo"
-msgstr "Annuler"
-
-#: editors/fckeditor.inc:171
-#: editors/tinymce.inc:349
-#: editors/whizzywig.inc:114
-msgid "Redo"
-msgstr "Refaire"
-
-#: editors/fckeditor.inc:172
-#: editors/markitup.inc:95;143
-#: editors/nicedit.inc:113
-#: editors/tinymce.inc:350
-#: editors/whizzywig.inc:118
-#: editors/yui.inc:232
-msgid "Link"
-msgstr "Lien"
-
-#: editors/fckeditor.inc:172
-#: editors/nicedit.inc:113
-#: editors/tinymce.inc:350
-msgid "Unlink"
-msgstr "Supprimer le lien"
-
-#: editors/fckeditor.inc:172
-#: editors/tinymce.inc:350
-msgid "Anchor"
-msgstr "Ancre"
-
-#: editors/fckeditor.inc:173
-#: editors/markitup.inc:94;142
-#: editors/nicedit.inc:107
-#: editors/tinymce.inc:351
-#: editors/whizzywig.inc:115;119
-#: editors/yui.inc:233
-msgid "Image"
-msgstr "Image"
-
-#: editors/fckeditor.inc:174
-#: editors/nicedit.inc:108
-#: editors/tinymce.inc:353
-#: editors/whizzywig.inc:116
-msgid "Forecolor"
-msgstr "Couleur de premier plan"
-
-#: editors/fckeditor.inc:174
-#: editors/nicedit.inc:108
-#: editors/tinymce.inc:353
-#: editors/whizzywig.inc:116
-msgid "Backcolor"
-msgstr "Couleur du fond"
-
-#: editors/fckeditor.inc:175
-msgid "Superscript"
-msgstr "Superscript"
-
-#: editors/fckeditor.inc:175
-msgid "Subscript"
-msgstr "Sous-script"
-
-#: editors/fckeditor.inc:176
-#: editors/tinymce.inc:355
-msgid "Blockquote"
-msgstr "Citation"
-
-#: editors/fckeditor.inc:176
-#: editors/nicedit.inc:115
-#: editors/tinymce.inc:355
-#: editors/whizzywig.inc:122
-msgid "Source code"
-msgstr "Code source"
-
-#: editors/fckeditor.inc:177
-#: editors/nicedit.inc:110
-#: editors/tinymce.inc:356
-#: editors/whizzywig.inc:117
-msgid "Horizontal rule"
-msgstr "Règle horizontale"
-
-#: editors/fckeditor.inc:178
-#: editors/tinymce.inc:357
-msgid "Cut"
-msgstr "Couper"
-
-#: editors/fckeditor.inc:178
-#: editors/tinymce.inc:357
-msgid "Copy"
-msgstr "Copier"
-
-#: editors/fckeditor.inc:178
-#: editors/tinymce.inc:357
-msgid "Paste"
-msgstr "Coller"
-
-#: editors/fckeditor.inc:179
-msgid "Paste Text"
-msgstr "Coller le Texte"
-
-#: editors/fckeditor.inc:179
-#: editors/tinymce.inc:468
-msgid "Paste from Word"
-msgstr "Coller à partir de Word"
-
-#: editors/fckeditor.inc:180
-msgid "Show blocks"
-msgstr "Afficher les blocs"
-
-#: editors/fckeditor.inc:181
-#: editors/tinymce.inc:359
-#: editors/yui.inc:236
-msgid "Remove format"
-msgstr "Supprimer le formatage"
-
-#: editors/fckeditor.inc:182
-#: editors/tinymce.inc:360
-msgid "Character map"
-msgstr "Carte des carractères"
-
-#: editors/fckeditor.inc:183
-msgid "About"
-msgstr "A propos"
-
-#: editors/fckeditor.inc:185
-#: editors/nicedit.inc:114
-#: editors/tinymce.inc:426
-#: editors/whizzywig.inc:109
-#: editors/yui.inc:238
-msgid "HTML block format"
-msgstr "Format de bloc HTML"
-
-#: editors/fckeditor.inc:185
-#: editors/nicedit.inc:114
-#: editors/tinymce.inc:426
-#: editors/whizzywig.inc:109
-#: editors/yui.inc:238
-msgid "Font"
-msgstr "Police"
-
-#: editors/fckeditor.inc:185
-#: editors/nicedit.inc:114
-#: editors/tinymce.inc:426
-#: editors/whizzywig.inc:109
-#: editors/yui.inc:238
-msgid "Font size"
-msgstr "Taille de la police"
-
-#: editors/fckeditor.inc:185
-#: editors/tinymce.inc:426
-#: editors/yui.inc:238
-msgid "Font style"
-msgstr "Style de police"
-
-#: editors/fckeditor.inc:186
-#: editors/tinymce.inc:503
-#: editors/whizzywig.inc:120
-msgid "Table"
-msgstr "Tableau"
-
-#: editors/fckeditor.inc:187
-#: editors/tinymce.inc:489
-msgid "Search"
-msgstr "Recherche"
-
-#: editors/fckeditor.inc:187
-#: editors/tinymce.inc:489
-msgid "Replace"
-msgstr "Remplacer"
-
-#: editors/fckeditor.inc:187
-#: editors/tinymce.inc:468
-msgid "Select all"
-msgstr "Tout sélectionner"
-
-#: editors/fckeditor.inc:188
-msgid "Create DIV container"
-msgstr "Créer un conteneur DIV"
-
-#: editors/fckeditor.inc:189
-#: editors/tinymce.inc:418
-msgid "Flash"
-msgstr "Flash"
-
-#: editors/fckeditor.inc:189
-msgid "Smiley"
-msgstr "Emoticone (Smiley)"
-
-#: editors/fckeditor.inc:190
-#, fuzzy
-msgid "FitWindow"
-msgstr "FitWindow"
-
-#: editors/fckeditor.inc:191
-msgid "Check spelling"
-msgstr "Vérification d'orthographe"
-
-#: editors/markitup.inc:98;145
-#: editors/tinymce.inc:475
-msgid "Preview"
-msgstr "Aperçu"
-
-#: editors/nicedit.inc:109
-#: editors/tinymce.inc:354
-#: editors/yui.inc:235
-msgid "Sup"
-msgstr "Exposant"
-
-#: editors/nicedit.inc:109
-#: editors/tinymce.inc:354
-#: editors/yui.inc:235
-msgid "Sub"
-msgstr "Indice"
-
-#: editors/tinymce.inc:352
-#: editors/whizzywig.inc:121
-msgid "Clean-up"
-msgstr "Nettoyage"
-
-#: editors/tinymce.inc:358
-msgid "Visual aid"
-msgstr "Aide visuelle"
-
-#: editors/tinymce.inc:361
-msgid "Help"
-msgstr "Aide"
-
-#: editors/tinymce.inc:366
-msgid "Advanced horizontal rule"
-msgstr "Règle horizontale avancée"
-
-#: editors/tinymce.inc:374
-msgid "Advanced image"
-msgstr "Image avancée"
-
-#: editors/tinymce.inc:382
-msgid "Advanced link"
-msgstr "Lien avancé"
-
-#: editors/tinymce.inc:390
-msgid "Auto save"
-msgstr "Enregistrement automatique"
-
-#: editors/tinymce.inc:397
-msgid "Context menu"
-msgstr "Menu contextuel"
-
-#: editors/tinymce.inc:404
-msgid "Left-to-right"
-msgstr "De gauche à droite"
-
-#: editors/tinymce.inc:404
-msgid "Right-to-left"
-msgstr "De droite à gauche"
-
-#: editors/tinymce.inc:411
-msgid "Emotions"
-msgstr "Emotions"
-
-#: editors/tinymce.inc:433
-msgid "Fullscreen"
-msgstr "Plein écran"
-
-#: editors/tinymce.inc:440
-msgid "Inline popups"
-msgstr "Popup incluses"
-
-#: editors/tinymce.inc:450
-msgid "Insert date"
-msgstr "Insérer la date"
-
-#: editors/tinymce.inc:450
-msgid "Insert time"
-msgstr "Insérer l'heure"
-
-#: editors/tinymce.inc:461
-msgid "Insert layer"
-msgstr "Insérer un calque"
-
-#: editors/tinymce.inc:461
-msgid "Move forward"
-msgstr "Déplacer en avant"
-
-#: editors/tinymce.inc:461
-msgid "Move backward"
-msgstr "Déplacer en arrière"
-
-#: editors/tinymce.inc:461
-msgid "Absolute"
-msgstr "Absolu"
-
-#: editors/tinymce.inc:468
-msgid "Paste text"
-msgstr "Coller le texte"
-
-#: editors/tinymce.inc:482
-msgid "Print"
-msgstr "Imprimer"
-
-#: editors/tinymce.inc:496
-msgid "Style properties"
-msgstr "Propriétés du style"
-
-#: editors/tinymce.inc:512
-msgid "Citation"
-msgstr "Citation"
-
-#: editors/tinymce.inc:512
-msgid "Deleted"
-msgstr "Supprimé"
-
-#: editors/tinymce.inc:512
-msgid "Abbreviation"
-msgstr "Abrévation"
-
-#: editors/tinymce.inc:512
-msgid "Acronym"
-msgstr "Acronyme"
-
-#: editors/tinymce.inc:512
-msgid "Inserted"
-msgstr "Inséré"
-
-#: editors/tinymce.inc:519
-msgid "Safari compatibility"
-msgstr "Compatibilité avec Safari"
-
-#: editors/whizzywig.inc:123
-msgid "Spell check"
-msgstr "Vérification d'orthographe"
-
-#: editors/yui.inc:234
-msgid "Font Color"
-msgstr "Couleur de Police"
-
-#: editors/yui.inc:234
-msgid "Background Color"
-msgstr "Couleur de Fong"
-
-#: editors/yui.inc:237
-msgid "Show/hide hidden elements"
-msgstr "Afficher/Cacher les élemets cachés"
-
diff --git a/sites/all/modules/wysiwyg/translations/hu.po b/sites/all/modules/wysiwyg/translations/hu.po
deleted file mode 100644
index b4b5398e3511733100e7907619f2d9de4b8f706c..0000000000000000000000000000000000000000
--- a/sites/all/modules/wysiwyg/translations/hu.po
+++ /dev/null
@@ -1,908 +0,0 @@
-# Hungarian translation of wysiwyg (6.x-2.0)
-# Copyright (c) 2009 by the Hungarian translation team
-# Generated from files:
-#  wysiwyg.admin.inc,v 1.15 2009/06/09 00:18:11 sun
-#  fckeditor.inc,v 1.17 2009/06/09 00:18:11 sun
-#  tinymce.inc,v 1.35 2009/06/09 00:18:12 sun
-#  wysiwyg.module,v 1.33 2009/06/09 00:18:11 sun
-#  markitup.inc,v 1.5 2009/06/09 00:18:12 sun
-#  openwysiwyg.inc,v 1.2 2009/06/09 00:18:12 sun
-#  whizzywig.inc,v 1.3 2009/06/09 00:18:12 sun
-#  yui.inc,v 1.5 2009/06/09 00:18:12 sun
-#  wysiwyg.info,v 1.1 2008/10/14 21:45:07 sun
-#  nicedit.inc,v 1.6 2009/06/09 00:18:12 sun
-#  wysiwyg.api.php,v 1.3 2009/06/09 00:18:11 sun
-#  break.inc,v 1.4 2009/06/09 00:18:12 sun
-#  wysiwyg.install,v 1.4 2009/06/08 21:57:10 sun
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: wysiwyg (6.x-2.0)\n"
-"POT-Creation-Date: 2009-06-12 19:14+0200\n"
-"PO-Revision-Date: 2009-05-21 20:16+0200\n"
-"Last-Translator: Balogh Zoltán\n"
-"Language-Team: Hungarian http://forditas.mindworks.hu\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-
-#: wysiwyg.admin.inc:450
-msgid "Operations"
-msgstr "Műveletek"
-
-#: wysiwyg.admin.inc:489
-msgid "Cancel"
-msgstr "Mégsem"
-
-#: wysiwyg.admin.inc:96
-msgid "Language"
-msgstr "Nyelv"
-
-#: editors/fckeditor.inc:237; editors/tinymce.inc:515
-msgid "Search"
-msgstr "Keresés"
-
-#: wysiwyg.admin.inc:283,438
-msgid "Save"
-msgstr "Mentés"
-
-#: wysiwyg.admin.inc:489
-msgid "This action cannot be undone."
-msgstr "A művelet nem visszavonható."
-
-#: wysiwyg.admin.inc:433,489; wysiwyg.module:36
-msgid "Remove"
-msgstr "Eltávolítás"
-
-#: editors/markitup.inc:142,176; editors/openwysiwyg.inc:160; editors/tinymce.inc:501
-msgid "Preview"
-msgstr "Előnézet"
-
-#: wysiwyg.admin.inc:203
-msgid "Preformatted"
-msgstr "Előre formázott"
-
-#: editors/tinymce.inc:555
-msgid "Abbreviation"
-msgstr "Rövidítés"
-
-#: editors/tinymce.inc:555
-msgid "Acronym"
-msgstr "Betűszó"
-
-#: editors/fckeditor.inc:236; editors/openwysiwyg.inc:162; editors/tinymce.inc:529; editors/whizzywig.inc:123
-msgid "Table"
-msgstr "Táblázat"
-
-#: editors/tinymce.inc:555
-msgid "Deleted"
-msgstr "Törölt"
-
-#: editors/tinymce.inc:555
-msgid "Inserted"
-msgstr "Beillesztett"
-
-#: wysiwyg.admin.inc:450
-msgid "Input format"
-msgstr "Beviteli forma"
-
-#: wysiwyg.admin.inc:430; wysiwyg.module:26
-msgid "Edit"
-msgstr "Szerkesztés"
-
-#: editors/openwysiwyg.inc:163; editors/tinymce.inc:394
-msgid "Help"
-msgstr "Súgó"
-
-#: editors/fckeditor.inc:222; editors/openwysiwyg.inc:146; editors/tinymce.inc:382; editors/whizzywig.inc:117; editors/yui.inc:281
-msgid "Undo"
-msgstr "Visszavonás"
-
-#: wysiwyg.module:22
-msgid "Profiles"
-msgstr "Profilok"
-
-#: editors/fckeditor.inc:231
-msgid "Show blocks"
-msgstr "Blokkok mutatása"
-
-#: editors/tinymce.inc:548
-msgid "Media"
-msgstr "Média"
-
-#: wysiwyg.info:0
-msgid "User interface"
-msgstr "Felhasználói felület"
-
-#: wysiwyg.admin.inc:174
-msgid "Hide"
-msgstr "Elrejt"
-
-#: editors/fckeditor.inc:223; editors/markitup.inc:132,174; editors/nicedit.inc:114; editors/openwysiwyg.inc:147; editors/tinymce.inc:383; editors/whizzywig.inc:121; editors/yui.inc:282
-msgid "Link"
-msgstr "Hivatkozás"
-
-#: editors/fckeditor.inc:224; editors/markitup.inc:126,173; editors/nicedit.inc:108; editors/openwysiwyg.inc:148; editors/tinymce.inc:384; editors/whizzywig.inc:118,122; editors/yui.inc:283
-msgid "Image"
-msgstr "Kép"
-
-#: editors/fckeditor.inc:237; editors/tinymce.inc:515
-msgid "Replace"
-msgstr "Helyettesít"
-
-#: wysiwyg.admin.inc:60
-msgid "Basic setup"
-msgstr "Alap beállítás"
-
-#: wysiwyg.admin.inc:149
-msgid "Editor appearance"
-msgstr "Szerkesztő megjelenése"
-
-#: wysiwyg.admin.inc:188
-msgid "Cleanup and output"
-msgstr "Tisztítás és kimenet"
-
-#: wysiwyg.admin.inc:227
-msgid "Apply source formatting"
-msgstr "Forrás formázás alkalmazása"
-
-#: wysiwyg.admin.inc:243
-msgid "CSS"
-msgstr "CSS"
-
-#: wysiwyg.admin.inc:259
-msgid "Editor CSS"
-msgstr "Szerkesztő CSS"
-
-#: wysiwyg.admin.inc:267
-msgid "CSS path"
-msgstr "CSS útvonal"
-
-#: wysiwyg.admin.inc:75
-msgid "Allow users to choose default"
-msgstr "Alapértelmezés megváltoztatásának engedélyezése"
-
-#: wysiwyg.admin.inc:104
-msgid "Buttons and plugins"
-msgstr "Nyomógombok és bővítmények"
-
-#: wysiwyg.admin.inc:156
-msgid "Toolbar location"
-msgstr "Eszköztár elhelyezése"
-
-#: wysiwyg.admin.inc:172
-msgid "Path location"
-msgstr "Elérési út"
-
-#: wysiwyg.admin.inc:180
-msgid "Enable resizing button"
-msgstr "Átméretezés gomb engedélyezése"
-
-#: wysiwyg.admin.inc:250
-msgid "Block formats"
-msgstr "Blokk formátumok"
-
-#: wysiwyg.admin.inc:195
-msgid "Verify HTML"
-msgstr "HTML ellenőrzése"
-
-#: wysiwyg.admin.inc:211
-msgid "Convert &lt;font&gt; tags to styles"
-msgstr "&lt;font&gt; tagek átalakítása a stílushoz"
-
-#: wysiwyg.admin.inc:219
-msgid "Remove linebreaks"
-msgstr "Sortörések eltávolítása"
-
-#: wysiwyg.admin.inc:276
-msgid "CSS classes"
-msgstr "CSS osztályok"
-
-#: editors/fckeditor.inc:235; editors/nicedit.inc:115; editors/openwysiwyg.inc:158; editors/tinymce.inc:452; editors/whizzywig.inc:112; editors/yui.inc:288
-msgid "Font"
-msgstr "Betűtípus"
-
-#: editors/fckeditor.inc:235; editors/nicedit.inc:115; editors/openwysiwyg.inc:158; editors/tinymce.inc:452; editors/whizzywig.inc:112; editors/yui.inc:288
-msgid "Font size"
-msgstr "Betűméret"
-
-#: editors/openwysiwyg.inc:161; editors/tinymce.inc:508
-msgid "Print"
-msgstr "Nyomtatás"
-
-#: editors/yui.inc:284
-msgid "Background Color"
-msgstr "Háttérszín"
-
-#: editors/fckeditor.inc:227; editors/openwysiwyg.inc:152; editors/tinymce.inc:388
-msgid "Blockquote"
-msgstr "Idézet"
-
-#: wysiwyg.admin.inc:166
-msgid "Left"
-msgstr "Bal"
-
-#: wysiwyg.admin.inc:164
-msgid "Button alignment"
-msgstr "Nyomógombok igazítása"
-
-#: wysiwyg.admin.inc:166
-msgid "Right"
-msgstr "Jobb"
-
-#: editors/fckeditor.inc:229; editors/openwysiwyg.inc:154; editors/tinymce.inc:390
-msgid "Copy"
-msgstr "Másolás"
-
-#: editors/fckeditor.inc:217; editors/markitup.inc:105,171; editors/nicedit.inc:103; editors/openwysiwyg.inc:141; editors/tinymce.inc:377; editors/whizzywig.inc:113; editors/yui.inc:276
-msgid "Bold"
-msgstr "Vastag"
-
-#: editors/fckeditor.inc:234
-msgid "About"
-msgstr "Névjegy"
-
-#: editors/tinymce.inc:487
-msgid "Absolute"
-msgstr "Abszolút"
-
-#: wysiwyg.api.php:51,52
-msgid "My plugin title"
-msgstr "Bővítmény címe"
-
-#: wysiwyg.api.php:61
-msgid "Button title (optional)"
-msgstr "Nyomógomb neve (választható)"
-
-#: wysiwyg.admin.inc:67
-msgid "Enabled by default"
-msgstr "Alapértelmezés szerint engedélyezett"
-
-#: wysiwyg.admin.inc:70
-msgid ""
-"The default editor state for users having access to this profile. "
-"Users are able to override this state if the next option is enabled."
-msgstr ""
-"Az alapértelmezett szerkesztő állapot lehetővé teszi a "
-"felhasználók hozzáférését ehhez a profilhoz. A felhasználók "
-"felülírhatják ezt az állapotot, ha a következő lehetőség "
-"engedélyezve van."
-
-#: wysiwyg.admin.inc:78
-msgid ""
-"If allowed, users will be able to choose their own editor default "
-"state in their user account settings."
-msgstr ""
-"Ha ez engedélyezett, akkor a felhasználók megváltoztathatják "
-"szerkesztőjük alapértelmezett állapotát a felhasználói "
-"profiljukban."
-
-#: wysiwyg.admin.inc:83
-msgid "Show <em>enable/disable rich text</em> toggle link"
-msgstr ""
-"Mutassa a <em>szövegszerkesztő engedélyezése / tiltása</em> "
-"kapcsoló hivatkozást."
-
-#: wysiwyg.admin.inc:86
-msgid ""
-"Whether or not to show the <em>enable/disable rich text</em> toggle "
-"link below a textarea. If disabled, the user setting or global default "
-"is used (see above)."
-msgstr ""
-"Megjelenjen a <em>szövegszerkesztő engedélyezése / tiltása</em> "
-"hivatkozás a szövegmező alatt, avagy sem. Ha nem engedélyezett, "
-"akkor a felhasználói beállítás vagy a globális alapértelmezés "
-"lesz alkalmazva (lásd fent)."
-
-#: wysiwyg.admin.inc:99
-msgid ""
-"The language to use for the editor interface. Language codes are based "
-"on the <a "
-"href=\"http://www.loc.gov/standards/iso639-2/englangn.html\">ISO-639-2</a> "
-"format."
-msgstr ""
-"A szerkesztő felületén használandó nyelv. A nyelvkódok alapja az "
-"<a "
-"href=\"http://www.loc.gov/standards/iso639-2/englangn.html\">ISO-639-2</a> "
-"formátum."
-
-#: wysiwyg.admin.inc:158,174
-msgid "Bottom"
-msgstr "Lenn"
-
-#: wysiwyg.admin.inc:158,174
-msgid "Top"
-msgstr "Fenn"
-
-#: wysiwyg.admin.inc:159
-msgid ""
-"This option controls whether the editor toolbar is displayed above or "
-"below the editing area."
-msgstr ""
-"Ez a beállítás határozza meg, hogy az eszköztár a szövegmező "
-"alatt vagy felett jelenjen meg."
-
-#: wysiwyg.admin.inc:166
-msgid "Center"
-msgstr "Középen"
-
-#: wysiwyg.admin.inc:167
-msgid "This option controls the alignment of icons in the editor toolbar."
-msgstr ""
-"Ez a beállítás az ikonok elhelyezkedését szabályozza a "
-"szerkesztő eszköztárán."
-
-#: wysiwyg.admin.inc:175
-msgid ""
-"Where to display the path to HTML elements (i.e. <code>body > table > "
-"tr > td</code>)."
-msgstr ""
-"Hol jelenjen meg a HTML elemek elérési útvonala (pl. <code>body > "
-"table > tr > td</code>)."
-
-#: wysiwyg.admin.inc:183
-msgid ""
-"This option gives you the ability to enable/disable the resizing "
-"button. If enabled, the Path location toolbar must be set to \"Top\" "
-"or \"Bottom\" in order to display the resize icon."
-msgstr ""
-"Ez a beállítás lehetővé teszi az átméretező gomb "
-"engedélyezését / tiltását. Ha engedélyezett, akkor az elérési "
-"út eszköztárat „Fenn”, vagy „Lenn” értékre kell "
-"állítani, hogy az átmérezető ikon megjelenhessen."
-
-#: wysiwyg.admin.inc:198
-msgid ""
-"If enabled, potentially malicious code like <code>&lt;HEAD&gt;</code> "
-"tags will be removed from HTML contents."
-msgstr ""
-"Ha ez engedélyezett, akkor lehetséges a hibás kódok, mint "
-"például a <code>&lt;HEAD&gt;</code> tag eltávolítása a HTML "
-"elemekből."
-
-#: wysiwyg.admin.inc:206
-msgid ""
-"If enabled, the editor will insert TAB characters on tab and preserve "
-"other whitespace characters just like a PRE element in HTML does."
-msgstr ""
-"Ha ez engedélyezett, akkor a szerkesztő TAB karaktereket fog "
-"beszúrni, és megőriz más helyörző karaktereket, mint ahogy a PRE "
-"elem teszi a HTML-ben."
-
-#: wysiwyg.admin.inc:214
-msgid ""
-"If enabled, HTML tags declaring the font size, font family, font color "
-"and font background color will be replaced by inline CSS styles."
-msgstr ""
-"Ha ez engedélyezett, akkor a HTML jelölők határozzák meg a "
-"betűméretet, a betűtipust, a betű-, és háttérszínt a "
-"beágyazott CSS stílus helyett."
-
-#: wysiwyg.admin.inc:222
-msgid ""
-"If enabled, the editor will remove most linebreaks from contents. "
-"Disabling this option could avoid conflicts with other input filters."
-msgstr ""
-"Ha ez engedélyezett, akkor a szerkesztő eltávolítja a felesleges "
-"sortöréseket a szövegből. Letiltásával elkerülhető az "
-"ütközés más beviteli szűrőkkel."
-
-#: wysiwyg.admin.inc:230
-msgid ""
-"If enabled, the editor will re-format the HTML source code. Disabling "
-"this option could avoid conflicts with other input filters."
-msgstr ""
-"Ha ez engedélyezett, akkor a szerkesztő újra fogja formázni a HTML "
-"forráskódot. Letiltásával elkerülhető az ütközés más "
-"beviteli szűrőkkel."
-
-#: wysiwyg.admin.inc:235
-msgid "Force cleanup on standard paste"
-msgstr "Kényszerített tisztítás beszúráskor"
-
-#: wysiwyg.admin.inc:238
-msgid ""
-"If enabled, the default paste function (CTRL-V or SHIFT-INS) behaves "
-"like the \"paste from word\" plugin function."
-msgstr ""
-"Ha ez engedélyezett, akkor az alapértelmezett beszúrás művelet "
-"(CTRL-V vagy SHIFT-INS) viselkedése hasonló lesz a „beszúrás "
-"Wordből” művelethez."
-
-#: wysiwyg.admin.inc:254
-msgid ""
-"Comma separated list of HTML block formats. Possible values: "
-"<code>@format-list</code>."
-msgstr ""
-"HTML blokk formátumok vesszővel elválasztott listája. Lehetséges "
-"értékei: <code>@format-list</code>."
-
-#: wysiwyg.admin.inc:261
-msgid "Use theme CSS"
-msgstr "Smink CSS használata"
-
-#: wysiwyg.admin.inc:261
-msgid "Define CSS"
-msgstr "CSS megadása"
-
-#: wysiwyg.admin.inc:261
-msgid "Editor default CSS"
-msgstr "Szerkesztő alapértelmezett CSS"
-
-#: wysiwyg.admin.inc:262
-msgid ""
-"Defines the CSS to be used in the editor area.<br />Use theme CSS - "
-"loads stylesheets from current site theme.<br/>Define CSS - enter path "
-"for stylesheet files below.<br />Editor default CSS - uses default "
-"stylesheets from editor."
-msgstr ""
-"A szerkesztőben használandó CSS stíluslap meghatározása.<br "
-"/>Smink CSS használata - az oldal jelenlegi stíluslapjának "
-"betöltése.<br />CSS megadása - a kivánt stíluslap elérési "
-"útjának megadása lejjebb.<br />Szerkesztő alapértelmezett CSS - a "
-"szerkesztő alapértelmezett stíluslapjának használata."
-
-#: wysiwyg.admin.inc:271
-msgid ""
-"Available tokens: <code>%b</code> (base path, eg: <code>/</code>), "
-"<code>%t</code> (path to theme, eg: <code>themes/garland</code>)"
-msgstr ""
-"Elérhető vezérjelek: <code>%b</code> (bázis útvonal, pl: "
-"<code>/</code>), <code>%t</code> (útvonal a sminkhez, pl: "
-"<code>themes/garland</code>)"
-
-#: wysiwyg.admin.inc:271
-msgid "Example:"
-msgstr "Példa:"
-
-#: wysiwyg.admin.inc:278
-msgid ""
-"Optionally define CSS classes for the \"Font style\" dropdown list.<br "
-"/>Enter one class on each line in the format: !format. Example: "
-"!example<br />If left blank, CSS classes are automatically imported "
-"from all loaded stylesheet(s)."
-msgstr ""
-"Lehetséges CSS osztályok megadása is a „Betű stílus” "
-"legördülő listához.<br />Soronként egy osztály adható meg ebben "
-"a formátumban: !format. Például: !example<br />Üresen hagyva a CSS "
-"osztályok automatikusan betöltésre kerülnek minden betöltött "
-"stíluslapról."
-
-#: wysiwyg.admin.inc:317
-msgid "Wysiwyg profile for %format has been saved."
-msgstr "%format <em>Wysiwyg</em> profil mentve."
-
-#: wysiwyg.admin.inc:366
-msgid "No editor"
-msgstr "Nincs szerkesztő"
-
-#: wysiwyg.admin.inc:371
-msgid ""
-"<a href=\"!vendor-url\">@editor</a> (<a "
-"href=\"!download-url\">Download</a>)"
-msgstr ""
-"<a href=\"!vendor-url\">@editor</a> (<a "
-"href=\"!download-url\">Letöltés</a>)"
-
-#: wysiwyg.admin.inc:372
-msgid "Not installed."
-msgstr "Nincs telepítve."
-
-#: wysiwyg.admin.inc:386
-msgid ""
-"Extract the archive and copy its contents into a new folder in the "
-"following location:<br /><code>@editor-path</code>"
-msgstr ""
-"Az archívumból kicsomagolt összes fájlt egy új könyvtárba kell "
-"másolni az alábbi helyre:<br /><code>@editor-path</code>"
-
-#: wysiwyg.admin.inc:402
-msgid "Installation instructions"
-msgstr "Telepítési útmutató"
-
-#: wysiwyg.admin.inc:405
-msgid ""
-"There are no editor libraries installed currently. The following list "
-"contains a list of currently supported editors:"
-msgstr ""
-"Jelenleg nincs egy szerkesztő program sem telepítve. A következő "
-"lista tartalmazza a jelenleg támogatott szerkesztőket:"
-
-#: wysiwyg.admin.inc:450
-msgid "Editor"
-msgstr "Szerkesztő"
-
-#: wysiwyg.admin.inc:487
-msgid "Are you sure you want to remove the profile for %name?"
-msgstr "%name profil valóban eltávolítható?"
-
-#: wysiwyg.admin.inc:501
-msgid "Wysiwyg profile for %name has been deleted."
-msgstr "%name <em>Wysiwyg</em> profil törölve."
-
-#: plugins/break.inc:14
-msgid "Teaser break"
-msgstr "Bevezető töréspont"
-
-#: wysiwyg.module:80
-msgid ""
-"A Wysiwyg profile can be associated to an input format. A Wysiwyg "
-"profile defines which client-side editor is loaded, what buttons or "
-"themes are enabled for the editor, how the editor is displayed, and a "
-"few other editor-specific functions."
-msgstr ""
-"Az egyes <em>Wysiwyg</em> profilokat különböző beviteli "
-"formátumokhoz lehet társítani. A <em>Wysiwig</em> profil "
-"meghatározza, hogy milyen ügyfél-oldali szerkesztő legyen "
-"betöltve, milyen nyomógombok és sminkek legyenek elérhetők a "
-"szerkesztőben, hogy jelenjen meg a szerkesztő és néhány egyéb, "
-"szerkesztő-specifikus funkciókat."
-
-#: wysiwyg.module:306
-msgid "Disable rich-text"
-msgstr "Szövegszerkesztő tiltása"
-
-#: wysiwyg.module:307
-msgid "Enable rich-text"
-msgstr "Szövegszerkesztő engedélyezése"
-
-#: wysiwyg.module:608
-msgid "Wysiwyg Editor settings"
-msgstr "<em>Wysiwyg</em> szerkesztő beállítások"
-
-#: wysiwyg.module:615
-msgid "Enable editor by default"
-msgstr "A szerkesztő engedélyezése alapértelmezésben"
-
-#: wysiwyg.module:618
-msgid ""
-"If enabled, rich-text editing is enabled by default in textarea "
-"fields."
-msgstr ""
-"Ha ez engedélyezett, akkor a szövegszerkesztés alapértelmezett "
-"lesz a szövegmezőkben."
-
-#: wysiwyg.module:702
-msgid "The version of %editor could not be detected."
-msgstr "%editor verziószáma nem érzékelhető."
-
-#: wysiwyg.module:715
-msgid "The installed version %version of %editor is not supported."
-msgstr "A telepített %editor %version nem támogatott."
-
-#: wysiwyg.module:14; wysiwyg.info:0
-msgid "Wysiwyg"
-msgstr "Wysiwyg"
-
-#: wysiwyg.module:0
-msgid "wysiwyg"
-msgstr "wysiwyg"
-
-#: wysiwyg.install:10
-msgid "Stores Wysiwyg profiles."
-msgstr "Wysiwyg profilok tárolása."
-
-#: wysiwyg.info:0
-msgid "Allows users to edit contents with client-side editors."
-msgstr ""
-"Lehetővé teszi a felhasználók számára, hogy ügyfél-oldali "
-"szerkesztővel módosítsák tartalmakat."
-
-#: editors/fckeditor.inc:217; editors/markitup.inc:112,171; editors/nicedit.inc:103; editors/openwysiwyg.inc:141; editors/tinymce.inc:377; editors/whizzywig.inc:113; editors/yui.inc:276
-msgid "Italic"
-msgstr "Dőlt"
-
-#: editors/fckeditor.inc:217; editors/nicedit.inc:103; editors/openwysiwyg.inc:141; editors/tinymce.inc:377; editors/whizzywig.inc:113; editors/yui.inc:276
-msgid "Underline"
-msgstr "Aláhúzott"
-
-#: editors/fckeditor.inc:218; editors/markitup.inc:119,172; editors/nicedit.inc:104; editors/openwysiwyg.inc:142; editors/tinymce.inc:378; editors/yui.inc:277
-msgid "Strike-through"
-msgstr "Áthúzott"
-
-#: editors/fckeditor.inc:219; editors/nicedit.inc:105; editors/openwysiwyg.inc:143; editors/tinymce.inc:379; editors/whizzywig.inc:114; editors/yui.inc:278
-msgid "Align left"
-msgstr "Balra zárt"
-
-#: editors/fckeditor.inc:219; editors/nicedit.inc:105; editors/openwysiwyg.inc:143; editors/tinymce.inc:379; editors/whizzywig.inc:114; editors/yui.inc:278
-msgid "Align center"
-msgstr "Középre zárt"
-
-#: editors/fckeditor.inc:219; editors/nicedit.inc:105; editors/openwysiwyg.inc:143; editors/tinymce.inc:379; editors/whizzywig.inc:114; editors/yui.inc:278
-msgid "Align right"
-msgstr "Jobbra zárt"
-
-#: editors/fckeditor.inc:219; editors/openwysiwyg.inc:143; editors/tinymce.inc:379; editors/yui.inc:278
-msgid "Justify"
-msgstr "Sorkizárt"
-
-#: editors/fckeditor.inc:220; editors/nicedit.inc:106; editors/openwysiwyg.inc:144; editors/tinymce.inc:380; editors/whizzywig.inc:115; editors/yui.inc:279
-msgid "Bullet list"
-msgstr "Felsorolás"
-
-#: editors/fckeditor.inc:220; editors/nicedit.inc:106; editors/openwysiwyg.inc:144; editors/tinymce.inc:380; editors/whizzywig.inc:115; editors/yui.inc:279
-msgid "Numbered list"
-msgstr "Számozott lista"
-
-#: editors/fckeditor.inc:221; editors/nicedit.inc:107; editors/openwysiwyg.inc:145; editors/tinymce.inc:381; editors/whizzywig.inc:116; editors/yui.inc:280
-msgid "Outdent"
-msgstr "Kihúzás"
-
-#: editors/fckeditor.inc:221; editors/nicedit.inc:107; editors/openwysiwyg.inc:145; editors/tinymce.inc:381; editors/whizzywig.inc:116; editors/yui.inc:280
-msgid "Indent"
-msgstr "Behúzás"
-
-#: editors/fckeditor.inc:222; editors/openwysiwyg.inc:146; editors/tinymce.inc:382; editors/whizzywig.inc:117; editors/yui.inc:281
-msgid "Redo"
-msgstr "Ismét"
-
-#: editors/fckeditor.inc:223; editors/nicedit.inc:114; editors/tinymce.inc:383
-msgid "Unlink"
-msgstr "Hivatkozás eltávolítása"
-
-#: editors/fckeditor.inc:223; editors/tinymce.inc:383
-msgid "Anchor"
-msgstr "Horgony"
-
-#: editors/fckeditor.inc:225; editors/nicedit.inc:109; editors/openwysiwyg.inc:150; editors/tinymce.inc:386; editors/whizzywig.inc:119
-msgid "Forecolor"
-msgstr "Szövegszín"
-
-#: editors/fckeditor.inc:225; editors/nicedit.inc:109; editors/openwysiwyg.inc:150; editors/tinymce.inc:386; editors/whizzywig.inc:119
-msgid "Backcolor"
-msgstr "Háttérszín"
-
-#: editors/fckeditor.inc:226
-msgid "Superscript"
-msgstr "Felső index"
-
-#: editors/fckeditor.inc:226
-msgid "Subscript"
-msgstr "Alsó index"
-
-#: editors/fckeditor.inc:227; editors/nicedit.inc:116; editors/openwysiwyg.inc:152; editors/tinymce.inc:388; editors/whizzywig.inc:125
-msgid "Source code"
-msgstr "Forráskód"
-
-#: editors/fckeditor.inc:228; editors/nicedit.inc:111; editors/openwysiwyg.inc:153; editors/tinymce.inc:389; editors/whizzywig.inc:120
-msgid "Horizontal rule"
-msgstr "Vízszintes vonal"
-
-#: editors/fckeditor.inc:229; editors/openwysiwyg.inc:154; editors/tinymce.inc:390
-msgid "Cut"
-msgstr "Kivágás"
-
-#: editors/fckeditor.inc:229; editors/openwysiwyg.inc:154; editors/tinymce.inc:390
-msgid "Paste"
-msgstr "Beillesztés"
-
-#: editors/fckeditor.inc:230
-msgid "Paste Text"
-msgstr "Szöveg beillesztés"
-
-#: editors/fckeditor.inc:230; editors/tinymce.inc:494
-msgid "Paste from Word"
-msgstr "Beillesztés Wordből"
-
-#: editors/fckeditor.inc:232; editors/openwysiwyg.inc:156; editors/tinymce.inc:392; editors/yui.inc:287
-msgid "Remove format"
-msgstr "Formázás eltávolítása"
-
-#: editors/fckeditor.inc:233; editors/openwysiwyg.inc:157; editors/tinymce.inc:393
-msgid "Character map"
-msgstr "Karaktertábla"
-
-#: editors/fckeditor.inc:235; editors/nicedit.inc:115; editors/openwysiwyg.inc:158; editors/tinymce.inc:452; editors/whizzywig.inc:112; editors/yui.inc:288
-msgid "HTML block format"
-msgstr "HTML blokk formázása"
-
-#: editors/fckeditor.inc:235; editors/tinymce.inc:452
-msgid "Font style"
-msgstr "Betű stílus"
-
-#: editors/fckeditor.inc:237; editors/tinymce.inc:494
-msgid "Select all"
-msgstr "Mindent kijelöl"
-
-#: editors/fckeditor.inc:238
-msgid "Create DIV container"
-msgstr "DIV konténer létrehozása"
-
-#: editors/fckeditor.inc:239; editors/tinymce.inc:538
-msgid "Flash"
-msgstr "Flash"
-
-#: editors/fckeditor.inc:239
-msgid "Smiley"
-msgstr "Szmájli"
-
-#: editors/fckeditor.inc:240
-msgid "FitWindow"
-msgstr "Ablakhoz igazítás"
-
-#: editors/fckeditor.inc:241
-msgid "Check spelling"
-msgstr "Helyesírás-ellenőrzés"
-
-#: editors/nicedit.inc:110; editors/openwysiwyg.inc:151; editors/tinymce.inc:387; editors/yui.inc:285
-msgid "Sup"
-msgstr "Felső index"
-
-#: editors/nicedit.inc:110; editors/openwysiwyg.inc:151; editors/tinymce.inc:387; editors/yui.inc:285
-msgid "Sub"
-msgstr "Alsó index"
-
-#: editors/openwysiwyg.inc:149; editors/tinymce.inc:385; editors/whizzywig.inc:124
-msgid "Clean-up"
-msgstr "Tisztítás"
-
-#: editors/openwysiwyg.inc:155; editors/tinymce.inc:391
-msgid "Visual aid"
-msgstr "Látható segítség"
-
-#: editors/tinymce.inc:400
-msgid "Advanced horizontal rule"
-msgstr "Haladó vízszintes vonal"
-
-#: editors/tinymce.inc:408
-msgid "Advanced image"
-msgstr "Haladó kép"
-
-#: editors/tinymce.inc:416
-msgid "Advanced link"
-msgstr "Haladó hivatkozás"
-
-#: editors/tinymce.inc:424
-msgid "Auto save"
-msgstr "Automatikus mentés"
-
-#: editors/tinymce.inc:431
-msgid "Context menu"
-msgstr "Helyi menü"
-
-#: editors/tinymce.inc:438
-msgid "Left-to-right"
-msgstr "Balról jobbra"
-
-#: editors/tinymce.inc:438
-msgid "Right-to-left"
-msgstr "Jobbról balra"
-
-#: editors/tinymce.inc:445
-msgid "Emotions"
-msgstr "Érzések"
-
-#: editors/openwysiwyg.inc:159; editors/tinymce.inc:459
-msgid "Fullscreen"
-msgstr "Teljes képernyő"
-
-#: editors/tinymce.inc:466
-msgid "Inline popups"
-msgstr "Beágyazott felugró ablakok"
-
-#: editors/tinymce.inc:476
-msgid "Insert date"
-msgstr "Dátum beszúrás"
-
-#: editors/tinymce.inc:476
-msgid "Insert time"
-msgstr "Idő beszúrás"
-
-#: editors/tinymce.inc:487
-msgid "Insert layer"
-msgstr "Réteg beszúrás"
-
-#: editors/tinymce.inc:487
-msgid "Move forward"
-msgstr "Előre mozgatás"
-
-#: editors/tinymce.inc:487
-msgid "Move backward"
-msgstr "Hátra mozgatás"
-
-#: editors/tinymce.inc:494
-msgid "Paste text"
-msgstr "Szöveg beillesztés"
-
-#: editors/tinymce.inc:522
-msgid "Style properties"
-msgstr "Stílus tulajdonságok"
-
-#: editors/tinymce.inc:555
-msgid "Citation"
-msgstr "Idézet"
-
-#: editors/tinymce.inc:571
-msgid "Safari compatibility"
-msgstr "Safari kompatibilitás"
-
-#: editors/whizzywig.inc:126
-msgid "Spell check"
-msgstr "Helyesírás ellenőrzés"
-
-#: editors/yui.inc:284
-msgid "Font Color"
-msgstr "Betűszín"
-
-#: editors/yui.inc:286
-msgid "Show/hide hidden elements"
-msgstr "Rejtett elemek mutatása/elrejtése"
-
-#: plugins/break.inc:17
-msgid "Separate the teaser and body of this content"
-msgstr "A bevezető és a törzs elválasztása ennél a tartalomnál"
-
-#: wysiwyg.admin.inc:51
-msgid "%editor profile for %format"
-msgstr "%editor profil %format formátumnak"
-
-#: wysiwyg.admin.inc:271
-msgid ""
-"If \"Define CSS\" was selected above, enter path to a CSS file or a "
-"list of CSS files separated by a comma."
-msgstr ""
-"Ha fent a „CSS megadása” van kiválasztva, akkor itt a CSS fájl "
-"elérési útját kell megadni, vagy a CSS fájlok vesszővel "
-"elválasztott felsorolását."
-
-#: wysiwyg.admin.inc:387
-msgid ""
-"So the actual library can be found at:<br "
-"/><code>@library-filepath</code>"
-msgstr ""
-"Tehát az aktuális könyvtár itt található:<br "
-"/><code>@library-filepath</code>"
-
-#: wysiwyg.module:17
-msgid "Configure client-side editors."
-msgstr "Ügyfél-oldali szerkesztők beállítása."
-
-#: editors/fckeditor.inc:248
-msgid "Autogrow"
-msgstr "Automatikus növekedés"
-
-#: editors/fckeditor.inc:259; editors/tinymce.inc:564
-msgid "BBCode"
-msgstr "BBCode"
-
-#: editors/fckeditor.inc:267
-msgid "Table drag/resize"
-msgstr "Táblázat vontatás/átméretezés"
-
-#: editors/fckeditor.inc:275
-msgid "Table: Cell properties"
-msgstr "Táblázat: Cella tulajdonságok"
-
-#: editors/fckeditor.inc:276
-msgid "Table: Insert row after"
-msgstr "Táblázat: Sor beszúrása utána"
-
-#: editors/fckeditor.inc:277
-msgid "Table: Insert column after"
-msgstr "Táblázat: Oszlop beszúrása utána"
-
-#: editors/fckeditor.inc:278
-msgid "Table: Insert cell after"
-msgstr "Táblázat: Cella beszúrása utána"
-
-#: editors/fckeditor.inc:279
-msgid "Table: Delete rows"
-msgstr "Táblázat: Sorok törlése"
-
-#: editors/fckeditor.inc:280
-msgid "Table: Delete columns"
-msgstr "Táblázat: Oszlopok törlése"
-
-#: editors/fckeditor.inc:281
-msgid "Table: Delete cells"
-msgstr "Táblázat: Cellák törlése"
-
-#: editors/fckeditor.inc:282
-msgid "Table: Merge cells"
-msgstr "Táblázat: Cellák összevonása"
-
-#: editors/fckeditor.inc:283
-msgid "Table: Horizontal split cell"
-msgstr "Táblázat: Cellák vízszintes szétválasztása"
-
diff --git a/sites/all/modules/wysiwyg/translations/tr.po b/sites/all/modules/wysiwyg/translations/tr.po
deleted file mode 100644
index 83d9000291e0b2532f59d2d7f41fd30215e53ce7..0000000000000000000000000000000000000000
--- a/sites/all/modules/wysiwyg/translations/tr.po
+++ /dev/null
@@ -1,101 +0,0 @@
-# $Id: tr.po,v 1.2 2008/05/30 02:19:15 sun Exp $
-#
-# LANGUAGE translation of Drupal (wysiwyg_editor.module)
-# Copyright YEAR NAME <EMAIL@ADDRESS>
-# Generated from files:
-#  wysiwyg_editor.module,v 1.90.4.12 2007/01/30 06:58:37 thenicespider
-#  wysiwyg_editor.info,v 1.0 2006/12/24 17:51:48 Wendy
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Drupal TinyMCE Module\n"
-"POT-Creation-Date: 2007-01-31 21:42+0200\n"
-"PO-Revision-Date: 2007-01-31 21:49+0200\n"
-"Last-Translator: Erdem Köse <erdemkose@erdemkose.com>\n"
-"Language-Team: Drupal Turkish <ceviri@drupaltr.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Poedit-Language: Turkish\n"
-"X-Poedit-Country: Turkey\n"
-"X-Poedit-SourceCharset: utf-8\n"
-
-#: wysiwyg_editor.module:7 wysiwyg_editor.info:0
-msgid "The most popular WYSIWYG editor for advance content."
-msgstr "Gelişmiş içerikler için en gözde görsel düzenleyici."
-
-#: wysiwyg_editor.module:8
-msgid "<p><ul><li>Editor mode: full, compact and simple.</li></ul></p>"
-msgstr "<p><ul><li>Düzenleyici kipi: Tam, sade ve basit.</li></ul></p>"
-
-#: wysiwyg_editor.module:11
-msgid "Enable WYSIWYG Editor to your site."
-msgstr "Sitenizde görsel düzenleyiciyi etkinleştirin."
-
-#: wysiwyg_editor.module:28
-#: wysiwyg_editor.info:0
-msgid "TinyMCE"
-msgstr "TinyMCE"
-
-#: wysiwyg_editor.module:29
-msgid "Tinymce settings."
-msgstr "Tinymce ayarları"
-
-#: wysiwyg_editor.module:45
-msgid "Basic settings"
-msgstr "Temel ayarlar"
-
-#: wysiwyg_editor.module:52
-msgid "Editor Mode"
-msgstr "Düzenleyici kipi"
-
-#: wysiwyg_editor.module:54
-msgid "Full"
-msgstr "Tam"
-
-#: wysiwyg_editor.module:54
-msgid "Compact"
-msgstr "Sade"
-
-#: wysiwyg_editor.module:54
-msgid "Simple"
-msgstr "Basit"
-
-#: wysiwyg_editor.module:55
-msgid "FULL: enable all TinyMCE features. COMPACT: enable most used features. SIMPLE: just enable simple editor.<hr>"
-msgstr "TAM: tüm TinyMCE özellekleri etkinleştirilir. SADE: en çok kullanılan özellikler etkinleştirilir. BASİT: sadece temel özellikler etkinleştirilir.<hr>"
-
-#: wysiwyg_editor.module:60
-msgid "Enable TinyMCE for"
-msgstr "TinyMCE etkin olsun"
-
-#: wysiwyg_editor.module:62
-msgid "Edit-body only"
-msgstr "Sadece gövde için (Edit-body)"
-
-#: wysiwyg_editor.module:62
-msgid "Edit-comment only"
-msgstr "Sadece yorum için (Edit-comment)"
-
-#: wysiwyg_editor.module:62
-msgid "Both"
-msgstr "Her ikisi için"
-
-#: wysiwyg_editor.module:63
-msgid "If you want TinyMCE available for textarea of edit-body and comment then you should select <b>Both</b> option."
-msgstr "Eğer TinyMCE'nin hem içerik gövdesinde hem de yorumlarda etkin olmasını istiyorsanız <b>Her ikisi için</b> seçeneğini seçin."
-
-#: wysiwyg_editor.module:68
-msgid "Enable TinyMCE for this node types"
-msgstr "TinyMCE eklentisini bu düğüm çeşitleri için etkinleştir"
-
-#: wysiwyg_editor.module:70
-msgid "Node type in case-sensitive name, i.e: page,story,data_product,blog"
-msgstr "İçerik türü, küçük büyük harf duyarlı. ör: page, story, data_product, blog"
-
-#: wysiwyg_editor.module:0
-#: wysiwyg_editor.info:0
-msgid "wysiwyg_editor"
-msgstr "wysiwyg_editor"
-
diff --git a/sites/all/modules/wysiwyg/translations/uk.po b/sites/all/modules/wysiwyg/translations/uk.po
deleted file mode 100755
index 6a25be8aeab1598043a5da91dfda8f5a8af23de5..0000000000000000000000000000000000000000
--- a/sites/all/modules/wysiwyg/translations/uk.po
+++ /dev/null
@@ -1,818 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: wysiwig Uk\n"
-"POT-Creation-Date: 2009-03-02 01:23+0100\n"
-"PO-Revision-Date: \n"
-"Last-Translator: podarok <podarok@ua.fm>\n"
-"Language-Team: Pavonine.com.ua <drupalua@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: Ukrainian\n"
-"X-Poedit-Country: UKRAINE\n"
-"X-Poedit-SourceCharset: utf-8\n"
-"Plural-Forms: nplurals=3; plural=((((n%10)==1)&&((n%100)!=11))?(0):(((((n%10)>=2)&&((n%10)<=4))&&(((n%100)<10)||((n%100)>=20)))?(1):2));\n"
-
-#: wysiwyg.api.php:50;51
-msgid "My plugin title"
-msgstr "Мій заголовок плаґіну"
-
-#: wysiwyg.api.php:60
-msgid "Button title (optional)"
-msgstr "Назва кнопки (необов’язково)"
-
-#: wysiwyg.admin.inc:19
-msgid "Home"
-msgstr "Додому"
-
-#: wysiwyg.admin.inc:20
-msgid "Administer"
-msgstr "Адміністрування"
-
-#: wysiwyg.admin.inc:21
-msgid "Site configuration"
-msgstr "Конфіґурація сайту"
-
-#: wysiwyg.admin.inc:22
-msgid "Wysiwyg profiles"
-msgstr "Профілі візуального редактора"
-
-#: wysiwyg.admin.inc:78
-msgid "%format Wysiwyg profile"
-msgstr "%format профілю візуального редактора"
-
-#: wysiwyg.admin.inc:87
-msgid "Basic setup"
-msgstr "Базове встановлення"
-
-#: wysiwyg.admin.inc:94
-msgid "Enabled by default"
-msgstr "Дозволити стандартно"
-
-#: wysiwyg.admin.inc:97
-msgid "The default editor state for users having access to this profile. Users are able to override this state if the next option is enabled."
-msgstr "Стандартний редактор за замовчуванням для користувачів, що мають доступ до цього профілю. Користувачі мають можливість змінити цей стан, якщо включена наступна опція."
-
-#: wysiwyg.admin.inc:102
-msgid "Allow users to choose default"
-msgstr "Дозволити користувачам обирати стандартно"
-
-#: wysiwyg.admin.inc:105
-msgid "If allowed, users will be able to choose their own editor default state in their user account settings."
-msgstr "Якщо дозволено, користувачі зможуть вибирати свій власний стандартний редактор за замовчуванням у налаштуваннях облікового запису користувача."
-
-#: wysiwyg.admin.inc:110
-msgid "Show <em>enable/disable rich text</em> toggle link"
-msgstr ""
-
-#: wysiwyg.admin.inc:113
-msgid "Whether or not to show the <em>enable/disable rich text</em> toggle link below a textarea. If disabled, the user setting or global default is used (see above)."
-msgstr ""
-
-#: wysiwyg.admin.inc:123
-msgid "Language"
-msgstr "Мова"
-
-#: wysiwyg.admin.inc:126
-msgid "The language to use for the editor interface. Language codes are based on the <a href=\"http://www.loc.gov/standards/iso639-2/englangn.html\">ISO-639-2</a> format."
-msgstr "Мова, яка використовується в редакторі кодується у форматі <a href=\"http://www.loc.gov/standards/iso639-2/englangn.html\">ISO-639-2</a>."
-
-#: wysiwyg.admin.inc:131
-msgid "Buttons and plugins"
-msgstr "Кнопки та плаґіни"
-
-#: wysiwyg.admin.inc:176
-msgid "Editor appearance"
-msgstr "Дизайн редактора"
-
-#: wysiwyg.admin.inc:183
-msgid "Toolbar location"
-msgstr "Розміщення панеоі"
-
-#: wysiwyg.admin.inc:185;201
-msgid "Bottom"
-msgstr "Знизу"
-
-#: wysiwyg.admin.inc:185;201
-msgid "Top"
-msgstr "Вгорі"
-
-#: wysiwyg.admin.inc:186
-msgid "This option controls whether the editor toolbar is displayed above or below the editing area."
-msgstr "Ця опція контролює чи панель інструментів редактора відображається вище або нижче вікна редагування."
-
-#: wysiwyg.admin.inc:191
-msgid "Button alignment"
-msgstr "Вирівнювання кнопок"
-
-#: wysiwyg.admin.inc:193
-msgid "Center"
-msgstr "По центру"
-
-#: wysiwyg.admin.inc:193
-msgid "Left"
-msgstr "Зліва"
-
-#: wysiwyg.admin.inc:193
-msgid "Right"
-msgstr "Справа"
-
-#: wysiwyg.admin.inc:194
-msgid "This option controls the alignment of icons in the editor toolbar."
-msgstr "Ця опція контролює розстановку іконок в панелі інструментів редактора."
-
-#: wysiwyg.admin.inc:199
-msgid "Path location"
-msgstr "Шлях розміщення"
-
-#: wysiwyg.admin.inc:201
-msgid "Hide"
-msgstr "Сховати"
-
-#: wysiwyg.admin.inc:202
-msgid "Where to display the path to HTML elements (i.e. <code>body > table > tr > td</code>)."
-msgstr ""
-
-#: wysiwyg.admin.inc:207
-msgid "Enable resizing button"
-msgstr "Дозволити кнопку зміни розміру"
-
-#: wysiwyg.admin.inc:210
-msgid "This option gives you the ability to enable/disable the resizing button. If enabled, the Path location toolbar must be set to \"Top\" or \"Bottom\" in order to display the resize icon."
-msgstr ""
-
-#: wysiwyg.admin.inc:215
-msgid "Cleanup and output"
-msgstr ""
-
-#: wysiwyg.admin.inc:222
-msgid "Verify HTML"
-msgstr "перевірити HTML"
-
-#: wysiwyg.admin.inc:225
-msgid "If enabled, potentially malicious code like <code>&lt;HEAD&gt;</code> tags will be removed from HTML contents."
-msgstr ""
-
-#: wysiwyg.admin.inc:230
-msgid "Preformatted"
-msgstr "Преформатований"
-
-#: wysiwyg.admin.inc:233
-msgid "If enabled, the editor will insert TAB characters on tab and preserve other whitespace characters just like a PRE element in HTML does."
-msgstr ""
-
-#: wysiwyg.admin.inc:238
-msgid "Convert &lt;font&gt; tags to styles"
-msgstr ""
-
-#: wysiwyg.admin.inc:241
-msgid "If enabled, HTML tags declaring the font size, font family, font color and font background color will be replaced by inline CSS styles."
-msgstr ""
-
-#: wysiwyg.admin.inc:246
-msgid "Remove linebreaks"
-msgstr "Видалити порожні рядки"
-
-#: wysiwyg.admin.inc:249
-msgid "If enabled, the editor will remove most linebreaks from contents. Disabling this option could avoid conflicts with other input filters."
-msgstr "Якщо включено, редактор буде видаляти сам розриви рядків з тексту. Ця опція може уникнути конфліктів з іншими фільтрами введення."
-
-#: wysiwyg.admin.inc:254
-msgid "Apply source formatting"
-msgstr "Застосувати форматування вихідного тексту"
-
-#: wysiwyg.admin.inc:257
-msgid "If enabled, the editor will re-format the HTML source code. Disabling this option could avoid conflicts with other input filters."
-msgstr "Якщо включений, редактор буде переформатувати вихідний код. Ця опція може уникнути конфліктів з іншими фільтрами введення."
-
-#: wysiwyg.admin.inc:262
-msgid "Force cleanup on standard paste"
-msgstr ""
-
-#: wysiwyg.admin.inc:265
-msgid "If enabled, the default paste function (CTRL-V or SHIFT-INS) behaves like the \"paste from word\" plugin function."
-msgstr "Якщо включена функція «Вставити» за замовчуванням (CTRL-V або SHIFT-INS) поводить себе як функція плаґіну  \"paste from word\"."
-
-#: wysiwyg.admin.inc:270
-msgid "CSS"
-msgstr "CSS"
-
-#: wysiwyg.admin.inc:277
-msgid "Block formats"
-msgstr "Блочні формати"
-
-#: wysiwyg.admin.inc:281
-msgid "Comma separated list of HTML block formats. Possible values: <code>@format-list</code>."
-msgstr "Розділяйте комою список HTML блочних форматів. Можливі значення: <code>@format-list</code>."
-
-#: wysiwyg.admin.inc:286
-msgid "Editor CSS"
-msgstr "Редактор CSS"
-
-#: wysiwyg.admin.inc:288
-msgid "Use theme CSS"
-msgstr "Використовувати CSS шаблону"
-
-#: wysiwyg.admin.inc:288
-msgid "Define CSS"
-msgstr "Визначити CSS"
-
-#: wysiwyg.admin.inc:288
-msgid "Editor default CSS"
-msgstr "Редактор стандартного CSS"
-
-#: wysiwyg.admin.inc:289
-msgid "Defines the CSS to be used in the editor area.<br />Use theme CSS - loads stylesheets from current site theme.<br/>Define CSS - enter path for stylesheet files below.<br />Editor default CSS - uses default stylesheets from editor."
-msgstr "Визначає CSS, які будуть використовуватися в редакторі.<br /> Використовуйте CSS-стилі від поточної шаблону сайту. <br /> Визначити CSS - Введіть шлях до файлів стилів нижче. <br/> Редактор стандартного CSS редактор за замовчуванням — використовує стандартний стиль з редактора."
-
-#: wysiwyg.admin.inc:294
-msgid "CSS path"
-msgstr "Шлях до CSS"
-
-#: wysiwyg.admin.inc:298
-msgid "If \"Define CSS\" has been selected above, enter path to a CSS file or a list of CSS files seperated by a comma."
-msgstr "Якщо \"Визначити CSS\" був обраний вище, введіть шлях до файлу CSS або список доданих типів файлів, розділених комами."
-
-#: wysiwyg.admin.inc:298
-msgid "Available tokens: %b (base path, f.e.: /), %t (path to theme, f.e.: themes/garland)"
-msgstr "Доступні лексеми: %b (базовий шлях, для прикладу.: /), %t (шлях до шаблону, f.e.: themes/garland)"
-
-#: wysiwyg.admin.inc:298
-msgid "Examples:"
-msgstr "Приклади: "
-
-#: wysiwyg.admin.inc:303
-msgid "CSS classes"
-msgstr "Класи CSS"
-
-#: wysiwyg.admin.inc:305
-msgid "Optionally define CSS classes for the \"Font style\" dropdown list.<br />Enter one class on each line in the format: !format. Example: !example<br />If left blank, CSS classes are automatically imported from all loaded stylesheet(s)."
-msgstr "Можливе визначення CSS-класів для \"стилю тексту\" як випадаючий список.<br />Введіть один клас в одному рядку: !format. Приклад: !example<br />Якщо залишити порожнім,CSS класи будуть автоматично імпортовані з всіх завантажених стилів."
-
-#: wysiwyg.admin.inc:310;444
-msgid "Save"
-msgstr "Зберегти"
-
-#: wysiwyg.admin.inc:343
-msgid "Wysiwyg profile for %format has been saved."
-msgstr "Профіль візуального редактора %format збережено."
-
-#: wysiwyg.admin.inc:392
-msgid "No editor"
-msgstr "Без редактора"
-
-#: wysiwyg.admin.inc:396
-msgid "<a href=\"!vendor-url\">@editor</a> (<a href=\"!download-url\">Download</a>)"
-msgstr "<a href=\"!vendor-url\">@editor</a> (<a href=\"!download-url\">Завантажити</a>)"
-
-#: wysiwyg.admin.inc:397
-msgid "Not installed."
-msgstr "Не встановлено"
-
-#: wysiwyg.admin.inc:398
-msgid "Extract the archive and copy its contents into a new folder in the following location:<br /><code>@editor-path</code>"
-msgstr "Розпакуйте архів і скопіюйте його вміст в нову папку в наступному місці:<br /><code>@editor-path</code>"
-
-#: wysiwyg.admin.inc:409
-msgid "Installation instructions"
-msgstr "Інструкції з встановлення"
-
-#: wysiwyg.admin.inc:412
-msgid "There are no editor libraries installed currently. The following list contains a list of currently supported editors:"
-msgstr "Тут немає бібліотеки редакторів, що встановлені в даний час. Наступний список містить список підтримуваних в даний час редакторів:"
-
-#: wysiwyg.admin.inc:436
-msgid "Edit"
-msgstr "Редагувати"
-
-#: wysiwyg.admin.inc:439;496
-msgid "Remove"
-msgstr "Прибрати"
-
-#: wysiwyg.admin.inc:456
-msgid "Input format"
-msgstr "Формат ввлду"
-
-#: wysiwyg.admin.inc:456
-msgid "Editor"
-msgstr "Редактор"
-
-#: wysiwyg.admin.inc:456
-msgid "Operations"
-msgstr "Операції"
-
-#: wysiwyg.admin.inc:494
-msgid "Are you sure you want to remove the profile for %name?"
-msgstr "Ви впевнені, що бажаєте видалити профіль для %name?"
-
-#: wysiwyg.admin.inc:496
-msgid "This action cannot be undone."
-msgstr "Ця дія не може бути скасованою."
-
-#: wysiwyg.admin.inc:496
-msgid "Cancel"
-msgstr "Скасувати"
-
-#: wysiwyg.admin.inc:507
-msgid "Wysiwyg profile for %name has been deleted."
-msgstr "Профіль візуального редактора для %name збережено."
-
-#: wysiwyg.plugins.inc:15
-msgid "Teaser break"
-msgstr ""
-
-#: wysiwyg.module:41
-msgid "A Wysiwyg profile can be associated to an input format. A Wysiwyg profile defines which client-side editor is loaded, what buttons or themes are enabled for the editor, how the editor is displayed, and a few other editor-specific functions."
-msgstr "Профіль візуального редактора може бути пов'язано з вхідний форматом. Профіль візуального редактора визначає, які клієнтські редактори завантажуються, які кнопки або теми включені в редакторі, як це відображено в редакторі, і кілька інших специфічних функцій редактора."
-
-#: wysiwyg.module:273
-msgid "Disable rich-text"
-msgstr "Вимкнути rich-text"
-
-#: wysiwyg.module:274
-msgid "Enable rich-text"
-msgstr "Дозволити rich-text"
-
-#: wysiwyg.module:485
-msgid "Wysiwyg Editor settings"
-msgstr "налаштування візуального редактора"
-
-#: wysiwyg.module:492
-msgid "Enable editor by default"
-msgstr "Дозволити редактор за замовчуванням"
-
-#: wysiwyg.module:495
-msgid "If enabled, rich-text editing is enabled by default in textarea fields."
-msgstr "Якщо увімкнено, rich-text є вбудованим за замовчуванням у текстові поля"
-
-#: wysiwyg.module:579
-msgid "The version of %editor could not be detected."
-msgstr "Версія редактора %editor неможливо визначити."
-
-#: wysiwyg.module:592
-msgid "The installed version %version of %editor is not supported."
-msgstr "Встановлена версія %version  %editor не підтримується."
-
-#: wysiwyg.module:15
-#: wysiwyg.info:0
-msgid "Wysiwyg"
-msgstr "Wysiwyg"
-
-#: wysiwyg.module:17
-msgid "Configure client-side editor profiles."
-msgstr "Налаштування клієнтських профілів боку редактора."
-
-#: wysiwyg.module:0
-msgid "wysiwyg"
-msgstr "wysiwyg"
-
-#: wysiwyg.install:10
-msgid "Stores Wysiwyg profiles."
-msgstr "Магазини профілів візуальних редакторів."
-
-#: wysiwyg.info:0
-msgid "Allows users to edit contents with client-side editors."
-msgstr "Дозволяє користувачам редагувати вміст на стороні клієнтського редактора."
-
-#: wysiwyg.info:0
-msgid "User interface"
-msgstr "Користувацький інтерфейс"
-
-#: editors/fckeditor.inc:166
-#: editors/markitup.inc:91;140
-#: editors/nicedit.inc:102
-#: editors/tinymce.inc:348
-#: editors/whizzywig.inc:110
-#: editors/yui.inc:227
-msgid "Bold"
-msgstr "Напівжирний"
-
-#: editors/fckeditor.inc:166
-#: editors/markitup.inc:92;140
-#: editors/nicedit.inc:102
-#: editors/tinymce.inc:348
-#: editors/whizzywig.inc:110
-#: editors/yui.inc:227
-msgid "Italic"
-msgstr "Курсив"
-
-#: editors/fckeditor.inc:166
-#: editors/nicedit.inc:102
-#: editors/tinymce.inc:348
-#: editors/whizzywig.inc:110
-#: editors/yui.inc:227
-msgid "Underline"
-msgstr "Підкреслений"
-
-#: editors/fckeditor.inc:167
-#: editors/markitup.inc:93;141
-#: editors/nicedit.inc:103
-#: editors/tinymce.inc:349
-#: editors/yui.inc:228
-msgid "Strike-through"
-msgstr "Перекреслени"
-
-#: editors/fckeditor.inc:168
-#: editors/nicedit.inc:104
-#: editors/tinymce.inc:350
-#: editors/whizzywig.inc:111
-#: editors/yui.inc:229
-msgid "Align left"
-msgstr "Зліва"
-
-#: editors/fckeditor.inc:168
-#: editors/nicedit.inc:104
-#: editors/tinymce.inc:350
-#: editors/whizzywig.inc:111
-#: editors/yui.inc:229
-msgid "Align center"
-msgstr "По центру"
-
-#: editors/fckeditor.inc:168
-#: editors/nicedit.inc:104
-#: editors/tinymce.inc:350
-#: editors/whizzywig.inc:111
-#: editors/yui.inc:229
-msgid "Align right"
-msgstr "Справа"
-
-#: editors/fckeditor.inc:168
-#: editors/tinymce.inc:350
-msgid "Justify"
-msgstr "По ширині"
-
-#: editors/fckeditor.inc:169
-#: editors/nicedit.inc:105
-#: editors/tinymce.inc:351
-#: editors/whizzywig.inc:112
-#: editors/yui.inc:230
-msgid "Bullet list"
-msgstr "Звичайний список"
-
-#: editors/fckeditor.inc:169
-#: editors/nicedit.inc:105
-#: editors/tinymce.inc:351
-#: editors/whizzywig.inc:112
-#: editors/yui.inc:230
-msgid "Numbered list"
-msgstr "Нумерований список"
-
-#: editors/fckeditor.inc:170
-#: editors/nicedit.inc:106
-#: editors/tinymce.inc:352
-#: editors/whizzywig.inc:113
-#: editors/yui.inc:231
-msgid "Outdent"
-msgstr ""
-
-#: editors/fckeditor.inc:170
-#: editors/nicedit.inc:106
-#: editors/tinymce.inc:352
-#: editors/whizzywig.inc:113
-#: editors/yui.inc:231
-msgid "Indent"
-msgstr ""
-
-#: editors/fckeditor.inc:171
-#: editors/tinymce.inc:353
-#: editors/whizzywig.inc:114
-msgid "Undo"
-msgstr "Скасувати"
-
-#: editors/fckeditor.inc:171
-#: editors/tinymce.inc:353
-#: editors/whizzywig.inc:114
-msgid "Redo"
-msgstr "Відмінити"
-
-#: editors/fckeditor.inc:172
-#: editors/markitup.inc:95;143
-#: editors/nicedit.inc:113
-#: editors/tinymce.inc:354
-#: editors/whizzywig.inc:118
-#: editors/yui.inc:232
-msgid "Link"
-msgstr "Посилання"
-
-#: editors/fckeditor.inc:172
-#: editors/nicedit.inc:113
-#: editors/tinymce.inc:354
-msgid "Unlink"
-msgstr "Прибрати посилання"
-
-#: editors/fckeditor.inc:172
-#: editors/tinymce.inc:354
-msgid "Anchor"
-msgstr "Анкор"
-
-#: editors/fckeditor.inc:173
-#: editors/markitup.inc:94;142
-#: editors/nicedit.inc:107
-#: editors/tinymce.inc:355
-#: editors/whizzywig.inc:115;119
-#: editors/yui.inc:233
-msgid "Image"
-msgstr "Зображення"
-
-#: editors/fckeditor.inc:174
-#: editors/nicedit.inc:108
-#: editors/tinymce.inc:357
-#: editors/whizzywig.inc:116
-msgid "Forecolor"
-msgstr "Колір переднього плану"
-
-#: editors/fckeditor.inc:174
-#: editors/nicedit.inc:108
-#: editors/tinymce.inc:357
-#: editors/whizzywig.inc:116
-msgid "Backcolor"
-msgstr "Фон"
-
-#: editors/fckeditor.inc:175
-msgid "Superscript"
-msgstr "Надрядковий індекс"
-
-#: editors/fckeditor.inc:175
-msgid "Subscript"
-msgstr "Підрядковий індекс"
-
-#: editors/fckeditor.inc:176
-#: editors/tinymce.inc:359
-msgid "Blockquote"
-msgstr "Цитата"
-
-#: editors/fckeditor.inc:176
-#: editors/nicedit.inc:115
-#: editors/tinymce.inc:359
-#: editors/whizzywig.inc:122
-msgid "Source code"
-msgstr "Вихідний код"
-
-#: editors/fckeditor.inc:177
-#: editors/nicedit.inc:110
-#: editors/tinymce.inc:360
-#: editors/whizzywig.inc:117
-msgid "Horizontal rule"
-msgstr "Горизонтальне правило"
-
-#: editors/fckeditor.inc:178
-#: editors/tinymce.inc:361
-msgid "Cut"
-msgstr "Вирізати"
-
-#: editors/fckeditor.inc:178
-#: editors/tinymce.inc:361
-msgid "Copy"
-msgstr "Копіювати"
-
-#: editors/fckeditor.inc:178
-#: editors/tinymce.inc:361
-msgid "Paste"
-msgstr "Вставитив"
-
-#: editors/fckeditor.inc:179
-msgid "Paste Text"
-msgstr "Вставити текст"
-
-#: editors/fckeditor.inc:179
-#: editors/tinymce.inc:472
-msgid "Paste from Word"
-msgstr "Вставити з «Word»"
-
-#: editors/fckeditor.inc:180
-msgid "Show blocks"
-msgstr "Показати блоки"
-
-#: editors/fckeditor.inc:181
-#: editors/tinymce.inc:363
-#: editors/yui.inc:236
-msgid "Remove format"
-msgstr "Прибрати формат"
-
-#: editors/fckeditor.inc:182
-#: editors/tinymce.inc:364
-msgid "Character map"
-msgstr "Таблиця символів"
-
-#: editors/fckeditor.inc:183
-msgid "About"
-msgstr "Про"
-
-#: editors/fckeditor.inc:185
-#: editors/nicedit.inc:114
-#: editors/tinymce.inc:430
-#: editors/whizzywig.inc:109
-#: editors/yui.inc:238
-msgid "HTML block format"
-msgstr "HTML формат блоку"
-
-#: editors/fckeditor.inc:185
-#: editors/nicedit.inc:114
-#: editors/tinymce.inc:430
-#: editors/whizzywig.inc:109
-#: editors/yui.inc:238
-msgid "Font"
-msgstr "Шрифт"
-
-#: editors/fckeditor.inc:185
-#: editors/nicedit.inc:114
-#: editors/tinymce.inc:430
-#: editors/whizzywig.inc:109
-#: editors/yui.inc:238
-msgid "Font size"
-msgstr "Розмір шрифту"
-
-#: editors/fckeditor.inc:185
-#: editors/tinymce.inc:430
-#: editors/yui.inc:238
-msgid "Font style"
-msgstr "Стиль шрифту"
-
-#: editors/fckeditor.inc:186
-#: editors/tinymce.inc:507
-#: editors/whizzywig.inc:120
-msgid "Table"
-msgstr "Таблиця"
-
-#: editors/fckeditor.inc:187
-#: editors/tinymce.inc:493
-msgid "Search"
-msgstr "Пошук"
-
-#: editors/fckeditor.inc:187
-#: editors/tinymce.inc:493
-msgid "Replace"
-msgstr "Заміна"
-
-#: editors/fckeditor.inc:187
-#: editors/tinymce.inc:472
-msgid "Select all"
-msgstr "Виділити все"
-
-#: editors/fckeditor.inc:188
-msgid "Create DIV container"
-msgstr "Створити контейнер DIV"
-
-#: editors/fckeditor.inc:189
-#: editors/tinymce.inc:422
-msgid "Flash"
-msgstr "Флеш"
-
-#: editors/fckeditor.inc:189
-msgid "Smiley"
-msgstr "Смайлики"
-
-#: editors/fckeditor.inc:190
-msgid "FitWindow"
-msgstr "Ввікно"
-
-#: editors/fckeditor.inc:191
-msgid "Check spelling"
-msgstr "Перевірка правопису"
-
-#: editors/markitup.inc:98;145
-#: editors/tinymce.inc:479
-msgid "Preview"
-msgstr "Попередній перегляд"
-
-#: editors/nicedit.inc:109
-#: editors/tinymce.inc:358
-#: editors/yui.inc:235
-msgid "Sup"
-msgstr "Верхній індекс"
-
-#: editors/nicedit.inc:109
-#: editors/tinymce.inc:358
-#: editors/yui.inc:235
-msgid "Sub"
-msgstr "Нижній індекс"
-
-#: editors/tinymce.inc:356
-#: editors/whizzywig.inc:121
-msgid "Clean-up"
-msgstr "Очистити"
-
-#: editors/tinymce.inc:362
-msgid "Visual aid"
-msgstr "Наочні посібники"
-
-#: editors/tinymce.inc:365
-msgid "Help"
-msgstr "Допомога"
-
-#: editors/tinymce.inc:370
-msgid "Advanced horizontal rule"
-msgstr "Розширений горизонтальні правила"
-
-#: editors/tinymce.inc:378
-msgid "Advanced image"
-msgstr "Розширене зображення"
-
-#: editors/tinymce.inc:386
-msgid "Advanced link"
-msgstr "Розширене посилання"
-
-#: editors/tinymce.inc:394
-msgid "Auto save"
-msgstr "Автозбереження"
-
-#: editors/tinymce.inc:401
-msgid "Context menu"
-msgstr "Контекстне меню"
-
-#: editors/tinymce.inc:408
-msgid "Left-to-right"
-msgstr "Зліва направо"
-
-#: editors/tinymce.inc:408
-msgid "Right-to-left"
-msgstr "Справа наліво"
-
-#: editors/tinymce.inc:415
-msgid "Emotions"
-msgstr "Емоції"
-
-#: editors/tinymce.inc:437
-msgid "Fullscreen"
-msgstr "Повноекренний режим перегляду"
-
-#: editors/tinymce.inc:444
-msgid "Inline popups"
-msgstr "Рядкові спливаючі вікна"
-
-#: editors/tinymce.inc:454
-msgid "Insert date"
-msgstr "Вставити дата"
-
-#: editors/tinymce.inc:454
-msgid "Insert time"
-msgstr "Вставити час"
-
-#: editors/tinymce.inc:465
-msgid "Insert layer"
-msgstr "Вставити шар"
-
-#: editors/tinymce.inc:465
-msgid "Move forward"
-msgstr "Переміщення вперед"
-
-#: editors/tinymce.inc:465
-msgid "Move backward"
-msgstr "Переміщення назад"
-
-#: editors/tinymce.inc:465
-msgid "Absolute"
-msgstr "Абсолютно"
-
-#: editors/tinymce.inc:472
-msgid "Paste text"
-msgstr "Вставити текст"
-
-#: editors/tinymce.inc:486
-msgid "Print"
-msgstr "Роздрукувати"
-
-#: editors/tinymce.inc:500
-msgid "Style properties"
-msgstr "Опції стилю"
-
-#: editors/tinymce.inc:516
-msgid "Citation"
-msgstr "Цитування"
-
-#: editors/tinymce.inc:516
-msgid "Deleted"
-msgstr "Видалено"
-
-#: editors/tinymce.inc:516
-msgid "Abbreviation"
-msgstr "Абревіатура"
-
-#: editors/tinymce.inc:516
-msgid "Acronym"
-msgstr "Акронім"
-
-#: editors/tinymce.inc:516
-msgid "Inserted"
-msgstr "Вставлено"
-
-#: editors/tinymce.inc:523
-msgid "Safari compatibility"
-msgstr "Сумісність із Safari"
-
-#: editors/whizzywig.inc:123
-msgid "Spell check"
-msgstr "Перевірка орфографії"
-
-#: editors/yui.inc:234
-msgid "Font Color"
-msgstr "Колір шрифту"
-
-#: editors/yui.inc:234
-msgid "Background Color"
-msgstr "Колір тла"
-
-#: editors/yui.inc:237
-msgid "Show/hide hidden elements"
-msgstr "Показати/сховати приховані елементи"
-
diff --git a/sites/all/modules/wysiwyg/translations/wysiwyg.pot b/sites/all/modules/wysiwyg/translations/wysiwyg.pot
deleted file mode 100644
index 3d1f6dd9ed9ba4b69b69dfd0cc59c1defde11ce2..0000000000000000000000000000000000000000
--- a/sites/all/modules/wysiwyg/translations/wysiwyg.pot
+++ /dev/null
@@ -1,772 +0,0 @@
-# $Id: wysiwyg.pot,v 1.3 2009/06/17 21:06:26 hass Exp $
-#
-# LANGUAGE translation of Drupal (general)
-# Copyright YEAR NAME <EMAIL@ADDRESS>
-# Generated from files:
-#  wysiwyg.api.php,v 1.3 2009/06/09 00:18:11 sun
-#  wysiwyg.admin.inc,v 1.15 2009/06/09 00:18:11 sun
-#  wysiwyg.module,v 1.33 2009/06/09 00:18:11 sun
-#  wysiwyg.info,v 1.1 2008/10/14 21:45:07 sun
-#  wysiwyg.install,v 1.4 2009/06/08 21:57:10 sun
-#  fckeditor.inc,v 1.17 2009/06/09 00:18:11 sun
-#  markitup.inc,v 1.7 2009/06/13 02:10:32 sun
-#  nicedit.inc,v 1.6 2009/06/09 00:18:12 sun
-#  openwysiwyg.inc,v 1.4 2009/06/13 02:17:10 sun
-#  tinymce.inc,v 1.35 2009/06/09 00:18:12 sun
-#  whizzywig.inc,v 1.3 2009/06/09 00:18:12 sun
-#  yui.inc,v 1.6 2009/06/13 02:10:32 sun
-#  break.inc,v 1.4 2009/06/09 00:18:12 sun
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PROJECT VERSION\n"
-"POT-Creation-Date: 2009-06-17 21:00+0200\n"
-"PO-Revision-Date: YYYY-mm-DD HH:MM+ZZZZ\n"
-"Last-Translator: NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <EMAIL@ADDRESS>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: wysiwyg.api.php:51;52
-msgid "My plugin title"
-msgstr ""
-
-#: wysiwyg.api.php:61
-msgid "Button title (optional)"
-msgstr ""
-
-#: wysiwyg.admin.inc:51
-msgid "%editor profile for %format"
-msgstr ""
-
-#: wysiwyg.admin.inc:60
-msgid "Basic setup"
-msgstr ""
-
-#: wysiwyg.admin.inc:67
-msgid "Enabled by default"
-msgstr ""
-
-#: wysiwyg.admin.inc:70
-msgid "The default editor state for users having access to this profile. Users are able to override this state if the next option is enabled."
-msgstr ""
-
-#: wysiwyg.admin.inc:75
-msgid "Allow users to choose default"
-msgstr ""
-
-#: wysiwyg.admin.inc:78
-msgid "If allowed, users will be able to choose their own editor default state in their user account settings."
-msgstr ""
-
-#: wysiwyg.admin.inc:83
-msgid "Show <em>enable/disable rich text</em> toggle link"
-msgstr ""
-
-#: wysiwyg.admin.inc:86
-msgid "Whether or not to show the <em>enable/disable rich text</em> toggle link below a textarea. If disabled, the user setting or global default is used (see above)."
-msgstr ""
-
-#: wysiwyg.admin.inc:96
-msgid "Language"
-msgstr ""
-
-#: wysiwyg.admin.inc:99
-msgid "The language to use for the editor interface. Language codes are based on the <a href=\"http://www.loc.gov/standards/iso639-2/englangn.html\">ISO-639-2</a> format."
-msgstr ""
-
-#: wysiwyg.admin.inc:104
-msgid "Buttons and plugins"
-msgstr ""
-
-#: wysiwyg.admin.inc:149
-msgid "Editor appearance"
-msgstr ""
-
-#: wysiwyg.admin.inc:156
-msgid "Toolbar location"
-msgstr ""
-
-#: wysiwyg.admin.inc:158;174
-msgid "Bottom"
-msgstr ""
-
-#: wysiwyg.admin.inc:158;174
-msgid "Top"
-msgstr ""
-
-#: wysiwyg.admin.inc:159
-msgid "This option controls whether the editor toolbar is displayed above or below the editing area."
-msgstr ""
-
-#: wysiwyg.admin.inc:164
-msgid "Button alignment"
-msgstr ""
-
-#: wysiwyg.admin.inc:166
-msgid "Center"
-msgstr ""
-
-#: wysiwyg.admin.inc:166
-msgid "Left"
-msgstr ""
-
-#: wysiwyg.admin.inc:166
-msgid "Right"
-msgstr ""
-
-#: wysiwyg.admin.inc:167
-msgid "This option controls the alignment of icons in the editor toolbar."
-msgstr ""
-
-#: wysiwyg.admin.inc:172
-msgid "Path location"
-msgstr ""
-
-#: wysiwyg.admin.inc:174
-msgid "Hide"
-msgstr ""
-
-#: wysiwyg.admin.inc:175
-msgid "Where to display the path to HTML elements (i.e. <code>body > table > tr > td</code>)."
-msgstr ""
-
-#: wysiwyg.admin.inc:180
-msgid "Enable resizing button"
-msgstr ""
-
-#: wysiwyg.admin.inc:183
-msgid "This option gives you the ability to enable/disable the resizing button. If enabled, the Path location toolbar must be set to \"Top\" or \"Bottom\" in order to display the resize icon."
-msgstr ""
-
-#: wysiwyg.admin.inc:188
-msgid "Cleanup and output"
-msgstr ""
-
-#: wysiwyg.admin.inc:195
-msgid "Verify HTML"
-msgstr ""
-
-#: wysiwyg.admin.inc:198
-msgid "If enabled, potentially malicious code like <code>&lt;HEAD&gt;</code> tags will be removed from HTML contents."
-msgstr ""
-
-#: wysiwyg.admin.inc:203
-msgid "Preformatted"
-msgstr ""
-
-#: wysiwyg.admin.inc:206
-msgid "If enabled, the editor will insert TAB characters on tab and preserve other whitespace characters just like a PRE element in HTML does."
-msgstr ""
-
-#: wysiwyg.admin.inc:211
-msgid "Convert &lt;font&gt; tags to styles"
-msgstr ""
-
-#: wysiwyg.admin.inc:214
-msgid "If enabled, HTML tags declaring the font size, font family, font color and font background color will be replaced by inline CSS styles."
-msgstr ""
-
-#: wysiwyg.admin.inc:219
-msgid "Remove linebreaks"
-msgstr ""
-
-#: wysiwyg.admin.inc:222
-msgid "If enabled, the editor will remove most linebreaks from contents. Disabling this option could avoid conflicts with other input filters."
-msgstr ""
-
-#: wysiwyg.admin.inc:227
-msgid "Apply source formatting"
-msgstr ""
-
-#: wysiwyg.admin.inc:230
-msgid "If enabled, the editor will re-format the HTML source code. Disabling this option could avoid conflicts with other input filters."
-msgstr ""
-
-#: wysiwyg.admin.inc:235
-msgid "Force cleanup on standard paste"
-msgstr ""
-
-#: wysiwyg.admin.inc:238
-msgid "If enabled, the default paste function (CTRL-V or SHIFT-INS) behaves like the \"paste from word\" plugin function."
-msgstr ""
-
-#: wysiwyg.admin.inc:243
-msgid "CSS"
-msgstr ""
-
-#: wysiwyg.admin.inc:250
-msgid "Block formats"
-msgstr ""
-
-#: wysiwyg.admin.inc:254
-msgid "Comma separated list of HTML block formats. Possible values: <code>@format-list</code>."
-msgstr ""
-
-#: wysiwyg.admin.inc:259
-msgid "Editor CSS"
-msgstr ""
-
-#: wysiwyg.admin.inc:261
-msgid "Use theme CSS"
-msgstr ""
-
-#: wysiwyg.admin.inc:261
-msgid "Define CSS"
-msgstr ""
-
-#: wysiwyg.admin.inc:261
-msgid "Editor default CSS"
-msgstr ""
-
-#: wysiwyg.admin.inc:262
-msgid "Defines the CSS to be used in the editor area.<br />Use theme CSS - loads stylesheets from current site theme.<br/>Define CSS - enter path for stylesheet files below.<br />Editor default CSS - uses default stylesheets from editor."
-msgstr ""
-
-#: wysiwyg.admin.inc:267
-msgid "CSS path"
-msgstr ""
-
-#: wysiwyg.admin.inc:271
-msgid "If \"Define CSS\" was selected above, enter path to a CSS file or a list of CSS files separated by a comma."
-msgstr ""
-
-#: wysiwyg.admin.inc:271
-msgid "Available tokens: <code>%b</code> (base path, eg: <code>/</code>), <code>%t</code> (path to theme, eg: <code>themes/garland</code>)"
-msgstr ""
-
-#: wysiwyg.admin.inc:271
-msgid "Example:"
-msgstr ""
-
-#: wysiwyg.admin.inc:276
-msgid "CSS classes"
-msgstr ""
-
-#: wysiwyg.admin.inc:278
-msgid "Optionally define CSS classes for the \"Font style\" dropdown list.<br />Enter one class on each line in the format: !format. Example: !example<br />If left blank, CSS classes are automatically imported from all loaded stylesheet(s)."
-msgstr ""
-
-#: wysiwyg.admin.inc:283;438
-msgid "Save"
-msgstr ""
-
-#: wysiwyg.admin.inc:317
-msgid "Wysiwyg profile for %format has been saved."
-msgstr ""
-
-#: wysiwyg.admin.inc:366
-msgid "No editor"
-msgstr ""
-
-#: wysiwyg.admin.inc:371
-msgid "<a href=\"!vendor-url\">@editor</a> (<a href=\"!download-url\">Download</a>)"
-msgstr ""
-
-#: wysiwyg.admin.inc:372
-msgid "Not installed."
-msgstr ""
-
-#: wysiwyg.admin.inc:386
-msgid "Extract the archive and copy its contents into a new folder in the following location:<br /><code>@editor-path</code>"
-msgstr ""
-
-#: wysiwyg.admin.inc:387
-msgid "So the actual library can be found at:<br /><code>@library-filepath</code>"
-msgstr ""
-
-#: wysiwyg.admin.inc:402
-msgid "Installation instructions"
-msgstr ""
-
-#: wysiwyg.admin.inc:405
-msgid "There are no editor libraries installed currently. The following list contains a list of currently supported editors:"
-msgstr ""
-
-#: wysiwyg.admin.inc:430 wysiwyg.module:26
-msgid "Edit"
-msgstr ""
-
-#: wysiwyg.admin.inc:433;489 wysiwyg.module:36
-msgid "Remove"
-msgstr ""
-
-#: wysiwyg.admin.inc:450
-msgid "Input format"
-msgstr ""
-
-#: wysiwyg.admin.inc:450
-msgid "Editor"
-msgstr ""
-
-#: wysiwyg.admin.inc:450
-msgid "Operations"
-msgstr ""
-
-#: wysiwyg.admin.inc:487
-msgid "Are you sure you want to remove the profile for %name?"
-msgstr ""
-
-#: wysiwyg.admin.inc:489
-msgid "This action cannot be undone."
-msgstr ""
-
-#: wysiwyg.admin.inc:489
-msgid "Cancel"
-msgstr ""
-
-#: wysiwyg.admin.inc:501
-msgid "Wysiwyg profile for %name has been deleted."
-msgstr ""
-
-#: wysiwyg.module:80
-msgid "A Wysiwyg profile can be associated to an input format. A Wysiwyg profile defines which client-side editor is loaded, what buttons or themes are enabled for the editor, how the editor is displayed, and a few other editor-specific functions."
-msgstr ""
-
-#: wysiwyg.module:306
-msgid "Disable rich-text"
-msgstr ""
-
-#: wysiwyg.module:307
-msgid "Enable rich-text"
-msgstr ""
-
-#: wysiwyg.module:608
-msgid "Wysiwyg Editor settings"
-msgstr ""
-
-#: wysiwyg.module:615
-msgid "Enable editor by default"
-msgstr ""
-
-#: wysiwyg.module:618
-msgid "If enabled, rich-text editing is enabled by default in textarea fields."
-msgstr ""
-
-#: wysiwyg.module:702
-msgid "The version of %editor could not be detected."
-msgstr ""
-
-#: wysiwyg.module:715
-msgid "The installed version %version of %editor is not supported."
-msgstr ""
-
-#: wysiwyg.module:14 wysiwyg.info:0
-msgid "Wysiwyg"
-msgstr ""
-
-#: wysiwyg.module:17
-msgid "Configure client-side editors."
-msgstr ""
-
-#: wysiwyg.module:22
-msgid "Profiles"
-msgstr ""
-
-#: wysiwyg.module:0
-msgid "wysiwyg"
-msgstr ""
-
-#: wysiwyg.install:10
-msgid "Stores Wysiwyg profiles."
-msgstr ""
-
-#: wysiwyg.info:0
-msgid "Allows users to edit contents with client-side editors."
-msgstr ""
-
-#: wysiwyg.info:0
-msgid "User interface"
-msgstr ""
-
-#: editors/fckeditor.inc:217 editors/markitup.inc:105;170 editors/nicedit.inc:103 editors/openwysiwyg.inc:140 editors/tinymce.inc:377 editors/whizzywig.inc:113 editors/yui.inc:276
-msgid "Bold"
-msgstr ""
-
-#: editors/fckeditor.inc:217 editors/markitup.inc:112;170 editors/nicedit.inc:103 editors/openwysiwyg.inc:140 editors/tinymce.inc:377 editors/whizzywig.inc:113 editors/yui.inc:276
-msgid "Italic"
-msgstr ""
-
-#: editors/fckeditor.inc:217 editors/nicedit.inc:103 editors/openwysiwyg.inc:140 editors/tinymce.inc:377 editors/whizzywig.inc:113 editors/yui.inc:276
-msgid "Underline"
-msgstr ""
-
-#: editors/fckeditor.inc:218 editors/markitup.inc:119;171 editors/nicedit.inc:104 editors/openwysiwyg.inc:141 editors/tinymce.inc:378 editors/yui.inc:277
-msgid "Strike-through"
-msgstr ""
-
-#: editors/fckeditor.inc:219 editors/nicedit.inc:105 editors/openwysiwyg.inc:142 editors/tinymce.inc:379 editors/whizzywig.inc:114 editors/yui.inc:278
-msgid "Align left"
-msgstr ""
-
-#: editors/fckeditor.inc:219 editors/nicedit.inc:105 editors/openwysiwyg.inc:142 editors/tinymce.inc:379 editors/whizzywig.inc:114 editors/yui.inc:278
-msgid "Align center"
-msgstr ""
-
-#: editors/fckeditor.inc:219 editors/nicedit.inc:105 editors/openwysiwyg.inc:142 editors/tinymce.inc:379 editors/whizzywig.inc:114 editors/yui.inc:278
-msgid "Align right"
-msgstr ""
-
-#: editors/fckeditor.inc:219 editors/openwysiwyg.inc:142 editors/tinymce.inc:379 editors/yui.inc:278
-msgid "Justify"
-msgstr ""
-
-#: editors/fckeditor.inc:220 editors/nicedit.inc:106 editors/openwysiwyg.inc:143 editors/tinymce.inc:380 editors/whizzywig.inc:115 editors/yui.inc:279
-msgid "Bullet list"
-msgstr ""
-
-#: editors/fckeditor.inc:220 editors/nicedit.inc:106 editors/openwysiwyg.inc:143 editors/tinymce.inc:380 editors/whizzywig.inc:115 editors/yui.inc:279
-msgid "Numbered list"
-msgstr ""
-
-#: editors/fckeditor.inc:221 editors/nicedit.inc:107 editors/openwysiwyg.inc:144 editors/tinymce.inc:381 editors/whizzywig.inc:116 editors/yui.inc:280
-msgid "Outdent"
-msgstr ""
-
-#: editors/fckeditor.inc:221 editors/nicedit.inc:107 editors/openwysiwyg.inc:144 editors/tinymce.inc:381 editors/whizzywig.inc:116 editors/yui.inc:280
-msgid "Indent"
-msgstr ""
-
-#: editors/fckeditor.inc:222 editors/openwysiwyg.inc:145 editors/tinymce.inc:382 editors/whizzywig.inc:117 editors/yui.inc:281
-msgid "Undo"
-msgstr ""
-
-#: editors/fckeditor.inc:222 editors/openwysiwyg.inc:145 editors/tinymce.inc:382 editors/whizzywig.inc:117 editors/yui.inc:281
-msgid "Redo"
-msgstr ""
-
-#: editors/fckeditor.inc:223 editors/markitup.inc:132;173 editors/nicedit.inc:114 editors/openwysiwyg.inc:146 editors/tinymce.inc:383 editors/whizzywig.inc:121 editors/yui.inc:282
-msgid "Link"
-msgstr ""
-
-#: editors/fckeditor.inc:223 editors/nicedit.inc:114 editors/tinymce.inc:383
-msgid "Unlink"
-msgstr ""
-
-#: editors/fckeditor.inc:223 editors/tinymce.inc:383
-msgid "Anchor"
-msgstr ""
-
-#: editors/fckeditor.inc:224 editors/markitup.inc:126;172 editors/nicedit.inc:108 editors/openwysiwyg.inc:147 editors/tinymce.inc:384 editors/whizzywig.inc:118;122 editors/yui.inc:283
-msgid "Image"
-msgstr ""
-
-#: editors/fckeditor.inc:225 editors/nicedit.inc:109 editors/openwysiwyg.inc:149 editors/tinymce.inc:386 editors/whizzywig.inc:119
-msgid "Forecolor"
-msgstr ""
-
-#: editors/fckeditor.inc:225 editors/nicedit.inc:109 editors/openwysiwyg.inc:149 editors/tinymce.inc:386 editors/whizzywig.inc:119
-msgid "Backcolor"
-msgstr ""
-
-#: editors/fckeditor.inc:226
-msgid "Superscript"
-msgstr ""
-
-#: editors/fckeditor.inc:226
-msgid "Subscript"
-msgstr ""
-
-#: editors/fckeditor.inc:227 editors/openwysiwyg.inc:151 editors/tinymce.inc:388
-msgid "Blockquote"
-msgstr ""
-
-#: editors/fckeditor.inc:227 editors/nicedit.inc:116 editors/openwysiwyg.inc:151 editors/tinymce.inc:388 editors/whizzywig.inc:125
-msgid "Source code"
-msgstr ""
-
-#: editors/fckeditor.inc:228 editors/nicedit.inc:111 editors/openwysiwyg.inc:152 editors/tinymce.inc:389 editors/whizzywig.inc:120
-msgid "Horizontal rule"
-msgstr ""
-
-#: editors/fckeditor.inc:229 editors/openwysiwyg.inc:153 editors/tinymce.inc:390
-msgid "Cut"
-msgstr ""
-
-#: editors/fckeditor.inc:229 editors/openwysiwyg.inc:153 editors/tinymce.inc:390
-msgid "Copy"
-msgstr ""
-
-#: editors/fckeditor.inc:229 editors/openwysiwyg.inc:153 editors/tinymce.inc:390
-msgid "Paste"
-msgstr ""
-
-#: editors/fckeditor.inc:230
-msgid "Paste Text"
-msgstr ""
-
-#: editors/fckeditor.inc:230 editors/tinymce.inc:494
-msgid "Paste from Word"
-msgstr ""
-
-#: editors/fckeditor.inc:231
-msgid "Show blocks"
-msgstr ""
-
-#: editors/fckeditor.inc:232 editors/openwysiwyg.inc:155 editors/tinymce.inc:392 editors/yui.inc:287
-msgid "Remove format"
-msgstr ""
-
-#: editors/fckeditor.inc:233 editors/openwysiwyg.inc:156 editors/tinymce.inc:393
-msgid "Character map"
-msgstr ""
-
-#: editors/fckeditor.inc:234
-msgid "About"
-msgstr ""
-
-#: editors/fckeditor.inc:235 editors/nicedit.inc:115 editors/openwysiwyg.inc:157 editors/tinymce.inc:452 editors/whizzywig.inc:112 editors/yui.inc:288
-msgid "HTML block format"
-msgstr ""
-
-#: editors/fckeditor.inc:235 editors/nicedit.inc:115 editors/openwysiwyg.inc:157 editors/tinymce.inc:452 editors/whizzywig.inc:112 editors/yui.inc:288
-msgid "Font"
-msgstr ""
-
-#: editors/fckeditor.inc:235 editors/nicedit.inc:115 editors/openwysiwyg.inc:157 editors/tinymce.inc:452 editors/whizzywig.inc:112 editors/yui.inc:288
-msgid "Font size"
-msgstr ""
-
-#: editors/fckeditor.inc:235 editors/tinymce.inc:452
-msgid "Font style"
-msgstr ""
-
-#: editors/fckeditor.inc:236 editors/openwysiwyg.inc:161 editors/tinymce.inc:529 editors/whizzywig.inc:123
-msgid "Table"
-msgstr ""
-
-#: editors/fckeditor.inc:237 editors/tinymce.inc:515
-msgid "Search"
-msgstr ""
-
-#: editors/fckeditor.inc:237 editors/tinymce.inc:515
-msgid "Replace"
-msgstr ""
-
-#: editors/fckeditor.inc:237 editors/tinymce.inc:494
-msgid "Select all"
-msgstr ""
-
-#: editors/fckeditor.inc:238
-msgid "Create DIV container"
-msgstr ""
-
-#: editors/fckeditor.inc:239 editors/tinymce.inc:538
-msgid "Flash"
-msgstr ""
-
-#: editors/fckeditor.inc:239
-msgid "Smiley"
-msgstr ""
-
-#: editors/fckeditor.inc:240
-msgid "FitWindow"
-msgstr ""
-
-#: editors/fckeditor.inc:241
-msgid "Check spelling"
-msgstr ""
-
-#: editors/fckeditor.inc:248
-msgid "Autogrow"
-msgstr ""
-
-#: editors/fckeditor.inc:259 editors/tinymce.inc:564
-msgid "BBCode"
-msgstr ""
-
-#: editors/fckeditor.inc:267
-msgid "Table drag/resize"
-msgstr ""
-
-#: editors/fckeditor.inc:275
-msgid "Table: Cell properties"
-msgstr ""
-
-#: editors/fckeditor.inc:276
-msgid "Table: Insert row after"
-msgstr ""
-
-#: editors/fckeditor.inc:277
-msgid "Table: Insert column after"
-msgstr ""
-
-#: editors/fckeditor.inc:278
-msgid "Table: Insert cell after"
-msgstr ""
-
-#: editors/fckeditor.inc:279
-msgid "Table: Delete rows"
-msgstr ""
-
-#: editors/fckeditor.inc:280
-msgid "Table: Delete columns"
-msgstr ""
-
-#: editors/fckeditor.inc:281
-msgid "Table: Delete cells"
-msgstr ""
-
-#: editors/fckeditor.inc:282
-msgid "Table: Merge cells"
-msgstr ""
-
-#: editors/fckeditor.inc:283
-msgid "Table: Horizontal split cell"
-msgstr ""
-
-#: editors/markitup.inc:142;175 editors/openwysiwyg.inc:159 editors/tinymce.inc:501
-msgid "Preview"
-msgstr ""
-
-#: editors/nicedit.inc:110 editors/openwysiwyg.inc:150 editors/tinymce.inc:387 editors/yui.inc:285
-msgid "Sup"
-msgstr ""
-
-#: editors/nicedit.inc:110 editors/openwysiwyg.inc:150 editors/tinymce.inc:387 editors/yui.inc:285
-msgid "Sub"
-msgstr ""
-
-#: editors/openwysiwyg.inc:148 editors/tinymce.inc:385 editors/whizzywig.inc:124
-msgid "Clean-up"
-msgstr ""
-
-#: editors/openwysiwyg.inc:154 editors/tinymce.inc:391
-msgid "Visual aid"
-msgstr ""
-
-#: editors/openwysiwyg.inc:158 editors/tinymce.inc:459
-msgid "Fullscreen"
-msgstr ""
-
-#: editors/openwysiwyg.inc:160 editors/tinymce.inc:508
-msgid "Print"
-msgstr ""
-
-#: editors/openwysiwyg.inc:162 editors/tinymce.inc:394
-msgid "Help"
-msgstr ""
-
-#: editors/tinymce.inc:400
-msgid "Advanced horizontal rule"
-msgstr ""
-
-#: editors/tinymce.inc:408
-msgid "Advanced image"
-msgstr ""
-
-#: editors/tinymce.inc:416
-msgid "Advanced link"
-msgstr ""
-
-#: editors/tinymce.inc:424
-msgid "Auto save"
-msgstr ""
-
-#: editors/tinymce.inc:431
-msgid "Context menu"
-msgstr ""
-
-#: editors/tinymce.inc:438
-msgid "Left-to-right"
-msgstr ""
-
-#: editors/tinymce.inc:438
-msgid "Right-to-left"
-msgstr ""
-
-#: editors/tinymce.inc:445
-msgid "Emotions"
-msgstr ""
-
-#: editors/tinymce.inc:466
-msgid "Inline popups"
-msgstr ""
-
-#: editors/tinymce.inc:476
-msgid "Insert date"
-msgstr ""
-
-#: editors/tinymce.inc:476
-msgid "Insert time"
-msgstr ""
-
-#: editors/tinymce.inc:487
-msgid "Insert layer"
-msgstr ""
-
-#: editors/tinymce.inc:487
-msgid "Move forward"
-msgstr ""
-
-#: editors/tinymce.inc:487
-msgid "Move backward"
-msgstr ""
-
-#: editors/tinymce.inc:487
-msgid "Absolute"
-msgstr ""
-
-#: editors/tinymce.inc:494
-msgid "Paste text"
-msgstr ""
-
-#: editors/tinymce.inc:522
-msgid "Style properties"
-msgstr ""
-
-#: editors/tinymce.inc:548
-msgid "Media"
-msgstr ""
-
-#: editors/tinymce.inc:555
-msgid "Citation"
-msgstr ""
-
-#: editors/tinymce.inc:555
-msgid "Deleted"
-msgstr ""
-
-#: editors/tinymce.inc:555
-msgid "Abbreviation"
-msgstr ""
-
-#: editors/tinymce.inc:555
-msgid "Acronym"
-msgstr ""
-
-#: editors/tinymce.inc:555
-msgid "Inserted"
-msgstr ""
-
-#: editors/tinymce.inc:571
-msgid "Safari compatibility"
-msgstr ""
-
-#: editors/whizzywig.inc:126
-msgid "Spell check"
-msgstr ""
-
-#: editors/yui.inc:284
-msgid "Font Color"
-msgstr ""
-
-#: editors/yui.inc:284
-msgid "Background Color"
-msgstr ""
-
-#: editors/yui.inc:286
-msgid "Show/hide hidden elements"
-msgstr ""
-
-#: plugins/break.inc:14
-msgid "Teaser break"
-msgstr ""
-
-#: plugins/break.inc:17
-msgid "Separate the teaser and body of this content"
-msgstr ""
-
diff --git a/sites/all/modules/wysiwyg/wysiwyg-dialog-page.tpl.php b/sites/all/modules/wysiwyg/wysiwyg-dialog-page.tpl.php
index 0811ae788cc44b2b4c4ff9b7bd4dd1475fb309ef..3e77d79b4f252b4876090fc8fa3cad30a6b5a059 100644
--- a/sites/all/modules/wysiwyg/wysiwyg-dialog-page.tpl.php
+++ b/sites/all/modules/wysiwyg/wysiwyg-dialog-page.tpl.php
@@ -2,83 +2,27 @@
 
 /**
  * @file
- * Theme template to display a single Wysiwyg (plugin) dialog page.
- *
- * Available variables:
- *
- * General utility variables:
- * - $base_path: The base URL path of the Drupal installation. At the very
- *   least, this will always default to /.
- * - $css: An array of CSS files for the current page.
- * - $directory: The directory the theme is located in, e.g. themes/garland or
- *   themes/garland/minelli.
- * - $logged_in: TRUE if the user is registered and signed in.
- * - $is_admin: TRUE if the user has permission to access administration pages.
- *
- * Page metadata:
- * - $language: (object) The language the site is being displayed in.
- *   $language->language contains its textual representation.
- *   $language->dir contains the language direction. It will either be 'ltr' or 'rtl'.
- * - $head_title: A modified version of the page title, for use in the TITLE tag.
- * - $head: Markup for the HEAD section (including meta tags, keyword tags, and
- *   so on).
- * - $styles: Style tags necessary to import all CSS files for the page.
- * - $scripts: Script tags necessary to load the JavaScript files and settings
- *   for the page.
- *
- * Site identity:
- * - $site_name: The name of the site, empty when display has been disabled
- *   in theme settings.
- *
- * Page content (in order of occurrance in the default page.tpl.php):
- * - $breadcrumb: The breadcrumb trail for the current page.
- * - $title: The page title, for use in the actual HTML content.
- * - $help: Dynamic help text, mostly for admin pages.
- * - $messages: HTML for status and error messages. Should be displayed prominently.
- * - $tabs: Tabs linking to any sub-pages beneath the current page (e.g., the view
- *   and edit tabs when displaying a node).
- *
- * - $content: The main content of the current Drupal page.
- *
- * Footer/closing data:
- * - $footer : The footer region.
- * - $closure: Final closing markup from any modules that have altered the page.
- *   This variable should always be output last, after all other dynamic content.
- *
- * @see template_preprocess()
- * @see template_preprocess_wysiwyg_dialog_page()
+ * Theme implementation to display a single Wysiwyg (plugin) dialog page.
  */
 ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php print $language->language ?>" lang="<?php print $language->language ?>" dir="<?php print $language->dir ?>">
 
-<head>
-  <title><?php print $head_title; ?></title>
-  <?php print $head; ?>
-  <?php print $styles; ?>
-  <?php print $scripts; ?>
-  <script type="text/javascript"><?php /* Needed to avoid Flash of Unstyled Content in IE */ ?> </script>
-</head>
-<body>
   <div id="page">
-    <div id="container" class="clear-block">
-      <div id="main" class="column">
-        <?php if (!empty($breadcrumb)): ?><div id="breadcrumb"><?php print $breadcrumb; ?></div><?php endif; ?>
 
-        <div id="content">
-          <?php if (!empty($title)): ?><h1 class="title" id="page-title"><?php print $title; ?></h1><?php endif; ?>
-          <?php if (!empty($tabs)): ?><div class="tabs"><?php print $tabs; ?></div><?php endif; ?>
-          <?php if (!empty($messages)): print $messages; endif; ?>
-          <?php if (!empty($help)): print $help; endif; ?>
-          <div id="content-content" class="clear-block">
-            <?php print $content; ?>
-          </div>
-        </div>
+    <?php print $messages; ?>
 
-      </div>
-    </div>
-  </div>
-<?php print $closure; ?>
-</body>
-</html>
+    <div id="main-wrapper"><div id="main" class="clearfix">
+
+      <div id="content" class="column"><div class="section">
+        <a id="main-content"></a>
+        <?php print render($title_prefix); ?>
+        <?php if ($title): ?><h1 class="title" id="page-title"><?php print $title; ?></h1><?php endif; ?>
+        <?php print render($title_suffix); ?>
+        <?php if ($tabs): ?><div class="tabs"><?php print render($tabs); ?></div><?php endif; ?>
+        <?php print render($page['help']); ?>
+        <?php if ($action_links): ?><ul class="action-links"><?php print render($action_links); ?></ul><?php endif; ?>
+        <?php print render($page['content']); ?>
+      </div></div> <!-- /.section, /#content -->
+
+    </div></div> <!-- /#main, /#main-wrapper -->
+
+  </div> <!-- /#page -->
diff --git a/sites/all/modules/wysiwyg/wysiwyg.admin.inc b/sites/all/modules/wysiwyg/wysiwyg.admin.inc
index 510e1e3187479b22fc569840595b71d8d7d4fbad..497e5d4cf24b56025cb6bf67c4fdeb6994c00e68 100644
--- a/sites/all/modules/wysiwyg/wysiwyg.admin.inc
+++ b/sites/all/modules/wysiwyg/wysiwyg.admin.inc
@@ -135,21 +135,22 @@ function wysiwyg_profile_form($form, &$form_state, $profile) {
           }
           $icon = file_exists($img_src) ? '<img src="' . base_path() . $img_src . '" title="' . $button . '" style="border: 1px solid grey; vertical-align: middle;" />' : '';
         }
-        $title = (isset($meta['url']) ? l($title, $meta['url'], array('target' => '_blank')) : $title);
-        $title = (!empty($icon) ? $icon . ' ' . $title : $title);
+        $title = (!empty($icon) ? $icon . ' ' . check_plain($title) : check_plain($title));
         $form['buttons'][$name][$button] = array(
           '#type' => 'checkbox',
           '#title' => $title,
           '#default_value' => !empty($profile->settings['buttons'][$name][$button]) ? $profile->settings['buttons'][$name][$button] : FALSE,
+          '#description' => isset($meta['url']) ? l($meta['url'], $meta['url']) : NULL,
         );
       }
     }
-    else if (isset($meta['extensions']) && is_array($meta['extensions'])) {
+    elseif (isset($meta['extensions']) && is_array($meta['extensions'])) {
       foreach ($meta['extensions'] as $extension => $title) {
         $form['buttons'][$name][$extension] = array(
           '#type' => 'checkbox',
-          '#title' => isset($meta['url']) ? l($title, $meta['url'], array('target' => '_blank')) : $title,
+          '#title' => check_plain($title),
           '#default_value' => !empty($profile->settings['buttons'][$name][$extension]) ? $profile->settings['buttons'][$name][$extension] : FALSE,
+          '#description' => isset($meta['url']) ? l($meta['url'], $meta['url']) : NULL,
         );
       }
     }
@@ -299,6 +300,19 @@ function wysiwyg_profile_form($form, &$form_state, $profile) {
     '#weight' => 110,
   );
 
+  // Supply contextual information for other callbacks and handlers.
+  // @todo Modernize this form for D7+ and declare these earlier.
+  // $profile is the primary object of this form, and as an entity, usually
+  // expected to live in $form_state[$entity_type].
+  $form_state['wysiwyg_profile'] = $profile;
+  $form_state['wysiwyg']['editor'] = $editor;
+  $form_state['wysiwyg']['plugins'] = $plugins;
+
+  // Allow editor library specific changes to be made to the form.
+  if (isset($editor['settings form callback'])) {
+    $editor['settings form callback']($form, $form_state);
+  }
+
   return $form;
 }
 
@@ -363,14 +377,11 @@ function theme_wysiwyg_admin_button_table($variables) {
   // Split checkboxes into rows with 3 columns.
   $total = count($buttons);
   $rows = array();
-  for ($i = 0; $i < $total; $i++) {
+  for ($i = 0; $i < $total; $i += 3) {
     $row = array();
-    $row[] = array('data' => $buttons[$i]);
-    if (isset($buttons[++$i])) {
-      $row[] = array('data' => $buttons[$i]);
-    }
-    if (isset($buttons[++$i])) {
-      $row[] = array('data' => $buttons[$i]);
+    $row_buttons = array_slice($buttons, $i, 3) + array_fill(0, 3, array());
+    foreach ($row_buttons as $row_button) {
+      $row[] = array('data' => $row_button);
     }
     $rows[] = $row;
   }
@@ -416,6 +427,11 @@ function wysiwyg_profile_overview($form, &$form_state) {
       $instructions = '<p>' . t('Extract the archive and copy its contents into a new folder in the following location:<br /><code>@editor-path</code>', $targs) . '</p>';
       $instructions .= '<p>' . t('So the actual library can be found at:<br /><code>@library-filepath</code>', $targs) . '</p>';
 
+      // Add any install notes.
+      if (!empty($editor['install note callback']) && function_exists($editor['install note callback'])) {
+        $instructions .= '<div class="editor-install-note">' . $editor['install note callback']() . '</div>';
+      }
+
       $status[$name]['description'] .= $instructions;
       $count--;
     }
@@ -457,9 +473,20 @@ function wysiwyg_profile_overview($form, &$form_state) {
     // Only display editor selection for associated input formats to avoid
     // confusion about disabled selection.
     if (isset($profiles[$id]) && !empty($profiles[$id]->editor)) {
+      $editor_name = $profiles[$id]->editor;
+      $installed = !empty($editors[$editor_name]['installed']);
       $form['formats'][$id]['editor'] = array(
-        '#markup' => $options[$profiles[$id]->editor],
+        '#wysiwyg-editor-name' => $editor_name,
       );
+      if ($installed) {
+        $form['formats'][$id]['editor']['#markup'] = $options[$editor_name];
+      }
+      else {
+        drupal_set_message(t('Missing %editor library for %format format. Re-install the %editor library or delete the editor profile.', array(
+          '%editor' => $editors[$editor_name]['title'],
+          '%format' => $format->name,
+        )), 'warning');
+      }
     }
     else {
       $form['formats'][$id]['editor'] = array(
@@ -494,17 +521,28 @@ function theme_wysiwyg_profile_overview($variables) {
   if (!isset($form['formats'])) {
     return;
   }
+  $editors = wysiwyg_get_all_editors();
   $output = '';
-  $header = array(t('Input format'), t('Editor'), array('data' => t('Operations'), 'colspan' => 2));
+  $header = array(t('Text format'), t('Editor'), array('data' => t('Operations'), 'colspan' => 2));
   $rows = array();
   foreach (element_children($form['formats']) as $item) {
     $format = &$form['formats'][$item];
-    $rows[] = array(
-      drupal_render($format['name']),
-      drupal_render($format['editor']),
-      isset($format['edit']) ? drupal_render($format['edit']) : '',
-      isset($format['delete']) ? drupal_render($format['delete']) : '',
+    $row = array(
+      'data' => array(
+        drupal_render($format['name']),
+        drupal_render($format['editor']),
+        isset($format['edit']) ? drupal_render($format['edit']) : '',
+        isset($format['delete']) ? drupal_render($format['delete']) : '',
+      ),
     );
+    if (empty($row['data'][1])) {
+      $row['data'][1] = array(
+        'data' => t('Missing library: @library', array('@library' => $editors[$format['editor']['#wysiwyg-editor-name']]['title'])),
+        'class' => 'error',
+      );
+      $row['class'] = array('error');
+    }
+    $rows[] = $row;
   }
   $form['formats']['table']['#markup'] = theme('table', array('header' => $header, 'rows' => $rows));
   $output .= drupal_render_children($form);
@@ -554,4 +592,3 @@ function wysiwyg_profile_delete_confirm_submit($form, &$form_state) {
   drupal_set_message(t('Wysiwyg profile for %name has been deleted.', array('%name' => $format->name)));
   $form_state['redirect'] = 'admin/config/content/wysiwyg';
 }
-
diff --git a/sites/all/modules/wysiwyg/wysiwyg.api.php b/sites/all/modules/wysiwyg/wysiwyg.api.php
index 5f5b8390e2d031fb37094a885c76de044b51fe63..c4d885798d63725393fec896bce365288383826d 100644
--- a/sites/all/modules/wysiwyg/wysiwyg.api.php
+++ b/sites/all/modules/wysiwyg/wysiwyg.api.php
@@ -172,6 +172,83 @@ function hook_INCLUDE_plugin() {
   return $plugins;
 }
 
+/**
+ * Define a Wysiwyg editor library.
+ *
+ * @todo Complete this documentation.
+ */
+function hook_INCLUDE_editor() {
+  $editor['ckeditor'] = array(
+    // The official, human-readable label of the editor library.
+    'title' => 'CKEditor',
+    // The URL to the library's homepage.
+    'vendor url' => 'http://ckeditor.com',
+    // The URL to the library's download page.
+    'download url' => 'http://ckeditor.com/download',
+    // A definition of available variants for the editor library.
+    // The first defined is used by default.
+    'libraries' => array(
+      '' => array(
+        'title' => 'Default',
+        'files' => array(
+          'ckeditor.js' => array('preprocess' => FALSE),
+        ),
+      ),
+      'src' => array(
+        'title' => 'Source',
+        'files' => array(
+          'ckeditor_source.js' => array('preprocess' => FALSE),
+        ),
+      ),
+    ),
+    // (optional) A callback to invoke to return additional notes for installing
+    // the editor library in the administrative list/overview.
+    'install note callback' => 'wysiwyg_ckeditor_install_note',
+    // A callback to determine the library's version.
+    'version callback' => 'wysiwyg_ckeditor_version',
+    // A callback to return available themes/skins for the editor library.
+    'themes callback' => 'wysiwyg_ckeditor_themes',
+    // (optional) A callback to perform editor-specific adjustments or
+    // enhancements for the administrative editor profile settings form.
+    'settings form callback' => 'wysiwyg_ckeditor_settings_form',
+    // (optional) A callback to return an initialization JavaScript snippet for
+    // this editor library, loaded before the actual library files. The returned
+    // JavaScript is executed as inline script in a primitive environment,
+    // before the DOM is loaded; typically used to prime a base path and other
+    // global window variables for the editor library before it is loaded.
+    // All implementations should verbosely document what they are doing and
+    // why that is required.
+    'init callback' => 'wysiwyg_ckeditor_init',
+    // A callback to convert administrative profile/editor settings into
+    // JavaScript settings.
+    'settings callback' => 'wysiwyg_ckeditor_settings',
+    // A callback to supply definitions of available editor plugins.
+    'plugin callback' => 'wysiwyg_ckeditor_plugins',
+    // A callback to convert administrative plugin settings for a editor profile
+    // into JavaScript settings.
+    'plugin settings callback' => 'wysiwyg_ckeditor_plugin_settings',
+    // (optional) Defines the proxy plugin that handles plugins provided by
+    // Drupal modules, which work in all editors that support proxy plugins.
+    'proxy plugin' => array(
+      'drupal' => array(
+        'load' => TRUE,
+        'proxy' => TRUE,
+      ),
+    ),
+    // (optional) A callback to convert proxy plugin settings into JavaScript
+    // settings.
+    'proxy plugin settings callback' => 'wysiwyg_ckeditor_proxy_plugin_settings',
+    // Defines the list of supported (minimum) versions of the editor library,
+    // and the respective Drupal integration files to load.
+    'versions' => array(
+      '3.0.0.3665' => array(
+        'js files' => array('ckeditor-3.0.js'),
+      ),
+    ),
+  );
+  return $editor;
+}
+
 /**
  * Act on editor profile settings.
  *
diff --git a/sites/all/modules/wysiwyg/wysiwyg.dialog.inc b/sites/all/modules/wysiwyg/wysiwyg.dialog.inc
index 500f78d70347cbde5800c587a083ccffa316c2d6..c296d2e030cf8d88d6356a6ccbb0101d6dfd2fe9 100644
--- a/sites/all/modules/wysiwyg/wysiwyg.dialog.inc
+++ b/sites/all/modules/wysiwyg/wysiwyg.dialog.inc
@@ -6,7 +6,68 @@
  */
 
 /**
- * Menu callback; Output a wysiwyg plugin dialog page.
+ * Page callback; Outputs a dialog page for a wysiwyg plugin.
+ *
+ * A Wysiwyg dialog is a bare minimum, simple HTML page; presented in a
+ * modal/popup window, triggered via JavaScript.
+ *
+ * However, Drupal core does not support such a concept, at all.
+ * Insanity happens on two separate layers:
+ * - All HTML pages go through the default delivery callback of
+ *   drupal_deliver_html_page(), which calls into drupal_render_page(), which
+ *   in turn *unconditionally* invokes hook_page_build() implementations. Thus,
+ *   block_page_build() and similar implementations add the entirety of their
+ *   page regions and blocks to our simple dialog page.
+ *   Obviously, we don't want that.
+ * - There is a nice default 'page' theme template implementation, which
+ *   performs all the heavy-lifting that is required for outputting a sane HTML
+ *   page through preprocess and process functions. The theme system does not
+ *   support to "inherit" preprocess and process hooks to alternative
+ *   implementations. Even a very basic HTML page requires almost all of that.
+ *   However, the default page template (normally overridden by a theme)
+ *   contains too many regions and usually also huge a header and footer.
+ *   Obviously, we don't want that.
+ *
+ * The poor workaround would be to follow the Overlay module's implementation in
+ * core: override the theme, build everything, and after doing all of that,
+ * strip away what isn't needed. Obviously, we don't want that.
+ *
+ * Instead, we bend Drupal to sane rules:
+ * - This page callback returns the actual main content.
+ * - wysiwyg_menu() defines a custom delivery callback that replaces
+ *   drupal_deliver_html_page(), just because we need to replace
+ *   drupal_render_page().
+ * - Our replacement for drupal_render_page() builds a $page that does not use
+ *   #type 'page' but #type 'wysiwyg_dialog_page' instead.
+ * - #type 'wysiwyg_dialog_page' is defined like #type 'page' in
+ *   system_element_info(), but is required, because there's no way to inherit
+ *   a theme definition but override the page template file to be used.
+ * - As a consequence, #type 'wysiwyg_dialog_page' uses
+ *   #theme 'wysiwyg_dialog_page', for which we have to implement stub
+ *   preprocess and process callbacks in order to call into the ones for
+ *   #theme 'page'.
+ *
+ * As a result we get:
+ * - A HTML response.
+ * - A HTML page wrapped into html.tpl.php.
+ * - A page title, title prefix/suffix, messages, help, etc.pp.
+ * - A simple page without regions and blocks (neither built nor rendered).
+ *
+ * @see wysiwyg_menu()
+ * @see wysiwyg_deliver_dialog_page
+ * @see wysiwyg_render_dialog_page()
+ * @see wysiwyg_element_info()
+ * @see wysiwyg_theme()
+ * @see template_preprocess_wysiwyg_dialog_page()
+ * @see template_process_wysiwyg_dialog_page()
+ *
+ * @see drupal_deliver_page()
+ * @see drupal_deliver_html_page()
+ * @see drupal_render_page()
+ * @see system_element_info()
+ * @see drupal_common_theme()
+ * @see template_preprocess_page()
+ * @see template_process_page()
  */
 function wysiwyg_dialog($plugin, $instance) {
   $plugins = wysiwyg_get_all_plugins();
@@ -27,7 +88,74 @@ function wysiwyg_dialog($plugin, $instance) {
   );
   drupal_add_js(array('wysiwyg' => $settings), 'setting');
 
-  echo theme('wysiwyg_dialog_page', $callback($instance));
+  $build = $callback($instance);
+  if (!is_array($build)) {
+    $build = array('#markup' => $build);
+  }
+  $build += array(
+    '#instance' => $instance,
+    '#plugin' => $plugin,
+  );
+  return $build;
+}
+
+/**
+ * @see drupal_deliver_html_page()
+ */
+function wysiwyg_deliver_dialog_page($page_callback_result) {
+  // Menu status constants are integers; page content is a string or array.
+  if (is_int($page_callback_result)) {
+    return drupal_deliver_html_page($page_callback_result);
+  }
+
+  // Emit the correct charset HTTP header, but not if the page callback
+  // result is NULL, since that likely indicates that it printed something
+  // in which case, no further headers may be sent, and not if code running
+  // for this page request has already set the content type header.
+  if (isset($page_callback_result) && is_null(drupal_get_http_header('Content-Type'))) {
+    drupal_add_http_header('Content-Type', 'text/html; charset=utf-8');
+  }
+
+  // Send appropriate HTTP-Header for browsers and search engines.
+  global $language;
+  drupal_add_http_header('Content-Language', $language->language);
+
+  if (isset($page_callback_result)) {
+    // Print anything besides a menu constant, assuming it's not NULL or
+    // undefined.
+    print wysiwyg_render_dialog_page($page_callback_result);
+  }
+
+  // Perform end-of-request tasks.
+  drupal_page_footer();
+}
+
+/**
+ * @see drupal_render_page()
+ */
+function wysiwyg_render_dialog_page($page) {
+  $main_content_display = &drupal_static('system_main_content_added', FALSE);
+
+  // Allow menu callbacks to return strings or arbitrary arrays to render.
+  // If the array returned is not of #type page directly, we need to fill
+  // in the page with defaults.
+  if (is_string($page) || (is_array($page) && (!isset($page['#type']) || ($page['#type'] != 'page')))) {
+    drupal_set_page_content($page);
+    $page = element_info('wysiwyg_dialog_page');
+  }
+
+  // Modules alter the $page as needed. Blocks are populated into regions like
+  // 'sidebar_first', 'footer', etc.
+  drupal_alter(array('wysiwyg_dialog_page', 'page'), $page);
+
+  // If no module has taken care of the main content, add it to the page now.
+  // This allows the site to still be usable even if no modules that
+  // control page regions (for example, the Block module) are enabled.
+  if (!$main_content_display) {
+    $page['content']['system_main'] = drupal_set_page_content();
+  }
+
+  return drupal_render($page);
 }
 
 /**
@@ -35,29 +163,21 @@ function wysiwyg_dialog($plugin, $instance) {
  *
  * @see wysiwyg_dialog()
  * @see wysiwyg-dialog-page.tpl.php
- * @see template_preprocess()
+ * @see template_preprocess_page()
  */
 function template_preprocess_wysiwyg_dialog_page(&$variables) {
-  // Construct page title
-  $head_title = array(strip_tags(drupal_get_title()), variable_get('site_name', 'Drupal'));
-
-  $variables['head_title']        = implode(' | ', $head_title);
-  $variables['base_path']         = base_path();
-  $variables['front_page']        = url();
-  // @todo Would a breadcrumb make sense / possible at all?
-  // $variables['breadcrumb']        = theme('breadcrumb', drupal_get_breadcrumb());
-  $variables['head']              = drupal_get_html_head();
-  $variables['help']              = theme('help');
-  $variables['language']          = $GLOBALS['language'];
-  $variables['language']->dir     = $GLOBALS['language']->direction ? 'rtl' : 'ltr';
-  $variables['messages']          = $variables['show_messages'] ? theme('status_messages') : '';
-  $variables['site_name']         = (theme_get_setting('toggle_name') ? variable_get('site_name', 'Drupal') : '');
-  $variables['css']               = drupal_add_css();
-  $variables['styles']            = drupal_get_css();
-  $variables['scripts']           = drupal_get_js();
-  $variables['tabs']              = theme('menu_local_tasks');
-  $variables['title']             = drupal_get_title();
-  // Closure should be filled last.
-  $variables['closure']           = theme('closure');
+  template_preprocess_page($variables);
+}
+
+
+/**
+ * Template process function for theme_wysiwyg_dialog_page().
+ *
+ * @see wysiwyg_dialog()
+ * @see wysiwyg-dialog-page.tpl.php
+ * @see template_process_page()
+ */
+function template_process_wysiwyg_dialog_page(&$variables) {
+  template_process_page($variables);
 }
 
diff --git a/sites/all/modules/wysiwyg/wysiwyg.features.inc b/sites/all/modules/wysiwyg/wysiwyg.features.inc
new file mode 100644
index 0000000000000000000000000000000000000000..5edd6421b85f7e0435ecf3147bd415470b188e23
--- /dev/null
+++ b/sites/all/modules/wysiwyg/wysiwyg.features.inc
@@ -0,0 +1,92 @@
+<?php
+
+/**
+ * Implements hook_features_export_options().
+ */
+function wysiwyg_features_export_options() {
+  $profiles = array();
+
+  // Get human-readable name from filter module.
+  $formats = filter_formats();
+
+  foreach (array_keys(wysiwyg_profile_load_all()) as $format) {
+    // Text format may vanish without deleting the wysiwyg profile.
+    if (isset($formats[$format])) {
+      $profiles[$format] = $formats[$format]->name;
+    }
+  }
+  return $profiles;
+}
+
+/**
+ * Implements hook_features_export().
+ */
+function wysiwyg_features_export($data, &$export, $module_name = '') {
+  $pipe = array();
+
+  // The wysiwyg_default_formats() hook integration is provided by the
+  // features module so we need to add it as a dependency.
+  $export['dependencies']['features'] = 'features';
+  $export['dependencies']['wysiwyg'] = 'wysiwyg';
+
+  foreach ($data as $name) {
+    if ($profile = wysiwyg_get_profile($name)) {
+      // Add profile to exports.
+      $export['features']['wysiwyg'][$profile->format] = $profile->format;
+
+      // Chain filter format for export.
+      $pipe['filter'][] = $profile->format;
+    }
+  }
+
+  return $pipe;
+}
+
+/**
+ * Implements hook_features_export_render().
+ */
+function wysiwyg_features_export_render($module, $data, $export = NULL) {
+  $code = array();
+  $code[] = '  $profiles = array();';
+  $code[] = '';
+
+  foreach ($data as $name) {
+    if ($profile = wysiwyg_get_profile($name)) {
+      $profile_export = features_var_export($profile, '  ');
+      $profile_identifier = features_var_export($profile->format);
+      $code[] = "  // Exported profile: {$profile->format}";
+      $code[] = "  \$profiles[{$profile_identifier}] = {$profile_export};";
+      $code[] = "";
+    }
+  }
+
+  $code[] = '  return $profiles;';
+  $code = implode("\n", $code);
+  return array('wysiwyg_default_profiles' => $code);
+}
+
+/**
+ * Implements hook_features_revert().
+ */
+function wysiwyg_features_revert($module) {
+  return wysiwyg_features_rebuild($module);
+}
+
+/**
+ * Implements hook_features_rebuild().
+ */
+function wysiwyg_features_rebuild($module) {
+  if ($defaults = features_get_default('wysiwyg', $module)) {
+    foreach ($defaults as $profile) {
+      db_merge('wysiwyg')
+        ->key(array('format' => $profile['format']))
+        ->fields(array(
+          'editor' => $profile['editor'],
+          'settings' => serialize($profile['settings']),
+        ))
+        ->execute();
+    }
+    wysiwyg_profile_cache_clear();
+  }
+}
+
diff --git a/sites/all/modules/wysiwyg/wysiwyg.info b/sites/all/modules/wysiwyg/wysiwyg.info
index 840817ae61b31bc7e8f5bb1cc288ca12429c58be..5f70c0cbb7d4b5d7dc69a41f9780d954dfba2a9e 100644
--- a/sites/all/modules/wysiwyg/wysiwyg.info
+++ b/sites/all/modules/wysiwyg/wysiwyg.info
@@ -9,9 +9,9 @@ configure = admin/config/content/wysiwyg
 files[] = wysiwyg.module
 files[] = tests/wysiwyg.test
 
-; Information added by drupal.org packaging script on 2011-06-19
-version = "7.x-2.1"
+; Information added by drupal.org packaging script on 2012-10-02
+version = "7.x-2.2"
 core = "7.x"
 project = "wysiwyg"
-datestamp = "1308450722"
+datestamp = "1349213776"
 
diff --git a/sites/all/modules/wysiwyg/wysiwyg.install b/sites/all/modules/wysiwyg/wysiwyg.install
index 038ba46be781a7545f5e02a399217aed6c092b88..e5dd046d90a186d3922dd51ba2e9c71cd62ae52d 100644
--- a/sites/all/modules/wysiwyg/wysiwyg.install
+++ b/sites/all/modules/wysiwyg/wysiwyg.install
@@ -30,6 +30,7 @@ function wysiwyg_schema() {
         'description' => 'Configuration settings for the editor.',
         'type' => 'text',
         'size' => 'normal',
+        'serialize' => TRUE,
       ),
     ),
     'primary key' => array('format'),
diff --git a/sites/all/modules/wysiwyg/wysiwyg.js b/sites/all/modules/wysiwyg/wysiwyg.js
index 72ca15697fc1feeb07c056905a6f9db26d37f17e..29e2c54b8c35dfdaba8d2455c7fe5bf08c955b11 100644
--- a/sites/all/modules/wysiwyg/wysiwyg.js
+++ b/sites/all/modules/wysiwyg/wysiwyg.js
@@ -11,7 +11,6 @@ Drupal.wysiwygInit = function() {
   if (/KDE/.test(navigator.vendor)) {
     return;
   }
-
   jQuery.each(Drupal.wysiwyg.editor.init, function(editor) {
     // Clone, so original settings are not overwritten.
     this(jQuery.extend(true, {}, Drupal.settings.wysiwyg.configs[editor]));
@@ -38,13 +37,13 @@ Drupal.wysiwygInit = function() {
  *   A DOM element, supplied by Drupal.attachBehaviors().
  */
 Drupal.behaviors.attachWysiwyg = {
-  attach: function(context, settings) {
+  attach: function (context, settings) {
     // This breaks in Konqueror. Prevent it from running.
     if (/KDE/.test(navigator.vendor)) {
       return;
     }
 
-    $('.wysiwyg', context).once('wysiwyg', function() {
+    $('.wysiwyg', context).once('wysiwyg', function () {
       if (!this.id || typeof Drupal.settings.wysiwyg.triggers[this.id] === 'undefined') {
         return;
       }
@@ -76,9 +75,27 @@ Drupal.behaviors.attachWysiwyg = {
         if (event.isDefaultPrevented()) {
           return;
         }
-        Drupal.wysiwygDetach(context, params[format]);
+        Drupal.wysiwygDetach(context, params[format], 'serialize');
       });
     });
+  },
+
+  detach: function (context, settings, trigger) {
+    var wysiwygs;
+    // The 'serialize' trigger indicates that we should simply update the
+    // underlying element with the new text, without destroying the editor.
+    if (trigger == 'serialize') {
+      // Removing the wysiwyg-processed class guarantees that the editor will
+      // be reattached. Only do this if we're planning to destroy the editor.
+      wysiwygs = $('.wysiwyg-processed', context);
+    }
+    else {
+      wysiwygs = $('.wysiwyg', context).removeOnce('wysiwyg');
+    }
+    wysiwygs.each(function () {
+      var params = Drupal.settings.wysiwyg.triggers[this.id];
+      Drupal.wysiwygDetach(context, params, trigger);
+    });
   }
 };
 
@@ -136,11 +153,20 @@ Drupal.wysiwygAttach = function(context, params) {
  *   A DOM element, supplied by Drupal.attachBehaviors().
  * @param params
  *   An object containing input format parameters.
+ * @param trigger
+ *   A string describing what is causing the editor to be detached.
+ *
+ * @see Drupal.detachBehaviors
  */
-Drupal.wysiwygDetach = function(context, params) {
+Drupal.wysiwygDetach = function (context, params, trigger) {
+  // Do not attempt to detach an unknown editor instance (Ajax).
+  if (typeof Drupal.wysiwyg.instances[params.field] == 'undefined') {
+    return;
+  }
+  trigger = trigger || 'unload';
   var editor = Drupal.wysiwyg.instances[params.field].editor;
   if (jQuery.isFunction(Drupal.wysiwyg.editor.detach[editor])) {
-    Drupal.wysiwyg.editor.detach[editor](context, params);
+    Drupal.wysiwyg.editor.detach[editor](context, params, trigger);
   }
 };
 
@@ -187,6 +213,7 @@ Drupal.wysiwyg.toggleWysiwyg = function (event) {
     Drupal.wysiwyg.editor.attach.none(context, params);
     Drupal.wysiwyg.instances[params.field] = Drupal.wysiwyg.editor.instance.none;
     Drupal.wysiwyg.instances[params.field].editor = 'none';
+    Drupal.wysiwyg.instances[params.field].field = params.field;
     $(this).html(Drupal.settings.wysiwyg.enable).blur();
   }
   else {
@@ -234,4 +261,9 @@ Drupal.wysiwyg.getParams = function(element, params) {
  */
 Drupal.wysiwygInit();
 
+// Respond to CTools detach behaviors event.
+$(document).bind('CToolsDetachBehaviors', function(event, context) {
+  Drupal.behaviors.attachWysiwyg.detach(context, {}, 'unload');
+});
+
 })(jQuery);
diff --git a/sites/all/modules/wysiwyg/wysiwyg.module b/sites/all/modules/wysiwyg/wysiwyg.module
index 771cbd79a8597e0a87c259d9d93d09db7cf07c13..22130eab9485ff876f029519a7e2f929aecf4b73 100644
--- a/sites/all/modules/wysiwyg/wysiwyg.module
+++ b/sites/all/modules/wysiwyg/wysiwyg.module
@@ -79,9 +79,11 @@ function wysiwyg_menu() {
     'type' => MENU_LOCAL_TASK,
     'weight' => 10,
   );
+  // @see wysiwyg_dialog()
   $items['wysiwyg/%'] = array(
     'page callback' => 'wysiwyg_dialog',
     'page arguments' => array(1),
+    'delivery callback' => 'wysiwyg_deliver_dialog_page',
     'access arguments' => array('access content'),
     'type' => MENU_CALLBACK,
     'file' => 'wysiwyg.dialog.inc',
@@ -89,6 +91,19 @@ function wysiwyg_menu() {
   return $items;
 }
 
+/**
+ * Implements hook_element_info().
+ */
+function wysiwyg_element_info() {
+  // @see wysiwyg_dialog()
+  $types['wysiwyg_dialog_page'] = array(
+    '#theme' => 'wysiwyg_dialog_page',
+    '#theme_wrappers' => array('html'),
+    '#show_messages' => TRUE,
+  );
+  return $types;
+}
+
 /**
  * Implementation of hook_theme().
  *
@@ -103,8 +118,9 @@ function wysiwyg_theme() {
     'wysiwyg_admin_button_table' => array(
       'render element' => 'form',
     ),
+    // @see wysiwyg_dialog()
     'wysiwyg_dialog_page' => array(
-      'variables' => array('content' => NULL, 'show_messages' => TRUE),
+      'render element' => 'page',
       'file' => 'wysiwyg.dialog.inc',
       'template' => 'wysiwyg-dialog-page',
     ),
@@ -117,7 +133,7 @@ function wysiwyg_theme() {
 function wysiwyg_help($path, $arg) {
   switch ($path) {
     case 'admin/config/content/wysiwyg':
-      $output = '<p>' . t('A Wysiwyg profile is associated with an input format. A Wysiwyg profile defines which client-side editor is loaded with a particular input format, what buttons or themes are enabled for the editor, how the editor is displayed, and a few other editor-specific functions.') . '</p>';
+      $output = '<p>' . t('A Wysiwyg profile is associated with a text format. A Wysiwyg profile defines which client-side editor is loaded with a particular text format, what buttons or themes are enabled for the editor, how the editor is displayed, and a few other editor-specific functions.') . '</p>';
       return $output;
   }
 }
@@ -286,6 +302,7 @@ function wysiwyg_get_profile($format) {
 function wysiwyg_load_editor($profile) {
   static $settings_added;
   static $loaded = array();
+  $path = drupal_get_path('module', 'wysiwyg');
 
   $name = $profile->editor;
   // Library files must be loaded only once.
@@ -293,6 +310,13 @@ function wysiwyg_load_editor($profile) {
     // Load editor.
     $editor = wysiwyg_get_editor($name);
     if ($editor) {
+      $default_library_options = array(
+        'type' => 'file',
+        'scope' => 'header',
+        'defer' => FALSE,
+        'cache' => TRUE,
+        'preprocess' => TRUE,
+      );
       // Determine library files to load.
       // @todo Allow to configure the library/execMode to use.
       if (isset($profile->settings['library']) && isset($editor['libraries'][$profile->settings['library']])) {
@@ -305,9 +329,33 @@ function wysiwyg_load_editor($profile) {
         $files = array_shift($editor['libraries']);
         $files = $files['files'];
       }
+
+      // Check whether the editor requires an initialization script.
+      if (!empty($editor['init callback'])) {
+        $init = $editor['init callback']($editor, $library, $profile);
+        if (!empty($init)) {
+          // Build a file for each of the editors to hold the init scripts.
+          // @todo Aggregate all initialization scripts into one file.
+          $uri = 'public://js/wysiwyg/wysiwyg_' . $name . '_' . drupal_hash_base64($init) . '.js';
+          $init_exists = file_exists($uri);
+          if (!$init_exists) {
+            $js_path = dirname($uri);
+            file_prepare_directory($js_path, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS);
+          }
+          // Attempt to create the file, or fall back to an inline script (which
+          // will not work in Ajax calls).
+          if (!$init_exists && !file_unmanaged_save_data($init, $uri, FILE_EXISTS_REPLACE)) {
+            drupal_add_js($init, array('type' => 'inline') + $default_library_options);
+          }
+          else {
+            drupal_add_js(file_create_url($uri), $default_library_options);
+          }
+        }
+      }
+
       foreach ($files as $file => $options) {
         if (is_array($options)) {
-          $options += array('type' => 'file', 'scope' => 'header', 'defer' => FALSE, 'cache' => TRUE, 'preprocess' => TRUE);
+          $options += $default_library_options;
           drupal_add_js($editor['library path'] . '/' . $file, $options);
         }
         else {
@@ -335,17 +383,6 @@ function wysiwyg_load_editor($profile) {
       foreach ($files as $file) {
         drupal_add_css($editor['css path'] . '/' . $file);
       }
-
-      drupal_add_js(array('wysiwyg' => array(
-        'configs' => array($editor['name'] => array('global' => array(
-          // @todo Move into (global) editor settings.
-          // If JS compression is enabled, at least TinyMCE is unable to determine
-          // its own base path and exec mode since it can't find the script name.
-          'editorBasePath' => base_path() . $editor['library path'],
-          'execMode' => $library,
-        ))),
-      )), 'setting');
-
       $loaded[$name] = TRUE;
     }
     else {
@@ -362,7 +399,6 @@ function wysiwyg_load_editor($profile) {
       'enable' => t('Enable rich-text'),
     )), 'setting');
 
-    $path = drupal_get_path('module', 'wysiwyg');
     // Initialize our namespaces in the *header* to do not force editor
     // integration scripts to check and define Drupal.wysiwyg on its own.
     drupal_add_js($path . '/wysiwyg.init.js', array('group' => JS_LIBRARY));
@@ -619,7 +655,10 @@ function wysiwyg_get_css() {
   $files = array();
   foreach (drupal_add_css() as $filepath => $info) {
     if ($info['group'] >= CSS_THEME && $info['media'] != 'print') {
-      if (file_exists($filepath)) {
+      if ($info['type'] == 'external') {
+        $files[] = $filepath;
+      }
+      elseif (file_exists($filepath)) {
         $files[] = base_path() . $filepath;
       }
     }
@@ -809,6 +848,7 @@ function wysiwyg_get_all_editors() {
       'libraries' => array(),
       'version callback' => NULL,
       'themes callback' => NULL,
+      'settings form callback' => NULL,
       'settings callback' => NULL,
       'plugin callback' => NULL,
       'plugin settings callback' => NULL,
@@ -1077,3 +1117,19 @@ function _wysiwyg_process_include($module, $identifier, $path, $hook) {
 /**
  * @} End of "defgroup wysiwyg_api".
  */
+
+/**
+ * Implements hook_features_api().
+ */
+function wysiwyg_features_api() {
+  return array(
+    'wysiwyg' => array(
+      'name' => t('Wysiwyg profiles'),
+      'default_hook' => 'wysiwyg_default_profiles',
+      'default_file' => FEATURES_DEFAULTS_INCLUDED,
+      'feature_source' => TRUE,
+      'file' => drupal_get_path('module', 'wysiwyg') . '/wysiwyg.features.inc',
+    ),
+  );
+}
+
diff --git a/sites/all/themes/unl_wdn/lib/.pear2registry b/sites/all/themes/unl_wdn/lib/.pear2registry
index fe1fcf7de080445afbb3cbc01bd1366ba5e952d6..b4b979dfe7fbcdd47f323cc982d05403dca9ca01 100644
Binary files a/sites/all/themes/unl_wdn/lib/.pear2registry and b/sites/all/themes/unl_wdn/lib/.pear2registry differ
diff --git a/sites/all/themes/unl_wdn/lib/.xmlregistry/packages/pear.unl.edu/UNL_DWT/0.7.2-info.xml b/sites/all/themes/unl_wdn/lib/.xmlregistry/packages/pear.unl.edu/UNL_DWT/0.8.0-info.xml
similarity index 75%
rename from sites/all/themes/unl_wdn/lib/.xmlregistry/packages/pear.unl.edu/UNL_DWT/0.7.2-info.xml
rename to sites/all/themes/unl_wdn/lib/.xmlregistry/packages/pear.unl.edu/UNL_DWT/0.8.0-info.xml
index 010c9c1acd9a6c8ef51b98ca3fc4696fd4e86299..817ae5a5557fd79d71cf031af5e55af50573b908 100644
--- a/sites/all/themes/unl_wdn/lib/.xmlregistry/packages/pear.unl.edu/UNL_DWT/0.7.2-info.xml
+++ b/sites/all/themes/unl_wdn/lib/.xmlregistry/packages/pear.unl.edu/UNL_DWT/0.8.0-info.xml
@@ -13,10 +13,10 @@ This package generates php class files (objects) from Dreamweaver template files
   <email>brett.bieber@gmail.com</email>
   <active>yes</active>
  </lead>
- <date>2012-04-23</date>
- <time>13:18:13</time>
+ <date>2012-10-02</date>
+ <time>11:50:32</time>
  <version>
-  <release>0.7.2</release>
+  <release>0.8.0</release>
   <api>0.7.1</api>
  </version>
  <stability>
@@ -24,21 +24,28 @@ This package generates php class files (objects) from Dreamweaver template files
   <api>beta</api>
  </stability>
  <license uri="http://www1.unl.edu/wdn/wiki/Software_License">BSD</license>
- <notes>Scanner fix - do not replace newlines with spaces in scanned content</notes>
+ <notes>Feature Release:
+
+* Dreamweaver templates using params are now properly supported
+* Minor API changes
+** Add UNL_DWT::getTemplateFile() which is used during the rendering process
+
+</notes>
  <contents>
   <dir name="/">
-   <file role="php" name="src/UNL/DWT/Scanner.php" md5sum="80ab5854ed8c2ab159c53cd5adc757b2"/>
-   <file role="php" name="src/UNL/DWT/Region.php" md5sum="be81db10741075600fc87ebbc4c4ca53"/>
-   <file role="php" name="src/UNL/DWT/Generator.php" md5sum="aea406280cedf3a0e9b32ab7ee354b3f"/>
-   <file role="php" name="src/UNL/DWT/createTemplates.php" md5sum="8ccd77b7def177033c20128da938d1ff"/>
-   <file role="php" name="src/UNL/DWT.php" md5sum="c8b1f16f587798a1e37574477d2627bd"/>
-   <file role="doc" name="docs/examples/Template_style1.tpl" md5sum="b524ef4684be7dba47ed8c245577347a"/>
-   <file role="doc" name="docs/examples/Template_style1.php" md5sum="3f97c4a024dfed9210b14db5068ba7d0"/>
-   <file role="doc" name="docs/examples/template_style1.dwt" md5sum="0d5a4f5ca86e9c2a3c0050f39acbb034"/>
-   <file role="doc" name="docs/examples/scanner_example.php" md5sum="e29437d89b8193aede3fc400ef1f363d"/>
-   <file role="doc" name="docs/examples/example_style1.php" md5sum="8fc92f34a5d56e8664ae669bb39ba763"/>
-   <file role="doc" name="docs/examples/example.test.ini" md5sum="28a080af44b5db3f28c73fa91cdabe99"/>
-   <file role="doc" name="docs/examples/example.ini" md5sum="783c64aafb491c789fc71a5bf80d1755"/>
+   <file role="php" name="php/UNL/DWT/Scanner.php" md5sum="042fb529bbc104b3eb742e8946e0961e"/>
+   <file role="php" name="php/UNL/DWT/Region.php" md5sum="858136d43bf29868dca876783e51d196"/>
+   <file role="php" name="php/UNL/DWT/Generator.php" md5sum="a3b933a0d7f8d81f72836bb2c5fb6914"/>
+   <file role="php" name="php/UNL/DWT/Exception.php" md5sum="5b99b44fbfde7349c6b9e6d9be78e9dc"/>
+   <file role="php" name="php/UNL/DWT/createTemplates.php" md5sum="9089565d275b52e0cd65c52edd50ef18"/>
+   <file role="php" name="php/UNL/DWT.php" md5sum="0889c13bcecd0ebf5e517367345772f9"/>
+   <file role="doc" name="doc/pear.unl.edu/UNL_DWT/examples/scanner_example.php" md5sum="f0807792c3c0c4a0524f9186e69e0be7"/>
+   <file role="doc" name="doc/pear.unl.edu/UNL_DWT/examples/basic/Template_style1.tpl" md5sum="b524ef4684be7dba47ed8c245577347a"/>
+   <file role="doc" name="doc/pear.unl.edu/UNL_DWT/examples/basic/Template_style1.php" md5sum="096998b112a1e27bddc6c171380d590e"/>
+   <file role="doc" name="doc/pear.unl.edu/UNL_DWT/examples/basic/template_style1.dwt" md5sum="0d5a4f5ca86e9c2a3c0050f39acbb034"/>
+   <file role="doc" name="doc/pear.unl.edu/UNL_DWT/examples/basic/example_style1.php" md5sum="d3f43ac017b9bdf1819cf05a4c4a33a2"/>
+   <file role="doc" name="doc/pear.unl.edu/UNL_DWT/examples/basic/example.test.ini" md5sum="28a080af44b5db3f28c73fa91cdabe99"/>
+   <file role="doc" name="doc/pear.unl.edu/UNL_DWT/examples/basic/example.ini" md5sum="d5f99a1b621d226611d2fe93761db93d"/>
   </dir>
  </contents>
  <dependencies>
@@ -47,7 +54,7 @@ This package generates php class files (objects) from Dreamweaver template files
     <min>5.0.0</min>
    </php>
    <pearinstaller>
-    <min>1.4.3</min>
+    <min>2.0.0a1</min>
    </pearinstaller>
    <package>
     <name>UNL_Templates</name>
diff --git a/sites/all/themes/unl_wdn/lib/.xmlregistry/packages/pear.unl.edu/UNL_Templates/1.3.0RC2-info.xml b/sites/all/themes/unl_wdn/lib/.xmlregistry/packages/pear.unl.edu/UNL_Templates/1.3.0-info.xml
similarity index 95%
rename from sites/all/themes/unl_wdn/lib/.xmlregistry/packages/pear.unl.edu/UNL_Templates/1.3.0RC2-info.xml
rename to sites/all/themes/unl_wdn/lib/.xmlregistry/packages/pear.unl.edu/UNL_Templates/1.3.0-info.xml
index 99a7b359d6c85c93b6dc938c5c1b788eeabc2044..b9e761e3cbe9831d64a0e0c090bef80da540297b 100644
--- a/sites/all/themes/unl_wdn/lib/.xmlregistry/packages/pear.unl.edu/UNL_Templates/1.3.0RC2-info.xml
+++ b/sites/all/themes/unl_wdn/lib/.xmlregistry/packages/pear.unl.edu/UNL_Templates/1.3.0-info.xml
@@ -19,29 +19,37 @@ This package allows you to render UNL Template styled pages using PHP Objects.
   <email>nhummel2@math.unl.edu</email>
   <active>yes</active>
  </lead>
- <date>2012-04-23</date>
- <time>13:18:13</time>
+ <date>2012-10-02</date>
+ <time>11:50:32</time>
  <version>
-  <release>1.3.0RC2</release>
+  <release>1.3.0</release>
   <api>1.0.0</api>
  </version>
  <stability>
-  <release>beta</release>
+  <release>stable</release>
   <api>stable</api>
  </stability>
  <license uri="http://www1.unl.edu/wdn/wiki/Software_License">BSD License</license>
- <notes>New features:
+ <notes>Stable Release!
 
- - Add support for version 3.1 of the UNL Templates</notes>
+New features:
+
+* Add support for version 3.1 of the UNL Templates
+
+Changes since RC2:
+
+* Update template cache files with validation fixes
+* Reflect UNL_DWT API changes
+</notes>
  <contents>
   <dir name="/">
    <file role="test" name="test/pear.unl.edu/UNL_Templates/UNL_TemplatesTest.php" md5sum="12aa5989d1255dccc299a3dcdd6c6ba8"/>
-   <file role="php" name="php/UNL/Templates/Version3x1/Unlaffiliate_local.php" md5sum="9f3867901ad594901d11ffff07b36843"/>
-   <file role="php" name="php/UNL/Templates/Version3x1/Unlaffiliate_debug.php" md5sum="4e006ca79895e0f9676d0ac792d2376a"/>
-   <file role="php" name="php/UNL/Templates/Version3x1/Unlaffiliate.php" md5sum="d04b37bd1e8da510610b9ad66de26487"/>
-   <file role="php" name="php/UNL/Templates/Version3x1/Local.php" md5sum="bab0b09eabc5d2fe041c4379dfa0634c"/>
-   <file role="php" name="php/UNL/Templates/Version3x1/Fixed.php" md5sum="8800d08ea41dcd31b7f444924d0e96c6"/>
-   <file role="php" name="php/UNL/Templates/Version3x1/Debug.php" md5sum="53764519ccbb2cda9d35f77843d85a61"/>
+   <file role="php" name="php/UNL/Templates/Version3x1/Unlaffiliate_local.php" md5sum="e3f4b2b27e5cbbd81f3a434fdcd949d4"/>
+   <file role="php" name="php/UNL/Templates/Version3x1/Unlaffiliate_debug.php" md5sum="0e7a53d410d00748c53cb9036d43a178"/>
+   <file role="php" name="php/UNL/Templates/Version3x1/Unlaffiliate.php" md5sum="c9e2423f1508286947525968dddd56cb"/>
+   <file role="php" name="php/UNL/Templates/Version3x1/Local.php" md5sum="b18901fcb9b7d59f0de947f649e0cba7"/>
+   <file role="php" name="php/UNL/Templates/Version3x1/Fixed.php" md5sum="1cdda4bc708879eaeb6052aa50980820"/>
+   <file role="php" name="php/UNL/Templates/Version3x1/Debug.php" md5sum="880a7ec565da26995e7fa4b21163e1d3"/>
    <file role="php" name="php/UNL/Templates/Version3x1.php" md5sum="3db6efc4892a2b68869a27941673bb5a"/>
    <file role="php" name="php/UNL/Templates/Version3/Unlaffiliate.php" md5sum="40eeca840e02c9e5b2b2b7846bd73397"/>
    <file role="php" name="php/UNL/Templates/Version3/Shared_column_right.php" md5sum="f9b3c237b7a6b8500ef0d18f4e1c9595"/>
@@ -64,26 +72,26 @@ This package allows you to render UNL Template styled pages using PHP Objects.
    <file role="php" name="php/UNL/Templates/Version2/Liquid.php" md5sum="55c715aa91f18226f5be4c3f427b2dea"/>
    <file role="php" name="php/UNL/Templates/Version2/Fixed.php" md5sum="3fbccc1b6e7a0287577972b4c25a0d19"/>
    <file role="php" name="php/UNL/Templates/Version2/Document.php" md5sum="ef2068426bb8f73ac706b18a472df967"/>
-   <file role="php" name="php/UNL/Templates/Version2.php" md5sum="8472e8942eb062eb06568386c237f9c1"/>
+   <file role="php" name="php/UNL/Templates/Version2.php" md5sum="d8f5200292c4216e423fc7c5da502e44"/>
    <file role="php" name="php/UNL/Templates/Version.php" md5sum="c7df0501ec102431d7be6a6cfd133b5b"/>
    <file role="php" name="php/UNL/Templates/Scanner.php" md5sum="82740c1fadfd1160bb9c67006947ab3b"/>
    <file role="php" name="php/UNL/Templates/CachingService/UNLCacheLite.php" md5sum="4fa04418d0aa08834b4795caeae5b8c8"/>
    <file role="php" name="php/UNL/Templates/CachingService/Null.php" md5sum="47991f0e5cffed6d138725a3294f4e6a"/>
    <file role="php" name="php/UNL/Templates/CachingService/CacheLite.php" md5sum="5b09b184e7d59a2520e99c0b5c66428a"/>
    <file role="php" name="php/UNL/Templates/CachingService.php" md5sum="07884c3a9bf75657e54782423a088eb4"/>
-   <file role="php" name="php/UNL/Templates.php" md5sum="1f39ddc40f5a2b2ba0f68ca3367de923"/>
+   <file role="php" name="php/UNL/Templates.php" md5sum="6f844645177ff75a899210f3a29bfd04"/>
    <file role="doc" name="doc/pear.unl.edu/UNL_Templates/examples/scanner.php" md5sum="2b116cf09b8d73c439718217d83a32c2"/>
    <file role="doc" name="doc/pear.unl.edu/UNL_Templates/examples/example1.php" md5sum="c3de6bfef1cee16be4135f310e5e601d"/>
    <file role="doc" name="doc/pear.unl.edu/UNL_Templates/examples/customization/customization_example.php" md5sum="e9769bdf0cf9ec36430b3f70ec687037"/>
    <file role="doc" name="doc/pear.unl.edu/UNL_Templates/examples/customization/customization_example.html" md5sum="26c8d867af8ffd4d8d60e348573f9c3d"/>
    <file role="doc" name="doc/pear.unl.edu/UNL_Templates/examples/customization/CustomClass.php" md5sum="43bc783b2215f9668800ce2e80ad457b"/>
    <file role="doc" name="doc/pear.unl.edu/UNL_Templates/examples/convert.php" md5sum="a7114a3868d0ba54d4ff76b370ea3201"/>
-   <file role="data" name="data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Unlaffiliate_local.tpl" md5sum="8801aaa43aaca9d820728f665ed6e64d"/>
-   <file role="data" name="data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Unlaffiliate_debug.tpl" md5sum="6c2891e91facb216e7f4c13d5be3c339"/>
-   <file role="data" name="data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Unlaffiliate.tpl" md5sum="26907bf294eba52039c49cbde60b2693"/>
-   <file role="data" name="data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Local.tpl" md5sum="278f3cefa48d8aca1b6f316909ed3a50"/>
-   <file role="data" name="data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Fixed.tpl" md5sum="1e00218790ec2552d5b02e7a1e83c1fd"/>
-   <file role="data" name="data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Debug.tpl" md5sum="8074ddde1770dd571bd8c21917cf3607"/>
+   <file role="data" name="data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Unlaffiliate_local.tpl" md5sum="0802ccd854dfe1d6a3f0a22ad7ff09c4"/>
+   <file role="data" name="data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Unlaffiliate_debug.tpl" md5sum="241be8cc9780847dece60b54358de9a3"/>
+   <file role="data" name="data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Unlaffiliate.tpl" md5sum="5b30670bdbd48ecf9eaa9d6f505693f2"/>
+   <file role="data" name="data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Local.tpl" md5sum="4eef418e9e527224b9347e635e95dfba"/>
+   <file role="data" name="data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Fixed.tpl" md5sum="a2151b63d3861496e785f4b10f3b44be"/>
+   <file role="data" name="data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Debug.tpl" md5sum="037f834d2e9cd17856d83a6fbd0465dc"/>
    <file role="data" name="data/pear.unl.edu/UNL_Templates/tpl_cache/Version3/Unlaffiliate.tpl" md5sum="6644923a681f49bfd425f5768d01e4a3"/>
    <file role="data" name="data/pear.unl.edu/UNL_Templates/tpl_cache/Version3/Shared_column_right.tpl" md5sum="84cc265b12115d9c2733a6d03f5a4d85"/>
    <file role="data" name="data/pear.unl.edu/UNL_Templates/tpl_cache/Version3/Shared_column_left.tpl" md5sum="6003b105b79241b8e001d0f375265747"/>
@@ -118,7 +126,7 @@ This package allows you to render UNL Template styled pages using PHP Objects.
    <package>
     <name>UNL_DWT</name>
     <channel>pear.unl.edu</channel>
-    <min>0.7.1</min>
+    <min>0.8.0</min>
    </package>
   </required>
   <optional>
diff --git a/sites/all/themes/unl_wdn/lib/data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Debug.tpl b/sites/all/themes/unl_wdn/lib/data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Debug.tpl
index 5427bfa87ed24b06434c2c0b983ae783d824cfff..ca90ca65ffd630c6c6a683b300dd97490b61668c 100644
--- a/sites/all/themes/unl_wdn/lib/data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Debug.tpl
+++ b/sites/all/themes/unl_wdn/lib/data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Debug.tpl
@@ -1,9 +1,9 @@
 <!DOCTYPE html>
-<!--[if IEMobile 7 ]><html class="ie iem7"><!-- InstanceBegin template="/Templates/debug.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"><!-- InstanceBegin template="/Templates/debug.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"><!-- InstanceBegin template="/Templates/debug.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"><!-- InstanceBegin template="/Templates/debug.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
-<!--[if (gte IE 9)|(gt IEMobile 7) ]><html class="ie" lang="en"><!-- InstanceBegin template="/Templates/debug.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
+<!--[if IEMobile 7 ]><html class="ie iem7"><![endif]-->
+<!--[if lt IE 7 ]><html class="ie ie6" lang="en"><![endif]-->
+<!--[if IE 7 ]><html class="ie ie7" lang="en"><![endif]-->
+<!--[if IE 8 ]><html class="ie ie8" lang="en"><![endif]-->
+<!--[if (gte IE 9)|(gt IEMobile 7) ]><html class="ie" lang="en"><![endif]-->
 <!--[if !(IEMobile) | !(IE)]><!--><html lang="en"><!-- InstanceBegin template="/Templates/debug.dwt" codeOutsideHTMLIsLocked="false" --><!--<![endif]-->
 <head>
 <!--#include virtual="/wdn/templates_3.1/includes/metanfavico.html" -->
@@ -30,7 +30,7 @@
 <!-- Place optional header elements here -->
 
 <!-- InstanceEndEditable -->
-<!-- TemplateParam name="class" type="text" value="fixed debug" -->
+<!-- InstanceParam name="class" type="text" value="fixed debug" -->
 </head>
 <body class="@@(_document['class'])@@" data-version="3.1">
     <nav class="skipnav">
diff --git a/sites/all/themes/unl_wdn/lib/data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Fixed.tpl b/sites/all/themes/unl_wdn/lib/data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Fixed.tpl
index 2ab5dd2792ca321bfcfa2413ea1150aea1e48f61..5c1a3daf5b20c6dc9a4dfa8a0920362b370a7eb6 100644
--- a/sites/all/themes/unl_wdn/lib/data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Fixed.tpl
+++ b/sites/all/themes/unl_wdn/lib/data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Fixed.tpl
@@ -1,9 +1,9 @@
 <!DOCTYPE html>
-<!--[if IEMobile 7 ]><html class="ie iem7"><!-- InstanceBegin template="/Templates/fixed.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"><!-- InstanceBegin template="/Templates/fixed.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"><!-- InstanceBegin template="/Templates/fixed.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"><!-- InstanceBegin template="/Templates/fixed.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
-<!--[if (gte IE 9)|(gt IEMobile 7) ]><html class="ie" lang="en"><!-- InstanceBegin template="/Templates/fixed.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
+<!--[if IEMobile 7 ]><html class="ie iem7"><![endif]-->
+<!--[if lt IE 7 ]><html class="ie ie6" lang="en"><![endif]-->
+<!--[if IE 7 ]><html class="ie ie7" lang="en"><![endif]-->
+<!--[if IE 8 ]><html class="ie ie8" lang="en"><![endif]-->
+<!--[if (gte IE 9)|(gt IEMobile 7) ]><html class="ie" lang="en"><![endif]-->
 <!--[if !(IEMobile) | !(IE)]><!--><html lang="en"><!-- InstanceBegin template="/Templates/fixed.dwt" codeOutsideHTMLIsLocked="false" --><!--<![endif]-->
 <head>
 <!--#include virtual="/wdn/templates_3.1/includes/metanfavico.html" -->
@@ -30,7 +30,7 @@
 <!-- Place optional header elements here -->
 
 <!-- InstanceEndEditable -->
-<!-- TemplateParam name="class" type="text" value="fixed" -->
+<!-- InstanceParam name="class" type="text" value="fixed" -->
 </head>
 <body class="@@(_document['class'])@@" data-version="3.1">
     <nav class="skipnav">
diff --git a/sites/all/themes/unl_wdn/lib/data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Local.tpl b/sites/all/themes/unl_wdn/lib/data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Local.tpl
index 2bd3f2525ae9b07ff75b113cf2f9207c5321a7a6..22fd3f28df7eaada632ea1c7bed6c53662347144 100644
--- a/sites/all/themes/unl_wdn/lib/data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Local.tpl
+++ b/sites/all/themes/unl_wdn/lib/data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Local.tpl
@@ -1,9 +1,9 @@
 <!DOCTYPE html>
-<!--[if IEMobile 7 ]><html class="ie iem7"><!-- InstanceBegin template="/Templates/local.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"><!-- InstanceBegin template="/Templates/local.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"><!-- InstanceBegin template="/Templates/local.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"><!-- InstanceBegin template="/Templates/local.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
-<!--[if (gte IE 9)|(gt IEMobile 7) ]><html class="ie" lang="en"><!-- InstanceBegin template="/Templates/local.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
+<!--[if IEMobile 7 ]><html class="ie iem7"><![endif]-->
+<!--[if lt IE 7 ]><html class="ie ie6" lang="en"><![endif]-->
+<!--[if IE 7 ]><html class="ie ie7" lang="en"><![endif]-->
+<!--[if IE 8 ]><html class="ie ie8" lang="en"><![endif]-->
+<!--[if (gte IE 9)|(gt IEMobile 7) ]><html class="ie" lang="en"><![endif]-->
 <!--[if !(IEMobile) | !(IE)]><!--><html lang="en"><!-- InstanceBegin template="/Templates/local.dwt" codeOutsideHTMLIsLocked="false" --><!--<![endif]-->
 <head>
 <!--#include virtual="/wdn/templates_3.1/includes/metanfavico.html" -->
@@ -30,7 +30,7 @@
 <!-- Place optional header elements here -->
 
 <!-- InstanceEndEditable -->
-<!-- TemplateParam name="class" type="text" value="fixed" -->
+<!-- InstanceParam name="class" type="text" value="fixed" -->
 </head>
 <body class="@@(_document['class'])@@" data-version="3.1">
     <nav class="skipnav">
diff --git a/sites/all/themes/unl_wdn/lib/data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Unlaffiliate.tpl b/sites/all/themes/unl_wdn/lib/data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Unlaffiliate.tpl
index e17a0b841a4eb7180ca46dd17999816a71ada354..ed7156d81c2d5cbe5174c867ff1a234f02bf8a62 100644
--- a/sites/all/themes/unl_wdn/lib/data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Unlaffiliate.tpl
+++ b/sites/all/themes/unl_wdn/lib/data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Unlaffiliate.tpl
@@ -1,9 +1,9 @@
 <!DOCTYPE html>
-<!--[if IEMobile 7 ]><html class="ie iem7"><!-- InstanceBegin template="/Templates/unlaffiliate.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"><!-- InstanceBegin template="/Templates/unlaffiliate.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"><!-- InstanceBegin template="/Templates/unlaffiliate.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"><!-- InstanceBegin template="/Templates/unlaffiliate.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
-<!--[if (gte IE 9)|(gt IEMobile 7) ]><html class="ie" lang="en"><!-- InstanceBegin template="/Templates/unlaffiliate.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
+<!--[if IEMobile 7 ]><html class="ie iem7"><![endif]-->
+<!--[if lt IE 7 ]><html class="ie ie6" lang="en"><![endif]-->
+<!--[if IE 7 ]><html class="ie ie7" lang="en"><![endif]-->
+<!--[if IE 8 ]><html class="ie ie8" lang="en"><![endif]-->
+<!--[if (gte IE 9)|(gt IEMobile 7) ]><html class="ie" lang="en"><![endif]-->
 <!--[if !(IEMobile) | !(IE)]><!--><html lang="en"><!-- InstanceBegin template="/Templates/unlaffiliate.dwt" codeOutsideHTMLIsLocked="false" --><!--<![endif]-->
 <head>
 <!--#include virtual="/wdn/templates_3.1/includes/metanfavico.html" -->
@@ -31,7 +31,7 @@
 <link rel="stylesheet" type="text/css" media="screen" href="../sharedcode/affiliate.css" />
 <link href="../sharedcode/affiliate_imgs/favicon.ico" rel="shortcut icon" />
 <!-- InstanceEndEditable -->
-<!-- TemplateParam name="class" type="text" value="fixed" -->
+<!-- InstanceParam name="class" type="text" value="fixed" -->
 </head>
 <body class="@@(_document['class'])@@" data-version="3.1">
     <nav class="skipnav">
diff --git a/sites/all/themes/unl_wdn/lib/data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Unlaffiliate_debug.tpl b/sites/all/themes/unl_wdn/lib/data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Unlaffiliate_debug.tpl
index e09fc843aa01c2fa4c3b5aa9fb6fbca4d8a130c1..112032443e093c022962c69544ac457cafc6b4fe 100644
--- a/sites/all/themes/unl_wdn/lib/data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Unlaffiliate_debug.tpl
+++ b/sites/all/themes/unl_wdn/lib/data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Unlaffiliate_debug.tpl
@@ -1,9 +1,9 @@
 <!DOCTYPE html>
-<!--[if IEMobile 7 ]><html class="ie iem7"><!-- InstanceBegin template="/Templates/unlaffiliate_debug.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"><!-- InstanceBegin template="/Templates/unlaffiliate_debug.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"><!-- InstanceBegin template="/Templates/unlaffiliate_debug.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"><!-- InstanceBegin template="/Templates/unlaffiliate_debug.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
-<!--[if (gte IE 9)|(gt IEMobile 7) ]><html class="ie" lang="en"><!-- InstanceBegin template="/Templates/unlaffiliate_debug.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
+<!--[if IEMobile 7 ]><html class="ie iem7"><![endif]-->
+<!--[if lt IE 7 ]><html class="ie ie6" lang="en"><![endif]-->
+<!--[if IE 7 ]><html class="ie ie7" lang="en"><![endif]-->
+<!--[if IE 8 ]><html class="ie ie8" lang="en"><![endif]-->
+<!--[if (gte IE 9)|(gt IEMobile 7) ]><html class="ie" lang="en"><![endif]-->
 <!--[if !(IEMobile) | !(IE)]><!--><html lang="en"><!-- InstanceBegin template="/Templates/unlaffiliate_debug.dwt" codeOutsideHTMLIsLocked="false" --><!--<![endif]-->
 <head>
 <!--#include virtual="/wdn/templates_3.1/includes/metanfavico.html" -->
@@ -31,7 +31,7 @@
 <link rel="stylesheet" type="text/css" media="screen" href="../sharedcode/affiliate.css" />
 <link href="../sharedcode/affiliate_imgs/favicon.ico" rel="shortcut icon" />
 <!-- InstanceEndEditable -->
-<!-- TemplateParam name="class" type="text" value="fixed debug" -->
+<!-- InstanceParam name="class" type="text" value="fixed debug" -->
 </head>
 <body class="@@(_document['class'])@@" data-version="3.1">
     <nav class="skipnav">
diff --git a/sites/all/themes/unl_wdn/lib/data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Unlaffiliate_local.tpl b/sites/all/themes/unl_wdn/lib/data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Unlaffiliate_local.tpl
index 865cee1f2020efac54b8aa65417fed32337f24da..09e83982249ffd96b9dc83474babaa3a0c567e72 100644
--- a/sites/all/themes/unl_wdn/lib/data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Unlaffiliate_local.tpl
+++ b/sites/all/themes/unl_wdn/lib/data/pear.unl.edu/UNL_Templates/tpl_cache/Version3x1/Unlaffiliate_local.tpl
@@ -1,9 +1,9 @@
 <!DOCTYPE html>
-<!--[if IEMobile 7 ]><html class="ie iem7"><!-- InstanceBegin template="/Templates/unlaffiliate_local.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
-<!--[if lt IE 7 ]><html class="ie ie6" lang="en"><!-- InstanceBegin template="/Templates/unlaffiliate_local.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
-<!--[if IE 7 ]><html class="ie ie7" lang="en"><!-- InstanceBegin template="/Templates/unlaffiliate_local.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
-<!--[if IE 8 ]><html class="ie ie8" lang="en"><!-- InstanceBegin template="/Templates/unlaffiliate_local.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
-<!--[if (gte IE 9)|(gt IEMobile 7) ]><html class="ie" lang="en"><!-- InstanceBegin template="/Templates/unlaffiliate_local.dwt" codeOutsideHTMLIsLocked="false" --><![endif]-->
+<!--[if IEMobile 7 ]><html class="ie iem7"><![endif]-->
+<!--[if lt IE 7 ]><html class="ie ie6" lang="en"><![endif]-->
+<!--[if IE 7 ]><html class="ie ie7" lang="en"><![endif]-->
+<!--[if IE 8 ]><html class="ie ie8" lang="en"><![endif]-->
+<!--[if (gte IE 9)|(gt IEMobile 7) ]><html class="ie" lang="en"><![endif]-->
 <!--[if !(IEMobile) | !(IE)]><!--><html lang="en"><!-- InstanceBegin template="/Templates/unlaffiliate_local.dwt" codeOutsideHTMLIsLocked="false" --><!--<![endif]-->
 <head>
 <!--#include virtual="/wdn/templates_3.1/includes/metanfavico.html" -->
@@ -31,7 +31,7 @@
 <link rel="stylesheet" type="text/css" media="screen" href="../sharedcode/affiliate.css" />
 <link href="../sharedcode/affiliate_imgs/favicon.ico" rel="shortcut icon" />
 <!-- InstanceEndEditable -->
-<!-- TemplateParam name="class" type="text" value="fixed" -->
+<!-- InstanceParam name="class" type="text" value="fixed" -->
 </head>
 <body class="@@(_document['class'])@@" data-version="3.1">
     <nav class="skipnav">
diff --git a/sites/all/themes/unl_wdn/lib/docs/pear.unl.edu/UNL_DWT/examples/basic/Template_style1.php b/sites/all/themes/unl_wdn/lib/docs/pear.unl.edu/UNL_DWT/examples/basic/Template_style1.php
new file mode 100644
index 0000000000000000000000000000000000000000..539fb44c98acddb65482a39a24383eba3a2de80f
--- /dev/null
+++ b/sites/all/themes/unl_wdn/lib/docs/pear.unl.edu/UNL_DWT/examples/basic/Template_style1.php
@@ -0,0 +1,28 @@
+<?php
+/**
+ * Template Definition for template_style1.dwt
+ */
+require_once 'UNL/DWT.php';
+
+class UNL_DWT_Template_style1 extends UNL_DWT 
+{
+    ###START_AUTOCODE
+    /* the code below is auto generated do not remove the above tag */
+
+    public $__template = 'Template_style1.tpl';             // template name
+    public $doctitle = "<title>Sample Template Style 1</title>";                       // string()  
+    public $head = "";                           // string()  
+    public $header = "Header";                         // string()  
+    public $leftnav = "<p> Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut. </p>";                        // string()  
+    public $content = "<h2>Subheading</h2> <p> Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. </p> <p> Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. </p>";                        // string()  
+    public $footer = "Footer";                         // string()  
+
+    public $__params = array (
+);
+
+    /* Static get */
+    function staticGet($k,$v=NULL) { return UNL_DWT::staticGet('UNL_DWT_Template_style1',$k,$v); }
+
+    /* the code above is auto generated do not remove the tag below */
+    ###END_AUTOCODE
+}
diff --git a/sites/all/themes/unl_wdn/lib/docs/pear.unl.edu/UNL_DWT/examples/basic/Template_style1.tpl b/sites/all/themes/unl_wdn/lib/docs/pear.unl.edu/UNL_DWT/examples/basic/Template_style1.tpl
new file mode 100644
index 0000000000000000000000000000000000000000..bd63d0408c2fdc1289ca180fdf4a09a0b64c069b
--- /dev/null
+++ b/sites/all/themes/unl_wdn/lib/docs/pear.unl.edu/UNL_DWT/examples/basic/Template_style1.tpl
@@ -0,0 +1,86 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/template_style1.dwt" codeOutsideHTMLIsLocked="false" -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<!-- InstanceBeginEditable name="doctitle" -->
+<title>Sample Template Style 1</title>
+<!-- InstanceEndEditable -->
+<style type="text/css">
+#container
+{
+width: 90%;
+margin: 10px auto;
+background-color: #fff;
+color: #333;
+border: 1px solid gray;
+line-height: 130%;
+}
+#top
+{
+padding: .5em;
+background-color: #ddd;
+border-bottom: 1px solid gray;
+}
+#top h1
+{
+padding: 0;
+margin: 0;
+}
+#leftnav
+{
+float: left;
+width: 160px;
+margin: 0;
+padding: 1em;
+}
+#content
+{
+margin-left: 200px;
+border-left: 1px solid gray;
+padding: 1em;
+max-width: 36em;
+}
+#footer
+{
+clear: both;
+margin: 0;
+padding: .5em;
+color: #333;
+background-color: #ddd;
+border-top: 1px solid gray;
+}
+#leftnav p { margin: 0 0 1em 0; }
+#content h2 { margin: 0 0 .5em 0; }
+</style>
+<!-- InstanceBeginEditable name="head" -->
+<!-- InstanceEndEditable -->
+</head>
+<body>
+<div id="container">
+<div id="top">
+<h1>
+<!-- InstanceBeginEditable name="header" -->
+Header
+<!-- InstanceEndEditable -->
+</h1>
+</div>
+<div id="leftnav">
+<!-- InstanceBeginEditable name="leftnav" -->
+    <p> Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut. </p>
+<!-- InstanceEndEditable -->
+</div>
+<div id="content">
+<!-- InstanceBeginEditable name="content" -->
+    <h2>Subheading</h2>
+    <p> Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. </p>
+    <p> Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. </p>
+<!-- InstanceEndEditable -->
+</div>
+<div id="footer">
+<!-- InstanceBeginEditable name="footer" -->
+Footer
+<!-- InstanceEndEditable -->
+</div>
+</div>
+</body>
+</html>
diff --git a/sites/all/themes/unl_wdn/lib/docs/pear.unl.edu/UNL_DWT/examples/basic/example.ini b/sites/all/themes/unl_wdn/lib/docs/pear.unl.edu/UNL_DWT/examples/basic/example.ini
new file mode 100644
index 0000000000000000000000000000000000000000..7c1426b6362ac73fbf4fd9e084c6022bd378308d
--- /dev/null
+++ b/sites/all/themes/unl_wdn/lib/docs/pear.unl.edu/UNL_DWT/examples/basic/example.ini
@@ -0,0 +1,5 @@
+[UNL_DWT]
+dwt_location    = @DOC_DIR@/UNL_DWT/docs/examples/basic
+class_location  = @DOC_DIR@/UNL_DWT/docs/examples/basic
+tpl_location	= @DOC_DIR@/UNL_DWT/docs/examples/basic
+class_prefix    = UNL_DWT_
diff --git a/sites/all/themes/unl_wdn/lib/docs/pear.unl.edu/UNL_DWT/examples/basic/example.test.ini b/sites/all/themes/unl_wdn/lib/docs/pear.unl.edu/UNL_DWT/examples/basic/example.test.ini
new file mode 100644
index 0000000000000000000000000000000000000000..6f24a0b77b8e13197c9649c42aa2139a647de3fc
--- /dev/null
+++ b/sites/all/themes/unl_wdn/lib/docs/pear.unl.edu/UNL_DWT/examples/basic/example.test.ini
@@ -0,0 +1,5 @@
+[UNL_DWT]
+dwt_location    = ./
+class_location  = ./
+tpl_location	= ./
+class_prefix    = UNL_DWT_
\ No newline at end of file
diff --git a/sites/all/themes/unl_wdn/lib/docs/pear.unl.edu/UNL_DWT/examples/basic/example_style1.php b/sites/all/themes/unl_wdn/lib/docs/pear.unl.edu/UNL_DWT/examples/basic/example_style1.php
new file mode 100644
index 0000000000000000000000000000000000000000..30f50bc36d93c19b73962d666abeab6c78b0e1dc
--- /dev/null
+++ b/sites/all/themes/unl_wdn/lib/docs/pear.unl.edu/UNL_DWT/examples/basic/example_style1.php
@@ -0,0 +1,30 @@
+<?php
+/**
+ * This example uses the DWT object generated by: '@PHP_BIN@ @PHP_DIR@/UNL/DWT/createTemplates.php @DOC_DIR@/UNL_DWT/docs/examples/basic/example.ini'
+ *
+ */
+ini_set('display_errors',true);
+error_reporting(E_ALL|E_STRICT);
+
+set_include_path(dirname(__DIR__).'/../../src');
+
+require_once 'UNL/DWT.php';
+if ('@DATA_DIR@' == '@'.'DATA_DIR@') {
+    $configfile = 'example.test.ini';
+} else {
+    $configfile = '@DOC_DIR@/UNL_DWT/docs/examples/example.ini';
+}
+$config = parse_ini_file($configfile, true);
+foreach($config as $class=>$values) {
+   UNL_DWT::$options = $values;
+}
+$page = UNL_DWT::factory('Template_style1');
+$page->header  = "Example Using Template Style 1";
+$page->leftnav = "<ul><li><a href='http://pear.unl.edu/'>UNL PEAR Channel</a></li></ul>";
+$page->content = "<p>This example demonstrates the usefulness of the DWT object generator for Dreamweaver Templates.</p>";
+$page->content .= "<p>Included with the DWT package is a Dreamweaver template with 4 editable regions [template_style1.dwt]. This page is rendered using the DWT class created from that template.</p>";
+$page->content .= "<p>To create classes for your Templates, create a .ini file with the location of your Dreamweaver templates (dwt's) and then run the createTemplates.php script to generate objects for each of your template files.</p>";
+$page->content .= "<p>Here is the ini file used to create the Template_style1:<pre><code>".file_get_contents($configfile)."</code></pre></p>";
+$page->content .= "<p>And the command used to create the template classes:<pre><code>@PHP_BIN@ @PHP_DIR@/UNL/DWT/createTemplates.php @DOC_DIR@/UNL_DWT/docs/examples/example.ini</code></pre></p>";
+$page->footer  = "<a href='mailto:brett.bieber@gmail.com'>Brett Bieber</a>";
+echo $page->toHtml();
diff --git a/sites/all/themes/unl_wdn/lib/docs/pear.unl.edu/UNL_DWT/examples/basic/template_style1.dwt b/sites/all/themes/unl_wdn/lib/docs/pear.unl.edu/UNL_DWT/examples/basic/template_style1.dwt
new file mode 100644
index 0000000000000000000000000000000000000000..f22ce6abf12031903536a83ed335547cd9044b28
--- /dev/null
+++ b/sites/all/themes/unl_wdn/lib/docs/pear.unl.edu/UNL_DWT/examples/basic/template_style1.dwt
@@ -0,0 +1,80 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<!-- TemplateBeginEditable name="doctitle" -->
+<title>Sample Template Style 1</title>
+<!-- TemplateEndEditable -->
+<style type="text/css">
+#container
+{
+width: 90%;
+margin: 10px auto;
+background-color: #fff;
+color: #333;
+border: 1px solid gray;
+line-height: 130%;
+}
+
+#top
+{
+padding: .5em;
+background-color: #ddd;
+border-bottom: 1px solid gray;
+}
+
+#top h1
+{
+padding: 0;
+margin: 0;
+}
+
+#leftnav
+{
+float: left;
+width: 160px;
+margin: 0;
+padding: 1em;
+}
+
+#content
+{
+margin-left: 200px;
+border-left: 1px solid gray;
+padding: 1em;
+max-width: 36em;
+}
+
+#footer
+{
+clear: both;
+margin: 0;
+padding: .5em;
+color: #333;
+background-color: #ddd;
+border-top: 1px solid gray;
+}
+
+#leftnav p { margin: 0 0 1em 0; }
+#content h2 { margin: 0 0 .5em 0; }
+</style>
+<!-- TemplateBeginEditable name="head" --><!-- TemplateEndEditable -->
+</head>
+
+<body>
+<div id="container">
+<div id="top">
+<h1><!-- TemplateBeginEditable name="header" -->Header<!-- TemplateEndEditable --></h1>
+</div>
+<div id="leftnav"><!-- TemplateBeginEditable name="leftnav" -->
+    <p> Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut. </p>
+<!-- TemplateEndEditable --></div>
+<div id="content"><!-- TemplateBeginEditable name="content" -->
+    <h2>Subheading</h2>
+    <p> Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. </p>
+    <p> Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. </p>
+<!-- TemplateEndEditable --></div>
+<div id="footer"><!-- TemplateBeginEditable name="footer" -->Footer<!-- TemplateEndEditable --></div>
+</div>
+</body>
+</html>
diff --git a/sites/all/themes/unl_wdn/lib/docs/pear.unl.edu/UNL_DWT/examples/scanner_example.php b/sites/all/themes/unl_wdn/lib/docs/pear.unl.edu/UNL_DWT/examples/scanner_example.php
index 52d9629a66e5a7c0988f73631b5920833e8e833f..05d117dd0d28ebdaf0a65867d8bdf24e6213fa92 100644
--- a/sites/all/themes/unl_wdn/lib/docs/pear.unl.edu/UNL_DWT/examples/scanner_example.php
+++ b/sites/all/themes/unl_wdn/lib/docs/pear.unl.edu/UNL_DWT/examples/scanner_example.php
@@ -4,11 +4,9 @@ set_include_path(dirname(__DIR__).'/../src');
 
 require_once 'UNL/DWT/Scanner.php';
 
-$file = file_get_contents(dirname(__FILE__).'/'.'template_style1.dwt');
+$file = file_get_contents(dirname(__FILE__).'/basic/'.'template_style1.dwt');
 
 $scanned = new UNL_DWT_Scanner($file);
 
 echo $scanned->leftnav;
 echo $scanned->content;
-
-?>
\ No newline at end of file
diff --git a/sites/all/themes/unl_wdn/lib/php/UNL/DWT.php b/sites/all/themes/unl_wdn/lib/php/UNL/DWT.php
index 43aac0a311532abae9bb8f3e81cd18d4ea71e70a..3e7bc3479847741f476ad94dddde4ab6ac573f38 100644
--- a/sites/all/themes/unl_wdn/lib/php/UNL/DWT.php
+++ b/sites/all/themes/unl_wdn/lib/php/UNL/DWT.php
@@ -1,28 +1,28 @@
 <?php
 /**
- * This package is intended to create PHP Class files (Objects) from 
+ * This package is intended to create PHP Class files (Objects) from
  * Dreamweaver template (.dwt) files. It allows designers to create a
  * standalone Dreamweaver template for the website design, and developers
  * to use that design in php pages without interference.
  *
- * Similar to the way DB_DataObject works, the DWT package uses a 
- * Generator to scan a .dwt file for editable regions and creates an 
+ * Similar to the way DB_DataObject works, the DWT package uses a
+ * Generator to scan a .dwt file for editable regions and creates an
  * appropriately named class for that .dwt file with member variables for
  * each region.
  *
- * Once the objects have been generated, you can render a html page from 
+ * Once the objects have been generated, you can render a html page from
  * the template.
- * 
+ *
  * $page = new UNL_DWT::factory('Template_style1');
  * $page->pagetitle = "Contact Information";
  * $page->maincontent = "Contact us by telephone at 111-222-3333.";
  * echo $page->toHtml();
  *
- * Parts of this package are modeled on (borrowed from) the PEAR package 
+ * Parts of this package are modeled on (borrowed from) the PEAR package
  * DB_DataObject.
- * 
+ *
  * PHP version 5
- * 
+ *
  * @category  Templates
  * @package   UNL_DWT
  * @author    Brett Bieber <brett.bieber@gmail.com>
@@ -34,7 +34,7 @@
 
 /**
  * Base class which understands Dreamweaver Templates.
- * 
+ *
  * @category  Templates
  * @package   UNL_DWT
  * @author    Brett Bieber <brett.bieber@gmail.com>
@@ -45,9 +45,18 @@
  */
 class UNL_DWT
 {
-    
+    const TEMPLATE_TOKEN = 'Template';
+    const INSTANCE_TOKEN = 'Instance';
+
+    const REGION_BEGIN_TOKEN = '<!-- %sBeginEditable name="%s" -->';
+    const REGION_END_TOKEN   = '<!-- %sEndEditable -->';
+
+    const PARAM_DEF_TOKEN         = '<!-- %sParam name="%s" type="%s" value="%s" -->';
+    const PARAM_REPLACE_TOKEN     = '@@(%s)@@';
+    const PARAM_REPLACE_TOKEN_ALT = '@@(_document[\'%s\'])@@';
+
     public $__template;
-    
+
     /**
      * Run-time configuration options
      *
@@ -57,125 +66,172 @@ class UNL_DWT
     static public $options = array(
         'debug' => 0,
     );
-    
+
     /**
-     * Constructor
+     * Returns a string that contains the template file.
+     *
+     * @return string
      */
-    function __construct()
+    public function getTemplateFile()
     {
-        
+        if (!isset($this->__template) || empty(self::$options['tpl_location'])) {
+            return '';
+        }
+
+        return file_get_contents(self::$options['tpl_location'].$this->__template);
     }
-    
+
     /**
      * Returns the given DWT with all regions replaced with their assigned
      * content.
-     * 
+     *
      * @return string
      */
     public function toHtml()
     {
-        $options = &UNL_DWT::$options;
-        if (!isset($this->__template)) {
-            return '';
-        }
-        /*
-        More Options for this method:
-            Extend this to automatically generate the .tpl files and cache.
-            Check for a cached copy of the template file.
-            Connect to a template server and get the latest template copy.
-            
-            Ex: $p = file_get_contents("http://pear.unl.edu/UNL/Templates/server.php?template=".$this->__template);
-        */
-        $p = file_get_contents($options['tpl_location'].$this->__template);
-        
+        $p = $this->getTemplateFile();
         $regions = get_object_vars($this);
-        return $this->replaceRegions($p, $regions);
+
+        unset($regions['__template']);
+
+        $params = array();
+        if (isset($regions['__params'])) {
+            $params = $regions['__params'];
+            unset($regions['__params']);
+        }
+
+        $p = $this->replaceRegions($p, $regions);
+        $p = $this->replaceParams($p, $params);
+
+        return $p;
     }
-    
+
+    public function getRegionBeginMarker($type, $region)
+    {
+        return sprintf(self::REGION_BEGIN_TOKEN, $type, $region);
+    }
+
+    public function getRegionEndMarker($type)
+    {
+        return sprintf(self::REGION_END_TOKEN, $type);
+    }
+
+    public function getParamDefMarker($type, $name, $paramType, $value)
+    {
+        return sprintf(self::PARAM_DEF_TOKEN, $type, $name, $paramType, $value);
+    }
+
+    public function getParamReplacePattern($name)
+    {
+        return '/' . sprintf(self::PARAM_DEF_TOKEN, '(' . self::TEMPLATE_TOKEN . '|' . self::INSTANCE_TOKEN . ')',
+            $name, '([^"]*)', '[^"]*') . '/';
+    }
+
+    public function getParamNeedle($name)
+    {
+        return array(
+            sprintf(self::PARAM_REPLACE_TOKEN, $name),
+            sprintf(self::PARAM_REPLACE_TOKEN_ALT, $name)
+        );
+    }
+
     /**
-    * Replaces region tags within a template file wth their contents.
-    * 
-    * @param string $p       Page with DW Region tags.
-    * @param array  $regions Associative array with content to replace.
-    * 
-    * @return string page with replaced regions
-    */
+     * Replaces region tags within a template file wth their contents.
+     *
+     * @param string $p       Page with DW Region tags.
+     * @param array  $regions Associative array with content to replace.
+     *
+     * @return string page with replaced regions
+     */
     function replaceRegions($p, $regions)
     {
-        UNL_DWT::debug('Replacing regions.', 'replaceRegions', 5);
-        foreach ($regions as $region=>$value) {
+        self::debug('Replacing regions.', 'replaceRegions', 5);
+
+        foreach ($regions as $region => $value) {
             /* Replace the region with the replacement text */
-            if (strpos($p, "<!--"." TemplateBeginEditable name=\"{$region}\" -->")) {
-                $p = str_replace(UNL_DWT_between("<!--"." TemplateBeginEditable name=\"{$region}\" -->",
-                                    "<!--"." TemplateEndEditable -->", $p),
-                    $value, $p);
-                UNL_DWT::debug("$region is replaced with $value.",
-                               'replaceRegions', 5);
-            } elseif (strpos($p, "<!--"." InstanceBeginEditable name=\"{$region}\" -->")) {
-                $p = str_replace("<!--"." InstanceBeginEditable name=\"{$region}\" -->".
-                                    UNL_DWT_between("<!--"." InstanceBeginEditable name=\"{$region}\" -->", "<!--"." InstanceEndEditable -->", $p).
-                                    "<!--"." InstanceEndEditable -->", "<!--"." InstanceBeginEditable name=\"{$region}\" -->".$value."<!--"." InstanceEndEditable -->", $p);
-                UNL_DWT::debug("$region is replaced with $value.", 'replaceRegions', 5);
+            $p = str_replace(
+                self::strBetween($this->getRegionBeginMarker(self::TEMPLATE_TOKEN, $region),
+                    $this->getRegionEndMarker(self::TEMPLATE_TOKEN), $p),
+                $value, $p, $count
+            );
+
+            if (!$count) {
+                $p = str_replace(
+                    self::strBetween($this->getRegionBeginMarker(self::INSTANCE_TOKEN, $region),
+                        $this->getRegionEndMarker(self::INSTANCE_TOKEN), $p),
+                    $value, $p, $count
+                );
+            }
+
+            if (!$count) {
+                self::debug("Counld not find region $region!", 'replaceRegions', 3);
             } else {
-                UNL_DWT::debug("Could not find region $region!", 'replaceRegions', 3);
-            }    
+                self::debug("$region is replaced with $value.", 'replaceRegions', 5);
+            }
         }
         return $p;
     }
-    
-    
-    /**
-    * Create a new UNL_DWT object for the specified layout type
-    *
-    * @param string $type     the template type (eg "fixed")
-    * @param array  $coptions an associative array of option names and values
-    *
-    * @return object  a new UNL_DWT.  A UNL_DWT_Error object on failure.
-    *
-    * @see UNL_DWT::setOption()
-    */
-    static function &factory($type, $coptions = false)
+
+    function replaceParams($p, $params)
     {
-        $options =& UNL_DWT::$options;
-        
-        include_once $options['class_location']."{$type}.php";
-        
-        if (!is_array($coptions)) {
-            $coptions = array();
+        self::debug('Replacing params.', 'replaceRegions', 5);
+
+        foreach ($params as $name => $config) {
+            $value = isset($config['value']) ? $config['value'] : '';
+            $p = preg_replace($this->getParamReplacePattern($name), $this->getParamDefMarker('$1', $name, '$2', $value),
+                $p, 1, $count);
+
+            if ($count) {
+                $p = str_replace($this->getParamNeedle($name), $value, $p);
+            }
         }
-        
-        $classname = $options['class_prefix'].$type;
-        
+
+        return $p;
+    }
+
+    /**
+     * Create a new UNL_DWT object for the specified layout type
+     *
+     * @param string $type     the template type (eg "fixed")
+     * @param array  $coptions an associative array of option names and values
+     *
+     * @return object  a new UNL_DWT.  A UNL_DWT_Error object on failure.
+     *
+     * @see UNL_DWT::setOption()
+     */
+    static function &factory($type)
+    {
+        include_once self::$options['class_location']."{$type}.php";
+
+        $classname = self::$options['class_prefix'].$type;
+
         if (!class_exists($classname)) {
-            throw new UNL_DWT_Exception("Unable to include the {$options['class_location']}{$type}.php file.");
+            require_once 'UNL/DWT/Exception.php';
+            throw new UNL_DWT_Exception('Unable to include the ' . self::$options['class_location'] . $type . '.php file.');
         }
-        
+
         @$obj = new $classname;
-        
-        foreach ($coptions as $option => $value) {
-            $test = $obj->setOption($option, $value);
-        }
-        
+
         return $obj;
     }
-    
+
     /**
-    * Sets options.
-    * 
-    * @param string $option Option to set
-    * @param mixed  $value  Value to set for this option
-    *
-    * @return void
-    */
-    function setOption($option, $value)
+     * Sets options.
+     *
+     * @param string $option Option to set
+     * @param mixed  $value  Value to set for this option
+     *
+     * @return void
+     */
+    static function setOption($option, $value)
     {
         self::$options[$option] = $value;
     }
-    
+
     /* ----------------------- Debugger ------------------ */
 
     /**
-     * Debugger. - use this in your extended classes to output debugging 
+     * Debugger. - use this in your extended classes to output debugging
      * information.
      *
      * Uses UNL_DWT::debugLevel(x) to turn it on
@@ -183,26 +239,26 @@ class UNL_DWT
      * @param string $message message to output
      * @param string $logtype bold at start
      * @param string $level   output level
-     * 
+     *
      * @return   none
      */
     static function debug($message, $logtype = 0, $level = 1)
     {
-        if (empty(self::$options['debug'])  || 
+        if (empty(self::$options['debug'])  ||
             (is_numeric(self::$options['debug']) &&  self::$options['debug'] < $level)) {
             return;
         }
         // this is a bit flaky due to php's wonderfull class passing around crap..
         // but it's about as good as it gets..
         $class = (isset($this) && ($this instanceof UNL_DWT)) ? get_class($this) : 'UNL_DWT';
-        
+
         if (!is_string($message)) {
             $message = print_r($message, true);
         }
         if (!is_numeric(self::$options['debug']) && is_callable(self::$options['debug'])) {
             return call_user_func(self::$options['debug'], $class, $message, $logtype, $level);
         }
-        
+
         if (!ini_get('html_errors')) {
             echo "$class   : $logtype       : $message\n";
             flush();
@@ -221,10 +277,10 @@ class UNL_DWT
      * eg. UNL_DWT::debugLevel(4);
      *
      * @param int $v level
-     * 
+     *
      * @return void
      */
-    function debugLevel($v = null)
+    static function debugLevel($v = null)
     {
         if ($v !== null) {
             $r = isset(self::$options['debug']) ? self::$options['debug'] : 0;
@@ -234,41 +290,28 @@ class UNL_DWT
         return isset(self::$options['debug']) ? self::$options['debug'] : 0;
     }
 
-}
-
-/**
- * exception used by the UNL_DWT class
- * 
- * @category  Templates
- * @package   UNL_DWT
- * @author    Brett Bieber <brett.bieber@gmail.com>
- * @copyright 2008 Regents of the University of Nebraska
- * @license   http://www1.unl.edu/wdn/wiki/Software_License BSD License
- * @link      http://pear.unl.edu/package/UNL_DWT
- */
-class UNL_DWT_Exception extends Exception
-{
-    
-}
- 
-if (!function_exists('UNL_DWT_between')) {
     /**
      * Returns content between two strings
      *
      * @param string $start String which bounds the start
      * @param string $end   end collecting content when you see this
      * @param string $p     larger body of content to search
-     * 
+     *
      * @return string
      */
-    function UNL_DWT_between($start, $end, $p)
+    static function strBetween($start, $end, $p)
     {
-        if (!empty($start) && strpos($p, $start)!=false) {
+        if (!empty($start) && strpos($p, $start) !== false) {
             $p = substr($p, strpos($p, $start)+strlen($start));
+        } else {
+            return '';
         }
-        if (strpos($p, $end)!=false) {
+
+        if (strpos($p, $end) !==false) {
             $p = substr($p, 0, strpos($p, $end));
+        } else {
+            return '';
         }
         return $p;
     }
-}
\ No newline at end of file
+}
diff --git a/sites/all/themes/unl_wdn/lib/php/UNL/DWT/Exception.php b/sites/all/themes/unl_wdn/lib/php/UNL/DWT/Exception.php
new file mode 100644
index 0000000000000000000000000000000000000000..8d20483598c40134eee71383ab6eff6375e70e2b
--- /dev/null
+++ b/sites/all/themes/unl_wdn/lib/php/UNL/DWT/Exception.php
@@ -0,0 +1,15 @@
+<?php
+/**
+ * Exception used by the UNL_DWT class.
+ *
+ * @category  Templates
+ * @package   UNL_DWT
+ * @author    Brett Bieber <brett.bieber@gmail.com>
+ * @copyright 2008 Regents of the University of Nebraska
+ * @license   http://www1.unl.edu/wdn/wiki/Software_License BSD License
+ * @link      http://pear.unl.edu/package/UNL_DWT
+ */
+class UNL_DWT_Exception extends Exception
+{
+
+}
diff --git a/sites/all/themes/unl_wdn/lib/php/UNL/DWT/Generator.php b/sites/all/themes/unl_wdn/lib/php/UNL/DWT/Generator.php
index 172ac6a885d4d1edcd16764e6fed87c530d3bb4d..81f4f5bd8f732e84d5ff3c85d6bd26da12749f9a 100644
--- a/sites/all/themes/unl_wdn/lib/php/UNL/DWT/Generator.php
+++ b/sites/all/themes/unl_wdn/lib/php/UNL/DWT/Generator.php
@@ -4,7 +4,7 @@
  * Dreamweaver Template files.
  *
  * PHP version 5
- *  
+ *
  * @category  Templates
  * @package   UNL_DWT
  * @author    Brett Bieber <brett.bieber@gmail.com>
@@ -15,12 +15,13 @@
  */
 
 require_once 'UNL/DWT.php';
+require_once 'UNL/DWT/Exception.php';
 require_once 'UNL/DWT/Region.php';
 
 /**
  * The generator parses actual .dwt Dreamweaver Template files to create object relationship
  * files which have member variables for editable regions within the dreamweaver templates.
- * 
+ *
  * @category  Templates
  * @package   UNL_DWT
  * @author    Brett Bieber <brett.bieber@gmail.com>
@@ -36,18 +37,24 @@ class UNL_DWT_Generator extends UNL_DWT
      * Array of template names.
      */
     var $templates;
-    
+
     /**
      * Current template being output
      */
     var $template;
-    
+
     /**
      * Assoc array of template region names.
      * $_regions[$template] = array();
      */
     var $_regions;
-    
+
+    /**
+     * Assoc array of template params
+     * $_params[$template] = array();
+     */
+    var $_params;
+
     /**
      * class being extended (can be overridden by
      * [UNL_DWT_Generator] extends=xxxx
@@ -56,7 +63,7 @@ class UNL_DWT_Generator extends UNL_DWT
      * @access private
      */
     var $_extends = 'UNL_DWT';
-    
+
     /**
      * line to use for require_once 'UNL/DWT.php';
      *
@@ -64,7 +71,7 @@ class UNL_DWT_Generator extends UNL_DWT
      * @access private
      */
     var $_extendsFile = 'UNL/DWT.php';
-    
+
     /**
      * begins generation of template files
      *
@@ -77,10 +84,10 @@ class UNL_DWT_Generator extends UNL_DWT
         $this->generateTemplates();
         $this->generateClasses();
     }
-    
+
     /**
      * Generates .tpl files from .dwt
-     * 
+     *
      * @return void
      */
     function generateTemplates()
@@ -90,14 +97,14 @@ class UNL_DWT_Generator extends UNL_DWT
             include_once 'System.php';
             System::mkdir(array('-p', UNL_DWT::$options['dwt_location']));
         }
-        if (!file_exists($options['tpl_location'])) {
+        if (!file_exists(UNL_DWT::$options['tpl_location'])) {
             include_once 'System.php';
             System::mkdir(array('-p', UNL_DWT::$options['tpl_location']));
         }
         foreach ($this->templates as $this->template) {
             $dwt = file_get_contents($dwt_location.$this->template);
             $dwt = $this->scanRegions($dwt);
-            
+
             $sanitizedName = $this->sanitizeTemplateName($this->template);
             //Write out the .tpl file?
             if (strpos(UNL_DWT::$options['tpl_location'], '%s') !== false) {
@@ -105,23 +112,23 @@ class UNL_DWT_Generator extends UNL_DWT
             } else {
                 $outfilename = UNL_DWT::$options['tpl_location']."/{$sanitizedName}.tpl";
             }
-            $this->debug("Writing {$sanitizedName} to {$outfilename}", 
+            $this->debug("Writing {$sanitizedName} to {$outfilename}",
                          'generateTemplates');
             $fh = fopen($outfilename, "w");
             fputs($fh, $dwt);
             fclose($fh);
         }
     }
-    
+
     /**
      * Create a list of dwts
-     * 
+     *
      * @return void
      */
     function createTemplateList()
     {
         $this->templates = array();
-        
+
         $dwt_location = UNL_DWT::$options['dwt_location'];
         if (is_dir($dwt_location)) {
             $handle = opendir($dwt_location);
@@ -143,19 +150,19 @@ class UNL_DWT_Generator extends UNL_DWT
             throw new UNL_DWT_Exception("dwt_location is incorrect\n");
         }
     }
-    
+
     /**
      * Generate the classes for templates in $this->templates
      *
      * @return void
      */
     function generateClasses()
-    {        
+    {
         if ($extends = @UNL_DWT::$options['extends']) {
             $this->_extends     = $extends;
             $this->_extendsFile = UNL_DWT::$options['extends_location'];
         }
-        
+
         foreach ($this->templates as $this->template) {
             $this->classname = $this->generateClassName($this->template);
             if (strpos(UNL_DWT::$options['class_location'], '%s') !== false) {
@@ -170,19 +177,19 @@ class UNL_DWT_Generator extends UNL_DWT
                 $oldcontents = implode('', file($outfilename));
             }
             $out = $this->_generateClassTemplate($oldcontents);
-            $this->debug("Writing {$this->classname} to {$outfilename}", 
+            $this->debug("Writing {$this->classname} to {$outfilename}",
                         'generateClasses');
             $fh = fopen($outfilename, "w");
             fputs($fh, $out);
             fclose($fh);
         }
     }
-    
+
     /**
      * Generates the class name from a filename.
-     * 
+     *
      * @param string $filename The filename of the template.
-     * 
+     *
      * @return string Sanitized filename prefixed with the class_prefix
      *                defined in the ini.
      */
@@ -193,40 +200,41 @@ class UNL_DWT_Generator extends UNL_DWT
         }
         return $class_prefix.$this->sanitizeTemplateName($filename);;
     }
-    
+
     /**
      * Cleans the template filename.
      *
      * @param string $filename Filename of the template
-     * 
+     *
      * @return string Sanitized template name
      */
     function sanitizeTemplateName($filename)
     {
-        return preg_replace('/[^A-Z0-9]/i', '_', 
+        return preg_replace('/[^A-Z0-9]/i', '_',
                         ucfirst(str_replace('.dwt', '', $filename)));
     }
-    
+
     /**
      * Scans the .dwt for regions - all found are loaded into assoc array
      * $this->_regions[$template].
      *
      * @param string $dwt Dreamweaver template file to scan.
-     * 
+     *
      * @return string derived template file.
      */
     function scanRegions($dwt)
     {
 
         $this->_regions[$this->template] = array();
-        
+        $this->_params[$this->template] = array();
+
         $dwt = str_replace("\r", "\n", $dwt);
         $dwt = preg_replace("/(\<\!-- InstanceBeginEditable name=\"([A-Za-z0-9]*)\" -->)/i", "\n\\0\n", $dwt);
         $dwt = preg_replace("/(\<\!-- TemplateBeginEditable name=\"([A-Za-z0-9]*)\" -->)/i", "\n\\0\n", $dwt);
         $dwt = preg_replace("/\<\!-- InstanceEndEditable -->/", "\n\\0\n", $dwt);
         $dwt = preg_replace("/\<\!-- TemplateEndEditable -->/", "\n\\0\n", $dwt);
         $dwt = explode("\n", $dwt);
-        
+
         $newRegion = false;
         $region    = new UNL_DWT_Region();
         $this->debug("Checking {$this->template}", 'scanRegions', 0);
@@ -267,27 +275,42 @@ class UNL_DWT_Generator extends UNL_DWT
             }
         }
         $dwt = implode("\n", $dwt);
-        $dwt = preg_replace("/<!--"." InstanceParam name=\"([\w]*)\" type=\"([\w]*)\" value=\"([\w]*)\" -->/", '', $dwt);
+
+        preg_match_all("/<!-- (?:Instance|Template)Param name=\"([^\"]*)\" type=\"([^\"]*)\" value=\"([^\"]*)\" -->/", $dwt, $matches, PREG_SET_ORDER);
+        foreach ($matches as $match) {
+            if (!empty($match[1])) {
+                $this->_params[$this->template][$match[1]] = array(
+                    'name'  => $match[1],
+                    'type'  => $match[2],
+                    'value' => $match[3]
+                );
+            }
+        }
         $dwt = str_replace(array(    "<!--"." TemplateBeginEditable ",
                                     "<!--"." TemplateEndEditable -->",
+                                    "<!-- TemplateParam ",
                                     "\n\n"),
                             array(    "<!--"." InstanceBeginEditable ",
                                     "<!--"." InstanceEndEditable -->",
+                                    "<!-- InstanceParam ",
                                     "\n"), $dwt);
         if (preg_match("<!--"." InstanceBegin template=\"([\/\w\d\.]+)\" codeOutsideHTMLIsLocked=\"([\w]+)\" -->", $dwt)) {
             $dwt = preg_replace("/<!--"." InstanceBegin template=\"([\/\w\d\.]+)\" codeOutsideHTMLIsLocked=\"([\w]+)\" -->/", "<!--"." InstanceBegin template=\"/Templates/{$this->template}\" codeOutsideHTMLIsLocked=\"\\2\" -->", $dwt);
         } else {
-            $dwt = preg_replace("/<html[^>]*>/", "\\0<!--"." InstanceBegin template=\"/Templates/{$this->template}\" codeOutsideHTMLIsLocked=\"false\" -->", $dwt);
+            $pos = strpos($dwt, ">", strripos($dwt, "<html") + 5) + 1;
+            $dwt = substr($dwt, 0, $pos) .
+                "<!--"." InstanceBegin template=\"/Templates/{$this->template}\" codeOutsideHTMLIsLocked=\"false\" -->" .
+                substr($dwt, $pos);
         }
         $dwt = str_replace('@@(" ")@@', '', $dwt);
         return $dwt;
     }
-    
+
     /**
      * The template class geneation part - single file.
      *
      * @param string $input file to generate a class for.
-     * 
+     *
      * @return  updated .php file
      */
     private function _generateClassTemplate($input = '')
@@ -308,13 +331,13 @@ class UNL_DWT_Generator extends UNL_DWT
         if ($padding < 2) {
             $padding =2;
         }
-        $p = str_repeat(' ', $padding);        
-        
+        $p = str_repeat(' ', $padding);
+
         $var   = (substr(phpversion(), 0, 1) > 4) ? 'public' : 'var';
         $body .= "    {$var} \$__template = '".$this->sanitizeTemplateName($this->template).".tpl';  {$p}// template name\n";
-        
+
         $regions = $this->_regions[$this->template];
-        
+
         foreach ($regions as $t) {
             if (!strlen(trim($t->name))) {
                 continue;
@@ -322,25 +345,28 @@ class UNL_DWT_Generator extends UNL_DWT
             $padding = (30 - strlen($t->name));
             if ($padding < 2) $padding =2;
             $p = str_repeat(' ', $padding);
-            
+
             $body .="    {$var} \${$t->name} = \"".addslashes($t->value)."\"; {$p}// {$t->type}({$t->len})  {$t->flags}\n";
         }
-        
+
+        $body .= "\n";
+        $body .= "    {$var} \$__params = " . var_export($this->_params[$this->template], true) . ";\n";
+
         // simple creation tools ! (static stuff!)
         $body .= "\n";
         $body .= "    /* Static get */\n";
         $body .= "    function staticGet(\$k,\$v=NULL) { return UNL_DWT::staticGet('{$this->classname}',\$k,\$v); }\n";
-        
+
         // generate getter and setter methods
         $body .= $this->_generateGetters($input);
         $body .= $this->_generateSetters($input);
-        
+
         $body .= "\n    /* the code above is auto generated do not remove the tag below */";
         $body .= "\n    ###END_AUTOCODE\n";
-        
+
         $foot .= "}\n";
         $full  = $head . $body . $foot;
-        
+
         if (!$input) {
             return $full;
         }
@@ -350,7 +376,7 @@ class UNL_DWT_Generator extends UNL_DWT
         if (!preg_match('/(\n|\r\n)\s*###END_AUTOCODE(\n|\r\n)/s', $input)) {
             return $full;
         }
-        
+
         $class_rewrite = 'UNL_DWT';
         if (!($class_rewrite = @UNL_DWT::$options['generator_class_rewrite'])) {
             $class_rewrite = 'UNL_DWT';
@@ -361,17 +387,17 @@ class UNL_DWT_Generator extends UNL_DWT
         $input = preg_replace('/(\n|\r\n)class\s*[a-z0-9_]+\s*extends\s*' .$class_rewrite . '\s*\{(\n|\r\n)/si',
                 "\nclass {$this->classname} extends {$this->_extends} \n{\n",
                 $input);
-        
+
         return preg_replace('/(\n|\r\n)\s*###START_AUTOCODE(\n|\r\n).*(\n|\r\n)\s*###END_AUTOCODE(\n|\r\n)/s',
                             $body, $input);
-        
+
     }
-    
+
     /**
     * Generate getter methods for class definition
     *
     * @param string $input Existing class contents
-    * 
+    *
     * @return string
     */
     function _generateGetters($input)
@@ -416,7 +442,7 @@ class UNL_DWT_Generator extends UNL_DWT
             $getters .= "        return \$this->{$t->name};\n";
             $getters .= "    }\n\n";
         }
-   
+
         return $getters;
     }
 
@@ -424,12 +450,11 @@ class UNL_DWT_Generator extends UNL_DWT
      * Generate setter methods for class definition
      *
      * @param string $input Existing class contents
-     * 
+     *
      * @return string
      */
     function _generateSetters($input)
     {
-
         $setters = '';
 
         // only generate if option is set to true
@@ -469,8 +494,7 @@ class UNL_DWT_Generator extends UNL_DWT
             $setters .= "        \$this->{$t->name} = \$value;\n";
             $setters .= "    }\n\n";
         }
-        
-        return $setters;
-    } 
 
+        return $setters;
+    }
 }
diff --git a/sites/all/themes/unl_wdn/lib/php/UNL/DWT/Region.php b/sites/all/themes/unl_wdn/lib/php/UNL/DWT/Region.php
index b0963a1d9f4046c6ff6c322915ab6c1548b06bef..e8376a073089d7ea636edb123f7d42990d2b46a8 100644
--- a/sites/all/themes/unl_wdn/lib/php/UNL/DWT/Region.php
+++ b/sites/all/themes/unl_wdn/lib/php/UNL/DWT/Region.php
@@ -1,7 +1,7 @@
 <?php
 /**
  * Object representing a Dreamweaver template region
- * 
+ *
  * @category  Templates
  * @package   UNL_DWT
  * @author    Brett Bieber <brett.bieber@gmail.com>
@@ -19,4 +19,3 @@ class UNL_DWT_Region
     var $flags;
     var $value;
 }
-?>
\ No newline at end of file
diff --git a/sites/all/themes/unl_wdn/lib/php/UNL/DWT/Scanner.php b/sites/all/themes/unl_wdn/lib/php/UNL/DWT/Scanner.php
index 4ee274753d5e6d9a395087afb7fcaee612eda768..c6e79eadd2fb111ad0aee938573aefced20b61be 100644
--- a/sites/all/themes/unl_wdn/lib/php/UNL/DWT/Scanner.php
+++ b/sites/all/themes/unl_wdn/lib/php/UNL/DWT/Scanner.php
@@ -1,9 +1,9 @@
 <?php
 /**
  * Handles scanning a dwt file for regions.
- * 
+ *
  * PHP version 5
- * 
+ *
  * @category  Templates
  * @package   UNL_DWT
  * @author    Brett Bieber <brett.bieber@gmail.com>
@@ -26,7 +26,7 @@ require_once 'UNL/DWT/Region.php';
 class UNL_DWT_Scanner
 {
     protected $_regions;
-    
+
     /**
      * The contents of the .dwt file you wish to scan.
      *
@@ -36,18 +36,18 @@ class UNL_DWT_Scanner
     {
         $this->scanRegions($dwt);
     }
-    
+
     function scanRegions($dwt)
     {
         $this->_regions[] = array();
-        
+
         $dwt = str_replace("\r", "\n", $dwt);
         $dwt = preg_replace("/(\<\!-- InstanceBeginEditable name=\"([A-Za-z0-9]*)\" -->)/i", "\n\\0\n", $dwt);
         $dwt = preg_replace("/(\<\!-- TemplateBeginEditable name=\"([A-Za-z0-9]*)\" -->)/i", "\n\\0\n", $dwt);
         $dwt = preg_replace("/\<\!-- InstanceEndEditable -->/", "\n\\0\n", $dwt);
         $dwt = preg_replace("/\<\!-- TemplateEndEditable -->/", "\n\\0\n", $dwt);
         $dwt = explode("\n", $dwt);
-        
+
         $newRegion = false;
         $region    = new UNL_DWT_Region();
         foreach ($dwt as $key=>$fileregion) {
@@ -87,12 +87,12 @@ class UNL_DWT_Scanner
             }
         }
     }
-    
+
     /**
      * returns the region object
      *
      * @param string $region
-     * 
+     *
      * @return UNL_DWT_Region
      */
     public function getRegion($region)
@@ -102,7 +102,7 @@ class UNL_DWT_Scanner
         }
         return null;
     }
-    
+
     /**
      * returns array of all the regions found
      *
@@ -112,18 +112,18 @@ class UNL_DWT_Scanner
     {
         return $this->_regions;
     }
-    
+
     public function __isset($region)
     {
         return isset($this->_regions[$region]);
     }
-    
+
     public function __get($region)
     {
         if (isset($this->_regions[$region])) {
             return $this->_regions[$region]->value;
         }
-        
+
         $trace = debug_backtrace();
         trigger_error(
             'Undefined property: ' . $region .
@@ -132,7 +132,5 @@ class UNL_DWT_Scanner
             E_USER_NOTICE);
         return null;
     }
-    
-}
 
-?>
+}
diff --git a/sites/all/themes/unl_wdn/lib/php/UNL/DWT/createTemplates.php b/sites/all/themes/unl_wdn/lib/php/UNL/DWT/createTemplates.php
index df87cc257c420ce1f7aa665cec00d73422baa512..f501baf5ba587c80353a00f4260471475e1baf08 100644
--- a/sites/all/themes/unl_wdn/lib/php/UNL/DWT/createTemplates.php
+++ b/sites/all/themes/unl_wdn/lib/php/UNL/DWT/createTemplates.php
@@ -2,9 +2,9 @@
 <?php
 /**
  * Tool to generate objects for dreamweaver template files.
- * 
+ *
  * PHP version 5
- *  
+ *
  * @package   UNL_DWT
  * @author    Brett Bieber <brett.bieber@gmail.com>
  * @created   01/18/2006
@@ -13,10 +13,12 @@
  * @link      http://pear.unl.edu/package/UNL_DWT
  */
 
-// since this version doesnt use overload, 
+// since this version doesnt use overload,
 // and I assume anyone using custom generators should add this..
 define('UNL_DWT_NO_OVERLOAD',1);
 ini_set('display_errors',true);
+
+set_include_path(dirname(__DIR__).'/../../src');
 require_once 'UNL/DWT/Generator.php';
 
 if (!ini_get('register_argc_argv')) {
@@ -24,7 +26,7 @@ if (!ini_get('register_argc_argv')) {
 }
 
 if (!@$_SERVER['argv'][1]) {
-    throw new Exception("\nERROR: createTemplates.php usage:\n\nC:\php\pear\UNL\DWT\createTemplates.php example.ini\n\n");
+    throw new Exception("\nERROR: createTemplates.php usage: 'php phpdwtparser/src/UNL/DWT/createTemplates.php example.ini'\n\n");
 }
 
 $config = parse_ini_file($_SERVER['argv'][1], true);
@@ -41,4 +43,3 @@ set_time_limit(0);
 //UNL_DWT::debugLevel(1);
 $generator = new UNL_DWT_Generator;
 $generator->start();
- 
diff --git a/sites/all/themes/unl_wdn/lib/php/UNL/Templates.php b/sites/all/themes/unl_wdn/lib/php/UNL/Templates.php
index 2f0015cd027c6fc42310f59b44c4f28d1fa53e0a..63917217378a3d98938ab74867fdf9d60edb59dc 100644
--- a/sites/all/themes/unl_wdn/lib/php/UNL/Templates.php
+++ b/sites/all/themes/unl_wdn/lib/php/UNL/Templates.php
@@ -1,9 +1,9 @@
 <?php
 /**
  * Object oriented interface to create UNL Template based HTML pages.
- * 
+ *
  * PHP version 5
- *  
+ *
  * @category  Templates
  * @package   UNL_Templates
  * @author    Brett Bieber <brett.bieber@gmail.com>
@@ -19,13 +19,13 @@
 require_once 'UNL/DWT.php';
 
 /**
- * Allows you to create UNL Template based HTML pages through an object 
+ * Allows you to create UNL Template based HTML pages through an object
  * oriented interface.
- * 
+ *
  * Install on your PHP server with:
  * pear channel-discover pear.unl.edu
  * pear install unl/UNL_Templates
- * 
+ *
  * <code>
  * <?php
  * require_once 'UNL/Templates.php';
@@ -35,7 +35,7 @@ require_once 'UNL/DWT.php';
  * $page->loadSharedcodeFiles();
  * echo $page;
  * </code>
- * 
+ *
  * @category  Templates
  * @package   UNL_Templates
  * @author    Brett Bieber <brett.bieber@gmail.com>
@@ -49,14 +49,14 @@ class UNL_Templates extends UNL_DWT
     const VERSION2 = 2;
     const VERSION3 = 3;
     const VERSION3x1 = '3.1';
-    
+
     /**
      * Cache object for output caching
-     * 
+     *
      * @var UNL_Templates_CachingService
      */
     static protected $cache;
-    
+
     static public $options = array(
         'debug'                  => 0,
         'sharedcodepath'         => 'sharedcode',
@@ -65,14 +65,14 @@ class UNL_Templates extends UNL_DWT
         'version'                => self::VERSION3,
         'timeout'                => 5
     );
-    
+
     /**
      * The version of the templates we're using.
-     * 
+     *
      * @var UNL_Templates_Version
      */
     static public $template_version;
-    
+
     /**
      * Construct a UNL_Templates object
      */
@@ -83,21 +83,21 @@ class UNL_Templates extends UNL_DWT
             self::$options['templatedependentspath'] = $_SERVER['DOCUMENT_ROOT'];
         }
     }
-    
+
     /**
      * Initialize the configuration for the UNL_DWT class
-     * 
+     *
      * @return void
      */
     public static function loadDefaultConfig()
     {
-        self::$options['version'] = str_replace('.', 'x', self::$options['version']);
-        include_once 'UNL/Templates/Version'.self::$options['version'].'.php';
-        $class = 'UNL_Templates_Version'.self::$options['version'];
+        $version = str_replace('.', 'x', self::$options['version']);
+        include_once 'UNL/Templates/Version'.$version.'.php';
+        $class = 'UNL_Templates_Version'.$version;
         self::$template_version = new $class();
         UNL_DWT::$options = array_merge(UNL_DWT::$options, self::$template_version->getConfig());
     }
-    
+
     /**
      * The factory returns a template object for any UNL Template style requested:
      *  * Fixed
@@ -106,26 +106,30 @@ class UNL_Templates extends UNL_DWT
      *  * Document
      *  * Secure
      *  * Unlaffiliate
-     * 
+     *
      * <code>
      * $page = UNL_Templates::factory('Fixed');
      * </code>
      *
      * @param string $type     Type of template to get, Fixed, Liquid, Doc, Popup
-     * @param mixed  $coptions Options for the constructor
-     * 
+     *
      * @return UNL_Templates
      */
-    static function &factory($type, $coptions = false)
+    static function &factory($type)
     {
         UNL_Templates::loadDefaultConfig();
-        return parent::factory($type, $coptions);
+        return parent::factory($type);
     }
-    
+
+    public function getTemplateFile()
+    {
+        return $this->getCache();
+    }
+
     /**
      * Attempts to connect to the template server and grabs the latest cache of the
      * template (.tpl) file. Set options for Cache_Lite in self::$options['cache']
-     * 
+     *
      * @return string
      */
     function getCache()
@@ -152,14 +156,14 @@ class UNL_Templates extends UNL_DWT
         }
         return $data;
     }
-    
+
     /**
      * Loads standard customized content (sharedcode) files from the filesystem.
-     * 
+     *
      * @return void
      */
     function loadSharedcodeFiles()
-    {    
+    {
         $includes = array(
                             'footercontent'         => 'footer.html',
                             'contactinfo'           => 'footerContactInfo.html',
@@ -178,12 +182,12 @@ class UNL_Templates extends UNL_DWT
 
     /**
      * Add a link within the head of the page.
-     * 
+     *
      * @param string $href       URI to the resource
      * @param string $relation   Relation of this link element (alternate)
      * @param string $relType    The type of relation (rel)
      * @param array  $attributes Any additional attribute=>value combinations
-     * 
+     *
      * @return void
      */
     function addHeadLink($href, $relation, $relType = 'rel', array $attributes = array())
@@ -191,10 +195,10 @@ class UNL_Templates extends UNL_DWT
         $attributeString = '';
         foreach ($attributes as $name=>$value) {
             $attributeString .= $name.'="'.$value.'" ';
-        }    
-    
+        }
+
         $this->head .= '<link '.$relType.'="'.$relation.'" href="'.$href.'" '.$attributeString.' />'.PHP_EOL;
-    
+
     }
 
     /**
@@ -202,7 +206,7 @@ class UNL_Templates extends UNL_DWT
      *
      * @param string $url  URL to the script
      * @param string $type Type of script text/javascript
-     * 
+     *
      * @return void
      */
     function addScript($url, $type = 'text/javascript')
@@ -215,7 +219,7 @@ class UNL_Templates extends UNL_DWT
      *
      * @param string $content The javascript you wish to add.
      * @param string $type    Type of script tag.
-     * 
+     *
      * @return void
      */
     function addScriptDeclaration($content, $type = 'text/javascript')
@@ -231,20 +235,20 @@ class UNL_Templates extends UNL_DWT
      *
      * @param string $content CSS content to add
      * @param string $type    type attribute for the style element
-     * 
+     *
      * @return void
      */
     function addStyleDeclaration($content, $type = 'text/css')
     {
         $this->head .= '<style type="'.$type.'">'.$content.'</style>'.PHP_EOL;
     }
-    
+
     /**
      * Add a link to a stylesheet.
      *
      * @param string $url   Address of the stylesheet, absolute or relative
      * @param string $media Media target (screen/print/projector etc)
-     * 
+     *
      * @return void
      */
     function addStyleSheet($url, $media = 'all')
@@ -252,18 +256,6 @@ class UNL_Templates extends UNL_DWT
         $this->addHeadLink($url, 'stylesheet', 'rel', array('media'=>$media, 'type'=>'text/css'));
     }
 
-    /**
-     * Returns the page in HTML form.
-     * 
-     * @return string THe full HTML of the page.
-     */
-    function toHtml()
-    {
-        $p       = $this->getCache();
-        $regions = get_object_vars($this);
-        return $this->replaceRegions($p, $regions);
-    }
-    
     /**
      * returns this template as a string.
      *
@@ -273,33 +265,33 @@ class UNL_Templates extends UNL_DWT
     {
         return $this->toHtml();
     }
-    
-    
+
+
     /**
      * Populates templatedependents files
-     * 
-     * Replaces the template dependent include statements with the corresponding 
+     *
+     * Replaces the template dependent include statements with the corresponding
      * files from the /ucomm/templatedependents/ directory. To specify the location
      * of your templatedependents directory, use something like
      * $page->options['templatedependentspath'] = '/var/www/';
      * and set the path to the directory containing /ucomm/templatedependents/
      *
      * @param string $p Page to make replacements in
-     * 
+     *
      * @return string
      */
     function makeIncludeReplacements($p)
     {
         return self::$template_version->makeIncludeReplacements($p);
     }
-    
+
     /**
      * Debug handler for messages.
      *
      * @param string $message Message to send to debug output
      * @param int    $logtype Which log to send this to
      * @param int    $level   The threshold to send this message or not.
-     * 
+     *
      * @return void
      */
     static function debug($message, $logtype = 0, $level = 1)
@@ -307,7 +299,7 @@ class UNL_Templates extends UNL_DWT
         UNL_DWT::$options['debug'] = self::$options['debug'];
         parent::debug($message, $logtype, $level);
     }
-    
+
     /**
      * Cleans the cache.
      *
@@ -319,12 +311,12 @@ class UNL_Templates extends UNL_DWT
     {
         return self::getCachingService()->clean($object);
     }
-    
+
     static public function setCachingService(UNL_Templates_CachingService $cache)
     {
         self::$cache = $cache;
     }
-    
+
     static public function getCachingService()
     {
         if (!isset(self::$cache)) {
diff --git a/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version2.php b/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version2.php
index 7142f9f1833227d5f0c956168a91b5a000c2131f..e4aad342d3bdeffb3fa4eabec12c53ad8d35848a 100644
--- a/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version2.php
+++ b/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version2.php
@@ -34,7 +34,7 @@ class UNL_Templates_Version2 implements UNL_Templates_Version
         }
 
         if (file_exists(UNL_Templates::getDataDir().'/tpl_cache/Version2/'.$template)) {
-            return file_get_contents($template);
+            return file_get_contents(UNL_Templates::getDataDir().'/tpl_cache/Version2/'.$template);
         }
 
         throw new Exception('Could not get the template file!');
diff --git a/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version3x1/Debug.php b/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version3x1/Debug.php
index aa8ac7858d236c3c6965282e78f73aa09a722880..03474443b3165ffee3ca8bb8e96e0891bbeea1a3 100644
--- a/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version3x1/Debug.php
+++ b/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version3x1/Debug.php
@@ -22,6 +22,14 @@ class UNL_Templates_Version3x1_Debug extends UNL_Templates
     public $optionalfooter = "";                 // string()  
     public $footercontent = "<!--#include virtual=\"../sharedcode/footer.html\" -->";                  // string()  
 
+    public $__params = array (
+  'class' => 
+  array (
+    'name' => 'class',
+    'type' => 'text',
+    'value' => 'fixed debug',
+  ),
+);
     /* Static get */
     function staticGet($k,$v=NULL) { return UNL_DWT::staticGet('UNL_Templates_Version3x1_Debug',$k,$v); }
 
diff --git a/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version3x1/Fixed.php b/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version3x1/Fixed.php
index a396fd3c5e60ae4dd9625897227e7802d52e6b90..792cb987e9155c93b2cfbe11f483e869314bc44e 100644
--- a/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version3x1/Fixed.php
+++ b/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version3x1/Fixed.php
@@ -22,6 +22,14 @@ class UNL_Templates_Version3x1_Fixed extends UNL_Templates
     public $optionalfooter = "";                 // string()  
     public $footercontent = "<!--#include virtual=\"../sharedcode/footer.html\" -->";                  // string()  
 
+    public $__params = array (
+  'class' => 
+  array (
+    'name' => 'class',
+    'type' => 'text',
+    'value' => 'fixed',
+  ),
+);
     /* Static get */
     function staticGet($k,$v=NULL) { return UNL_DWT::staticGet('UNL_Templates_Version3x1_Fixed',$k,$v); }
 
diff --git a/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version3x1/Local.php b/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version3x1/Local.php
index d120aff26038fc094efbd5764560d23b25feb8c4..77fed187638d0cf187efb1aa98cd9323926001f0 100644
--- a/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version3x1/Local.php
+++ b/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version3x1/Local.php
@@ -22,6 +22,14 @@ class UNL_Templates_Version3x1_Local extends UNL_Templates
     public $optionalfooter = "";                 // string()  
     public $footercontent = "<!--#include virtual=\"../sharedcode/footer.html\" -->";                  // string()  
 
+    public $__params = array (
+  'class' => 
+  array (
+    'name' => 'class',
+    'type' => 'text',
+    'value' => 'fixed',
+  ),
+);
     /* Static get */
     function staticGet($k,$v=NULL) { return UNL_DWT::staticGet('UNL_Templates_Version3x1_Local',$k,$v); }
 
diff --git a/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version3x1/Unlaffiliate.php b/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version3x1/Unlaffiliate.php
index 37da6f4216d01d8ece6a07e1973cf0391b2cb068..5eb78990d65075dcb5253a34d0796c51ed2a34a2 100644
--- a/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version3x1/Unlaffiliate.php
+++ b/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version3x1/Unlaffiliate.php
@@ -22,6 +22,14 @@ class UNL_Templates_Version3x1_Unlaffiliate extends UNL_Templates
     public $optionalfooter = "";                 // string()  
     public $footercontent = "<!--#include virtual=\"../sharedcode/footer.html\" -->";                  // string()  
 
+    public $__params = array (
+  'class' => 
+  array (
+    'name' => 'class',
+    'type' => 'text',
+    'value' => 'fixed',
+  ),
+);
     /* Static get */
     function staticGet($k,$v=NULL) { return UNL_DWT::staticGet('UNL_Templates_Version3x1_Unlaffiliate',$k,$v); }
 
diff --git a/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version3x1/Unlaffiliate_debug.php b/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version3x1/Unlaffiliate_debug.php
index baa01f04c441989267e919a2489c679f88c109d7..1804ad91082a962072655a46da0684571168ee3b 100644
--- a/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version3x1/Unlaffiliate_debug.php
+++ b/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version3x1/Unlaffiliate_debug.php
@@ -22,6 +22,14 @@ class UNL_Templates_Version3x1_Unlaffiliate_debug extends UNL_Templates
     public $optionalfooter = "";                 // string()  
     public $footercontent = "<!--#include virtual=\"../sharedcode/footer.html\" -->";                  // string()  
 
+    public $__params = array (
+  'class' => 
+  array (
+    'name' => 'class',
+    'type' => 'text',
+    'value' => 'fixed debug',
+  ),
+);
     /* Static get */
     function staticGet($k,$v=NULL) { return UNL_DWT::staticGet('UNL_Templates_Version3x1_Unlaffiliate_debug',$k,$v); }
 
diff --git a/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version3x1/Unlaffiliate_local.php b/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version3x1/Unlaffiliate_local.php
index ddb0a55ff96084348875a403034abfbfc8b77582..20511b9b85b7ade733efa8819731fb5767703fba 100644
--- a/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version3x1/Unlaffiliate_local.php
+++ b/sites/all/themes/unl_wdn/lib/php/UNL/Templates/Version3x1/Unlaffiliate_local.php
@@ -22,6 +22,14 @@ class UNL_Templates_Version3x1_Unlaffiliate_local extends UNL_Templates
     public $optionalfooter = "";                 // string()  
     public $footercontent = "<!--#include virtual=\"../sharedcode/footer.html\" -->";                  // string()  
 
+    public $__params = array (
+  'class' => 
+  array (
+    'name' => 'class',
+    'type' => 'text',
+    'value' => 'fixed',
+  ),
+);
     /* Static get */
     function staticGet($k,$v=NULL) { return UNL_DWT::staticGet('UNL_Templates_Version3x1_Unlaffiliate_local',$k,$v); }
 
diff --git a/sites/all/themes/unl_wdn/page.tpl.php b/sites/all/themes/unl_wdn/page.tpl.php
index 5092c1961d6a414952a248c9b712b3f396ea2380..edf87ebac41fd98baf4aaa7eb09368cd834e634d 100644
--- a/sites/all/themes/unl_wdn/page.tpl.php
+++ b/sites/all/themes/unl_wdn/page.tpl.php
@@ -80,7 +80,14 @@ $t->navlinks = PHP_EOL . render($page['navlinks']);
 
 // Site Title and Page Title
 if (isset($site_name) && $site_name) {
-  $t->titlegraphic = $site_name;
+  if (theme_get_setting('site_name_abbreviation')) { 
+    $t->titlegraphic = '<abbr title="' . $site_name . '">' 
+                     . theme_get_setting('site_name_abbreviation')
+                     . '</abbr>';
+  }
+  else {
+    $t->titlegraphic = $site_name;
+  }
   if (!empty($site_slogan)) {
     $t->titlegraphic .= '<span>' . $site_slogan . '</span>';
   }
diff --git a/sites/all/themes/unl_wdn/style.css b/sites/all/themes/unl_wdn/style.css
index 676f6ecd7005141ac1727e12b16f99127b44e2b4..a9ee12797c8856a57b35fbf36a1e3c8362c2e0c6 100644
--- a/sites/all/themes/unl_wdn/style.css
+++ b/sites/all/themes/unl_wdn/style.css
@@ -5,7 +5,6 @@
  */
 
 /* Position tabs at the top right of maincontent */
-body.fixed #maincontent {min-width: 960px;}
 #maincontent ul.wdn_tabs.cms_tabs {position: absolute; right: 0; top: -60px; width: auto;}
 /* Fix for a Views page */
 #pagetitle {position: relative;}
@@ -23,7 +22,7 @@ ul.links.inline {padding-left: 0 !important;}
 #wdn_search_form fieldset {background: none; border: none; margin: 0; padding: 0; position: static;}
 #wdn_search_form label {font-weight: normal;}
 #wdn_search_form input {margin: 0; padding: 0;}
-#wdn_feedback fieldset, #wdn_feedback_comments fieldset {position: static; padding: 0; margin: 0; border: none; background: none;}
+#wdn_footer_feedback fieldset {position: static; padding: 0; margin: 0; border: none; background: none;}
 #wdn_feedback legend, #wdn_feedback_comments legend {position: static; top: auto; left: auto; color: #333; line-height:1.7em; text-indent: 0; border: none; background: none; height: inherit; width: inherit;}
 #wdn_copyright .block {margin: 0;}
 #toolbarcontent fieldset {border: none; margin: 0; padding: 0;}
@@ -201,12 +200,12 @@ ul.links.inline {padding-left: 0 !important;}
   background: #3388bb;
   padding: 3px 8px;
   color: #eee !important;
-} 
+}
 
 /* .node-teaser
 *********/
 .node-teaser {
-  margin-bottom: 10px; 
+  margin-bottom: 10px;
   padding: 10px;
 }
 .node-teaser.node-sticky {
@@ -251,7 +250,7 @@ ul.links.inline {padding-left: 0 !important;}
   background: #3388bb;
   padding: 3px 8px;
   color: #eee !important;
-} 
+}
 .node-teaser .field-type-image .field-item {
   float: left;
   margin: 0 20px 30px 0;
diff --git a/sites/all/themes/unl_wdn/template.php b/sites/all/themes/unl_wdn/template.php
index c49cb37adf92f818545c58becdd9d14890be6ef4..623cf3f0432a1c4dce4d643f80b09c00a338f08b 100644
--- a/sites/all/themes/unl_wdn/template.php
+++ b/sites/all/themes/unl_wdn/template.php
@@ -528,11 +528,10 @@ EOF;
 }
 
 /**
- * Return the abbreviated site name, assuming it has been set and we're not on the front page.
- * Otherwise, it returns the full site name.
+ * Return the abbreviated site name, assuming it has been set. Otherwise return the full site name.
  */
 function unl_wdn_get_site_name_abbreviated() {
-  if (!drupal_is_front_page() && theme_get_setting('site_name_abbreviation')) {
+  if (theme_get_setting('site_name_abbreviation')) {
     return theme_get_setting('site_name_abbreviation');
   }
   else {
diff --git a/themes/bartik/bartik.info b/themes/bartik/bartik.info
index 7492f29590bbfb29b86bb53d0e700eb8a079cb7e..6486aa6a743576ccbfd0aba0e278a0c710bafab3 100644
--- a/themes/bartik/bartik.info
+++ b/themes/bartik/bartik.info
@@ -34,8 +34,8 @@ regions[footer] = Footer
 settings[shortcut_module_link] = 0
 
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/themes/garland/garland.info b/themes/garland/garland.info
index 0b8016c7f9cd9e983794c5ee6fb596bf65f0c3ae..78db5a9b33fbc10cf3068043ebdaf58b24511e6b 100644
--- a/themes/garland/garland.info
+++ b/themes/garland/garland.info
@@ -7,8 +7,8 @@ stylesheets[all][] = style.css
 stylesheets[print][] = print.css
 settings[garland_width] = fluid
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/themes/seven/seven.info b/themes/seven/seven.info
index c51d58ec3faf2ede04629bffca578f3477784c57..ad25590791b8009a9db3e19aec227efd6bc48fea 100644
--- a/themes/seven/seven.info
+++ b/themes/seven/seven.info
@@ -13,8 +13,8 @@ regions[page_bottom] = Page bottom
 regions[sidebar_first] = First sidebar
 regions_hidden[] = sidebar_first
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"
 
diff --git a/themes/stark/stark.info b/themes/stark/stark.info
index 0d35fc3c6a43ad486020d24d833aba578071cd7b..21736359e3bf05dcc44421e98ed3f82886039113 100644
--- a/themes/stark/stark.info
+++ b/themes/stark/stark.info
@@ -5,8 +5,8 @@ version = VERSION
 core = 7.x
 stylesheets[all][] = layout.css
 
-; Information added by drupal.org packaging script on 2012-08-01
-version = "7.15"
+; Information added by drupal.org packaging script on 2012-10-17
+version = "7.16"
 project = "drupal"
-datestamp = "1343839327"
+datestamp = "1350508567"