diff --git a/modules/groups/groups_feeds/groups_feeds.module b/modules/groups/groups_feeds/groups_feeds.module index 00e78bb..512e9fa 100644 --- a/modules/groups/groups_feeds/groups_feeds.module +++ b/modules/groups/groups_feeds/groups_feeds.module @@ -15,9 +15,96 @@ function groups_feeds_menu() { 'access callback' => TRUE, 'file' => 'groups_feeds.groups_json.inc', ); + $items['node/%node/sync'] = array( + 'title' => 'Sync Settings', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('groups_feeds_sync_settings', 1), + 'access callback' => 'groups_feeds_sync_access', + 'access arguments' => array(1), + 'type' => MENU_LOCAL_TASK, + ); return $items; } +function groups_feeds_sync_access($group_node) { + global $user; + if ((empty($group_node)) || ($group_node->type != 'group')) { + return FALSE; + } + // allow modify sync settings for group administrator + if (og_user_access('node', $group_node->nid, 'administer group')) { + return TRUE; + } + // allow override sync settings for amabassadors and community manageres + if ((in_array("ambassador", $user->roles)) || (in_array("community_manager", $user->roles))) { + return TRUE; + } + return FALSE; +} + +/** + * Sync settings form callback. + */ +function groups_feeds_sync_settings($formid, $form_state, $group_node) { + $nid = $group_node->nid; + $meetup_url = NULL; + foreach ($group_node->field_resource_links[LANGUAGE_NONE] as $resource) { + if ($resource['key'] == '5') { + $meetup_url = $resource['value']; + } + } + $form['nid'] = array('#type' => 'value', '#value' => $nid); + $form['description'] = array( + '#markup' => '

' . t('Synchronization settings for group data. '). '

', + ); + $url = 'https://github.com/openstack-infra/groups-static-pages'; + $form['sync_groups'] = array( + '#type' => 'checkbox', + '#prefix' => + '

'.t('OpenStack static pages repository').'

'. + '', + '#title' => 'Import group data from groups.json', + '#default_value' => variable_get('groups_sync_group_'.$nid, TRUE), + ); + if (!empty($meetup_url)) { + // show meetup sync only for groups with meetup link + $form['sync_events'] = array( + '#type' => 'checkbox', + '#prefix' => '

'.t('Meetup.com synchronization').'

'. + '', + '#title' => 'Import event calendar from meetup.com', + '#default_value' => variable_get('groups_sync_event_'.$nid, TRUE), + ); + $form['sync_meetup'] = array( + '#type' => 'checkbox', + '#title' => 'Import group stats from meetup.com', + '#default_value' => variable_get('groups_sync_meetup_'.$nid, TRUE), + ); + } + $form['actions']['#type'] = 'actions'; + $form['actions']['submit'] = array( + '#type' => 'submit', + '#value' => t('Save configuration'), + ); + return $form; +} + +/** + * Implements hook_form_submit(). + */ +function groups_feeds_sync_settings_submit($form, &$form_state) { + $nid = $form_state['values']['nid']; + if (!empty($nid)) { + variable_set('groups_sync_event_'.$nid, $form_state['values']['sync_events']); + if (isset($form_state['values']['sync_groups'])) { + variable_set('groups_sync_group_'.$nid, $form_state['values']['sync_groups']); + } + if (isset($form_state['values']['sync_meetup'])) { + variable_set('groups_sync_meetup_'.$nid, $form_state['values']['sync_meetup']); + } + } +} + /** * Implements hook_feeds_plugins(). */ diff --git a/themes/openstack_bootstrap/custom-sass/partials/_group.scss b/themes/openstack_bootstrap/custom-sass/partials/_group.scss index ce31457..f8e9b1a 100644 --- a/themes/openstack_bootstrap/custom-sass/partials/_group.scss +++ b/themes/openstack_bootstrap/custom-sass/partials/_group.scss @@ -171,3 +171,21 @@ margin-right: 4px; } } + +/* sync settings page */ + +#groups-feeds-sync-settings { + h3 { + color: #000; + font-size: 14px; + font-weight: 600; + } + a { + color: #ffffff; + text-decoration: none; + font-size: 12px; + } + a:hover { + text-decoration: underline; + } +} \ No newline at end of file