commit 6e9292aa8d11b6b6ade96ff6491ab343c921e96c
Author: Assos Assos <assos+forge@centrale-marseille.fr>
Date:   Wed May 27 22:47:15 2015 +0200

    Weekly update of contrib modules

diff --git a/drupal7/sites/all/modules/advanced_help/advanced-help-popup.tpl.php b/drupal7/sites/all/modules/advanced_help/advanced-help-popup.tpl.php
index c478d604..23faf29b 100644
--- a/drupal7/sites/all/modules/advanced_help/advanced-help-popup.tpl.php
+++ b/drupal7/sites/all/modules/advanced_help/advanced-help-popup.tpl.php
@@ -34,7 +34,10 @@
       </div> <!-- /content-content -->
     </div> <!-- /content -->
 
-    <?php print $closure; ?>
+    <!--
+    See comment about $closure in main module.
+    print $closure;
+    -->
 
   </div> <!-- /page -->
 </body>
diff --git a/drupal7/sites/all/modules/advanced_help/advanced_help.info b/drupal7/sites/all/modules/advanced_help/advanced_help.info
index 9292f03b..4700487f 100644
--- a/drupal7/sites/all/modules/advanced_help/advanced_help.info
+++ b/drupal7/sites/all/modules/advanced_help/advanced_help.info
@@ -10,9 +10,9 @@ attributions[click_icon][title] = 'click_icon.png'
 attributions[click_icon][license] = 'Creative Commons 0'
 attributions[click_icon][license_url] = 'https://creativecommons.org/publicdomain/zero/1.0/'
 
-; Information added by Drupal.org packaging script on 2015-03-27
-version = "7.x-1.2"
+; Information added by Drupal.org packaging script on 2015-05-25
+version = "7.x-1.3"
 core = "7.x"
 project = "advanced_help"
-datestamp = "1427460482"
+datestamp = "1432557782"
 
diff --git a/drupal7/sites/all/modules/advanced_help/advanced_help.install b/drupal7/sites/all/modules/advanced_help/advanced_help.install
index b29911dd..6c4455a0 100644
--- a/drupal7/sites/all/modules/advanced_help/advanced_help.install
+++ b/drupal7/sites/all/modules/advanced_help/advanced_help.install
@@ -50,7 +50,10 @@ function advanced_help_schema() {
     'primary key' => array('sid'),
     'indexes' => array('language' => array('language')),
     'foreign keys' => array(
-      'module' => array('system' => 'name'),
+      'system' => array(
+        'table' => 'system',
+        'columns' => array('name' => 'name'),
+      ),
     ),
   );
 
