From 4258b860e5a7ed8b93296e0c7e4fea3e74a9f006 Mon Sep 17 00:00:00 2001
From: Earl Miles <merlin@logrus.com>
Date: Sun, 12 Apr 2009 04:39:20 +0000
Subject: [PATCH] Port block content from Panels, reorganizing them so that the
 categories are more what the content is about than where it is from.

---
 includes/content.inc                          |  43 +-
 plugins/content_types/block/block.inc         | 367 ++++++++++++++++++
 .../block/icon_contrib_block.png              | Bin 0 -> 574 bytes
 .../block/icon_contrib_block_empty.png        | Bin 0 -> 450 bytes
 .../content_types/block/icon_contrib_menu.png | Bin 0 -> 552 bytes
 .../content_types/block/icon_contrib_page.png | Bin 0 -> 460 bytes
 .../block/icon_core_activeforumtopics.png     | Bin 0 -> 603 bytes
 .../block/icon_core_authorinformation.png     | Bin 0 -> 606 bytes
 .../content_types/block/icon_core_block.png   | Bin 0 -> 568 bytes
 .../block/icon_core_block_empty.png           | Bin 0 -> 450 bytes
 .../block/icon_core_block_menu.png            | Bin 0 -> 552 bytes
 .../block/icon_core_booknavigation.png        | Bin 0 -> 626 bytes
 .../block/icon_core_languageswitcher.png      | Bin 0 -> 601 bytes
 .../block/icon_core_navigation.png            | Bin 0 -> 818 bytes
 .../block/icon_core_newforumtopics.png        | Bin 0 -> 604 bytes
 .../content_types/block/icon_core_page.png    | Bin 0 -> 460 bytes
 .../block/icon_core_popularcontent.png        | Bin 0 -> 604 bytes
 .../block/icon_core_primarylinks.png          | Bin 0 -> 892 bytes
 .../block/icon_core_recentblogposts.png       | Bin 0 -> 681 bytes
 .../block/icon_core_recentcomments.png        | Bin 0 -> 662 bytes
 .../block/icon_core_recentpoll.png            | Bin 0 -> 608 bytes
 .../block/icon_core_searchform.png            | Bin 0 -> 717 bytes
 .../block/icon_core_syndicate.png             | Bin 0 -> 803 bytes
 .../block/icon_core_userlogin.png             | Bin 0 -> 601 bytes
 .../content_types/block/icon_core_whosnew.png | Bin 0 -> 732 bytes
 .../block/icon_core_whosonline.png            | Bin 0 -> 744 bytes
 plugins/content_types/custom/custom.inc       |  11 +
 27 files changed, 406 insertions(+), 15 deletions(-)
 create mode 100644 plugins/content_types/block/block.inc
 create mode 100644 plugins/content_types/block/icon_contrib_block.png
 create mode 100644 plugins/content_types/block/icon_contrib_block_empty.png
 create mode 100644 plugins/content_types/block/icon_contrib_menu.png
 create mode 100644 plugins/content_types/block/icon_contrib_page.png
 create mode 100644 plugins/content_types/block/icon_core_activeforumtopics.png
 create mode 100644 plugins/content_types/block/icon_core_authorinformation.png
 create mode 100644 plugins/content_types/block/icon_core_block.png
 create mode 100644 plugins/content_types/block/icon_core_block_empty.png
 create mode 100644 plugins/content_types/block/icon_core_block_menu.png
 create mode 100644 plugins/content_types/block/icon_core_booknavigation.png
 create mode 100644 plugins/content_types/block/icon_core_languageswitcher.png
 create mode 100644 plugins/content_types/block/icon_core_navigation.png
 create mode 100644 plugins/content_types/block/icon_core_newforumtopics.png
 create mode 100644 plugins/content_types/block/icon_core_page.png
 create mode 100644 plugins/content_types/block/icon_core_popularcontent.png
 create mode 100644 plugins/content_types/block/icon_core_primarylinks.png
 create mode 100644 plugins/content_types/block/icon_core_recentblogposts.png
 create mode 100644 plugins/content_types/block/icon_core_recentcomments.png
 create mode 100644 plugins/content_types/block/icon_core_recentpoll.png
 create mode 100644 plugins/content_types/block/icon_core_searchform.png
 create mode 100644 plugins/content_types/block/icon_core_syndicate.png
 create mode 100644 plugins/content_types/block/icon_core_userlogin.png
 create mode 100644 plugins/content_types/block/icon_core_whosnew.png
 create mode 100644 plugins/content_types/block/icon_core_whosonline.png

diff --git a/includes/content.inc b/includes/content.inc
index 5c5c1a3e..a7a2a857 100644
--- a/includes/content.inc
+++ b/includes/content.inc
@@ -17,7 +17,7 @@
  */
 function ctools_ctools_plugin_content_types() {
   return array(
-    'cache' => TRUE,
+    'cache' => FALSE,
     'defaults' => 'ctools_content_defaults',
   );
 }
@@ -61,20 +61,26 @@ function ctools_content_defaults($info, &$plugin) {
   }
 
   // Another ease of use check:
