From 59baa415843acb2742fa7b916682b31d58cf307a Mon Sep 17 00:00:00 2001 From: Marton Kiss Date: Sat, 22 Aug 2015 12:51:17 +0200 Subject: [PATCH] Add social link to user profile on ambassador page Display the twitter account of ambassadors on the ambassador page. - groups_social_link formatter module for link_fields - fontawesome iconset to support font icons (CDN version) - update of user profiles's profile teaser display suite settings Change-Id: Ieba3b5ff047792625fdb23fb7ab498ee355e9dfc --- groups.install | 10 +++ .../groups_ambassador.ds.inc | 4 +- .../groups_ambassador.strongarm.inc | 8 +- .../groups_ambassador_pages.info | 1 + .../groups_social_link.info | 5 ++ .../groups_social_link.module | 90 +++++++++++++++++++ .../custom-sass/partials/_ambassadors.scss | 15 +++- themes/openstack_bootstrap/template.php | 1 + 8 files changed, 128 insertions(+), 6 deletions(-) create mode 100644 modules/groups/groups_social_link/groups_social_link.info create mode 100644 modules/groups/groups_social_link/groups_social_link.module diff --git a/groups.install b/groups.install index ae11687..9e2f403 100644 --- a/groups.install +++ b/groups.install @@ -336,6 +336,16 @@ function groups_update_7117() { drupal_flush_all_caches(); } +/** + * Enable groups social link module. + */ +function groups_update_7118() { + if (!module_exists('groups_social_link')) { + module_enable(array('groups_social_link')); + } + drupal_flush_all_caches(); +} + /** * Set language negotiation to URL based. */ diff --git a/modules/groups/groups_ambassador/groups_ambassador.ds.inc b/modules/groups/groups_ambassador/groups_ambassador.ds.inc index a195671..41f38b6 100644 --- a/modules/groups/groups_ambassador/groups_ambassador.ds.inc +++ b/modules/groups/groups_ambassador/groups_ambassador.ds.inc @@ -23,7 +23,7 @@ function groups_ambassador_ds_field_settings_info() { 'format' => 'default', 'formatter_settings' => array( 'link' => '1', - 'wrapper' => 'h2', + 'wrapper' => 'h3', 'class' => '', ), ), @@ -56,11 +56,13 @@ function groups_ambassador_ds_layout_settings_info() { 'ds_content' => array( 0 => 'ds_user_picture', 1 => 'name', + 2 => 'field_twitter_url', ), ), 'fields' => array( 'ds_user_picture' => 'ds_content', 'name' => 'ds_content', + 'field_twitter_url' => 'ds_content', ), 'classes' => array(), 'wrappers' => array( diff --git a/modules/groups/groups_ambassador/groups_ambassador.strongarm.inc b/modules/groups/groups_ambassador/groups_ambassador.strongarm.inc index d9e861e..d39f4ec 100644 --- a/modules/groups/groups_ambassador/groups_ambassador.strongarm.inc +++ b/modules/groups/groups_ambassador/groups_ambassador.strongarm.inc @@ -41,8 +41,8 @@ function groups_ambassador_strongarm() { 'visible' => TRUE, ), 'profile_teaser' => array( - 'weight' => '5', - 'visible' => TRUE, + 'weight' => '11', + 'visible' => FALSE, ), ), 'summary' => array( @@ -51,8 +51,8 @@ function groups_ambassador_strongarm() { 'visible' => TRUE, ), 'profile_teaser' => array( - 'weight' => '5', - 'visible' => TRUE, + 'weight' => '10', + 'visible' => FALSE, ), ), ), diff --git a/modules/groups/groups_ambassador_pages/groups_ambassador_pages.info b/modules/groups/groups_ambassador_pages/groups_ambassador_pages.info index b4d93cb..7eeddca 100644 --- a/modules/groups/groups_ambassador_pages/groups_ambassador_pages.info +++ b/modules/groups/groups_ambassador_pages/groups_ambassador_pages.info @@ -10,6 +10,7 @@ dependencies[] = groups_ambassador dependencies[] = groups_homepage dependencies[] = menu dependencies[] = page_manager +dependencies[] = groups_social_link features[ctools][] = page_manager:pages_default:1 features[features_api][] = api:2 features[menu_links][] = main-menu_ambassador-program:ambassador-program diff --git a/modules/groups/groups_social_link/groups_social_link.info b/modules/groups/groups_social_link/groups_social_link.info new file mode 100644 index 0000000..9f54ab0 --- /dev/null +++ b/modules/groups/groups_social_link/groups_social_link.info @@ -0,0 +1,5 @@ +name = Groups Social Link +description = "Add a formatter to url fields that allows Admins to determine how links will be displayed" +package = groups +core = 7.x +files[] = groups_social_link.module \ No newline at end of file diff --git a/modules/groups/groups_social_link/groups_social_link.module b/modules/groups/groups_social_link/groups_social_link.module new file mode 100644 index 0000000..fdcd00d --- /dev/null +++ b/modules/groups/groups_social_link/groups_social_link.module @@ -0,0 +1,90 @@ + array( + 'label' => t('Social Link'), + 'field types' => array('link_field'), + 'settings' => array( + 'provider' => 'twitter', + ), + ), + ); +} + +/** + * Implements hook_field_formatter_settings_form(). + */ +function groups_social_link_field_formatter_settings_form($field, $instance, + $view_mode, $form, &$form_state) { + $element = array(); + $element['provider'] = array( + '#type' => 'select', + '#title' => t('Provider'), + '#description' => t('Select social provider'), + '#default_value' => $settings['provider'], + '#options' => array( + 'twitter' => 'Twitter', + 'weibo' => 'Weibo', + 'facebook' => 'Facebook', + ), + ); + return $element; +} + +/** + * Implements hook_field_formatter_settings_summary(). + */ +function groups_social_link_field_formatter_settings_summary($field, $instance, + $view_mode) { + $display = $instance['display'][$view_mode]; + $settings = $display['settings']; + $summary = t('Use a @provider provider to display link.', array( + '@provider' => $settings['provider'], + )); + return $summary; +} + +/** + * Implements hook_field_formatter_view(). + */ +function groups_social_link_field_formatter_view($entity_type, $entity, $field, + $instance, $langcode, $items, $display) { + $settings = $display['settings']; + $element = array(); + foreach ($items as $delta => $item) { + // dpm($item, 'item'); + $url = $item['url']; // Getting the actual value + } + if (!empty($url)) { + $display_value = ''; + switch ($settings['provider']) { + case 'twitter': + $glyphicon = 'fa-twitter'; + $display_value = '@'.basename($url); + break; + case 'weibo': + $glyphicon = 'fa-weibo'; + $display_value = '@'.basename($url); + break; + } + $element[0]['#markup'] = format_string( + '', + array( + '@glyphicon' => $glyphicon, + '@provider' => $settings['provider'], + '@url' => $url, + '@display_value' => $display_value, + )); + } + return $element; +} \ No newline at end of file diff --git a/themes/openstack_bootstrap/custom-sass/partials/_ambassadors.scss b/themes/openstack_bootstrap/custom-sass/partials/_ambassadors.scss index 077d791..1f09883 100644 --- a/themes/openstack_bootstrap/custom-sass/partials/_ambassadors.scss +++ b/themes/openstack_bootstrap/custom-sass/partials/_ambassadors.scss @@ -50,9 +50,12 @@ font-family: "Open Sans",Helvetica,Arial,sans-serif; color: #445059; } + .views-row { + margin-bottom: 2em; + } h3 { margin-top: 10px; - margin-bottom: 20px; + margin-bottom: 0px; a { color: #2A4E68; font-family: "Open Sans",Helvetica,Arial,sans-serif; @@ -61,6 +64,16 @@ line-height: 20px; } } + .social-link { + font-size: 12px; + i { + color: #888; + padding-right: 0.2em; + } + a { + color: #888; + } + } } // override of page defaults diff --git a/themes/openstack_bootstrap/template.php b/themes/openstack_bootstrap/template.php index cb7826e..089f7b4 100755 --- a/themes/openstack_bootstrap/template.php +++ b/themes/openstack_bootstrap/template.php @@ -22,6 +22,7 @@ function openstack_bootstrap_preprocess_page(&$variables) { unset($variables['navbar_classes_array'][$key]); $variables['navbar_classes_array'][] = 'navbar-os'; } + drupal_add_css('//netdna.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.css', array('type' => 'external')); } /**