diff --git a/drupal7/sites/all/modules/advanced_help/advanced_help.module b/drupal7/sites/all/modules/advanced_help/advanced_help.module
index 1794cee1..109bf500 100644
--- a/drupal7/sites/all/modules/advanced_help/advanced_help.module
+++ b/drupal7/sites/all/modules/advanced_help/advanced_help.module
@@ -34,28 +34,38 @@
 
 /**
  * Implements hook_menu().
+ *
+ * Strings in hook_help() should not be run through t().
  */
 function advanced_help_menu() {
-  // View help topic index.
-  //
-  // This is structured little oddly so that POTX can handle the translation.
-  if (module_exists('help')) {
-    $items['admin/advanced_help'] = array(
-      'title' => 'Advanced help',
+  $help_exists = module_exists('help') ? TRUE : FALSE;
+  if ($help_exists) {
+    // Add tabs to core Help page to access Advanced Help.
+    $items['admin/help/tab1'] = array(
+      'title' => 'Help',
+      'type' => MENU_DEFAULT_LOCAL_TASK,
+      'weight' => 0,
+    );
+
+    $items['admin/help/ah'] = array(
+      'title' => 'Advanced Help',
       'page callback' => 'advanced_help_index_page',
       'access arguments' => array('view advanced help index'),
-      'weight' => 9,
+      'type' => MENU_LOCAL_TASK,
+      'weight' => 2,
     );
   }
   else {
-    $items['admin/advanced_help'] = array(
+    // Make Advanced Help the normal help.
+    $items['admin/help/ah'] = array(
       'title' => 'Help',
       'page callback' => 'advanced_help_index_page',
       'access arguments' => array('view advanced help index'),
+      'type' => MENU_NORMAL_ITEM,
       'weight' => 9,
     );
   }
-  $items['advanced_help/search/%'] = array(
+  $items['help/ah/search/%'] = array(
     'title' => 'Search help',
     'page callback' => 'advanced_help_search_view',
     'page arguments' => array('advanced_help'),
@@ -134,9 +144,9 @@ function advanced_help_search_get_keys() {
   if (!isset($return)) {
     // Extract keys as remainder of path
     // Note: support old GET format of searches for existing links.
-    $path = explode('/', $_GET['q'], 3);
+    $path = explode('/', $_GET['q'], 4);
     $keys = empty($_REQUEST['keys']) ? '' : $_REQUEST['keys'];
-    $return = count($path) == 3 ? $path[2] : $keys;
+    $return = count($path) == 4 ? $path[3] : $keys;
   }
   return $return;
 }
@@ -149,7 +159,7 @@ function advanced_help_search_view() {
     return drupal_not_found();
   }
 
-  $breadcrumb[] = advanced_help_l(t('Help'), 'admin/advanced_help');
+  $breadcrumb[] = advanced_help_l(t('Advanced help'), 'admin/help/ah');
 
   if (!isset($_POST['form_id'])) {
     $keys = advanced_help_search_get_keys();
@@ -216,7 +226,7 @@ function advanced_help_index_page($module = '') {
     advanced_help_get_topic_hierarchy($topics);
     $items = advanced_help_get_tree($topics, $topics[$module]['']['children']);
 
-    $breadcrumb[] = advanced_help_l(t('Help'), 'admin/advanced_help');
+    $breadcrumb[] = advanced_help_l(t('Advanced help'), 'admin/help/ah');
 
     drupal_set_title(t('@module help index', array('@module' => advanced_help_get_module_name($module))));
     $output['items-module'] = array(
@@ -247,11 +257,11 @@ function advanced_help_index_page($module = '') {
         else {
           $name = t($module_name);
         }
-        $items[] = advanced_help_l($name, "admin/advanced_help/$module");
+        $items[] = advanced_help_l($name, "admin/help/ah/$module");
       }
     }
 
-    drupal_set_title(t('Module help index'));
+    drupal_set_title(t('Advanced help'));
     $output['items-nomodule'] = array(
       '#theme' => 'item_list',
       '#items' => $items,
@@ -362,7 +372,7 @@ function advanced_help_form_system_modules_alter(&$form, &$form_state) {
         $form['modules'][$group][$module]['links']['help'] = array(
           '#type' => 'link',
           '#title' => t('Help'),
-          '#href' => "admin/advanced_help/$module",
+          '#href' => "admin/help/ah/$module",
           '#options' => array(
             'attributes' => array(
               'class' => array('module-link', 'module-link-help'),
@@ -383,7 +393,7 @@ function advanced_help_form_system_modules_alter(&$form, &$form_state) {
  */
 function advanced_help_search_form($form, &$form_state, $keys = '') {
   module_load_include('inc', 'search', 'search.pages');
-  $form = search_form($form, $form_state, 'admin/advanced_help', $keys, 'advanced_help', t('Search help'));
+  $form = search_form($form, $form_state, 'admin/help/ah', $keys, 'advanced_help', t('Search help'));
 
   $form['basic']['inline']['submit']['#validate'] = array('search_form_validate');
   $form['basic']['inline']['submit']['#submit'] = array('advanced_help_search_form_submit');
@@ -404,10 +414,10 @@ function advanced_help_search_form_submit($form, &$form_state) {
   $popup = !empty($_GET['popup']) && user_access('view advanced help popup');
 
   if ($popup) {
-    $form_state['redirect'] = array('advanced_help/search/' . $keys, array('query' => array('popup' => 'true')));
+    $form_state['redirect'] = array('help/ah/search/' . $keys, array('query' => array('popup' => 'true')));
   }
   else {
-    $form_state['redirect'] = 'advanced_help/search/' . $keys;
+    $form_state['redirect'] = 'help/ah/search/' . $keys;
   }
 }
 
@@ -477,8 +487,8 @@ function advanced_help_topic_page($module, $topic) {
     $breadcrumb[] = advanced_help_l($parent['title'], "help/$pmodule/$ptopic");
   }
 
-  $breadcrumb[] = advanced_help_l(advanced_help_get_module_name($pmodule), "admin/advanced_help/$pmodule");
-  $breadcrumb[] = advanced_help_l(t('Help'), "admin/advanced_help");
+  $breadcrumb[] = advanced_help_l(advanced_help_get_module_name($pmodule), "admin/help/ah/$pmodule");
+  $breadcrumb[] = advanced_help_l(t('Help'), "admin/help/ah");
 
   $output = advanced_help_view_topic($module, $topic, $popup);
   if (empty($output)) {
@@ -646,7 +656,18 @@ function advanced_help_view_topic($module, $topic, $popup = FALSE) {
         }
       }
       else {
-        $output = '<div class="advanced-help-topic"><pre class="readme">' . check_plain($output) . '</pre></div>';
+        $readme = '';
+        if ('md' == $ext) {
+          $readme .=
+            '<p>' .
+	    t('If you install the !module module, the text below will be filtered by the module, producing rich text.',
+	    array('!module' => l(t('Markdown filter'),
+	    'https://www.drupal.org/project/markdown',
+	    array('attributes' => array('title' => t('Link to project.')))))) . '</p>';
+	}
+        $readme .=
+          '<div class="advanced-help-topic"><pre class="readme">' . check_plain($output) . '</pre></div>';
+	$output = $readme;
       }
       return $output;
     }
@@ -705,7 +726,7 @@ function advanced_help_view_topic($module, $topic, $popup = FALSE) {
         $up = "help/$parent[0]/$parent[1]";
       }
       else {
-        $up = "admin/advanced_help/$module";
+        $up = "admin/help/ah/$module";
       }
 
       $siblings = $topics[$parent_module][$parent_topic]['children'];
@@ -1109,7 +1130,9 @@ function template_preprocess_advanced_help_popup(&$variables) {
     $variables['content'] = drupal_render($variables['content']);
   }
   // Closure should be filled last.
-  $variables['closure']           = theme('closure');
+  // There has never been a theme hook for closure (going back to
+  // first release 2008-04-17).  Unable to figure out its purpose.
+  // $variables['closure']           = theme('closure');
 }
 
 /**
diff --git a/drupal7/sites/all/modules/advanced_help/help-popup.css b/drupal7/sites/all/modules/advanced_help/help-popup.css
index 9d719ae8..c4fc2d9d 100644
--- a/drupal7/sites/all/modules/advanced_help/help-popup.css
+++ b/drupal7/sites/all/modules/advanced_help/help-popup.css
@@ -116,10 +116,9 @@ div#breadcrumb .breadcrumb {
   padding: 0;
 }
 
-code,
 pre {
   background: #f1f1f1;
-  border: 1px solid #444;
+  border: 1px solid #ccc;
   display: block;
   margin: 1em;
   padding: .2em;
diff --git a/drupal7/sites/all/modules/advanced_help/help.css b/drupal7/sites/all/modules/advanced_help/help.css
index 678e4a46..8190c8e5 100644
--- a/drupal7/sites/all/modules/advanced_help/help.css
+++ b/drupal7/sites/all/modules/advanced_help/help.css
@@ -6,6 +6,14 @@
   padding: .4em;
 }
 
+.advanced-help-topic p.bob {
+  background: #f1f1f1;
+  border: 1px solid #ccc;
+  display: block;
+  margin: 1em;
+  padding: .4em;
+}
+
 .advanced-help-topic pre.readme {
   background: white;
   border: none;
@@ -40,6 +48,10 @@
   width: 42%;
 }
 
+.help-leftalign {
+  text-align: left;
+}
+
 .help-up {
   display: block;
   float: left; /* LTR */
diff --git a/drupal7/sites/all/modules/advanced_help/help/ahelp_tab.png b/drupal7/sites/all/modules/advanced_help/help/ahelp_tab.png
new file mode 100644
index 00000000..37ef6be4
Binary files /dev/null and b/drupal7/sites/all/modules/advanced_help/help/ahelp_tab.png differ
diff --git a/drupal7/sites/all/modules/advanced_help/help/readme.html b/drupal7/sites/all/modules/advanced_help/help/readme.html
index 4362a63e..68579bd5 100644
--- a/drupal7/sites/all/modules/advanced_help/help/readme.html
+++ b/drupal7/sites/all/modules/advanced_help/help/readme.html
@@ -12,28 +12,35 @@ the help texts can be easiely kept in sync with the project they
 provide help texts for, but also that read access to these files
 are not managed by any content access restrictions imposed by Drupal.</p>
   
-<p>The help texts can be marked up with standard HTML, but are
-rendered within your site's Drupal theming structure.</p>
+<p>The help texts can be marked up with standard HTML. They will be
+rendered using your site's theme.</p>
 
-<p>If the module or theme author does not make use of the full
-<em>Advanced help</em> framework, but if there is a
+<p>If the module or theme author does not make use of the
+<em>Advanced help</em> HTML-framework, but if there is a
 <code>README.md</code> or <code>README.txt</code> in the package,
 the content of that file will be shown instead.</p>
   
-<p>The help texts may appear in a popup or not as the module prefers.
+<p>The help texts may appear in a popup or not as the project prefers.
 By taking away access to view the popups, a site can hide popups from
 users.</p>
 
 <p>The help texts can be placed in a hierarchy, allowing for top down
 navigation of help.</p>
 
-<p>The hierarchy is tied into Drupal's search system. If this is
+<p>The help texts may be made searchable. If advanced help search is
 enabled, all help texts are fully indexed. This means that the entire
 contents of the advanced help set of pages can be searched for
 keywords.</p>
 
 <h2 id="use">Using the module</h2>
 
+<p>When you enable the module, a new tab with the legend “Advanced
+help” will show up under “Help”:
+
+<div class="ta-center">
+<img class="help-img-center" alt="ahelp_tab.png" src="&path&ahelp_tab.png" width="661" height="225" border="1" />
+</div>
+
 <p>By itself, this module doesn't do much.  The <strong>Advanced
 help</strong> assists other modules and themes in showing help texts.
 Nothing will show up until you enable at least one other module that
@@ -44,19 +51,19 @@ comes with a small companion demo module named
 For more extensive example of use of the advanced help features, see
 the <strong>Views</strong> project.</p>
 
+<!--
 <h2 id="project-recommended">Recommended modules</h2>
 
 <ul>
-<!--
 <li><a href="https://www.drupal.org/project/markdown">Markdown filter</a>:<br>
 When this module is enabled, display of any <code>README.md</code> the
 module shows will be rendered with markdown.</li>
--->
 <li><a href="https://www.drupal.org/project/attributions">Attributions</a>:<br>
 When this module is enabled, attributions of third party content used
 by the project (i.e. some text from Wikipedia) will be available in an
 attribution block and on an atribution page.</li>
 </ul>
+-->
 
 <h2 id="support-status">Support status</h2>
 
@@ -95,5 +102,6 @@ answering &amp; closing support requests.</p>
 <li><a href="https://www.drupal.org/u/redndahead">redndahead</a> (8 commits)</li>
 <li><a href="https://www.drupal.org/u/dmitrig01">dmitrig01</a> (3 commits)</li>
 <li><a href="https://www.drupal.org/u/amitgoyal">amitgoyal </a> (5 commits)</li>
-<li><a href="https://www.drupal.org/u/gisle">gisle</a> (current maintainer)</li>
+<li><a href="https://www.drupal.org/u/gisle">gisle</a> (current maintainer, D7)</li>
+<li><a href="https://www.drupal.org/u/gnuget">gnuget</a> (current maintainer, D8)</li>
 </ul>
diff --git a/drupal7/sites/all/modules/advanced_help/help/translation.html b/drupal7/sites/all/modules/advanced_help/help/translation.html
index f3969793..8faf0e90 100644
--- a/drupal7/sites/all/modules/advanced_help/help/translation.html
+++ b/drupal7/sites/all/modules/advanced_help/help/translation.html
@@ -1,20 +1,44 @@
-<p>To translate advanced help, first create a
-directory <code>translations/help/<em>language</em></code> in the
-module directory. Then, copy the .ini file and all the .html files
-from the help directory into this.  If you need to alter an image to
-use it in a translation, you also put the altered image there.</p>
+<p>To translate a help-file indexed by <strong>Advanced help</strong>,
+first create a directory
+<code>translations/help/<em>language</em></code> in the project's 
+root directory. The <em>language</em>  is the language code that
+appears on the <em>Languages</em> page in the administrative UI.</p>
 
-<p>The .ini file only needs to keep the titles, and if there is
+<p>Then, copy the <code>.ini</code> file and all
+the <code>.html</code> files from the help directory into this.  If
+you need to alter an image to use it in a translation, you may also
+put the altered image there.</p>
+
+<p>In the topics section, the <code>.ini</code> file only needs to
+keep the topic names (unaltered) and titles (translated). If there is
 a <code>name</code> or <code>index name</code> setting in the
 'advanced help settings' portion, that should be retained. Any
 retained settings should be translated. The rest of the data in the
-.ini file may be discarded or ignored.</p>
+<code>.ini</code> file may be discarded or ignored.</p>
+
+<p>Each <code>.html</code> file should then be translated in place.</p>
+
+<p>When translating a <code>.html</code> file, you will find that
+the <code>&amp;path&amp;</code> keyword (used for images and links)
+will lead to the original directory. If you must translate items that
+are linked, such as images containing text,
+use <code>&amp;trans_path&amp;</code> instead, which will lead to the
+translated directory. This will allow you to pick and choose which
+linked items, if any, will be translated.</p>
+
+<p>If a topic is not tranlated, the default (untranslated) version
+will be shown instead.</p>
+
+<h2>Translating Advanced help's help files</h2>
 
-<p>Each file should then be translated in place.</p>
+<p>If you want to help with the translation of
+<strong>Advanced help</strong> help texts for a particular language, look for an issue named named “Translation to XXX” (where
+“XXX” is the language you want to translate the help texts to) in the <a href="https://www.drupal.org/project/issues/advanced_help">issue queue for Advanced help</a>.
+If such an issue does not exist, please can create it.
+Choose <em>Category</em>   “Task”,
+<em>Status</em> “Needs review” and
+<em>Component</em>  “Documentation”.
+Upload translated files as an attachment (change the file type from <code>.html</code> to <code>.txt</code> to be allowed to upload). </p>
 
-<p>When translating a .html file, you will find that
-the <code>&amp;path&amp;</code> keyword will lead to the original
-directory. If you must translate items that are linked, such as images
-containing text, use <code>&amp;trans_path&amp;</code> instead, which
-will lead to the translated directory. This will allow you to pick and
-choose which linked items, if any, will be translated.</p>
+<p>Uploaded translations will be included in the next version if
+reviewed and approved by other users (i.e. gets to status “RTBC”).</p>
diff --git a/drupal7/sites/all/modules/advanced_help/help/using-advanced-help.html b/drupal7/sites/all/modules/advanced_help/help/using-advanced-help.html
index c9ebe471..c47750bb 100644
--- a/drupal7/sites/all/modules/advanced_help/help/using-advanced-help.html
+++ b/drupal7/sites/all/modules/advanced_help/help/using-advanced-help.html
@@ -1,8 +1,8 @@
 <p>The <strong>Advanced help</strong> module provides a framework that
 allows module and theme developers integrate help texts in a Drupal
-site.  Although the advanced help does not provide general help by
-itself, it provides a powerful and easy framework that modules and
-themes may use to provide their own help.</p>
+site.  Although the <strong>Advanced help</strong> does not provide
+general help by itself, it provides a powerful and easy framework that
+modules and themes may use to provide their own help.</p>
 
 <p>Modules and themes utilizing <strong>Advanced help</strong> should
 create a subdirectory named <code>help</code> inside their own main
@@ -33,7 +33,7 @@ title = PHP syntax
 parent = usage
 </pre>
 
-<p>This file defines five help topics (inside the square brackets, and
+<p>This file defines five help topics (inside the square brackets), and
 some settings for them.
 See: <a href="&topic:advanced_help/ini-file&">Advanced help .ini file format</a> for
 a list of defined settings.</p>
@@ -86,14 +86,14 @@ $output .= '&nbsp;' . t('Click the help icon!');
 <p>This format will ensure the popup status remains consistent when
 switching between links.</p>
 
-<p>To reference items within the help directory, such as images you
-wish to embed  within the help text, use:</p>
+<p>To reference items within the help directory, such as images you wish to embed  within the help text, use:</p>
+
 <pre>
 &lt;img src="&amp;path&amp;example.png"/&gt;
 &lt;img src="&amp;trans_path&amp;example.png"/&gt;
 </pre>
 
-<p>The latter is to refer to a translated version of the image if it differs from the original.</p>
+<p>The <code>trans_path</code> keyword refers to a translated version of the image in the translation directory and may be used it differs from the original.</p>
 
 <p>To reference any normal path in the site, use:</p>
 <pre>
@@ -102,8 +102,8 @@ wish to embed  within the help text, use:</p>
 
 <p><strong>NOTE: </strong> In previous versions <strong>Advanced
 help</strong> did not require the &amp;'s to be wrapped around
-<code>topic:</code>, <code>path</code>, and <code>base_url</code>.
-This is currently still supported, but may be removed in a future
+<code>topic</code>, <code>path</code>, and <code>base_url</code>.
+This is currently still supported, but will be removed in a future
 version.  By adding the &amp;'s these tokens are now not limited
 to <code>href=""</code> and <code>src=""</code> parameters.</p>
 
@@ -130,17 +130,23 @@ Deny from all
 &lt;/Files&gt;
 </pre>
 
-<p>It as the responsibility of the project author to make sure this
-type of protection is in place if the project's author has help files
-that merits protection from direct access.</p>
+<p>It as the responsibility of the site manager to make sure this type
+of protection is in place if the site has help files that merits
+protection from direct access.</p>
 
 <p>See also this tracker in the project's issue queue:  
 <a href="https://www.drupal.org/node/1980936">#1980936 Typing complete path to .html help files in module bypasses user permissions</a>.</p>
 
 <h2 id="search">Search</h2>
 
+<p>To enable advanced help search, navigate to
+<em>Administration → Configuration → Search and metadata → Search settings</em>.
+Scroll down to <em>Active search modules</em> and tick the box to the
+left of “Advanced help”.  The search form will appear on the top of
+the advanced help index pages.</p>
+
 <p>If the core <strong>Search</strong> module is enabled, the contents
 of the advanced help framework will be indexed on cron. If you enable
 new modules or themes and wish to immediately index their help text,
-navigate to <em>Administration → Reports → Status report</em> and click the link
-“run cron manually”.</p>
+navigate to <em>Administration → Reports → Status report</em> and
+click the link “run cron manually”.</p>
diff --git a/drupal7/sites/all/modules/advanced_help/help_example/help/history.html b/drupal7/sites/all/modules/advanced_help/help_example/help/history.html
index 2eb1f143..2edb1cea 100644
--- a/drupal7/sites/all/modules/advanced_help/help_example/help/history.html
+++ b/drupal7/sites/all/modules/advanced_help/help_example/help/history.html
@@ -1,23 +1,21 @@
 <div class="help-box help-left">
-<div class="thumbinner" style="width:182px;"><a href="http://en.wikipedia.org/wiki/Image:Lerdorf.jpg" class="image" title="Rasmus Lerdorf, who wrote the original Common Gateway Interface binaries"><img alt="Rasmus Lerdorf, who wrote the original Common Gateway Interface binaries" src="path:180px-Lerdorf.jpg" width="180" height="270" border="0" class="thumbimage" /></a>
-<div class="thumbcaption">
-<a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf" title="Rasmus Lerdorf">Rasmus Lerdorf</a>, who wrote the original <a href="http://en.wikipedia.org/wiki/Common_Gateway_Interface" title="Common Gateway Interface">Common Gateway Interface</a> binaries</div>
-</div>
+<a href="http://en.wikipedia.org/wiki/Image:Lerdorf.jpg" class="image" title="Rasmus Lerdorf, who wrote the original Common Gateway Interface binaries"><img alt="Rasmus Lerdorf, who wrote the original Common Gateway Interface binaries" src="&path&180px-Lerdorf.jpg" width="180" height="270" border="0" /></a>
+<div><a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf" title="Rasmus Lerdorf">Rasmus Lerdorf</a>, who wrote the original <a href="http://en.wikipedia.org/wiki/Common_Gateway_Interface" title="Common Gateway Interface">Common Gateway Interface</a> binaries.</div>
 </div>
 
 <p>PHP, standing for Personal Home Page, began as a set of <a href="http://en.wikipedia.org/wiki/Common_Gateway_Interface" title="Common Gateway Interface">Common Gateway Interface</a> <a href="http://en.wikipedia.org/wiki/Binary_file" title="Binary file">binaries</a> written in the <a href="http://en.wikipedia.org/wiki/C_programming_language" class="mw-redirect" title="C programming language">C programming language</a> in 1994 by the <a href="http://en.wikipedia.org/wiki/Danish_people" title="Danish people">Danish</a>/<a href="http://en.wikipedia.org/wiki/Greenland" title="Greenland">Greenlandic</a> programmer <a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf" title="Rasmus Lerdorf">Rasmus Lerdorf</a>. Lerdorf initially created these Personal Home Page Tools to replace a small set of <a href="http://en.wikipedia.org/wiki/Perl" title="Perl">Perl</a> scripts he had been using to maintain his <a href="http://en.wikipedia.org/wiki/Personal_homepage" class="mw-redirect" title="Personal homepage">personal homepage</a>. The tools were originally created to perform tasks such as displaying his <a href="http://en.wikipedia.org/wiki/R%C3%A9sum%C3%A9" title="Résumé">résumé</a> and recording how much <a href="http://en.wikipedia.org/wiki/Web_traffic" title="Web traffic">traffic</a> his page was receiving. He combined these binaries with his Form Interpreter to create PHP/FI, which had more functionality. It included a larger <a href="http://en.wikipedia.org/wiki/C_%28programming_language%29" title="C (programming language)">C implementation</a> which could communicate with <a href="http://en.wikipedia.org/wiki/Database" title="Database">databases</a> and helped build simple, dynamic <a href="http://en.wikipedia.org/wiki/Web_application" title="Web application">web applications</a>. He released PHP publicly on <a href="http://en.wikipedia.org/wiki/June_8" title="June 8">June 8</a>, <a href="http://en.wikipedia.org/wiki/1995" title="1995">1995</a> to speed up the finding of <a href="http://en.wikipedia.org/wiki/Software_bug" title="Software bug">bugs</a> and improving the code. This release was named PHP version 2, and already had basic functionality that PHP has today. This includes Perl-like variables, form handling, and the ability to embed HTML. The syntax was similar to Perl but was more limited, simpler, and less consistent.</p>
 
 <div class="help-box help-right">
-<div class="thumbinner" style="width:182px;"><a href="http://en.wikipedia.org/wiki/Image:Andi_Gutmans_1.jpg" class="image" title="Andi Gutmans, who, along with Zeev Suraski, rewrote the parser that formed PHP 3"><img alt="Andi Gutmans, who, along with Zeev Suraski, rewrote the parser that formed PHP 3" src="path:180px-Andi_Gutmans_1.jpg" width="180" height="244" border="0" class="thumbimage" /></a>
-<div class="thumbcaption">
-<a href="http://en.wikipedia.org/wiki/Andi_Gutmans" title="Andi Gutmans">Andi Gutmans</a>, who, along with <a href="http://en.wikipedia.org/wiki/Zeev_Suraski" title="Zeev Suraski">Zeev Suraski</a>, rewrote the <a href="http://en.wikipedia.org/wiki/Parsing#Parser" title="Parser">parser</a> that formed PHP&nbsp;3</div>
-</div>
+<a href="http://en.wikipedia.org/wiki/Image:Andi_Gutmans_1.jpg" class="image" title="Andi Gutmans, who, along with Zeev Suraski, rewrote the parser that formed PHP 3"><img alt="Andi Gutmans, who, along with Zeev Suraski, rewrote the parser that formed PHP 3" src="&path&180px-Andi_Gutmans_1.jpg" width="180" height="244" border="0" class="thumbimage" /></a>
+<div class="help-leftalign"><a href="http://en.wikipedia.org/wiki/Andi_Gutmans" title="Andi Gutmans">Andi Gutmans</a>, who, along with <a href="http://en.wikipedia.org/wiki/Zeev_Suraski" title="Zeev Suraski">Zeev Suraski</a>, rewrote the <a href="http://en.wikipedia.org/wiki/Parsing#Parser" title="Parser">parser</a> that formed PHP&nbsp;3.</div>
 </div>
+
 <p><a href="http://en.wikipedia.org/wiki/Zeev_Suraski" title="Zeev Suraski">Zeev Suraski</a> and <a href="http://en.wikipedia.org/wiki/Andi_Gutmans" title="Andi Gutmans">Andi Gutmans</a>, two <a href="http://en.wikipedia.org/wiki/Israelis" title="Israelis">Israeli</a> developers at the <a href="http://en.wikipedia.org/wiki/Technion_IIT" class="mw-redirect" title="Technion IIT">Technion IIT</a>, rewrote the <a href="http://en.wikipedia.org/wiki/Parsing#Parser title="Parser">parser</a> in 1997 and formed the base of PHP 3, changing the language's name to the <a href="http://en.wikipedia.org/wiki/Recursive_initialism" class="mw-redirect" title="Recursive initialism">recursive initialism</a> <i>PHP: Hypertext Preprocessor</i>. The development team officially released PHP/FI 2 in November 1997 after months of <a href="http://en.wikipedia.org/wiki/Development_stage#beta" class="mw-redirect" title="Development stage">beta</a> testing. Afterwards, public testing of PHP 3 began, and the official launch came in June 1998. Suraski and Gutmans then started a new <a href="http://en.wikipedia.org/wiki/Rewrite_%28programming%29" title="Rewrite (programming)">rewrite</a> of PHP's core, producing the <a href="http://en.wikipedia.org/wiki/Zend_Engine" title="Zend Engine">Zend Engine</a> in 1999. They also founded <a href="http://en.wikipedia.org/wiki/Zend_Technologies" title="Zend Technologies">Zend Technologies</a> in <a href="http://en.wikipedia.org/wiki/Ramat_Gan" title="Ramat Gan">Ramat Gan</a>, Israel, which manages the development of PHP.</p>
 
 <p>On <a href="http://en.wikipedia.org/wiki/May_22" title="May 22">May 22</a>, <a href="http://en.wikipedia.org/wiki/2000" title="2000">2000</a>, PHP 4, powered by the Zend Engine 1.0, was released. On <a href="http://en.wikipedia.org/wiki/July_13" title="July 13">July 13</a>, <a href="http://en.wikipedia.org/wiki/2004" title="2004">2004</a>, PHP 5 was released and is powered by the new Zend Engine II. PHP 5 included new features such as improved support for <a href="http://en.wikipedia.org/wiki/Object-oriented_programming" title="Object-oriented programming">object-oriented programming</a>, the PHP Data Objects extension (which defines a lightweight and consistent interface for accessing databases), and numerous performance enhancements. The most recent update released by The PHP Group is for the older PHP version 4 code branch. As of January 2008, this branch is up to version 4.4.8. PHP 4 will be supported by security updates until <a href="http://en.wikipedia.org/wiki/August_8" title="August 8">August 8</a>, <a href="http://en.wikipedia.org/wiki/2008" title="2008">2008</a>.</p>
 
 <p>PHP 5 is the only stable version still being developed. <a href="http://en.wikipedia.org/wiki/Late_static_binding" class="mw-redirect" title="Late static binding">Late static binding</a> has been missing from PHP and will be added in version 5.3. Development on PHP 4 ceased at the end of 2007, except for the critical security updates for PHP 4 already mentioned. PHP 6 is now under development and major changes include the removal of <code>register_globals</code>, <a href="http://en.wikipedia.org/wiki/Magic_quotes" title="Magic quotes">magic quotes</a>, and <a href="http://en.wikipedia.org/wiki/Safe_mode#Application_software_safe_mode" title="Safe mode">safe mode</a>. PHP does not have complete native support for <a href="http://en.wikipedia.org/Unicode" title="Unicode">Unicode</a> or multibyte strings; unicode support will be added in PHP 6. Many high profile open source projects ceased to support PHP 4 in new code as of <a href="http://en.wikipedia.org/wiki/February_5" title="February 5">February 5</a>, <a href="http://en.wikipedia.org/wiki/2008" title="2008">2008</a>, due to the GoPHP5 initiative, provided by a consortium of PHP developers promoting the transition from PHP 4 to PHP 5.</p>
 
-<p class="attribution">This excerpt is adapted from <a href="http://en.wikipedia.org/wiki/PHP#History">Wikipedia: PHP - history</a>. It is used here under a <a href="http://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License">Creative Commons BY-SA 3.0</a> license.</p>
-
+<p class="attribution">This excerpt is adapted from <a href="http://en.wikipedia.org/wiki/PHP#History">Wikipedia: PHP - history</a>. It is used here under a <a href="http://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License">Creative Commons BY-SA 3.0</a> license. 
+Picture of Rasmus <a href="http://en.wikipedia.org/wiki/File:Lerdorf.jpg" title="Link to work">Lerdorf</a> by Jud Dagnall, available under <a href="http://creativecommons.org/licenses/by-sa/3.0/deed.en" title="Link to license">Creative Commons BY-SA 3.0</a>.
+Picture of <a href="http://en.wikipedia.org/wiki/File:Andi_Gutmans_1.jpg" title="Link to work">Andi Gutmans</a> by <a href="https://www.flickr.com/people/81342178@N00" title="Link to author">Jim Winstead</a>, available under <a href="http://creativecommons.org/licenses/by/2.0/deed.en" title="Link to license">Creative Commons BY 2.0</a>.</p>
diff --git a/drupal7/sites/all/modules/advanced_help/help_example/help_example.info b/drupal7/sites/all/modules/advanced_help/help_example/help_example.info
index 426d77ea..7960ca11 100644
--- a/drupal7/sites/all/modules/advanced_help/help_example/help_example.info
+++ b/drupal7/sites/all/modules/advanced_help/help_example/help_example.info
@@ -32,9 +32,9 @@ attributions[gutmans][title] = 'Andi Gutmans'
 attributions[gutmans][license] = 'Creative Commons BY 2.0'
 attributions[gutmans][license_url] = 'http://creativecommons.org/licenses/by/2.0/deed.en'
 
-; Information added by Drupal.org packaging script on 2015-03-27
-version = "7.x-1.2"
+; Information added by Drupal.org packaging script on 2015-05-25
+version = "7.x-1.3"
 core = "7.x"
 project = "advanced_help"
-datestamp = "1427460482"
+datestamp = "1432557782"
 
diff --git a/drupal7/sites/all/modules/advanced_help/translations/help/nb/advanced_help.help.ini b/drupal7/sites/all/modules/advanced_help/translations/help/nb/advanced_help.help.ini
new file mode 100644
index 00000000..daf4c7f2
--- /dev/null
+++ b/drupal7/sites/all/modules/advanced_help/translations/help/nb/advanced_help.help.ini
@@ -0,0 +1,14 @@
+[readme]
+title = LESMEG
+
+[using-advanced-help]
+title = Bruk av Avansert hjelp
+
+[translation]
+title = Oversettelse av Avansert hjelp
+
+[ini-file]
+title = Avansert hjelp .ini-filformat
+
+[why-advanced-help]
+title = Hvorfor Avansert hjelp?
diff --git a/drupal7/sites/all/modules/advanced_help/translations/help/nb/click_icon.png b/drupal7/sites/all/modules/advanced_help/translations/help/nb/click_icon.png
new file mode 100644
index 00000000..ff41a333
Binary files /dev/null and b/drupal7/sites/all/modules/advanced_help/translations/help/nb/click_icon.png differ
diff --git a/drupal7/sites/all/modules/advanced_help/translations/help/nb/ini-file.html b/drupal7/sites/all/modules/advanced_help/translations/help/nb/ini-file.html
new file mode 100644
index 00000000..05b85e43
--- /dev/null
+++ b/drupal7/sites/all/modules/advanced_help/translations/help/nb/ini-file.html
@@ -0,0 +1,117 @@
+<p>The advanced help configuration file is in simple .ini file format.
+It has an optional section for global settings that might be inherited
+for each help file, followed by sections for each help file.</p>
+
+<p>Global settings may be put into a section named <code>[advanced help
+settings]</code>.  This means that this name is reserved and it cannot
+be a help file in any module or theme. The following settings may be
+set in this section, with the default value (if any) in brackets.</p>
+
+<dl>
+<dt><code>line break</code> (FALSE)</dt>
+<dd>If set, the line break filter will be applied to all help files
+defined by this module or theme, unless that help file specifically is
+set otherwise.  The line break converts line breaks
+into <code>br</code> and <code>p</code> tags automatically.</dd>
+
+<dt><code>navigation</code> (TRUE)</dt>
+<dd>If set, this navigation will be displayed at the end of the topic:
+<em>previous topic</em>, Up (parent), <em>next topic</em>.</dd>
+
+<dt><code>css</code></dt>
+<dd>Specify a css file that will be used for all help files (unless
+overridden), including the .css extension. This .css file must reside
+in the help directory along with the .html files, and will not be
+affected by translation.</dd>
+
+<dt><code>name</code></dt>
+<dd>May be set to override the module or theme name as displayed in
+both the module/theme index as well as the navigation and breadcrumb
+trail. Usually, this is not set, but for some projects you may want to
+use a more friendly name than appears in the project's .info file.</dd>
+
+<dt><code>index name</code></dt>
+<dd>This may be set to change the name of the module or theme in the
+module/theme index. It overrides the <code>name</code> setting above,
+as well as the project's name in its .info file.</dd>
+
+<dt><code>hide</code> (FALSE)</dt>
+<dd>This may be used to hide a module or theme in the module/theme
+index. This is particularly useful for modules who insert their help
+files into the hierarchy of another module or theme, as might be done
+by modules that extend <strong>Views</strong> or derived themes that
+extend base themes like <strong>Zen</strong>. By setting this to TRUE
+the project will not appear as its own entry.</dd>
+</dl>
+
+<p>Each section after that will correspond to a single help file for a
+single topic.  It starts with the topic name in square brackets
+(e.g. <code>[ini-file]</code>).  The following settings may be set for
+each file/topic, with the default value (if any) in brackets.</p>
+
+<dl>
+<dt><code>title</code></dt>
+<dd>The title of the topic, presented to the user and used in
+links. If you have special characters in your title, be sure to
+enclose it in quotes.  (This setting is currently not optional.)</dd>
+
+<dt><code>file</code> (topic name)</dt>
+<dd>The filename, without the .html extension, used for the file with
+the help text for the topic. This is optional; if not specified, the
+topic name wil be the file name.</dd>
+
+<dt><code>weight</code> (0)</dt>
+<dd>The weight, used for sorting topics on the administration
+page. The default is 0 (zero) if unspecified. Items with the same weight
+are sorted alphabetically.</dd>
+
+<dt><code>parent</code></dt>
+<dd>The topic ID to use in a hierarchy; children will be listed
+beneath parents in the topic list, and will have the parent in their
+breadcrumb trail. You may parent this topic to a topic in another
+module or theme by using <code>module%topic</code>
+or <code>theme%topic</code> as the identifier,
+where <code>module</code> or <code>theme</code> is the project's short
+name. For example if parent is set to, '<code>views%display</code>',
+the topic will be regarded as a child of the
+<code>display</code> topic in the <strong>Views</strong> module.</dd>
+
+<dt><code>line break</code> (FALSE)</dt>
+<dd>Set the line break filter for this topic. Set to FALSE to disable
+the line break filter if this has been turned on in the global
+settings.</dd>
+
+<dt><code>css</code></dt>
+<dd>Specify a css file that will be used for this file. This .css file
+must reside in the help directory along with the .html files. This
+will override any .css file added by the global settings.</dd>
+
+<dt><code>popup width</code> (500)</dt>
+<dd>The width in pixels of the popup window.</dd>
+
+<dt><code>popup height</code> (500)</dt>
+<dd>The height in pixels of the popup window.</dd>
+</dl>
+
+<p>For example, here is a version of the <code>advanced_help.help.ini</code> file:</p>
+
+<pre>
+[readme]
+title = README
+weight = -11
+
+[using-advanced-help]
+title = Using advanced help
+weight = -10
+
+[translation]
+title = Translating advanced help
+
+[ini-file]
+title = Help .ini file format
+line break = FALSE
+
+[why-advanced-help]
+title = Why advanced help?
+line break = TRUE
+</pre>
diff --git a/drupal7/sites/all/modules/advanced_help/translations/help/nb/readme.html b/drupal7/sites/all/modules/advanced_help/translations/help/nb/readme.html
new file mode 100644
index 00000000..cdd9a593
--- /dev/null
+++ b/drupal7/sites/all/modules/advanced_help/translations/help/nb/readme.html
@@ -0,0 +1,116 @@
+<h2>Om denne oversettelsen</h2>
+
+<p>Dette er en (delvis) oversettelse til <em>norsk</em> (bokmål) av
+hjelpeteksene for <strong>Avansert hjelp</strong>.  Den er i første
+rekke laget for å vise hvordan en oversettelse av hjelpetekstene ser
+ut.</p>
+
+<h2 id="project-description">Synopsis</h2>
+
+<p>Modulen <strong>Avansert hjelp</strong> tilbyr et rammeverk som gjør
+det mulig for modul- og theme-utviklere å integrere hjelpetekster i et
+Drupal-nettsted.</p>
+
+<p>Disse hjelpetekstene lagres som vanlige <code>.html</code>-filer
+som lever i filsystemet (ikke i databasen).  Disse filene distribueres
+fra prosjektes repo på Drupal.org i den samme pakken som prosjektets
+øvrige filer, og plasseres i en en underkatalog med navnet
+<code>help</code> i prosjektets katalog.  Det innebærer at
+hjelpetekstene på en enkel måte kan holdes synkronisert med det
+prosjektet hjelpen er knyttet til, men også at tilgangen til disse
+filene ikke er underlagt de tilgangsbegrensningene som Drupal
+administrerer.</p>
+
+<p>Hjelpetekstene kan bruke standard HTML-markeringer De vil bli vist
+med ditt nettsteds theme.</p>
+
+<p>Dersom prosjektets forfatter ikke bruker HTML-rammeverket for
+<em>Avansert hjelp</em>, men det finnes en 
+<code>README.md</code> eller <code>README.txt</code> i pakken,
+så vil innholdet av den filen vises i stedet.</p>
+  
+<p>Hjelpetekstene kan vises i et sprettopp-vindu eller ikke, ut fra
+prosjektets preferanser.  Ved å fjerne tilgangen til å se
+sprettopp-vinduer kan nedstedet skjule sprettopp-vinduer fra
+brukere.</p>
+
+<p>Hjelpetekstene kan organiseres hierarkisk, noe som gjør det mulig
+og navigere fra toppen av og nedover for hjelp.</p>
+
+<p>Hjelpetekstene kan gjøres søkbare.  Dersom søk av avansert hjelp er
+slått på, vil all hjelpetekst indekseres. Dette innebærer at alt
+innhold på sidene med avansert hjelp er søkbart med nøkkelord.</p>
+
+<h2 id="use">Bruk av modulen</h2>
+
+<p>When you enable the module, a new tab with the legend “Advanced
+help” will show up under “Help”:
+
+<div class="ta-center">
+<img class="help-img-center" alt="ahelp_tab.png" src="&path&ahelp_tab.png" width="661" height="225" border="1" />
+</div>
+
+<p>By itself, this module doesn't do much.  The <strong>Avansert
+hjelp</strong> assists other modules and themes in showing help texts.
+Nothing will show up until you enable at least one other module that
+makes use of the advanced help framework or comes with a file
+named <code>README.md</code> or <code>README.txt</code>.  However, it
+comes with a small companion demo module named
+<strong>Eksempel på hjelp</strong> to demonstrate how it works.
+For more extensive example of use of the advanced help features, see
+the <strong>Views</strong> project.</p>
+
+<!--
+<h2 id="project-recommended">Anbefalte moduler</h2>
+
+<ul>
+<li><a href="https://www.drupal.org/project/markdown">Markdown filter</a>:<br>
+When this module is enabled, display of any <code>README.md</code> the
+module shows will be rendered with markdown.</li>
+<li><a href="https://www.drupal.org/project/attributions">Attributions</a>:<br>
+When this module is enabled, attributions of third party content used
+by the project (i.e. some text from Wikipedia) will be available in an
+attribution block and on an atribution page.</li>
+</ul>
+-->
+
+<h2 id="support-status">Status for oppfølging</h2>
+
+<p>Reported bugs for the Drupal 7 branch will be fixed in a timely
+manner.  Bugs in the issue queue for the Drupal 6 branch will only be
+fixed if accompanied with a patch, after the patch has been reviewed
+and tested by the community.  No Drupal 8 version is currently under
+development.  Post a message in
+the <a href="https://www.drupal.org/node/1928218">issue queue</a> if
+you're interested in managing a port of the project to to Drupal
+8. Older versions are no longer supported.</p>
+
+<p>Community support in the form of patches are very welcome for both
+Drupal 6 and Drupal 7 versions, and will be given priority. For QA,
+the project needs community support in the form of reviews of patches,
+development versions and releases.</p>
+
+<p>The primary goal of the module is to remain <strong>light-weight
+and simple</strong>.  This means that not all feature requests will be
+implemented, even if they are a good idea.  Feature requests
+accompanied by patches are more likely to make it into a release.</p>
+
+<p>The maintainer hopes that the community is willing to help out by
+answering &amp; closing support requests.</p>
+
+<!--
+<h2 id="project-problems">Kjente problemer</h2>
+-->
+
+
+
+<h2 id="project-maintainers">Kreditering</h2>
+
+<ul>
+<li><a href="https://www.drupal.org/u/merlinofchaos"">merlinofchaos</a> (52 commits, opprinnelig forfatter)</li>
+<li><a href="https://www.drupal.org/u/redndahead">redndahead</a> (8 commits)</li>
+<li><a href="https://www.drupal.org/u/dmitrig01">dmitrig01</a> (3 commits)</li>
+<li><a href="https://www.drupal.org/u/amitgoyal">amitgoyal </a> (5 commits)</li>
+<li><a href="https://www.drupal.org/u/gisle">gisle</a> (nåværende administrator, D7)</li>
+<li><a href="https://www.drupal.org/u/gnuget">gnuget</a> (nåværende administrator, D8)</li>
+</ul>
diff --git a/drupal7/sites/all/modules/advanced_help/translations/help/nb/translation.html b/drupal7/sites/all/modules/advanced_help/translations/help/nb/translation.html
new file mode 100644
index 00000000..84362381
--- /dev/null
+++ b/drupal7/sites/all/modules/advanced_help/translations/help/nb/translation.html
@@ -0,0 +1,51 @@
+<p>For å oversette en hjelpe-fil indeksert av <strong>Avansert hjelp</strong>
+må du først opprette en katalog
+<code>translations/help/<em>språk</em></code> i prosjektets rotkatalog der
+<em>språk</em> er språkkoden som vises på siden <em>Språk</em> i det
+administrative grensesnittet.</p>
+
+<p>Deretter kopierer du <code>.ini</code>-fila og alle
+<code>.html</code> filene fra den opprinnelige hjelpe-katalogen
+katalogen til denne katalogen. Om du trenger å endre et bilde for å
+bruke det i en oversettelse, kan du også plassere det endrede bildet
+her.</p>
+
+<p>I emne-delen av <code>.ini</code>-fila trenger du bare å beholde
+emnenavnene (uendret) og titlene (oversatt). Hvis det finnes
+en <code>name</code> eller <code>index name</code> innstilling i
+'advanced help settings'-delen, bør disse beholdes. Alle innstillinger
+som beholdes skal oversettes. Resten av dataene i
+<code>.ini</code>-filen kan fjernes eller ignoreres. </p>
+
+<p>Hver enkelt <code>.html</code>-fil skal deretter oversettes uten å
+endre navn eller plassering.</p>
+
+<p>Når du oversetter en <code>.html</code>-fil, vil du finne at
+nøkkelordet <code>&amp;path&amp;</code> (brukes for bilder og linker)
+vil føre til den opprinnelige katalogen. Hvis du må oversette
+elementer som er lenket, for eksempel bilder som inneholder tekst,
+bruke <code>&amp;trans_path&amp;</code> i stedet. Dette nøkkelordet
+vil peke på den oversatte katalogen. Dette vil tillate deg å velge
+hvilke lenkede elementer, om noen, som vil bli oversatt.</p>
+
+<p> Hvis et emne ikke er oversatt, så vil den uoversatte versjonen
+vil bli vist i stedet.</p>
+
+
+
+<h2>Oversettelse av hjelpetekstene til Avansert hjelp</h2>
+
+<p>Dersom du ønsker å hjelpe til med å oversette
+hjelpetekstene til <strong>Avansert hjelp</strong> til et bestemt språk
+kan du se etter en tråd i <a href="https://www.drupal.org/project/issues/advanced_help">sporingskøen for Advanced help</a>
+med navnet “Translation to XXX” (der
+“XXX” språket du ønsker å oversette hjelpetekstene til).
+Dersom en slik tråd ikke eksisterer kan du opprette den.
+Velg <em>Category</em>  “Task”,
+<em>Status</em>  “Needs review” og
+<em>Component</em>  “Documentation”.
+Last opp filer med oversatte hjelpetekster som
+vedlegg (endre filtype fra <code>.html</code> til <code>.txt</code> for å få lov til å laste opp).</p>
+
+<p>Oversettelser som lastes opp vil bli inkludert i neste versjon dersom de godkjennes av andre brukere (ved at de oppnår status “RTBC”).
+
diff --git a/drupal7/sites/all/modules/advanced_help/translations/help/nb/using-advanced-help.html b/drupal7/sites/all/modules/advanced_help/translations/help/nb/using-advanced-help.html
new file mode 100644
index 00000000..ee191498
--- /dev/null
+++ b/drupal7/sites/all/modules/advanced_help/translations/help/nb/using-advanced-help.html
@@ -0,0 +1,165 @@
+<p>Modulen <strong>Avansert hjelp</strong> tilbyr et rammeverk som gjør
+det mulig for modul- og theme-utviklere å integrere hjelpetekster i et
+Drupal-nettsted.  Selv om <strong>Avansert hjelp</strong> ikke selv
+inneholder generell hjelp tilbyr den et kraftig og enkelt rammeverk som
+prosjekter kan benytte for å tilby egen hjelp.</p>
+
+<p>Prosjekter som benytter <strong>Avansert hjelp</strong> må
+ha en underkatalog med navnet <code>help</code> i sin rotkatalog
+I denne katalogen opprettes filen
+<em>MODULNAVN</em>.help.ini (evt. <em>THEMENAVN</em>.help.ini).
+Formatet på denne fila framgår av følgende eksempel:</p>
+
+<pre>
+[about-php]
+title = About PHP
+file = about-php
+weight = -10
+
+[history]
+title = History of PHP
+parent = about-php
+
+[usage]
+title = Usage of PHP
+weight = 1
+
+[security] 
+title = Security of PHP
+weight = 2
+
+[syntax]
+title = PHP syntax
+parent = usage
+</pre>
+
+<p>Lag alltid den engelske versjonen av disse temaene først.  Ønsker
+du å ha temaene oversatt til et annet språk følger du anvisningene i
+<a href="&topic:advanced_help/translation&">Oversettelse av
+Avansert hjelp</a>.</p>
+
+<p>Denne fila definerer fem hjelpe-emner (i firkant-parenteser), og
+noen innstillinger for dem.
+Se: <a href="&topic:advanced_help/ini-file&">Avansert hjelp .ini-filformat</a> for
+en liste over definerte innstillinger.</p>
+
+<p>Alle emner er beskrevet av det prosjektet som tilbyr
+emnet, og av emne-id.  For å produsere en themet lenke til et
+sprettopp-vindu om et emne, bruk et format etter mønster fra følgende
+eksempel:</p>
+
+<!-- D6
+<pre>
+$output = theme('advanced_help_topic', 'help_example', 'about-php');
+$output .= '&nbsp;' . t('Click the help icon!');
+</pre>
+-->
+
+<!-- D7 -->
+<pre>
+$output = theme('advanced_help_topic', array(
+  'module' => 'help_example',
+  'topic' => 'about-php',
+));
+$output .= '&nbsp;' . t('Click the help icon.');
+</pre>
+
+<p>Ikke oversett strengen inne i <code>t()</code>. Bruk alltid engelsk, og benytt Drupals lokaliserings-modul til å oversette.</p>
+
+<p>Forutsatt at strengene er korrekt oversatt (ved hjelp av Drupals lokaliserings-modul) genererer dette følgende markeringer:</p>
+
+<pre>
+&lt;a class="advanced-help-link" title="Om PHP"
+  onclick="var w=window.open(this.href, 'advanced_help_window',
+  'width=500,height=500,scrollbars,resizable');
+  w.focus(); return false;"
+  href="/help/help_example/about-php?popup=1"&gt;
+&lt;span&gt;Hjelp&lt;/span&gt;
+&lt;/a&gt;
+ Klikk på hjelpe-ikonet.
+&lt;/div&gt;
+</pre>
+
+<p>Dette produserer et klikkbart hjelpe-ikon lik det som vises under:</p>
+
+<div class="ta-center">
+<img class="help-img-center" alt="klikkbart ikon" src="&trans_path&click_icon.png" width="180" height="90" border="0" />
+</div>
+
+<p>Inne i en hjelpe-fil kan du lenke til andre hjelpe-emner ved å
+bruke dette formatet:</p>
+<pre>
+&lt;a href="&amp;topic:module/topic&amp;"&gt;topic&lt;/a&gt;
+</pre>
+<p>Ved å bruke dette formatet i stedet for standard-lenker vil sprettopp-status være konsistent når man trykker på lenker.</p>
+
+<p>For å referere til andre elementer som befinner seg i
+hjelpe-katalogen, som bilder som du ønsker å bake inn i teksten,
+bruk:</p>
+<pre>
+&lt;img src="&amp;path&amp;example.png"/&gt;
+&lt;img src="&amp;trans_path&amp;example.png"/&gt;
+</pre>
+
+<p>Nøkkelordet <code>trans_path</code> vil peke på en oversatt versjon
+av bildet i oversettelse-katalogen og kan benyttes dersom du ønsker å
+vise et bilde med oversatt tekst i stedet for originalen.</p>
+
+<p>For å peke på en normal sti på nettstedet, bruk:</p>
+<pre>
+&lt;a href="&amp;base_url&amp;admin/settings/site-configuration"&gt;anchor text&lt;/a&gt;
+</pre>
+
+<p><strong>NB: </strong> I tidligere versjoner av <strong>Advanced
+help</strong> var det ikke nødvendig å benytte &amp;-tegn rundt
+<code>topic:</code>, <code>path</code>, og <code>base_url</code>.
+Dette fungerer fortsatt, men kan bli fjernet i en senere versjon.
+Ved å bruke &amp;-tegn for å markere disse nøkkelordene kan de
+brukes overalt, og ikke bare som parametere til 
+<code>href=""</code> og <code>src=""</code>.</p>
+
+<h2 id="access-control">Adgangskontroll</h2>
+
+<p>Når denne modulen er installert vil brukere med tillatelsen
+<code>view advanced help index</code>
+se indeks-siden for <strong>Avansert hjelp</strong> ved å gå til
+<em>Administrasjon &rarr; Advanced Help</em>
+(sti: <code>admin/advanced_help</code>). Øvrige tillatelser
+<code>view advanced help topic</code>  og
+<code>view advanced help popup</code>
+gir brukere adgang til de aktuelle hjelpe-sidene og sprettopp-vinduer.</p>
+
+<p>Hjelpeteksten er lagret som vanlige <code>.html</code>-filer og
+kan, med mindre de beskyttes, bli sett av alle som kjenner deres URL.
+Dersom du ønsker å beskytte dem kan du beskytte dem mot innsyn ved å
+plassere følgende fire linjer i en fil med navn
+<code>.htaccess</code> i katalogen <code>help</code> i prosjektkatalogen:</p>
+
+<pre>
+&lt;Files *\.html&gt;
+Order Allow,Deny
+Deny from all
+&lt;/Files&gt;
+</pre>
+
+<p>Det er nettstedsansvarlig som har ansvaret for at denne typen
+beskyttelse er på plass dersom nettstedet har hjelpe-filer som må
+beskyttes fra direkte innsyn.</p>
+
+<p>Se også denne tråden i prosjektets sporings-kø:
+<a href="https://www.drupal.org/node/1980936">#1980936 Typing complete path to .html help files in module bypasses user permissions</a>.</p>
+
+<h2 id="search">Søk</h2>
+
+<p>For å skru på søk for <strong>Avansert hjelp</strong>, naviger til
+<em>Administrasjon → Oppsett → Søk og metadata → Søkeinnstillinger</em>.
+Rull ned til feltet <em>Aktive søkemoduler</em> og kryss av feltet til venstre for
+“Advanced help”.  Søkefeltet vil deretter dukke opp på toppen av indekssidene for
+<strong>Avansert hjelp</strong>.</p>
+
+<p>Dersom modulen <strong>Search</strong> i core er skrudd på, vil alt
+innhold på hjelpesidene bli indeksert av cron.  Dersom du installerer
+og skrur på nye prosjekter og ønsker å indeksere deres
+hjelpetekster umiddelbart kan du navigere til <em>Administrasjon →
+Rapporter → Status</em> og klikke på lenken for å “kjøre cron
+manuelt.”.</p>
diff --git a/drupal7/sites/all/modules/advanced_help/translations/help/nb/why-advanced-help.html b/drupal7/sites/all/modules/advanced_help/translations/help/nb/why-advanced-help.html
new file mode 100644
index 00000000..72ff3fb4
--- /dev/null
+++ b/drupal7/sites/all/modules/advanced_help/translations/help/nb/why-advanced-help.html
@@ -0,0 +1,44 @@
+The <strong>Advanced help</strong> framework was designed to replace the original Drupal help system, which has several flaws that make it hard to create new help, hard to maintain existing help, and particularly hard to access help.
+
+The primary goal, then, is to increase the accessibility of help, meaning the ability of both the user and the help text author to access the needed tools to use, create, maintain and translate the help.
+
+This system is completely separate from Drupal's <code>hook_help()</code>. In Drupal 6 and 7, it actually co-exists with it; in the future, it is hoped that it will completely replace it allowing <code>hook_help()</code> to be deprecated and removed.
+
+Messages added to the top of a page are not really “help”. Often these messages are an introduction to a form or a short blurb telling a user what to do with a particular page. The problem is, these messages are always there, they are easily ignored, and they come before the actual page. In general, when users are learning, they want to see the page first, then ask questions. The reverse order is much less conducive to actually teaching a user how to use something. By allowing help to be available on request, the system conforms more naturally to how most people work.
+
+<h2>Advanced help er organisert etter emner</h2>
+With the <code>hook_help()</code> method, help text is organized by URL path. This is fine if you have help text describing how to use a particular page or what a particular page does, but ultimately is limiting because manuals and documentation are usually grouped by topic, and those topics are determined by the material itself.
+
+<strong>Advanced help</strong> allows the documentation author to organize topics as he or she sees fit; the only restriction, really, is that each individual chunk of text needs to stand on its own as a discrete topic.
+
+What's more, modules and themes can insert their topics into another's hierarchy. This would allow the Drupal core to create a task based help navigation system which allows modules and themes to insert topics into that navigation fluidly. This allows modules and themes to continue to keep their systems separate, yet integrate into the main system.
+
+<h2>Advanced help-emner er behandlet som HTML i egne filer</h2>
+This separation makes it easy to find and modify. Currently, everything is lumped together in <code>hook_help()</code> in PHP strings that are run through <code>t()</code>, and there is a fair amount of PHP code necessary in this system that actually gets in the way of writing good, explanatory text.
+
+In fact, requiring a documentation author to understand PHP at all is a detriment. The idea that documentation writers need to have PHP development as a skill seriously reduces the number of available contributors. HTML, on the other hand, is a much more common skill, is relatively easy to learn, and the amount of HTML needed to write documentation is only a little bit more than the HTML used in forum posts.
+
+Another benefit to not using PHP is that the files themselves are safe. They are filtered to escape malicious script code that could take over the server or do worse things. This means that these files can be used relatively easily on Drupal.org itself. It also means that descriptions of the project pulled from the project's help pages or README.txt or README.md can be made on the project's Drupal.org without the need to download the module or theme to look at the contents of these files.  This also simplifies maintenance, as the files can be corrected easily by patches, which are updated by tyhe maintainer and pushed to git.
+
+By moving all docymentation into help files, we could, if we wanted, package the Drupal.org handbooks, or a subset of them, directly into a Drupal distribution, or a Drupal add-on, so that Drupal administrators can have Drupal help without needing to visit Drupal.org. This can be valuable in locked down corporate environments and on planes. But more importantly, the handbooks can be made version aware much more easily than the current method on Drupal.org.
+
+The downside to this method is that these books can't easily be made dynamic. Though the use of alter hooks could allow a module or theme to make modifications to the help as needed, doing this could make the help files less useful when you take them out of context.
+
+<h2>Advanced help-filer oversettes som en fullstendig fil</h2>
+It is actually not easy to translate documents as strings, particularly when the language being used is very much unlike English. In fact, when translating a document, the organization of the sentences may change drastically. It is also a burden on the CPU to do this, as you are indexing on very long strings.
+
+Translators have a much better time translating a document as a unit, because of the presence of the entire context.
+
+<h2>Advanced help har sitt eget navigasjons-system</h2>
+By making use of a navigation system specified in a .ini file (which is not PHP code and therefore safe to use), the help can be structured like a book, which is typical of online manuals. This is familiar to users, can be organized (and re-organized) and allows a module or theme to include significantly richer text without burdening the PHP code with having its help loaded unnecessarily.
+
+This book can be navigated hierarchically as well, making it easy to keep related topics together.
+<h2>Advanced help indekseres av nettstedets søkemotor</h2>
+An important goal of this system was to add searchability to the help. By being able to enter keywords into the search box and find relevant topics, we come up with a system that resembles the kind of help that comes with many operating systems. This is very valuable when searching through manuals trying to find out how to do a particular thing.
+
+This search is specific to the help, meaning that the help will not be mixed in with the global node search. This can be considered both an advantage and a disadvantage. For the most part, this help system is meant to provide help to site administrators, and content searches should not find it. The disadvantage, of course, is when you want to use it for end user help, you will not be able to.
+
+<h2>Hjelp for en bestemt side kan hentes inn via sprettopp-vinduer</h2>
+In addition to the manual-like hierarchical navigation, <strong>Advanced help</strong> can also provide context-sensitive additional help through a popup. While popups are controversial, the argument for using them is that when getting help while on a form, <i>a popup will not throw away a user's data.</i> Browsers are not very friendly to input forms if they are not submitted, and navigating away from the form can be dangerous. There are various other solutions to this problem, but each one has a drawback. The drawbacks to popups are well known, but mostly it is the irritation of having new windows. When getting help, though, a popup is usually invited. Help should not interfere with what the operation the user is trying to complete. It differs greatly from the uninvited popup, which are usually ads or popups meant to prevent users from navigating away from a site.
+
+Popups can be added to a page with plain text links or themed icon links.
diff --git a/drupal7/sites/all/modules/ds/ds.api.php b/drupal7/sites/all/modules/ds/ds.api.php
index f957b906..ab2ff3e6 100644
--- a/drupal7/sites/all/modules/ds/ds.api.php
+++ b/drupal7/sites/all/modules/ds/ds.api.php
@@ -238,7 +238,7 @@ function hook_ds_custom_fields_info() {
   );
   $ds_field->properties = array(
     'code' => array(
-      'value' => '<? print "this is a custom field"; ?>',
+      'value' => '<?php print "this is a custom field"; ?>',
       'format' => 'ds_code',
     ),
     'use_token' => 0,
@@ -268,7 +268,9 @@ function hook_ds_vd_info() {
 }
 
 /**
- * Alter fields defined by Display Suite
+ * Alter fields defined by Display Suite.
+ *
+ * This function is called for each entity type.
  *
  * @param $fields
  *   An array with fields which can be altered just before they get cached.
diff --git a/drupal7/sites/all/modules/ds/ds.info b/drupal7/sites/all/modules/ds/ds.info
index 653e8f04..b7fc1c1f 100644
--- a/drupal7/sites/all/modules/ds/ds.info
+++ b/drupal7/sites/all/modules/ds/ds.info
@@ -13,9 +13,9 @@ files[] = tests/ds.views.test
 files[] = tests/ds.forms.test
 configure = admin/structure/ds
 
-; Information added by Drupal.org packaging script on 2015-04-15
-version = "7.x-2.8"
+; Information added by Drupal.org packaging script on 2015-05-21
+version = "7.x-2.10"
 core = "7.x"
 project = "ds"
-datestamp = "1429107782"
+datestamp = "1432195683"
 
diff --git a/drupal7/sites/all/modules/ds/ds.install b/drupal7/sites/all/modules/ds/ds.install
index f758dc90..b65d8e04 100644
--- a/drupal7/sites/all/modules/ds/ds.install
+++ b/drupal7/sites/all/modules/ds/ds.install
@@ -69,7 +69,7 @@ function ds_schema() {
       'view_mode' => array(
         'description' => 'The name of the view_mode.',
         'type' => 'varchar',
-        'length' => 32,
+        'length' => 64,
         'not null' => TRUE,
         'default' => '',
       ),
@@ -131,7 +131,7 @@ function ds_schema() {
       'view_mode' => array(
         'description' => 'The name of the view_mode.',
         'type' => 'varchar',
-        'length' => 32,
+        'length' => 64,
         'not null' => TRUE,
         'default' => '',
       ),
@@ -179,7 +179,7 @@ function ds_schema() {
       'view_mode' => array(
         'description' => 'The machine name of the view mode.',
         'type' => 'varchar',
-        'length' => 32,
+        'length' => 64,
         'not null' => TRUE,
         'default' => '',
       ),
@@ -291,3 +291,37 @@ function ds_update_7202() {
       'default' => '',
     ));
 }
+
+
+/**
+ * Increase the view_mode storage length to 64
+ */
+function ds_update_7203() {
+  db_change_field('ds_field_settings', 'view_mode', 'view_mode',
+    array(
+      'description' => 'The name of the view_mode.',
+      'type' => 'varchar',
+      'length' => 64,
+      'not null' => TRUE,
+      'default' => '',
+    )
+  );
+  db_change_field('ds_layout_settings', 'view_mode', 'view_mode',
+    array(
+      'description' => 'The name of the view_mode.',
+      'type' => 'varchar',
+      'length' => 64,
+      'not null' => TRUE,
+      'default' => '',
+    )
+  );
+  db_change_field('ds_view_modes', 'view_mode', 'view_mode',
+    array(
+      'description' => 'The machine name of the view mode.',
+      'type' => 'varchar',
+      'length' => 64,
+      'not null' => TRUE,
+      'default' => '',
+    )
+  );
+}
diff --git a/drupal7/sites/all/modules/ds/ds.module b/drupal7/sites/all/modules/ds/ds.module
index 76466e74..f744a85a 100644
--- a/drupal7/sites/all/modules/ds/ds.module
+++ b/drupal7/sites/all/modules/ds/ds.module
@@ -302,6 +302,9 @@ function ds_get_fields($entity_type, $cache = TRUE) {
 
   static $static_fields, $fields_cached = array();
   static $loaded = FALSE;
+  // Load the ds file that handles ds call of hook_ds_fields_info, otherwise it
+  // doesn't get loaded
+  module_load_include('inc', 'ds', 'ds.ds_fields_info');
 
   // Get fields from cache.
   if (!$loaded) {
@@ -571,8 +574,13 @@ function ds_field_attach_view_alter(&$build, $context) {
     }
   }
 
+  $disable_css = FALSE;
+  if (!empty($layout['settings']['layout_disable_css'])) {
+    $disable_css = TRUE;
+  }
+
   // Add path to css file for this layout and disable block regions if necessary.
-  if (isset($layout['css']) && !isset($loaded_css[$layout['path'] . '/' . $layout['layout'] . '.css'])) {
+  if (!$disable_css && isset($layout['css']) && !isset($loaded_css[$layout['path'] . '/' . $layout['layout'] . '.css'])) {
     // Register css file.
     $loaded_css[$layout['path'] . '/' . $layout['layout'] . '.css'] = TRUE;
     // Add css file.
@@ -649,11 +657,12 @@ function ds_entity_variables(&$vars) {
         $layout['layout'] = $layout['panels']['theme'];
       }
 
+      $bundle = strtr($vars['elements']['#bundle'], '-', '_');
       $vars['theme_hook_suggestions'][] = $layout['layout'];
       $vars['theme_hook_suggestions'][] = $layout['layout'] . '__' . $vars['elements']['#entity_type'];
       $vars['theme_hook_suggestions'][] = $layout['layout'] . '__' . $vars['elements']['#entity_type'] . '_' . $vars['elements']['#view_mode'];
-      $vars['theme_hook_suggestions'][] = $layout['layout'] . '__' . $vars['elements']['#entity_type'] . '_' . $vars['elements']['#bundle'];
-      $vars['theme_hook_suggestions'][] = $layout['layout'] . '__' . $vars['elements']['#entity_type'] . '_' . $vars['elements']['#bundle'] . '_' . $vars['elements']['#view_mode'];
+      $vars['theme_hook_suggestions'][] = $layout['layout'] . '__' . $vars['elements']['#entity_type'] . '_' . $bundle;
+      $vars['theme_hook_suggestions'][] = $layout['layout'] . '__' . $vars['elements']['#entity_type'] . '_' . $bundle . '_' . $vars['elements']['#view_mode'];
     }
 
     // If the layout has wrapper class lets add it.
@@ -686,7 +695,7 @@ function ds_entity_variables(&$vars) {
         $vars[$region_name . '_classes'] = !empty($layout['settings']['classes'][$region_name]) ? ' ' . implode(' ', $layout['settings']['classes'][$region_name]) : '';
 
         // Token support for region classes.
-        if (module_exists('token')) {
+        if (module_exists('token') && isset($var[$object])) {
           $vars[$region_name . '_classes'] = token_replace($vars[$region_name . '_classes'], array($object => $vars[$object]), array('clear' => TRUE, 'sanitize' => TRUE));
         }
       }
@@ -705,7 +714,12 @@ function ds_entity_variables(&$vars) {
     // Add layout attributes if any.
     $vars['layout_attributes'] = '';
     if (!empty($layout['settings']['layout_attributes'])) {
-      $vars['layout_attributes'] .= ' ' . $layout['settings']['layout_attributes'];
+      if (isset($vars[$object])) {
+        $vars['layout_attributes'] .= ' ' . token_replace($layout['settings']['layout_attributes'], array($object => $vars[$object]), array('clear' => TRUE, 'sanitize' => TRUE));
+      }
+      else {
+        $vars['layout_attributes'] .= ' ' . $layout['settings']['layout_attributes'];
+      }
     }
     // Merge in other attributes which were passed to the template.
     if (!empty($layout['settings']['layout_attributes_merge'])) {
@@ -718,7 +732,7 @@ function ds_entity_variables(&$vars) {
     }
 
     // Token support for layout classes.
-    if (module_exists('token')) {
+    if (module_exists('token') && isset($var[$object])) {
       foreach ($vars['classes_array'] as &$class) {
         $class = token_replace($class, array($object => $vars[$object]), array('clear' => TRUE, 'sanitize' => TRUE));
       }
@@ -789,16 +803,17 @@ function ds_create_entity_context($entity_type, $entity, &$contexts, $context_ar
  */
 function ds_render_code_field($field) {
   if (isset($field['properties']['code'])) {
+    $value = $field['properties']['code']['value'];
+    // Token support - check on token property so we don't run every single field through token.
+    if (isset($field['properties']['use_token']) && $field['properties']['use_token']) {
+      $value = token_replace($value, array($field['entity_type'] => $field['entity']), array('clear' => TRUE));
+    }
     $format = (isset($field['properties']['code']['format'])) ? $field['properties']['code']['format'] : 'plain_text';
     if ($format == 'ds_code' && module_exists('ds_format')) {
-      $value = ds_format_php_eval($field['properties']['code']['value'], $field['entity'], isset($field['build']) ? $field['build'] : array());
+      $value = ds_format_php_eval($value, $field['entity'], isset($field['build']) ? $field['build'] : array());
     }
     else {
-      $value = check_markup($field['properties']['code']['value'], $format);
-    }
-    // Token support - check on token property so we don't run every single field through token.
-    if (isset($field['properties']['use_token']) && $field['properties']['use_token'] == TRUE) {
-      $value = token_replace($value, array($field['entity_type'] => $field['entity']), array('clear' => TRUE));
+      $value = check_markup($value, $format);
     }
     return $value;
   }
@@ -819,7 +834,12 @@ function ds_render_ctools_field($field) {
     // 3) embed a view with the 2 taxonomies as fields.
     if (isset($field['formatter_settings']['load_terms']) && $field['formatter_settings']['load_terms']) {
       static $terms_loaded = array();
-      $language = $field['entity']->language;
+      if (isset($field['entity']->language)) {
+        $language = $field['entity']->language;
+      }
+      else {
+        $language = LANGUAGE_NONE;
+      }
       $instances = field_info_instances($field['entity_type'], $field['bundle']);
       foreach ($instances as $key => $instance) {
         $info = field_info_field($key);
@@ -838,7 +858,7 @@ function ds_render_ctools_field($field) {
                   // This term is missing in the database.
                   continue;
                 }
-                $terms_loaded[$item['tid']];
+                $terms_loaded[$item['tid']] = $term;
               }
               $field['entity']->{$key}[$language][$tkey]['taxonomy_term'] = $terms_loaded[$item['tid']];
             }
@@ -870,7 +890,7 @@ function ds_render_ctools_field($field) {
       $content = '';
       if ($show_title) {
         if (empty($title_wrapper)) $title_wrapper = 'div';
-        $content .= '<' . check_plain($title_wrapper) . '>' . $data->title . '</' . check_plain($title_wrapper) . '>';
+        $content .= '<' . check_plain($title_wrapper) . ' class="title">' . $data->title . '</' . check_plain($title_wrapper) . '>';
       }
       if (is_array($data->content)) {
         $content .= drupal_render($data->content);
@@ -1227,6 +1247,9 @@ function ds_field_formatter_view($entity_type, $entity, $field, $instance, $lang
       }
       else {
         $term = taxonomy_term_load($item['tid']);
+        if (module_exists('i18n_taxonomy')) {
+          $term = i18n_taxonomy_localize_terms($term);
+        }
         if (!is_object($term)) {
           // This term is missing in the database.
           continue;
@@ -1259,6 +1282,9 @@ function ds_field_formatter_view($entity_type, $entity, $field, $instance, $lang
       }
       else {
         $term = taxonomy_term_load($item['tid']);
+        if (module_exists('i18n_taxonomy')) {
+          $term = i18n_taxonomy_localize_terms($term);
+        }
         if (!is_object($term)) {
           // This term is missing in the database.
           continue;
@@ -1269,7 +1295,7 @@ function ds_field_formatter_view($entity_type, $entity, $field, $instance, $lang
         $item_display = check_plain($term->name);
         if ($linked) {
           $uri = entity_uri('taxonomy_term', $term);
-          $item_display = l($term->name, $uri['path']);
+          $item_display = l($term->name, $uri['path'], $uri['options']);
         }
       }
       $terms[] = $item_display;
diff --git a/drupal7/sites/all/modules/ds/includes/ds.displays.inc b/drupal7/sites/all/modules/ds/includes/ds.displays.inc
index 9a855d5e..da0ff86c 100644
--- a/drupal7/sites/all/modules/ds/includes/ds.displays.inc
+++ b/drupal7/sites/all/modules/ds/includes/ds.displays.inc
@@ -144,7 +144,7 @@ function ds_emergency_region_to_block_submit($form, &$form_state) {
     $region_blocks = variable_get('ds_extras_region_blocks', array());
     $remove = $form_state['values']['remove_block_region'];
     foreach ($remove as $key => $value) {
-      if ($key === $value) {
+      if ($value != 0 && $key == $value) {
         $variable_set = TRUE;
         if (module_exists('block')) {
           db_delete('block')
diff --git a/drupal7/sites/all/modules/ds/includes/ds.field_ui.inc b/drupal7/sites/all/modules/ds/includes/ds.field_ui.inc
index 8dc4a903..a335d056 100644
--- a/drupal7/sites/all/modules/ds/includes/ds.field_ui.inc
+++ b/drupal7/sites/all/modules/ds/includes/ds.field_ui.inc
@@ -770,6 +770,11 @@ function ds_field_ui_layouts_save($form, &$form_state) {
     $record->settings['layout_link_attribute'] = $form_state['values']['additional_settings']['region_wrapper']['layout_link_attribute'];
     $record->settings['layout_link_custom'] = $form_state['values']['additional_settings']['region_wrapper']['layout_link_custom'];
 
+    // Additional settings
+    if (isset($form_state['values']['additional_settings']['preview']['info']['settings']['disable_css'])) {
+      $record->settings['layout_disable_css'] = $form_state['values']['additional_settings']['preview']['info']['settings']['disable_css'];
+    }
+
     $record->settings = $record->settings;
 
     // Let other modules alter the layout settings.
@@ -1895,7 +1900,7 @@ function _ds_field_ui_table_layouts_preview(&$form, &$form_state, $ds_layouts, $
       }
 
       ksort($suggestions_array);
-      $suggestions = '<ul><li>' . implode('.tpl.php</li><li>', $suggestions_array) . '.tpl.php</li></ul>';
+      $suggestions .= '<ul><li>' . implode('.tpl.php</li><li>', $suggestions_array) . '.tpl.php</li></ul>';
     }
     else {
       $suggestions = '';
@@ -1916,9 +1921,31 @@ function _ds_field_ui_table_layouts_preview(&$form, &$form_state, $ds_layouts, $
       $form['additional_settings']['ds_layouts']['preview'] ['image'] = array(
         '#markup' => '<div class="ds-layout-preview-image"><img src="' . base_path() . $image . '"/></div>',
       );
-      $form['additional_settings']['ds_layouts']['preview'] ['suggestions'] = array(
-        '#markup' => '<div class="ds-layout-preview-suggestion"><p>' . $selected . '</p><p>' . t('!suggestions', array('!suggestions' => strtr($suggestions, '_', '-'))) . '</p></div>',
+      $form['additional_settings']['ds_layouts']['preview']['info'] = array(
+        '#type' => 'container',
+        '#attributes' => array(
+          'class' => array('ds-layout-preview-suggestion'),
+        ),
+      );
+      $form['additional_settings']['ds_layouts']['preview']['info']['suggestions'] = array(
+        '#markup' => '<p>' . $selected . '</p><p>' . t('!suggestions', array('!suggestions' => strtr($suggestions, '_', '-'))) . '</p>',
       );
+
+      if (!empty($chosen_layout['css'])) {
+        $disable_css = FALSE;
+        if (isset($layout->settings['layout_disable_css'])) {
+          $disable_css = $layout->settings['layout_disable_css'];
+        }
+        if (isset($form_state['values']) && $disable_css !== $form_state['values']['additional_settings']['ds_layouts']['preview']['info']['settings']['disable_css']) {
+          $disable_css = $form_state['values']['additional_settings']['ds_layouts']['preview']['info']['settings']['disable_css'];
+        }
+
+        $form['additional_settings']['ds_layouts']['preview']['info']['settings']['disable_css'] = array(
+          '#type' => 'checkbox',
+          '#title' => t('Disable layout CSS styles'),
+          '#default_value' => $disable_css,
+        );
+      }
     }
 
     if (isset($form_state['values']['additional_settings']['layout']) && (!isset($layout->layout) || $form_state['values']['additional_settings']['layout'] != $layout->layout)) {
@@ -1976,9 +2003,30 @@ function ds_field_ui_change_layout_validate(&$form, &$form_state) {
  * Form submission handler for _ds_field_ui_table_layouts_preview().
  */
 function ds_field_ui_change_layout_submit($form, &$form_state) {
+  $values = $form_state['values'];
+  if (isset($values['additional_settings']['preview']['info']['settings']['disable_css'])) {
+    $disable_css = $values['additional_settings']['preview']['info']['settings']['disable_css'];
+  }
+  else {
+    $disable_css = FALSE;
+  }
+
+  $record = db_select('ds_layout_settings')
+    ->fields('ds_layout_settings')
+    ->condition('entity_type', $values['ds_entity_type'])
+    ->condition('bundle', $values['ds_bundle'])
+    ->condition('view_mode', $values['ds_view_mode'])
+    ->execute()
+    ->fetchObject();
+
+  $record->settings = unserialize($record->settings);
+  $record->settings['layout_disable_css'] = $disable_css;
+
+  drupal_write_record('ds_layout_settings', $record, array('id'));
+
   unset($_GET['destination']);
   global $base_url;
-  $url = $base_url . '/' . $form_state['values']['layout_changed_url'];
+  $url = $base_url . '/' . $values['layout_changed_url'];
   $form_state['redirect'] = $url;
 }
 
diff --git a/drupal7/sites/all/modules/ds/modules/ds_devel/ds_devel.info b/drupal7/sites/all/modules/ds/modules/ds_devel/ds_devel.info
index f590ffef..a69e07f5 100644
--- a/drupal7/sites/all/modules/ds/modules/ds_devel/ds_devel.info
+++ b/drupal7/sites/all/modules/ds/modules/ds_devel/ds_devel.info
@@ -5,9 +5,9 @@ package = "Display Suite"
 dependencies[] = ds
 dependencies[] = devel
 
-; Information added by Drupal.org packaging script on 2015-04-15
-version = "7.x-2.8"
+; Information added by Drupal.org packaging script on 2015-05-21
+version = "7.x-2.10"
 core = "7.x"
 project = "ds"
-datestamp = "1429107782"
+datestamp = "1432195683"
 
diff --git a/drupal7/sites/all/modules/ds/modules/ds_extras/ds_extras.info b/drupal7/sites/all/modules/ds/modules/ds_extras/ds_extras.info
index 5cee87ab..190bde1d 100644
--- a/drupal7/sites/all/modules/ds/modules/ds_extras/ds_extras.info
+++ b/drupal7/sites/all/modules/ds/modules/ds_extras/ds_extras.info
@@ -5,9 +5,9 @@ package = "Display Suite"
 dependencies[] = ds
 configure = admin/structure/ds/list/extras
 
-; Information added by Drupal.org packaging script on 2015-04-15
-version = "7.x-2.8"
+; Information added by Drupal.org packaging script on 2015-05-21
+version = "7.x-2.10"
 core = "7.x"
 project = "ds"
-datestamp = "1429107782"
+datestamp = "1432195683"
 
diff --git a/drupal7/sites/all/modules/ds/modules/ds_extras/ds_extras.module b/drupal7/sites/all/modules/ds/modules/ds_extras/ds_extras.module
index 12d7800a..2940ff12 100644
--- a/drupal7/sites/all/modules/ds/modules/ds_extras/ds_extras.module
+++ b/drupal7/sites/all/modules/ds/modules/ds_extras/ds_extras.module
@@ -335,36 +335,62 @@ function ds_extras_switch_view_mode_field($field) {
   return $output;
 }
 
+/**
+ * Implements hook_form_FORM_ID_alter().
+ */
+function ds_extras_form_node_type_form_alter(&$form, $form_state, $form_id) {
+  $node_type = $form['#node_type']->type;
+
+  // Get the view modes.
+  $options = ds_extras_get_bundle_view_modes('node', $node_type);
+
+  // Only fire if we have more than 1 option.
+  if (count($options) > 1) {
+    if (!isset($form['ds_extras'])) {
+      $form['ds_extras'] = array(
+        '#type' => 'fieldset',
+        '#title' => t('Display Suite: Extras'), // There's already a 'Display settings' fieldset
+        '#collapsible' => TRUE,
+        '#collapsed' => TRUE,
+        '#group' => 'additional_settings',
+        '#weight' => 100,
+      );
+    }
+
+    $form['ds_extras']['ds_extras_view_modes'] = array(
+      '#type' => 'checkboxes',
+      '#title' => t('View modes'),
+      '#options' => $options,
+      '#default_value' => variable_get('ds_extras_view_modes_' . $node_type, array_keys($options)),
+      '#description' => t('Select which view modes will be available to switch to on node edit forms.'),
+    );
+  }
+}
+
 /**
  * Implements hook_form_FORM_ID_alter().
  */
 function ds_extras_form_node_form_alter(&$form, $form_state, $form_id) {
+  $node = $form['#node'];
 
   // Switch full view mode.
-  if (user_access('ds_switch ' . $form['#node']->type)) {
-
-    $view_mode_settings = field_view_mode_settings('node', $form['#node']->type);
+  if (user_access('ds_switch ' . $node->type)) {
 
     // Get the view modes.
-    $ds_vm = ds_entity_view_modes('node');
+    $view_modes = ds_extras_get_bundle_view_modes('node', $node->type);
+    $enabled_vm = variable_get('ds_extras_view_modes_' . $node->type, array_keys($view_modes));
     $layouts = array();
-    $options = array('' => t('Default'));
-    foreach ($ds_vm as $key => $item) {
-      $overriden = (!empty($view_mode_settings[$key]['custom_settings']) ? TRUE : FALSE);
-      if ($overriden) {
-        $layout = ds_get_layout('node', $form['#node']->type, $key, FALSE);
+    $options = array();
+    foreach ($view_modes as $key => $label) {
+      if (in_array($key, $enabled_vm)) {
+        $layout = ds_get_layout('node', $node->type, $key, FALSE);
         $layouts[$key] = $layout;
-        $options[$key] = $item['label'];
+        $options[$key] = $label;
       }
     }
 
-    // Add default layout settings
-    $layouts[''] = ds_get_layout('node', $form['#node']->type, 'default', FALSE);
-
     // Only fire if we have more than 1 option.
     if (count($options) > 1) {
-      $node = $form['#node'];
-
       if (!isset($form['ds_extras'])) {
         $form['ds_extras'] = array(
           '#type' => 'fieldset',
@@ -380,7 +406,7 @@ function ds_extras_form_node_form_alter(&$form, $form_state, $form_id) {
         '#type' => 'select',
         '#title' => t('View mode'),
         '#options' => $options,
-        '#default_value' => isset($node->ds_switch) ? $node->ds_switch : '',
+        '#default_value' => isset($node->ds_switch) ? $node->ds_switch : 'default',
         '#description' => t('Switch to a different view mode to display the full page view of this node.'),
         '#weight' => -1,
         '#ajax' => array(
@@ -395,13 +421,19 @@ function ds_extras_form_node_form_alter(&$form, $form_state, $form_id) {
         '#suffix' => '</div>',
       );
 
-      $mode = isset($form_state['input']['ds_switch']) ? $form_state['input']['ds_switch'] : (isset($node->ds_switch) ? $node->ds_switch : '');
-      $chosen_layout = $layouts[$mode];
-
       $fallback_image = drupal_get_path('module', 'ds') . '/images/preview.png';
-      $image = (isset($chosen_layout['image']) && !empty($chosen_layout['image'])) ? $chosen_layout['path'] . '/' . $chosen_layout['layout'] . '.png' : $fallback_image;
-      if (isset($chosen_layout['panels']) && !empty($chosen_layout['panels']['icon'])) {
-        $image = $chosen_layout['panels']['path'] . '/' . $chosen_layout['panels']['icon'];
+      $mode = isset($form_state['input']['ds_switch']) ? $form_state['input']['ds_switch'] : (isset($node->ds_switch) ? $node->ds_switch : 'default');
+      if (isset($layouts[$mode])) {
+        $chosen_layout = $layouts[$mode];
+        $chosen_layout = (isset($layouts[$mode])) ? $layouts[$mode] : 'default';
+
+        $image = (isset($chosen_layout['image']) && !empty($chosen_layout['image'])) ? $chosen_layout['path'] . '/' . $chosen_layout['layout'] . '.png' : $fallback_image;
+        if (isset($chosen_layout['panels']) && !empty($chosen_layout['panels']['icon'])) {
+          $image = $chosen_layout['panels']['path'] . '/' . $chosen_layout['panels']['icon'];
+        }
+      }
+      else {
+        $image = $fallback_image;
       }
 
       $form['ds_extras']['preview']['image'] = array(
@@ -411,6 +443,25 @@ function ds_extras_form_node_form_alter(&$form, $form_state, $form_id) {
   }
 }
 
+/**
+ * Get view modes for an entity bundle.
+ */
+function ds_extras_get_bundle_view_modes($type, $bundle) {
+  $view_modes = array('default' => t('Default'));
+
+  $view_mode_settings = field_view_mode_settings($type, $bundle);
+  $ds_vm = ds_entity_view_modes($type);
+
+  foreach ($ds_vm as $key => $item) {
+    $overriden = (!empty($view_mode_settings[$key]['custom_settings']) ? TRUE : FALSE);
+    if ($overriden) {
+      $view_modes[$key] = $item['label'];
+    }
+  }
+
+  return $view_modes;
+}
+
 /**
  * Ajax callback for _ds_field_ui_table_layouts_preview().
  */
@@ -606,11 +657,13 @@ function ds_extras_entity_view_alter(&$build, $entity_type) {
       $contexts = array();
       $id = (arg(0) == 'taxonomy') ? arg(2) : arg(1);
       $entity = entity_load($entity_type, array($id));
-      ds_create_entity_context($entity_type, $entity[$id], $contexts);
-      $title = $layout['settings']['page_option_title'];
-      $title = filter_xss_admin(ctools_context_keyword_substitute($title, array(), $contexts));
-      $page_title['title'] = $title;
-      $page_title['head_title'] = $title;
+      if (isset($entity[$id])) {
+        ds_create_entity_context($entity_type, $entity[$id], $contexts);
+        $title = $layout['settings']['page_option_title'];
+        $title = filter_xss_admin(ctools_context_keyword_substitute($title, array(), $contexts));
+        $page_title['title'] = t($title);
+        $page_title['head_title'] = t($title);
+      }
     }
   }
 
@@ -771,6 +824,8 @@ function theme_ds_field_expert($variables) {
   }
 
   // Render items.
+  $item_count = count($variables['items']);
+  $item_index = 0;
   foreach ($variables['items'] as $delta => $item) {
     // Field item wrapper.
     if (isset($config['fi'])) {
@@ -781,6 +836,12 @@ function theme_ds_field_expert($variables) {
       if (!empty($config['fi-cl'])) {
         $class[] = $config['fi-cl'];
       }
+      if(!empty($config['fi-first-last']) && $item_index == 0) {
+        $class[] = "first";
+      }
+      if(!empty($config['fi-first-last']) && $item_index == $item_count - 1) {
+        $class[] = "last";
+      }
       $class = !empty($class) ? ' class="'. token_replace(implode(' ', $class), array($variables['element']['#entity_type'] => $variables['element']['#object']), array('clear' => TRUE)) .'"' : '';
       $attributes = array();
       if (!empty($config['fi-at'])) {
@@ -800,6 +861,7 @@ function theme_ds_field_expert($variables) {
     if (isset($config['fi'])) {
       $output .= '</' . $config['fi-el'] . '>';
     }
+    ++$item_index;
   }
 
   // Closing field items wrapper.
@@ -934,6 +996,7 @@ function ds_extras_ds_field_settings_alter(&$field_settings, $form, &$form_state
           // Odd even class.
           if ($wrapper_key == 'fi') {
             $field_settings[$key]['formatter_settings']['ft'][$wrapper_key . '-odd-even'] = !(empty($values[$wrapper_key . '-odd-even'])) ? TRUE : FALSE;
+            $field_settings[$key]['formatter_settings']['ft'][$wrapper_key . '-first-last'] = !(empty($values[$wrapper_key . '-first-last'])) ? TRUE : FALSE;
           }
         }
       }
@@ -1036,7 +1099,7 @@ function ds_extras_preprocess_field(&$variables) {
 
   foreach ($fields as $field) {
     if (isset($variables['ds-config'][$field])) {
-      $variables['ds-config'][$field] = filter_xss($variables['ds-config'][$field]);
+      $variables['ds-config'][$field] = filter_xss_admin($variables['ds-config'][$field]);
     }
   }
 }
diff --git a/drupal7/sites/all/modules/ds/modules/ds_extras/includes/ds_extras.admin.inc b/drupal7/sites/all/modules/ds/modules/ds_extras/includes/ds_extras.admin.inc
index 0a9cb418..df80fdbb 100644
--- a/drupal7/sites/all/modules/ds/modules/ds_extras/includes/ds_extras.admin.inc
+++ b/drupal7/sites/all/modules/ds/modules/ds_extras/includes/ds_extras.admin.inc
@@ -142,7 +142,7 @@ function ds_extras_settings($form) {
   $form['additional_settings']['fs4']['ds_extras_switch_field'] = array(
     '#type' => 'checkbox',
     '#title' => t('View mode switcher'),
-    '#description' => t('Adds a field with links to switch view modes inline with Ajax. Only works for nodes at this time.'),
+    '#description' => t('Adds a field with links to switch view modes inline with Ajax. Only works for nodes at this time. It does not work in combination with the reset layout.'),
     '#default_value' => variable_get('ds_extras_switch_field', FALSE),
   );
 
@@ -415,6 +415,16 @@ function ds_extras_field_template_settings_form(array &$form, array &$form_state
           ),
         ),
       );
+      $form['ft']['fi-first-last'] = array(
+        '#type' => 'checkbox',
+        '#title' => t('Add first/last classes'),
+        '#default_value' => isset($field_settings['fi-first-last']) ? $field_settings['fi-first-last'] : FALSE,
+        '#states' => array(
+          'visible' => array(
+            ':input[name$="[ft][' . $wrapper_key . ']"]' => array('checked' => TRUE),
+          ),
+        ),
+      );
     }
     if ($wrapper_key != 'lbw') {
       $form['ft'][$wrapper_key . '-def-at'] = array(
@@ -563,7 +573,7 @@ function ds_extras_block_submit($form, &$form_state) {
     $region_blocks = variable_get('ds_extras_region_blocks', array());
     $remove = $form_state['values']['additional_settings']['region_to_block']['remove_block_region'];
     foreach ($remove as $key => $value) {
-      if ($key === $value) {
+      if ($value != 0 && $key == $value) {
         $variable_set = TRUE;
         if (module_exists('block')) {
           db_delete('block')
diff --git a/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.info b/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.info
index e753a6dc..e3c51d28 100644
--- a/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.info
+++ b/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.info
@@ -5,9 +5,9 @@ package = "Display Suite"
 dependencies[] = ds
 configure = admin/structure/ds/list/extras
 
-; Information added by Drupal.org packaging script on 2015-04-15
-version = "7.x-2.8"
+; Information added by Drupal.org packaging script on 2015-05-21
+version = "7.x-2.10"
 core = "7.x"
 project = "ds"
-datestamp = "1429107782"
+datestamp = "1432195683"
 
diff --git a/drupal7/sites/all/modules/ds/modules/ds_forms/ds_forms.info b/drupal7/sites/all/modules/ds/modules/ds_forms/ds_forms.info
index 6ccede9c..265b8e74 100644
--- a/drupal7/sites/all/modules/ds/modules/ds_forms/ds_forms.info
+++ b/drupal7/sites/all/modules/ds/modules/ds_forms/ds_forms.info
@@ -4,9 +4,9 @@ core = "7.x"
 package = "Display Suite"
 dependencies[] = ds
 
-; Information added by Drupal.org packaging script on 2015-04-15
-version = "7.x-2.8"
+; Information added by Drupal.org packaging script on 2015-05-21
+version = "7.x-2.10"
 core = "7.x"
 project = "ds"
-datestamp = "1429107782"
+datestamp = "1432195683"
 
diff --git a/drupal7/sites/all/modules/ds/modules/ds_forms/js/ds_forms.admin.js b/drupal7/sites/all/modules/ds/modules/ds_forms/js/ds_forms.admin.js
index e2ce468c..02def706 100644
--- a/drupal7/sites/all/modules/ds/modules/ds_forms/js/ds_forms.admin.js
+++ b/drupal7/sites/all/modules/ds/modules/ds_forms/js/ds_forms.admin.js
@@ -58,7 +58,7 @@ Drupal.fieldUIFieldOverview.ds.prototype = {
   regionChange: function (region, recurse) {
 	  	  	  
      // Replace dashes with underscores.
-     region = region.replace('-', '_');
+     region = region.replace(/-/g, '_');
 
      // Set the region of the select list.
      this.$regionSelect.val(region);
@@ -76,4 +76,4 @@ Drupal.fieldUIFieldOverview.ds.prototype = {
   }
 };
 
-})(jQuery);
\ No newline at end of file
+})(jQuery);
diff --git a/drupal7/sites/all/modules/ds/modules/ds_search/ds_search.info b/drupal7/sites/all/modules/ds/modules/ds_search/ds_search.info
index 56f20263..c58b15ce 100644
--- a/drupal7/sites/all/modules/ds/modules/ds_search/ds_search.info
+++ b/drupal7/sites/all/modules/ds/modules/ds_search/ds_search.info
@@ -5,9 +5,9 @@ package = "Display Suite"
 dependencies[] = ds
 configure = admin/structure/ds/list/search
 
-; Information added by Drupal.org packaging script on 2015-04-15
-version = "7.x-2.8"
+; Information added by Drupal.org packaging script on 2015-05-21
+version = "7.x-2.10"
 core = "7.x"
 project = "ds"
-datestamp = "1429107782"
+datestamp = "1432195683"
 
diff --git a/drupal7/sites/all/modules/ds/modules/ds_search/ds_search.module b/drupal7/sites/all/modules/ds/modules/ds_search/ds_search.module
index 9f4ff900..fdabe5a8 100644
--- a/drupal7/sites/all/modules/ds/modules/ds_search/ds_search.module
+++ b/drupal7/sites/all/modules/ds/modules/ds_search/ds_search.module
@@ -54,6 +54,10 @@ function ds_search_theme() {
  * Search page theming.
  */
 function theme_ds_search_page($build) {
+  // fix for Drupal 7.33+
+  if(isset($build['theme_hook_original'])) {
+    unset($build['theme_hook_original']);
+  }
 
   // Check on empty search results.
   if (empty($build['search_results'])) {
@@ -481,7 +485,7 @@ function node_ds_search_execute($keys = NULL, $conditions = NULL) {
   // Load results.
   $find = $query->execute();
   $results = array();
-  foreach ($find as $item) {
+  foreach ((array) $find as $item) {
     $node = node_load($item->sid);
     $node->entity_type = 'node';
     $node->entity_id = $item->sid;
diff --git a/drupal7/sites/all/modules/ds/modules/ds_ui/ds_ui.info b/drupal7/sites/all/modules/ds/modules/ds_ui/ds_ui.info
index 46fec3cf..48df9477 100644
--- a/drupal7/sites/all/modules/ds/modules/ds_ui/ds_ui.info
+++ b/drupal7/sites/all/modules/ds/modules/ds_ui/ds_ui.info
@@ -4,9 +4,9 @@ core = "7.x"
 package = "Display Suite"
 dependencies[] = ds
 
-; Information added by Drupal.org packaging script on 2015-04-15
-version = "7.x-2.8"
+; Information added by Drupal.org packaging script on 2015-05-21
+version = "7.x-2.10"
 core = "7.x"
 project = "ds"
-datestamp = "1429107782"
+datestamp = "1432195683"
 
diff --git a/drupal7/sites/all/modules/ds/tests/ds.entities.test b/drupal7/sites/all/modules/ds/tests/ds.entities.test
index 4ef65b86..a5540cff 100644
--- a/drupal7/sites/all/modules/ds/tests/ds.entities.test
+++ b/drupal7/sites/all/modules/ds/tests/ds.entities.test
@@ -521,6 +521,7 @@ class dsNodeTests extends dsBaseTest {
       'fields[body][settings_edit_form][settings][ft][fi-el]' => 'span',
       'fields[body][settings_edit_form][settings][ft][fi-cl]' => 'fi-class',
       'fields[body][settings_edit_form][settings][ft][fi-odd-even]' => '1',
+      'fields[body][settings_edit_form][settings][ft][fi-first-last]' => '1',
     );
     $this->dsEditFormatterSettings($edit);
     $this->drupalGet('node/' . $node->nid);
@@ -537,6 +538,7 @@ class dsNodeTests extends dsBaseTest {
       'fields[body][settings_edit_form][settings][ft][fi-el]' => 'div',
       'fields[body][settings_edit_form][settings][ft][fi-cl]' => 'fi-class',
       'fields[body][settings_edit_form][settings][ft][fi-odd-even]' => '1',
+      'fields[body][settings_edit_form][settings][ft][fi-first-last]' => '1',
     );
     $this->dsEditFormatterSettings($edit);
     $this->drupalGet('node/' . $node->nid);
@@ -555,6 +557,7 @@ class dsNodeTests extends dsBaseTest {
       'fields[body][settings_edit_form][settings][ft][fi-el]' => 'span',
       'fields[body][settings_edit_form][settings][ft][fi-cl]' => 'fi-class',
       'fields[body][settings_edit_form][settings][ft][fi-odd-even]' => '1',
+      'fields[body][settings_edit_form][settings][ft][fi-first-last]' => '1',
     );
     $this->dsEditFormatterSettings($edit);
     $this->drupalGet('node/' . $node->nid);
diff --git a/drupal7/sites/all/modules/ds/tests/ds_exportables_test/ds_exportables_test.info b/drupal7/sites/all/modules/ds/tests/ds_exportables_test/ds_exportables_test.info
index 4d2da82d..11b8500d 100644
--- a/drupal7/sites/all/modules/ds/tests/ds_exportables_test/ds_exportables_test.info
+++ b/drupal7/sites/all/modules/ds/tests/ds_exportables_test/ds_exportables_test.info
@@ -4,9 +4,9 @@ package = "Display Suite"
 core = 7.x
 hidden = TRUE
 
-; Information added by Drupal.org packaging script on 2015-04-15
-version = "7.x-2.8"
+; Information added by Drupal.org packaging script on 2015-05-21
+version = "7.x-2.10"
 core = "7.x"
 project = "ds"
-datestamp = "1429107782"
+datestamp = "1432195683"
 
diff --git a/drupal7/sites/all/modules/ds/tests/ds_test.info b/drupal7/sites/all/modules/ds/tests/ds_test.info
index 176350bd..510dfcd3 100644
--- a/drupal7/sites/all/modules/ds/tests/ds_test.info
+++ b/drupal7/sites/all/modules/ds/tests/ds_test.info
@@ -5,9 +5,9 @@ package = "Display Suite"
 dependencies[] = ds_extras
 hidden = TRUE
 
-; Information added by Drupal.org packaging script on 2015-04-15
-version = "7.x-2.8"
+; Information added by Drupal.org packaging script on 2015-05-21
+version = "7.x-2.10"
 core = "7.x"
 project = "ds"
-datestamp = "1429107782"
+datestamp = "1432195683"
 
diff --git a/drupal7/sites/all/modules/ds/views/views_plugin_ds_fields_view.inc b/drupal7/sites/all/modules/ds/views/views_plugin_ds_fields_view.inc
index c570e91a..d457f81e 100644
--- a/drupal7/sites/all/modules/ds/views/views_plugin_ds_fields_view.inc
+++ b/drupal7/sites/all/modules/ds/views/views_plugin_ds_fields_view.inc
@@ -41,6 +41,7 @@ class views_plugin_ds_fields_view extends views_plugin_row {
       'commerce_product' => 'product_id',
       'commerce_line_item' => 'line_item_id',
       'civicrm_event' => 'id',
+      'field_collection_item' => 'item_id',
     );
     return isset($base_table_fields[$this->base_table]) ? $base_table_fields[$this->base_table] : 'nid';
   }