-  // If a content type is set to SINGLE and *no* subtypes are defined, this rewrites
-  // things so that the syntax is nicer.
-  if (!empty($plugin['single']) && !isset($plugin['content types'])) {
-    $type = array(
-      'title' => $plugin['title'],
-      'description' => $plugin['description'],
-      'icon' => $plugin['icon'],
-      'category' => $plugin['category'],
-    );
+  if (!isset($plugin['content types'])) {
+    // If a content type is set to SINGLE and *no* subtypes are defined, this rewrites
+    // things so that the syntax is nicer.
+    if (!empty($plugin['single'])) {
+      $type = array(
+        'title' => $plugin['title'],
+        'description' => $plugin['description'],
+        'icon' => $plugin['icon'],
+        'category' => $plugin['category'],
+      );
 
-    if (isset($plugin['required contexts'])) {
-      $type['required contexts'] = $plugin['required contexts'];
+      if (isset($plugin['required contexts'])) {
+        $type['required contexts'] = $plugin['required contexts'];
+      }
+      $plugin['content types'] = array($plugin['name'] => $type);
+    }
+    // Otherwise, auto discover the function based upon pattern naming.
+    else if (function_exists($function_base . 'content_types')) {
+      $plugin['content types'] = $function_base . 'content_types';
     }
-    $plugin['content types'] = array($plugin['name'] => $type);
   }
 }
 
@@ -376,7 +382,7 @@ function ctools_content_configure_form_defaults(&$form, &$form_state) {
 
   // Unless we're not allowed to override the title on this content type, add this
   // gadget to all panes.
-  if (empty($plugin['no title overridex'])) {
+  if (empty($plugin['no title override']) && empty($subtype['no title override'])) {
     $form['aligner_start'] = array(
       '#value' => '<div class="option-text-aligner">',
     );
@@ -412,7 +418,10 @@ function ctools_content_configure_form_defaults(&$form, &$form_state) {
  *
  * The $form_info and $form_state need to be preconfigured with data you'll need
  * such as whether or not you're using ajax, or the modal. $form_info will need
- * your next/submit callbacks so that you can cache your data appropriate. This
+ * your next/submit callbacks so that you can cache your data appropriate.
+ *
+ * @return
+ *   If this function returns false, no form exists.
  */
 function ctools_content_form($op, $form_info, &$form_state, $plugin, $subtype, &$conf, $step = NULL) {
   $form_state += array(
@@ -435,6 +444,10 @@ function ctools_content_form($op, $form_info, &$form_state, $plugin, $subtype, &
     _ctools_content_create_add_form_info($form_info, $plugin['edit form'], $plugin, $subtype, $op);
   }
 
+  if (empty($form_info['order'])) {
+    return FALSE;
+  }
+
   ctools_include('wizard');
   return ctools_wizard_multistep_form($form_info, $step, $form_state);
 
diff --git a/plugins/content_types/block/block.inc b/plugins/content_types/block/block.inc
new file mode 100644
index 00000000..be244625
--- /dev/null
+++ b/plugins/content_types/block/block.inc
@@ -0,0 +1,367 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Provide Drupal blocks as content.
+ *
+ * Since blocks don't provide all of the features we do, we have to do a little
+ * extra work, including providing icons and categories for core blocks. Blocks
+ * from contrib modules get to provide their own stuff, or get relegated to
+ * the old "Miscellaneous" category.
+ */
+
+/**
+ * Callback function to supply a list of content types.
+ */
+function ctools_block_ctools_content_types() {
+  return array(
+    // And this is just the administrative title.
+    // All our callbacks are named according to the standard pattern and can be deduced.
+    'title' => t('Block'),
+  );
+}
+
+/**
+ * Return all block content types available.
+ *
+ * Modules wanting to make special adjustments the way that panels handles their blocks
+ * can implement an extension to the hook_block() family, where the function name is
+ * of the form "$module . '_ctools_block_info'".
+ */
+function ctools_block_content_type_content_types() {
+  $types = array();
+  foreach (module_list() as $module) {
+    $module_blocks = module_invoke($module, 'block', 'list');
+    if ($module_blocks) {
+      foreach ($module_blocks as $delta => $block) {
+        // strip_tags used because it goes through check_plain and that
+        // just looks bad.
+        $info = array(
+          'title' => strip_tags($block['info']),
+        );
+
+        // Ask around for further information by invoking the hook_block() extension.
+        $function = $module . '_ctools_block_info';
+        if (!function_exists($function)) {
+          $function = 'ctools_default_block_info';
+        }
+        $function($module, $delta, $info);
+
+        // this check means modules can remove their blocks; particularly useful
+        // if they offer the block some other way (like we do for views)
+        if ($info) {
+          $types["$module-$delta"] = $info;
+        }
+      }
+    }
+  }
+  return $types;
+}
+
+/**
+ * Output function for the 'block' content type. Outputs a block
+ * based on the module and delta supplied in the configuration.
+ */
+function ctools_block_content_type_render($subtype, $conf) {
+  list($module, $delta) = explode('-', $subtype, 2);
+  $block = (object) module_invoke($module, 'block', 'view', $delta);
+  if (empty($block)) {
+    return;
+  }
+
+  $block->title = $block->subject;
+
+  if (user_access('administer blocks')) {
+    $block->admin_links = array(
+      array(
+        'title' => t('Configure block'),
+        'alt' => t("Configure this block's 'block settings' in administer >> site building >> blocks"),
+        'href' => "admin/build/block/configure/$module/$delta",
+        'query' => drupal_get_destination(),
+      ),
+    );
+  }
+
+  // TEMP: Disabling block visibility checking. Ultimately we may be able to
+  // finally just say it's not supported.
+  return $block;
+
+  // This seems extra but it prevents an unnecessary query sometimes.
+  if (empty($conf['block_visibility']) && $block->module != 'block') {
+    return $block;
+  }
+
+  // Test for block visibility
+
+  $result = db_query("SELECT title, pages, visibility FROM {blocks} WHERE module = '%s' AND delta = '%s'", $block->module, $block->delta);
+  $block_visibility = db_fetch_object($result);
+
+  if ($block->module == 'block') {
+    $block->title = $block_visibility->title;
+  }
+
+  if (empty($conf['block_visibility'])) {
+    return $block;
+  }
+
+  if ($block_visibility && $block_visibility->pages) {
+    if ($block_visibility->visibility < 2) {
+      $path       = drupal_get_path_alias($_GET['q']);
+      $regexp     = '/^('. preg_replace(array('/(\r\n?|\n)/', '/\\\\\*/', '/(^|\|)\\\\<front\\\\>($|\|)/'), array('|', '.*', '\1'. preg_quote(variable_get('site_frontpage', 'node'), '/') .'\2'), preg_quote($block_visibility->pages, '/')) .')$/';
+      $page_match = !($block_visibility->visibility xor preg_match($regexp, $path));
+    }
+    else {
+      $page_match = drupal_eval($block_visibility->pages);
+    }
+  }
+  else {
+    $page_match = TRUE;
+  }
+
+  if ($page_match) {
+    return $block;
+  }
+}
+
+/**
+ * Empty form so we can have the default override title.
+ */
+function ctools_block_content_type_edit_form(&$form, &$form_state) {
+  // Does nothing!
+}
+
+/**
+ * The submit form stores the data in $conf.
+ */
+function ctools_block_content_type_edit_form_submit(&$form, &$form_state) {
+  $form_state['conf'] = $form_state['values'];
+}
+
+/**
+ * Returns an edit form for a block.
+ */
+//function ctools_block_content_type_edit_form($id, $parents, $conf) {
+//  if (user_access('administer advanced pane settings')) {
+//    $form['block_visibility'] = array(
+//      '#type' => 'checkbox',
+//      '#title' => t('Use block visibility settings (see block config)'),
+//      '#default_value' => !empty($conf['block_visibility']),
+//      '#description' => t('If checked, the block visibility settings for this block will apply to this block.'),
+//    );
+//    // Module-specific block configurations.
+//    if ($settings = module_invoke($module, 'block', 'configure', $delta)) {
+//      // Specifically modify a couple of core block forms.
+//      if ($module == 'block') {
+//        unset($settings['submit']);
+//        $settings['info']['#type'] = 'value';
+//        $settings['info']['#value'] = $settings['info']['#default_value'];
+//      }
+//      panels_admin_fix_block_tree($settings);
+//      $form['block_settings'] = array(
+//        '#type' => 'fieldset',
+//        '#title' => t('Block settings'),
+//        '#description' => t('Settings in this section are global and are for all blocks of this type, anywhere in the system.'),
+//        '#tree' => FALSE,
+//      );
+//
+//
+//      $form['block_settings'] += $settings;
+//    }
+//  }
+//
+//  return $form;
+//}
+
+//function panels_admin_submit_block(&$form_values) {
+//  if (!empty($form_values['block_settings'])) {
+//    module_invoke($form_values['module'], 'block', 'save', $form_values['delta'], $form_values['block_settings']);
+//  }
+//}
+//
+///**
+// * Because form api cannot collapse just part of a tree, and the block settings
+// * assume no tree, we have to collapse the tree ourselves.
+// */
+//function panels_admin_fix_block_tree(&$form, $key = NULL) {
+//  if ($key) {
+//    if (!empty($form['#parents'])) {
+//      $form['#parents'] = array_merge(array('configuration', 'block_settings'), $form['#parents']);
+//    }
+//    else if (empty($form['#tree'])) {
+//      $form['#parents'] = array('configuration', 'block_settings', $key);
+//    }
+//  }
+//
+//  if (isset($form['#type']) && $form['#type'] == 'textarea' && !empty($form['#rows']) && $form['#rows'] > 10) {
+//    $form['#rows'] = 10;
+//  }
+//
+//  foreach (element_children($form) as $key) {
+//    panels_admin_fix_block_tree($form[$key], $key);
+//  }
+//}
+
+/**
+ * Returns the administrative title for a type.
+ */
+function ctools_block_content_type_admin_title($subtype, $conf) {
+  list($module, $delta) = explode('-', $subtype, 2);
+  $block = module_invoke($module, 'block', 'list');
+  if (empty($block) || empty($block[$delta])) {
+    return t('Deleted/missing block @module-@delta', array('@module' => $module, '@delta' => $delta));
+  }
+
+  $title = filter_xss_admin($block[$delta]['info']);
+  return $title;
+}
+
+/**
+ * Output function for the 'block' content type. Outputs a block
+ * based on the module and delta supplied in the configuration.
+ */
+function ctools_block_content_type_admin_info($subtype, $conf) {
+  list($module, $delta) = explode('-', $subtype, 2);
+  $block = (object) module_invoke($module, 'block', 'view', $delta);
+  if (!empty($block)) {
+    $block->title = $block->subject;
+    return $block;
+  }
+}
+
+/**
+ * Provide default icon and categories for blocks when modules don't do this
+ * for us.
+ */
+function ctools_default_block_info($module, $delta, &$info) {
+  $core_modules = array('aggregator', 'block', 'blog', 'blogapi', 'book', 'color', 'comment', 'contact', 'drupal', 'filter', 'forum', 'help', 'legacy', 'locale', 'menu', 'node', 'path', 'ping', 'poll', 'profile', 'search', 'statistics', 'taxonomy', 'throttle', 'tracker', 'upload', 'user', 'watchdog', 'system');
+
+  if (in_array($module, $core_modules)) {
+    $info['icon'] = 'icon_core_block.png';
+    $info['category'] = t('Miscellaneous');
+  }
+  else {
+    $info['icon'] = 'icon_contrib_block.png';
+    $info['category'] = t('Miscellaneous');
+  }
+}
+
+// These are all on behalf of modules that don't implement panels but we that
+// we care about.
+function menu_ctools_block_info($module, $delta, &$info) {
+  $info['icon'] = 'icon_core_block_menu.png';
+  $info['category'] = t('Menus');
+  if ($delta == 'primary-links' || $delta == 'secondary-links') {
+    $info['icon'] = 'icon_core_primarylinks.png';
+  }
+}
+
+function forum_ctools_block_info($module, $delta, &$info) {
+  $info['category'] = t('Activity');
+  switch ($delta) {
+    case '0':
+      $info['icon'] = 'icon_core_activeforumtopics.png';
+      break;
+
+    case '1':
+      $info['icon'] = 'icon_core_newforumtopics.png';
+      break;
+
+    default:
+      // safety net
+      panels_default_block_info($module, $delta, $info);
+  }
+}
+
+function profile_ctools_block_info($module, $delta, &$info) {
+  // Hide the author information block which isn't as rich as what we can
+  // do with context.
+  return NULL;
+  $info['icon'] = 'icon_core_authorinformation.png';
+  $info['category'] = t('Core blocks');
+}
+
+function book_ctools_block_info($module, $delta, &$info) {
+  // Hide the book navigation block which isn't as rich as what we can
+  // do with context.
+  return NULL;
+  $info['icon'] = 'icon_core_booknavigation.png';
+  $info['category'] = t('Core blocks');
+}
+
+function blog_ctools_block_info($module, $delta, &$info) {
+  $info['icon'] = 'icon_core_recentblogposts.png';
+  $info['category'] = t('Activity');
+}
+
+function poll_ctools_block_info($module, $delta, &$info) {
+  $info['icon'] = 'icon_core_recentpoll.png';
+  $info['category'] = t('Activity');
+}
+
+function comment_ctools_block_info($module, $delta, &$info) {
+  $info['icon'] = 'icon_core_recentcomments.png';
+  $info['category'] = t('Activity');
+}
+
+function search_ctools_block_info($module, $delta, &$info) {
+  $info['icon'] = 'icon_core_searchform.png';
+  $info['category'] = t('Widgets');
+}
+
+function node_ctools_block_info($module, $delta, &$info) {
+  $info['icon'] = 'icon_core_syndicate.png';
+  $info['category'] = t('Widgets');
+}
+
+function aggregator_ctools_block_info($module, $delta, &$info) {
+  $info['icon'] = 'icon_core_syndicate.png';
+  $info['category'] = t('Feeds');
+}
+
+function block_ctools_block_info($module, $delta, &$info) {
+  $info['icon'] = 'icon_core_block_empty.png';
+  $info['category'] = t('Miscellaneous');
+}
+
+function user_ctools_block_info($module, $delta, &$info) {
+  $info['category'] = t('Activity');
+  switch ($delta) {
+    case '0':
+      $info['icon'] = 'icon_core_userlogin.png';
+      $info['category'] = t('Widgets');
+      break;
+
+    case '1':
+      $info['icon'] = 'icon_core_navigation.png';
+      $info['category'] = t('Menus');
+      break;
+
+    case '2':
+      $info['icon'] = 'icon_core_whosnew.png';
+      break;
+
+    case '3':
+      $info['icon'] = 'icon_core_whosonline.png';
+      break;
+
+    default:
+      // safety net
+      ctools_default_block_info($module, $delta, $info);
+  }
+}
+
+function locale_ctools_block_info($module, $delta, &$info) {
+  $info['icon'] = 'icon_core_languageswitcher.png';
+  $info['category'] = t('Widgets');
+}
+
+function statistics_ctools_block_info($module, $delta, &$info) {
+  $info['icon'] = 'icon_core_popularcontent.png';
+  $info['category'] = t('Activity');
+}
+
+function system_ctools_block_info($module, $delta, &$info) {
+  $info['icon'] = 'icon_core_drupal.png';
+  $info['category'] = t('Widgets');
+}
diff --git a/plugins/content_types/block/icon_contrib_block.png b/plugins/content_types/block/icon_contrib_block.png
new file mode 100644
index 0000000000000000000000000000000000000000..fa78ec179a83428e5b8e247890278cdf91a8cb3e
GIT binary patch
literal 574
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl;=8&~`zjDUQ}64!{5
z;QX|b^2DN42FH~Aq*MjZ+{E<Mpwz^a%EFVWHb6za0X`wFr45!Je(pYfWm-(COIf{R
zd6V9oHxIsid0$fJW$SEo`f5jcz0Kr#;igtPWlb7C|6e?HweQFOEB9`%zH@8cwJS?s
zew%dq@~pQ%Hop2cr@TdB$^y5t8qc@iSAF=g_1DjDXU|Og@&9sJgYlcUPo^&LIdf&=
zlzD;P!IqytKQF6u{q*bLf@QgT_BMU}ed7QB|3DYT#AfRNDgBZlzhIyU34kGLsl|7o
z)<2#ujv*Ddk}e1fiA|h-osCIX;lgER4h1$v5k@}S28JYoYgZYWeFZLDeaZk772MFU
ztgVerS>S{rGmAj8jfaD?v!i2UYjjvlpQJ*A1Jfmibqf^i?VA_L7&|Z+X1sot(Xnwu
z!w#NRT}4?8j7Jun<r7IrN_zP0*+WK71{Q$;hu~&USJ&1?_t4Opp|QLQ4F)U>OdXEg
zItmI4IG$*KURlh<BH+>B>e|rlEqG%3qu@s@KxgP$`nu(@>FI?n*t0}KS|4Q7%GJhQ
zr!}-TZTjTdv1#K+psr@Qb}IpmMn>t`v&?`hUc4+UFfd-t$f&NazkZvXLjxnjnNaC9
Um!If;0EPpDr>mdKI;Vst09}j(6951J

literal 0
HcmV?d00001

diff --git a/plugins/content_types/block/icon_contrib_block_empty.png b/plugins/content_types/block/icon_contrib_block_empty.png
new file mode 100644
index 0000000000000000000000000000000000000000..6d0891b03d97142074cabbe5ed47175ad01c838e
GIT binary patch
literal 450
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl;=8&~`zjDUQ}64!{5
z;QX|b^2DN42FH~Aq*MjZ+{E<Mpwz^a%EFVWHb6yz0X`wFC3RjgsV;BcJoxhEy{VOs
zt+Ua!D@$K~n{?;ax_h@*|N8mu)welk&rEys_KA0}<>$}O7c9$t{cX{ny-ja_Z2a(J
z>(}2WKK$JM_WP<&zYhNY{~u^-oa}-PKuWqK$S)Wuf&(z9n{b-~m0j?3aSW-rl{Dee
zlZ3|)1(}!_6(&q#;!t4o6Jcc2Y+y)wFhPWsnNwiGloSS_sF|lkI1k4T2}Y)lMt31K
zT{R`8Ge<cD91<8iY$oWR12K7=CM`<1>acFZ4hwO42L?k9!^K<-ECK-xYoyPJiadGF
z%%Q-;2sBuLfxBUcgPpm(wgW>WOG8Z|$NbsTMHLz(Sav8dH96Q>TMKi8w14>A?Rd3#
zv$5eupefBF%=Q8wniz$J=L-NOJv<E!42(W8GHPpccTW&;XkcWRWF*M;&3w{spx+og
MUHx3vIVCg!05FTNRsaA1

literal 0
HcmV?d00001

diff --git a/plugins/content_types/block/icon_contrib_menu.png b/plugins/content_types/block/icon_contrib_menu.png
new file mode 100644
index 0000000000000000000000000000000000000000..38cf72090abaa16000c9dceedee8196df1c5251e
GIT binary patch
literal 552
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl;=8&~`zjDUQ}64!{5
z;QX|b^2DN42FH~Aq*MjZ+{E<Mpwz^a%EFVWHb6x!0X`wF7b?@wRVIA-^8S2fT1lN(
zOsb2mv(cM34@|9ezW%;==hnJ!e{LN0^}Tjw>5o6Rj`(`tyS@5CRpwD&pSM3Ye*Jy!
zY-Q8|Yx@J%F6S!aj`(`L{l4maW%93|-@g66diKn;4?niPdHdvmwZj2xNAF<E&!3+!
zSeE<Y=k7gwo4)=&@#)vW|Ns939TLv>@EefQDGBlm28s|17>-}#>;dZg<muuVQgJKk
zg4lycQzr+rGleQ#xW>kzz{V)TD3;s6ko4fvB?e|+feV+C7=fa3x)R~M94QfuOdXDX
z+-hsp^!0TPa|t*kFm~8X&{qX9d0s_1>|3xvftlHO^Oh|=Mh*;yD~uUgD=I2lT7FEO
zG9_gSBNK-PL&&+~$B&=Y)joZ4<su#d2LVR54mLM8(Nv(70j!)HADgdeYiX_8z{n!t
z;ovK`LS~7hi%TP~LW4v|Y6DZk(;lHki{8jEFdkX3YSAJ!9nP@z8fxdxF#@f>rK9Dr
zfPwAJn^Uhq(reEiI&^9k4@*vtjLfTB42*0HH!n)>RokiqN(T&{u6{1-oD!M<9@Y9V

literal 0
HcmV?d00001

diff --git a/plugins/content_types/block/icon_contrib_page.png b/plugins/content_types/block/icon_contrib_page.png
new file mode 100644
index 0000000000000000000000000000000000000000..4a2fa51d3856f366098978742cfe13e9389b487e
GIT binary patch
literal 460
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl;=8&~`zjDUQ}64!{5
z;QX|b^2DN42FH~Aq*MjZ+{E<Mpwz^a%EFVWHb6yD0X`wFF{v)EzRfAA^Rjg|diiaV
zsg=%~HxKUIT6gdE>T6e)YUs(GJay{r>uaAsKY#P~$(Jwhy@M^!o|*RR=eIq3n_hog
z^!4|N1<P{Z{@D28=k5<bw!Zzo>eH`-|Ns978o&N=?L8nRR}$nG3>3i)7~V+8!~s>F
z^K@|xskoK&;9<gZ5fKqKCPPC*$H>SAhNK4*9GRMuHZd?BIiRP^#db+SLG2iefCJAQ
zqeTU>NkUFMKp6!M=E>70Oc4=JV&G8Nz%YaRkvFFy1B*cOh8~R$_D5abo}8Q@u7Uk3
z1_uU4)&si^#s~_=F*Yz95&-I8Gu*(?!TrSelMyqEfCs~g=}jLbf6icJ>TvYoP*Pxe
zvU$UXjZ7>85e%#3G!C5S5^!)}RE&#@volC|{QMacP`{c&LV^GTQ(9VBm>ydL12cn{
XlyLFyyCxffK4b87^>bP0l+XkKAQ-*h

literal 0
HcmV?d00001

diff --git a/plugins/content_types/block/icon_core_activeforumtopics.png b/plugins/content_types/block/icon_core_activeforumtopics.png
new file mode 100644
index 0000000000000000000000000000000000000000..8414a8f8829be40a052814087e24c5800dcc6e4b
GIT binary patch
literal 603
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl;=8&~`zjDUQ}64!{5
z;QX|b^2DN42FH~Aq*MjZ+{E<Mpwz^a%EFVWHb6x)1AIbUUwr!e_1C{Auikp4)wzVE
z8d*B)7+O7e@#fIOzp>?0pMLlqky*d-){j*;zgNuK5>?Ro{?nJ$m+vLk%&u9mr)0|d
z<B$JtJ^SG0=YP}opPhf;_R>?=JfaHcT>AF&&%g7}|K<0u0?NJn_V3Ntf0NFCTX*SB
z+01R<e*W5e??=;`y$2uv+GFXq`@zrW?>}3*1P7;9=T2N!GjIF<|NnumyZ4Jn8b}$J
z1o;I6MMwk;h4c3IF)%Q4db&7<RNP835DJ+%X~G2trdkC9BPI?7Hb-Y>W?ehMM8gdX
zn*|*h3?+(;q_QNn3Jblmva+P4jF?#jnj04?1{}CBA<$o%<4Obr6NgR$hhRYX^T1?A
z4uu(9d~CJ~^TT^t6&fUX8kKmG1e$p(ua+<}ai}QhWggJrHfp~d;47}s;J{SH)+5j?
z+FAmX>^L|f`uqg`q;(qN`}_2O_P*fG$U4=``|QDkOP3Q_ITR)|Y}>U;k(s$!rhOid
zur^4=YDQL`)*nB=9&ued_2x|mrVht=clX)t;wdfjn9QxMr9rMYe9gcpEFkf!aP#Xd
t2B6a?3K|=8ck2mk*tBV5rUWC41Ow|Q#iJL)q(MQ;;OXk;vd$@?2>>K86*B+;

literal 0
HcmV?d00001

diff --git a/plugins/content_types/block/icon_core_authorinformation.png b/plugins/content_types/block/icon_core_authorinformation.png
new file mode 100644
index 0000000000000000000000000000000000000000..ab248f3f1bb62536bbf23296a949bfe05cd56bc7
GIT binary patch
literal 606
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl;=8&~`zjDUQ}64!{5
z;QX|b^2DN42FH~Aq*MjZ+{E<Mpwz^a%EFVWHb6y-0(?STjVzs~?LWKw!OuHyzrX+V
z<@x*1-+unO@%p=tq1ET_KUZJAxAfGtjkkWRyL9L3o8NOTecO8P$D(qtb1#2KXI5N%
z^*g_zuPi4yG06GJtGDNtHfNOAzkhV?<kh<;pa1^!;@-*GrKfK^D4)0S!<TP2-u}7!
z;m@b9-&{gcEy9`)Ps#8~t6OyS+llAD4?h0YnP{}J%yrex?@ep==1yGp^7=7Lm*D^Z
z{{x+QzcV)+NST!c`GG`82Mi1Q{R|lx7#TcW978H@B^f+@^fWESgn`Lf!N8Q2LxD|C
zgwZ#+fg$OE=|wiCScMB0FB%$NWC2R#38yK<$NBsFPw(vP^yO7(kdSC(+BK<4VS)C6
z!^_wN90V9`l@%^retI!Im>H;^SvXDBF|$xvxlq}$w$>~eXr@6z;<bwtgpG}aj4v^8
zGO!2)G{m}lF)wj-j`i-oDxuJDfXU~Tl*58`{6Y*s6PzbBG*}5R{QR?qhk=nrC_(7K
zMRq2I`SDGRK+Ac2O-!#|>1k|eY;1PE2-GXVV;X5`X&HLZ!861S#P>0c44v}x#}5~m
smX;J((H2Igj)PZ3BD*&lIy5jc$ag6`Uyzy~2n<aIPgg&ebxsLQ0Lelg8~^|S

literal 0
HcmV?d00001

diff --git a/plugins/content_types/block/icon_core_block.png b/plugins/content_types/block/icon_core_block.png
new file mode 100644
index 0000000000000000000000000000000000000000..b0d9628adf19efed3b30c847a7511fc093d469b9
GIT binary patch
literal 568
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl;=8&~`zjDUQ}64!{5
z;QX|b^2DN42FH~Aq*MjZ+{E<Mpwz^a%EFVWHb6yP0X`wF-+um@w*Tzz2R~gxQoYjZ
zB5J3-|Mca-i#L9ai`HIx9a=ZT$kKV))z8IqcIg;ec{eUycj?a3Q`c5q{<!+`y^Xhi
zY`FAt()n+(H4`%DA6|9y`__9u+?rR-x%BPx&;Oxya{?RYJ$d!^)6f5_F2Bv0e;|L}
zp6BmBTe<{C*G@V3_*d@4Wld}Lo_PNI|Ns9$=X9&ToCc)yN`m}?fg;2MhNk}FP@v9V
zo-U3d6}OTuh>8iMq+DTQ@>RHSm6bz*Em4F~EVh9mN#MdoHfCNRnaBtfb==U<wriJ_
zuz-O9Gm8MTvWG)#Y*^T|soq{Kjgkrt4or^})+q^`IB5)$Zl2b+ZI_0&c8B(IrSl8e
z1RQvxavT`_{KE9~;^HPSI504>nq0A*I%Ud}iqMcLmLXRem^hpn6dEK<4l+48eR9}m
zv|r2IfuWHlVrol8#goPw&N|jSpp!17Tu68{>G8vd45z%iH-2UW+O%wy*5r;Qdu-U*
z_xDIxTgy8z7{1uFf~k>7V#DUunIIMG^tic=H%kc=6o3Ah`I3o6f`RLe)R!Z(E0zL7
Ofx*+&&t;ucLK6UI&jhvr

literal 0
HcmV?d00001

diff --git a/plugins/content_types/block/icon_core_block_empty.png b/plugins/content_types/block/icon_core_block_empty.png
new file mode 100644
index 0000000000000000000000000000000000000000..da08c64c64f2c6f7c5c34a442d4c1e3287f17053
GIT binary patch
literal 450
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl;=8&~`zjDUQ}64!{5
z;QX|b^2DN42FH~Aq*MjZ+{E<Mpwz^a%EFVWHb6yz0X`wFUTJkMA*l~uym|lWi;kg{
zk)`wM%lFn@x-;qgx2319P1}F=+s|KfE`59Q>h1IQpDkU2b0;oaboE=)n!Ouu{n&c%
z$BE~^cR%>K>gM-@kAMCD{~u^7ug{|nASGQA<QEJS!2uZ5O}I^g$}V`iIEGZ*N}7<A
z{QSuyAtok9g$a|GI272-L>SpL8yJ!jri-vLa|%qDlEMHK_4AYn=i%5P$;i~v=q;qC
ztEQxM<}8PRLjq%m%>?~(ASRE~q(uo=9oB8wVPS6Xz+lK>xR{H9MIeA-jr18&ktdJY
zITUypfd&gOa5wC5u;Z84c3@~^X{agWnBP8KRG~qFWrreDlY<>QyD&FM`-hL6j#oby
z7#MB@n$j%7EHCh(iBVX1zW`9u!_&~fz~~b*qqa78_XH7#21bU?azVDeJFc7u`i;TU
L)z4*}Q$iB}{|m0&

literal 0
HcmV?d00001

diff --git a/plugins/content_types/block/icon_core_block_menu.png b/plugins/content_types/block/icon_core_block_menu.png
new file mode 100644
index 0000000000000000000000000000000000000000..84594431b705009714e569d99bf3a2739c42b7f5
GIT binary patch
literal 552
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl;=8&~`zjDUQ}64!{5
z;QX|b^2DN42FH~Aq*MjZ+{E<Mpwz^a%EFVWHb6x!0X`wFy9ydyLQ>y<`m#Bv-Yczc
zXI_JmrSpRqZ*&Z;F24G`?$VtbZ~yG}2-{Q8xcc(FrKhfKy!B(RXV@Okuv_o{oO}6u
zZC3q$E7x6?Zo53fR^9x*F}r@+{<GhH{@Qx)$F{tNt8aeqwsd>)>g^s&x99IaTe<}2
zPF%M8!Ox~Odrv(7eem(G|Ns939kM2~&jU#5lmz(&14W1h49Bl=_5k&L@^o<wskoJN
z;o0Ly)2D^8GleQ#xW>kzz-A}HD3;s6ko4fvB?e|+feV+C7=fa7x)R~M94QivOdXC<
z+-hspw6zrua|k#jFm~8X(ANYpd0s_1*y-!*Gc#+io-?P1%Ynggg)t*53oC1DOU0Ba
zQ&K`0m^d^TLiBWW&YacNKYw!N8YTe;0Y<hCwzRZVQJ|FptehMl8?I<;XlQI^WD)Ri
z@D*Djv&7NGWg@RagG5Mb15?7&GeL_My^&#HJhEWbnl)+)jA82)^p2fl1X_Pf=aj<&
z4z@RMv|fRv*PcCe=)?*pmYf_JnOC<M7}*$3>qzf?c;Z7X(Dw|Uu6{1-oD!M<Mzi%<

literal 0
HcmV?d00001

diff --git a/plugins/content_types/block/icon_core_booknavigation.png b/plugins/content_types/block/icon_core_booknavigation.png
new file mode 100644
index 0000000000000000000000000000000000000000..52dfca5369bfd5cabe1b46b7ab9ff54b7c8dc14c
GIT binary patch
literal 626
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl;=8&~`zjDUQ}64!{5
z;QX|b^2DN42FH~Aq*MjZ+{E<Mpwz^a%EFVWHb6xi1AIbUjVzrv-um(W)0b~Qe?5Qy
z`Nr$-I)+wfp8wbrntbQ&_mj`QufBZm>YLx|F5Ovr>e`%3-#&l;x!1t@+{@p`pM2lv
z6~5QXEjqK};;Y~1U;M~#=sS7!?vqz<?|%5R*UociR?Qw;&ktX|oqYcL;N35KLz55W
z)!umfXJ<%K`MiybFMK$C<H25it509QP1}EV>%AW?A*qY5e)CGJ+hgms`@zo>&wsDF
z`8{{yvZghA4?g~7=@R_^|9_yXul+e<3#6<|g8V=tWCDhTN37)-7#JBmT^vIyZY6Da
z^z7;7i-ych!3rBTF>xrc<%uvdYd0_?J=ki(##}70VT%a^P}I)bPvbfV$BeHGOdXEw
z8V3^fl$5lxjx0QVVhy{1g94+db1^4pSy`;JrEr=pP`AP6DW)bSLLyf#C7GB^N#6!C
z!&uEP)mgc$Oi$0v*;F`<yMcj;YlBwdi!8=Q&h|FDZdM0|MwT<ZB|CStwEFsdX=Gwx
zJd(gAmXKn?`0;0?1OpR?3d57x4nO`};sMEIWhN|Gp3ca^!;_QqN(?M=KuJMi0WTZZ
zq@W}aKlOmp;!}qYE9>d0EYVo0$tK{y6Bc$NN=Ju*iHAXNf%5Bi=Cn9qkTQ6>`njxg
HN@xNAw}vc6

literal 0
HcmV?d00001

diff --git a/plugins/content_types/block/icon_core_languageswitcher.png b/plugins/content_types/block/icon_core_languageswitcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..dc4521fffadb3b58e0d6d8a4463e0f99ba17f4a7
GIT binary patch
literal 601
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl;=8&~`zjDUQ}64!{5
z;QX|b^2DN42FH~Aq*MjZ+{E<Mpwz^a%EFVWHb6y71AIbUAG~;zmRI4GR_79u`u@|G
z-4A{ime<|dEMsKptYc{P;Y`BKrIuUo{aAhZ-nvV7mY%w{>gM<MB;`4mzCGIRSX|Y3
zajs}{d-tNN-_G<aOgjH<N2kv54*rg0<?~b2b~ec!pQ``*aLnt|g^ymoKiDFDWtqgr
zTR(n2nKWa@jA{GNe*5|B<jGS{UcLSE_2TpQpDkU24?g~NxSlt6;<BH&%1%80-Lz)!
z|NsAiE;V{T`x%fjFA4Gs28xgY7z85cb_0$0?&;zfQgJKE;PKPP*Dn|_GC3<47&CJy
zu*Hcmsu?#hBt0-TWn-=tFfdJJ0*cm6XxO!D#*7XQZSB=+#tsaI84Rpfe78C@Omq*O
zEUD1o!1QWaPmaQZqZ$iN@(4Kas5vmIx`l<w$(2rMkOL~8u|Z<BhE@S{<C+$e00xDI
z2Bu$cmRTt*SeB-+ZZ*4rLjt3$sa~a}p0e@;2B2~YCzd5C4optFWEdD(L<Ph|MA$ep
ziWyi0ninp!+dWH=MZ&|VfC<E1w{FD>Mga|GLuO`mkUfSknHtR`3=Ce(1gV}WDJ*Qf
lSx%s!prB~h3`Q0ShU7BECH%?DHUfiy!PC{xWt~$(69DHg42=K)

literal 0
HcmV?d00001

diff --git a/plugins/content_types/block/icon_core_navigation.png b/plugins/content_types/block/icon_core_navigation.png
new file mode 100644
index 0000000000000000000000000000000000000000..fb4c1f84f8261e47110d3414be92f9aa910c8646
GIT binary patch
literal 818
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl;=8&~`zjDUQ}64!{5
z;QX|b^2DN42FH~Aq*MjZ+{E<Mpwz^a%EFVWHVh1m`T;&6t}Y>|UTJlkbLw~IHRu>x
z8Cg0ny83NbLBoR=Z{C0UvfCr<|NsB1FW;MU>D$_@`Zu4x?(qy`PTctY*Kek{4eKu5
z5v$(ITzh0=cKy3gUl@|Nv8Qk2h*~jg&&g-^9zA{YIbg=&BUkUKb{&87@$-v!pMt0F
zTYu&*XXe(gzy4Y^u0Ebux#{$^qYvKQe)g8BXh-#u-MkTf0x=VIS-LTo?Rog>JwxtJ
zhS<$Ln+~l%d6OY})w|DMnbI~})-H8vSsmQBRVibtWX0|s7ay*>cxRVK7`J1MSlO0m
zZ$3PJ_oaEu#l4sA*-gLj`qS5k@4j7l@tq-S=hKfrK79GXk-KldmFv`fXCoJ1NSwO$
z+s|KH@BP@8*Rb){kES(ySKa)++tTgHtGDkzf8As0_Wb>4OPAo?4}Kne{400jGGM?y
z(zu)oq*6<Q{DOfYLvz3&nQ^HZ7*`UWE{-7;w~{;_3I>L9c1`K*@nLJ4BGSN+^dRul
z_bFS<rx`GF8!TgB5olh#ZP9{>owGKT3kehy8#4h#cCTD8b={0sx%wa_ffgf>n(p-(
z8>Vd7CmW!kqoXv1QK3QN3G<bme{))G_Bi}m5x@pC_rk=o$=n;u3Z|x}r}6Rg`!aAS
zv_-I{GfVS+j__q%w`0eS3oIaIU961W^E*0LXqavL0TSqV;^XC&lFpu;kksW5(v&ix
zfkE7(wxp!QM%#g*kwvKSn0uqihfl{g0Nv(Xq!GZdW{&5a{{CiGpfe^tek`m!=fJDQ
zyv&vn3``x0t%h<ONe3F5l@*16(m_EIl9Cca4GmMLwyGMjDjZ-q=5D+BadGuuV5Bg3
My85}Sb4q9e0NfO=EdT%j

literal 0
HcmV?d00001

diff --git a/plugins/content_types/block/icon_core_newforumtopics.png b/plugins/content_types/block/icon_core_newforumtopics.png
new file mode 100644
index 0000000000000000000000000000000000000000..70bbde26bbe02b474b610658a8a97f51707a4ea1
GIT binary patch
literal 604
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl;=8&~`zjDUQ}64!{5
z;QX|b^2DN42FH~Aq*MjZ+{E<Mpwz^a%EFVWHb6yl0(?STUwr!e_18bIw7Ms+-nxXO
zK6vp)$I!~i()rNCzflF9Pe1&QEuXsT=J$$OTQ=VM5s_J6IeY8-PhS#iX4fp(bNun&
zt!E!h+kf`u=YJ(r)~~*NZ~lSXKmYtIo4GB&f7OGRpWl4_=Mh!7^whOU=fADHbZ5?`
zZ|}bSJOBLO9!s}xKYwk#_oHde-h+>S?SAmn(k1x$`_I9t)wvUw)y&)e|NnoW1ASw5
zssbsKk|4iepa`je!8=?jm4Shg&C|s(q~cbR!L*Pt5#h^BOw0-fW^5b^Y@W)_&Wv%K
ziGdp!CL2017)lfxOG!$eEH3oU%+8jUG-PBEXkIADV({uULn9lv0|O)Lm4gBr3s#<7
zevnDP!9Y}o=a++BKS;(<g3(pNMUhSVW5x?676A{3m{Su1rIz&E_HY(gXmDWq)z%|W
zyUM9*7X#ywgd^+ok8m4Cv~&mi10^MRShj9WReV-d@bdLWW{_U@;A0()jgGy}@vSpu
zK?+P7nB1J^%=z_5iOXwE4#<cF%a<QM&U|T+{_*ptPO%9%@Er50ayY=l;`Zy$nq5&K
r6**^)967Xzo8`@$oSdj*z(8OKwpR+?@=0A27@`cGu6{1-oD!M<)FK@u

literal 0
HcmV?d00001

diff --git a/plugins/content_types/block/icon_core_page.png b/plugins/content_types/block/icon_core_page.png
new file mode 100644
index 0000000000000000000000000000000000000000..f0417cb6515aa7fb2856c90722b386ed99bfc501
GIT binary patch
literal 460
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl;=8&~`zjDUQ}64!{5
z;QX|b^2DN42FH~Aq*MjZ+{E<Mpwz^a%EFVWHb6yD0X`wFE+MINE`9S#t2456o^<}3
zj-i#Dir(tW_tssyv-H%p2QS{7I(h2a%eT+pe}4bz%ad1cEnR}A?LYhN=dY$Udly~(
zcH;T(jkkW}PF%M8!OyMteyqCr{ovzY|Ns978vk!K_g5e#R}$nG3>3i)7~V+8!~s>F
z^K@|xskoK&Ao2MF5fKqKrozHP$H>SAhNOh)j!aFDHZd?BIiRS_#db+SLGK)kfCJAQ
zqeTU>kA$3ffHDdi%#){0m?9#a#K57jfnf&sBX3Sa1{Q(l4Luqi?2o!UJvli+Tm$)4
z3=Ry8tOs@-j1d%!V{BkJBmmUGR=9zogZqi`CnIJS0S|@~)0;j>{+!9k)ZrMzp`^g{
zWb=lCjZ7>85e%#3G!7i+5^!)}RE&#@t221;=y4h|P`{c&LV^GTQ(9VBm>F9G12cn9
XiE#1KH6NpaK4b87^>bP0l+XkKLQcLN

literal 0
HcmV?d00001

diff --git a/plugins/content_types/block/icon_core_popularcontent.png b/plugins/content_types/block/icon_core_popularcontent.png
new file mode 100644
index 0000000000000000000000000000000000000000..70bbde26bbe02b474b610658a8a97f51707a4ea1
GIT binary patch
literal 604
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl;=8&~`zjDUQ}64!{5
z;QX|b^2DN42FH~Aq*MjZ+{E<Mpwz^a%EFVWHb6yl0(?STUwr!e_18bIw7Ms+-nxXO
zK6vp)$I!~i()rNCzflF9Pe1&QEuXsT=J$$OTQ=VM5s_J6IeY8-PhS#iX4fp(bNun&
zt!E!h+kf`u=YJ(r)~~*NZ~lSXKmYtIo4GB&f7OGRpWl4_=Mh!7^whOU=fADHbZ5?`
zZ|}bSJOBLO9!s}xKYwk#_oHde-h+>S?SAmn(k1x$`_I9t)wvUw)y&)e|NnoW1ASw5
zssbsKk|4iepa`je!8=?jm4Shg&C|s(q~cbR!L*Pt5#h^BOw0-fW^5b^Y@W)_&Wv%K
ziGdp!CL2017)lfxOG!$eEH3oU%+8jUG-PBEXkIADV({uULn9lv0|O)Lm4gBr3s#<7
zevnDP!9Y}o=a++BKS;(<g3(pNMUhSVW5x?676A{3m{Su1rIz&E_HY(gXmDWq)z%|W
zyUM9*7X#ywgd^+ok8m4Cv~&mi10^MRShj9WReV-d@bdLWW{_U@;A0()jgGy}@vSpu
zK?+P7nB1J^%=z_5iOXwE4#<cF%a<QM&U|T+{_*ptPO%9%@Er50ayY=l;`Zy$nq5&K
r6**^)967Xzo8`@$oSdj*z(8OKwpR+?@=0A27@`cGu6{1-oD!M<)FK@u

literal 0
HcmV?d00001

diff --git a/plugins/content_types/block/icon_core_primarylinks.png b/plugins/content_types/block/icon_core_primarylinks.png
new file mode 100644
index 0000000000000000000000000000000000000000..6dafb99ed084232acc18dfccb2b8f8327051245a
GIT binary patch
literal 892
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl;=8&~`zjDUQ}64!{5
z;QX|b^2DN42FH~Aq*MjZ+{E<Mpwz^a%EFVWHVh1m@c}*|t}Y>|n{(<n-umH{R%c}C
zyfd$1(baD{hE@+=yjgwu-nBQs*JjlpfA)Lbr91!s|38^qG3U~^Tkrl%_q4jQso_vm
z`r)X|Yv*pyZ;F`R=(DS!VV9-btStxE%_?2e9du!7`C*@kX;Drq_MK|Uv%FZ`x@~Fg
z#}|jE2Rcm)_1LkjVZ-6GtJmzDQSb5f`;WuEDGx5KDGXGqjWNF8+L!95I4Q#6>a(w3
zpC8@j5q5RO<}e4z?Fo6;C(Ziy>O{Pa^nOdfD|P)xf>YC6h4*jhyOLEqefP-=)!i3^
zGN0YqyxSwJI?-h7(eoMJYDIqP?>~LHe)8&6d$Vc&PSZRrKRr79@xj47Ke=lwH^02G
z?ZV67$E_nCU*G=X@vc3dVL1V6pI@F>I4$D)%j1EjqAl+FKi|Cl{_@1!V26#__4}<{
z^ZaDK{rt7{-j8j04F@0pT6OdLZcDc(uioylbld&lr=?5q^Y@=~CoXGRvlkc<H`(Kl
z0;$rHAirQ>0MZ>W%-(SC6)>)qJY5_^DsCldJbV%=GF6YQNl8INlaWJ#&Ck!*Qrz2r
z1w%2X1B2lQHLlyY)HQy8N?~M_mp2BAWJp@weA!mLyDRl6v!fL=P((s~_3EG8KUp<C
zJV{S6SZd6`BGA0Kq9-#ZXvsuQ@d@+io?{Sj;5oW+p_bRGJTb*dYu3!1`I41^@koG<
z;0nR~wdu*CPv=daK0OYs?3Sa^MZvzfM4y{Cb8=cC%3ce+SvWr}f$z$J6A=+0RjyV|
zO)-D|D1EA|w6wHr)d3myWb#yg6Fcc8jt&abSrr;2x-K;`B|PoXymLq94M;vDV#fIt
zwy^oiQ%@b_1Dc_Frqy8rH=B$M>rs$&(4jMD4g@f;=;*w8b5xaqk&QvW&~=yLkGWfb
P(Z%5D>gTe~DWM4fkge9O

literal 0
HcmV?d00001

diff --git a/plugins/content_types/block/icon_core_recentblogposts.png b/plugins/content_types/block/icon_core_recentblogposts.png
new file mode 100644
index 0000000000000000000000000000000000000000..785207ac49e311f1716220982f79afe382c861bb
GIT binary patch
literal 681
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl;=8&~`zjDUQ}64!{5
z;QX|b^2DN42FH~Aq*MjZ+{E<Mpwz^a%EFVWHb6!90(?STz0&G}QmWp6`l4fKwe{YQ
zZ$Ez-SvpVKe|FuaJ4;VpTYdT7>vs}QKm6W!>qmLV?3#JommIwM`|n?$*n<7{zkUAp
z<MDH)j)lwq|KBxj<I$Kf-}fKn+Goso_U_~DXRlV>{C@WKgS+=ko2TV&-Ltf7PTs+X
zpKso_&Tg5|JHK(;m1nQM{%c;lZ`QU`haUg>|G((QJ-tJxJ^ufH{^HZ$DSJ+>IC*>e
z{xfq{@A?0qvv>7@|Np1`{PpL=)$=dD{M&ls+P)J$KY#yu{{Hjs2S5E2%Pd`jb0;oq
zTC?}y<6kZzssH~o{0CwNh9zS9u0YDGB*-rqC_){;5T(6e8ffZoPZ!6Kid#t^o;-Sx
zl3vcpl&<jM3k!z=o8E$k&WU0n4F`o48YC=iLXJ!kz1kD&c;Ij|BS?UC>W;g2U6;1T
z$~H7y<pqk|NEOv7xqJ63Ym96}L`CFX2Bwb2*tk;;ckageOCOn@T*?eIR9rIDxV*eP
z+SA;ifC<D`)6Ofet1I^A2lE#+^tJ73>Fr<-VNhsjU|P2>Pfl)GO`ijU2m?@YdItl~
z21XVEj{}Sv2aa<vIWRUbBo(Bwayu~c8#^!<THL;Ey+bmJyRoO>%9BJkpbmewYJm;R
x%+>1RK$Rc9q$DuxV&}MVW5&!_8%8D`hD|a?63X9dmI8x;!PC{xWt~$(69DExUbFxJ

literal 0
HcmV?d00001

diff --git a/plugins/content_types/block/icon_core_recentcomments.png b/plugins/content_types/block/icon_core_recentcomments.png
new file mode 100644
index 0000000000000000000000000000000000000000..ba96e32a31863c59c6ecab8df957c0da95437532
GIT binary patch
literal 662
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl;=8&~`zjDUQ}64!{5
z;QX|b^2DN42FH~Aq*MjZ+{E<Mpwz^a%EFVWHb6xu1AIbUgHx;DfBN#`%RiTp)S7wQ
zpMLo5l~$)?X!Y>Jzsk<pKmPn*b@O}0tSv^C&JSL^S$+B5x=VMKp1Stp^S{d3TN7($
zKl}9W<(GdEne~r9{(JlF-^N=%7G3@J^UuHc-~Y{7y=VS`+poX=`~Lg?{rCSqeE;|E
z+rLTYzvcI@Dw(qW)z^PD3--j8Pn~n=TiMKQ9#Mr?U;W#9_Q8XfpMU)RzxCda@{ZZN
zAN-uQ|LnJ)zn;8$8&%Nx_1C`_pZ-37|Jl+d_{8(y2Os~+ow%%N&EEh2{{wx)`2KD`
zka8{w@(TuvPzV?tlUUvZ4Q26kaSW-rl~nLZT)@P%l!2*Qp`eI~LxHVMgwagBfgwqt
zU<)g=wLn2h3NujD(Ou#?3&)umj7%K|uUrh9-`eULF~dFfvd5_&Nri?6rcXN4jEtsD
zn|5kV)Sa|542(w}JUEfGQbA2k`?QM65~ZXxW&sBtz8;%tK1Ijo%sF;UW{p^y8PFAi
z0-{r=OqsyI6>*z^MPL?JwlvV{4e249lO8cKIlJ<Pv1P|KFfei5cp1^yI8Uf~o29-3
zgW-+YH)nQ4FfcZYwy)EYw+4wsN6+>sEH3u;HkRo4{Ba{Qi$JsRY*T?5%?!;J^Lv?r
tN-QilZZtH$&A_OyZ@s%&*r9=uL2;GZ-ydGTCIW+(!PC{xWt~$(697^*Rj2>}

literal 0
HcmV?d00001

diff --git a/plugins/content_types/block/icon_core_recentpoll.png b/plugins/content_types/block/icon_core_recentpoll.png
new file mode 100644
index 0000000000000000000000000000000000000000..c23fa23e65cc833643971cf2fe2bdbbb0a800348
GIT binary patch
literal 608
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl;=8&~`zjDUQ}64!{5
z;QX|b^2DN42FH~Aq*MjZ+{E<Mpwz^a%EFVWHb6y71AIbU=Un=>@z#$AFW$WW^u;T!
z&dAbv()n-eF5Ovu`QFk~*Yfi6fC}&3yZ86+-}?IcB}<lQYipO4m7P6%_T9U8EiEmV
zE?r_`V!C?us*H@xuV23&KYrZZ-5n4RFn#*;u&}Vez`)AN%6043MMp=Ai;I8%{yjcE
ze%k)C-+ul&@%;CbS8t!c|7__Jy!*jV9Yd?F_kJw8`Ym_jvZghAT|!b1KK`}p=J)^q
z{{tP6_p|m4kTNd`@(TuvkO3G3BIkAkjriy3;uunKE6Lz-!t;<|V-_Z61p{Md4h1$o
z5k@iN28N^r^Q#QZ$pQwZsf<8Tzu;g!MmYh0c8)8(3``x4XG1)Dq8U$^8yQ_n4l!rq
zP*~8giDkRRg!PNlmt-%>V-axRX<Ig_sOyiFRaI4w0%I=FM1z!T2BOy(IT?OBFg7qS
zaWR~|)_mgi>+DQs7J-0<aF<XHMFyZgwlhu3meut1sHr*FHH&FGFfg({@m;#4F(x*)
zmW|Cf3}jNk^NACmGI_o>-muZ|B@>H4bK|sWT^cU7%+kV>^&A)sXKc)1Y*dplFwB$&
t$<CDI?w&Z&Okl&NSFfaIF|tT7cz;&8d*x9^A21{sJYD@<);T3K0RVeJ68!)G

literal 0
HcmV?d00001

diff --git a/plugins/content_types/block/icon_core_searchform.png b/plugins/content_types/block/icon_core_searchform.png
new file mode 100644
index 0000000000000000000000000000000000000000..3ad1deb65c4a1cada8cdedb7619f3ed5e8ff0587
GIT binary patch
literal 717
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl;=8&~`zjDUQ}64!{5
z;QX|b^2DN42FH~Aq*MjZ+{E<Mpwz^a%EFVWHb6yh1AIbUz0&F)ym<5e)0eIHez=6B
z8d*B)7+TG_^ljaxI~&X0R$soi^whP@8#m?#+Z^A&voO-*>Hq&H_wRc2>(9w2{|`U@
z=_t<NtuIj;=R3Wt>COND?>_#%`r-eA=~F(wdw2Wa|As{Gg-ci3@-leqi0d&h{Qvhq
z-`Duh-~U={3?Kgg4^(E>W?-mD@VDV-Xjf+V{Qv*<HA{AF*ifJ7eQ4{NsT2C<Oz3{~
z@%yLmzqL3RQtcII&stCt=jElquzJxvFIlFKAKpY;D^1&f_S?^2yC3{~^6KrzTR)z^
z|7__Jyy)t;gO7imc>X(g;<BbSdsp53{{R1fppWkvG^__w{v|<v!9Woz0tVZ#4VxJl
z7`Z)N978H@C4G4O=s{V*2R0^sg%6*ZITYCRL>SrZ8yJ!veE7=3%rEfaYbpa!G;aYz
z|3ZuXt6GEwEH*K)2sAgZSMQ%Xan0PutxU$7yOp^e7#dlge66jm{n}$XGqy%1l7Xq?
z;O*<dx6fP;_jQgsef0S8i@XXA5_@LaRQlG2E@5dYJ;21k$RhG#!-kJvr%rxi{JpTe
zycFny2@RbqdM0!%SSJ+00ManS#zrT1s_50D7H{v~jE!Vu;!t_OVj{=!#`5jWxj=5m
z!PA0D58l1w6G=<~c|borTzvvld3jk`wVRt6&?g^~3s{-b4H8mHKC=Pk?d{pv#Kg=M
i5>iu>KYwH9FkmP?YkX3nt}hW7;tZayelF{r5}E)OENK`3

literal 0
HcmV?d00001

diff --git a/plugins/content_types/block/icon_core_syndicate.png b/plugins/content_types/block/icon_core_syndicate.png
new file mode 100644
index 0000000000000000000000000000000000000000..27c54bf00c8ef49996f633cef4f998aa6445833b
GIT binary patch
literal 803
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl;=8&~`zjDUQ}64!{5
z;QX|b^2DN42FH~Aq*MjZ+{E<Mpwz^a%EFVWHVh1mvH?CJt}Y>|UTJj?Uc7n#>C5-&
z7CMGjKWABfon&rg>HPoa=a1c{KW19~`|;`59Lp~g&DLGI^Lwt<>w2T5r>?EOeD6c2
z$-hs}{(gM+uGQpIuj!vdE&slMdRC(UqSEm1t*zgtnEyJr{N3u#-#g2HUf=&_TJpbV
z=RQq#`t$hgkM)_qpWXPiChpxtpT~K6-w)4x*J}Kv#{Kh>^mnsT-p@_>x-#R(JeQyI
zUB4cf@xIsb%d+%ehx<QnpZ;Y{@vqHU?>0^SwaD$)zUD8R8vcEJ_V3ND-z$T@?49vr
zOX;V@X|Fmxf1a5AeQoC7`v?Er-1=jG-|zKtU-!@axisk8Y?o)<2`@TBzhBw+ePO__
z%bWi`Jv(jx*>698J$d!k(k1x$`_H)(mo=@~`~UxcU@*2T1pNk5@g+fi!9Woj0*1-6
z;&p&=qUh=37*cU7sYCdgI2U&}V^fAgM>jKv0$ZX8<1vc{hNK7mrNw5Yq7xrXPELH>
z+ndS)lv@~a_{NP0x$=62_y+4aj0z1Bhmy9II2}n!wiIow`BuQzz`(@yg6ZmN>tn~f
ziZ&Ow8Z)p6IQy)z?4Q+YI6Eh24fphl3Ka(i!y^XLjAtKw5&Y2g)KHkGA87UhhWHJ0
zGjx`#?T%Qp-X{d8h>^A7+s#wQtX4!F_40IgWdfRHV%)vFYe{Fun!O7`auP(?L5kKS
zCp+KVn>;n8DM?hxf`O?+(dtg8ao9X>`!MHQM%UUpMS;#-w0O}Un;l13d8cgs$~0p}
z1S3#cpCK2A(t(CfO(Qm-ibszmBqb%38XKCMr<$tqDI8$X2sY!(-&EfVj28w^S3j3^
HP6<r_#GSE+

literal 0
HcmV?d00001

diff --git a/plugins/content_types/block/icon_core_userlogin.png b/plugins/content_types/block/icon_core_userlogin.png
new file mode 100644
index 0000000000000000000000000000000000000000..dc4521fffadb3b58e0d6d8a4463e0f99ba17f4a7
GIT binary patch
literal 601
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl;=8&~`zjDUQ}64!{5
z;QX|b^2DN42FH~Aq*MjZ+{E<Mpwz^a%EFVWHb6y71AIbUAG~;zmRI4GR_79u`u@|G
z-4A{ime<|dEMsKptYc{P;Y`BKrIuUo{aAhZ-nvV7mY%w{>gM<MB;`4mzCGIRSX|Y3
zajs}{d-tNN-_G<aOgjH<N2kv54*rg0<?~b2b~ec!pQ``*aLnt|g^ymoKiDFDWtqgr
zTR(n2nKWa@jA{GNe*5|B<jGS{UcLSE_2TpQpDkU24?g~NxSlt6;<BH&%1%80-Lz)!
z|NsAiE;V{T`x%fjFA4Gs28xgY7z85cb_0$0?&;zfQgJKE;PKPP*Dn|_GC3<47&CJy
zu*Hcmsu?#hBt0-TWn-=tFfdJJ0*cm6XxO!D#*7XQZSB=+#tsaI84Rpfe78C@Omq*O
zEUD1o!1QWaPmaQZqZ$iN@(4Kas5vmIx`l<w$(2rMkOL~8u|Z<BhE@S{<C+$e00xDI
z2Bu$cmRTt*SeB-+ZZ*4rLjt3$sa~a}p0e@;2B2~YCzd5C4optFWEdD(L<Ph|MA$ep
ziWyi0ninp!+dWH=MZ&|VfC<E1w{FD>Mga|GLuO`mkUfSknHtR`3=Ce(1gV}WDJ*Qf
lSx%s!prB~h3`Q0ShU7BECH%?DHUfiy!PC{xWt~$(69DHg42=K)

literal 0
HcmV?d00001

diff --git a/plugins/content_types/block/icon_core_whosnew.png b/plugins/content_types/block/icon_core_whosnew.png
new file mode 100644
index 0000000000000000000000000000000000000000..51303e7fae68ef81eb001d8231f486bcf02afee2
GIT binary patch
literal 732
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl;=8&~`zjDUQ}64!{5
z;QX|b^2DN42FH~Aq*MjZ+{E<Mpwz^a%EFVWHb6z61AIbUT|!d5((1O}`w`l(%*fLD
z{iiQFhE|Kpy<WeQNDOlR|Nno%yrX3~$=w_Gt-gHk|Nm*T_ns`CwoJn|?f?IxjPm-X
zB^!H}?P!fRUa+a}|9{T^|DT^YxpChKpOdpo-#@x`YEk2=o8J$e_IUJMv1?A=x=VK!
z9KEpm+>NyQ?xJwBfXapGQ+IE_{Or?<dy_Wpd;dZ1#y!2|JG)mLJX<qm`lhYZo2TV&
zy!GS%|6N%TW^L1_Pg#55?mg3+x2>n_IrZ-2=f}^LrffXcyY<GmpTC~J|J<2qwCcjA
z!&5RW!kR5zf;X1A?tbtycjB_THCLO~?0tFt*ulrY{{IJhn_<~B<47PCSQ6wH4D=vX
z0Yk={6$cp@7==7t978H@C2>3m7JRVvBO{Z(0tW{JhXR{jsB)@sspATUWCjNY!xfUn
zKYrhi%=q2NATF*96nGK!k^A>=?WkWrE14RVnSml5uRLe|{QbJyl9_SxO0dX>DDPjt
zf1l1cQB_f4p>1Krz#`DxZ*qZ0wYZXBprEXT9cYbwv@<hjbs>Me0s|*Vo?rWdg<6@V
zUwph@e3^QA149$nj#nRk{QC4`m(@;YpaSs-ha;j(j$S?6$*R!cz%<Y2j9%V4hX>Cd
z9b*!3;EC(2n|DU<-n~4B2X7x7Vgrfz`6Vz4TzK>?jhRECjloS_Jx$zqg249f3A_1$
su4Z8|FfuaO!OY0bEj`<x!J&bXL2jp6;3}B~pj6A?>FVdQ&MBb@08Ynnq5uE@

literal 0
HcmV?d00001

diff --git a/plugins/content_types/block/icon_core_whosonline.png b/plugins/content_types/block/icon_core_whosonline.png
new file mode 100644
index 0000000000000000000000000000000000000000..a5896e3a54bbe148beddc5ef31aa4f93329b60a2
GIT binary patch
literal 744
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl;=8&~`zjDUQ}64!{5
z;QX|b^2DN42FH~Aq*MjZ+{E<Mpwz^a%EFVWHb6yx0(?STT|!c~-uvN|Ru|f^%*fLD
z{iiQFhF1Uo|6f$@wfgeCj&-{egPaTI9WBdAwteT~^4??e?vw8yUF%%2_r(7bMN^k;
zy!AuZz0mQ6cgK<)ar2w=)=o{Ix_kBi)xBG9th)K#?Ow=<MNR82-Kkr!Uc)x6Y4vP%
zo77+be>pt&UVr-j^zBDhoxR>TZ&PN+j5&MO{`vnWZ_DI_Ma@?Kt%|142{@DX`TysZ
zM2nuayWW2IG=1l>qA7D{A2<_GxiF)=KImj-VOns&&6rOw?xhx|`QC{*IlJ`R&tK2q
zf9^~)T6N*m;VBswVa=8<!5hn5cR%=<J8@avnyXD~_P)G+?BL^H#{Z3h0dT<Lg$a-f
zDGBlm26~y=fFbyM(M1LZMj=lZ$B>F!NgU5YwmcB}z|It}z`@7Hp}^*+?ak~dE4YFo
z*ua6oFk|HhR@P4GOqM1FYinVkzzoZiFIZV6y;<0PF*I^B14T4GuI6NCJ(<0mk#X?~
zut>p8=~*nSH*Z;1S6A;oxzm7wMWA`V-UXggch-D?g5r-%Kx^uYeQPxpgWoeKFmQt8
z?X@phxbZo@YhZZCz!$FHz|h21Vex^D<pW#Ajw(i=0{w^s$C#HKJ$!j8t3rbVlU>i5
zck|>N9=v>al1adUXP;i9-I;fFb@Ln^sK3@@1Bt9#m%u16;n~MvRt|->1hw$+wDRl;
z0{y!;O}7WSnuXoi(9ocQk&&BQdUm~mLjxm&%6yAyx<|J^28KR^r>mdKI;Vst04y$Q
AG5`Po

literal 0
HcmV?d00001

diff --git a/plugins/content_types/custom/custom.inc b/plugins/content_types/custom/custom.inc
index c28187cb..26eb6baf 100644
--- a/plugins/content_types/custom/custom.inc
+++ b/plugins/content_types/custom/custom.inc
@@ -1,6 +1,14 @@
 <?php
 // $Id$
 
+/**
+ * @file
+ * Custom content type.
+ *
+ * This content type is nothing more than a title and a body that is entered
+ * by the user and run through standard filters. The information is stored
+ * right in the config, so each custom content is unique.
+ */
 
 /**
  * Callback function to supply a list of content types.
@@ -88,6 +96,9 @@ function ctools_custom_content_type_edit_form(&$form, &$form_state) {
   return $form;
 }
 
+/**
+ * The submit form stores the data in $conf.
+ */
 function ctools_custom_content_type_edit_form_submit(&$form, &$form_state) {
   $form_state['conf'] = $form_state['values'];
 }
-- 
GitLab