Add ambassador application form
Add an ambassador application form, registered users can apply to the position. The submit hook will save the registration form data to content management and invoke a notification message to ambassadors. Change-Id: Ia702ae80f44b1289c164dcca8e70f993b98c346f
This commit is contained in:
parent
e40241a18c
commit
bc02052b0e
|
@ -0,0 +1,144 @@
|
|||
<?php
|
||||
/**
|
||||
* @file
|
||||
* groups_ambassador.features.field_base.inc
|
||||
*/
|
||||
|
||||
/**
|
||||
* Implements hook_field_default_field_bases().
|
||||
*/
|
||||
function groups_ambassador_field_default_field_bases() {
|
||||
$field_bases = array();
|
||||
|
||||
// Exported field_base: 'field_applicant'
|
||||
$field_bases['field_applicant'] = array(
|
||||
'active' => 1,
|
||||
'cardinality' => 1,
|
||||
'deleted' => 0,
|
||||
'entity_types' => array(),
|
||||
'field_name' => 'field_applicant',
|
||||
'indexes' => array(
|
||||
'target_id' => array(
|
||||
0 => 'target_id',
|
||||
),
|
||||
),
|
||||
'locked' => 0,
|
||||
'module' => 'entityreference',
|
||||
'settings' => array(
|
||||
'handler' => 'base',
|
||||
'handler_settings' => array(
|
||||
'behaviors' => array(
|
||||
'views-select-list' => array(
|
||||
'status' => 0,
|
||||
),
|
||||
),
|
||||
'sort' => array(
|
||||
'type' => 'none',
|
||||
),
|
||||
'target_bundles' => array(),
|
||||
),
|
||||
'target_type' => 'user',
|
||||
),
|
||||
'translatable' => 0,
|
||||
'type' => 'entityreference',
|
||||
);
|
||||
|
||||
// Exported field_base: 'field_collaboration'
|
||||
$field_bases['field_collaboration'] = array(
|
||||
'active' => 1,
|
||||
'cardinality' => 1,
|
||||
'deleted' => 0,
|
||||
'entity_types' => array(),
|
||||
'field_name' => 'field_collaboration',
|
||||
'indexes' => array(
|
||||
'format' => array(
|
||||
0 => 'format',
|
||||
),
|
||||
),
|
||||
'locked' => 0,
|
||||
'module' => 'text',
|
||||
'settings' => array(),
|
||||
'translatable' => 0,
|
||||
'type' => 'text_long',
|
||||
);
|
||||
|
||||
// Exported field_base: 'field_ideas'
|
||||
$field_bases['field_ideas'] = array(
|
||||
'active' => 1,
|
||||
'cardinality' => 1,
|
||||
'deleted' => 0,
|
||||
'entity_types' => array(),
|
||||
'field_name' => 'field_ideas',
|
||||
'indexes' => array(
|
||||
'format' => array(
|
||||
0 => 'format',
|
||||
),
|
||||
),
|
||||
'locked' => 0,
|
||||
'module' => 'text',
|
||||
'settings' => array(),
|
||||
'translatable' => 0,
|
||||
'type' => 'text_long',
|
||||
);
|
||||
|
||||
// Exported field_base: 'field_participation'
|
||||
$field_bases['field_participation'] = array(
|
||||
'active' => 1,
|
||||
'cardinality' => 1,
|
||||
'deleted' => 0,
|
||||
'entity_types' => array(),
|
||||
'field_name' => 'field_participation',
|
||||
'indexes' => array(
|
||||
'format' => array(
|
||||
0 => 'format',
|
||||
),
|
||||
),
|
||||
'locked' => 0,
|
||||
'module' => 'text',
|
||||
'settings' => array(),
|
||||
'translatable' => 0,
|
||||
'type' => 'text_long',
|
||||
);
|
||||
|
||||
// Exported field_base: 'field_reason'
|
||||
$field_bases['field_reason'] = array(
|
||||
'active' => 1,
|
||||
'cardinality' => 1,
|
||||
'deleted' => 0,
|
||||
'entity_types' => array(),
|
||||
'field_name' => 'field_reason',
|
||||
'indexes' => array(
|
||||
'format' => array(
|
||||
0 => 'format',
|
||||
),
|
||||
),
|
||||
'locked' => 0,
|
||||
'module' => 'text',
|
||||
'settings' => array(),
|
||||
'translatable' => 0,
|
||||
'type' => 'text_long',
|
||||
);
|
||||
|
||||
// Exported field_base: 'field_region'
|
||||
$field_bases['field_region'] = array(
|
||||
'active' => 1,
|
||||
'cardinality' => 1,
|
||||
'deleted' => 0,
|
||||
'entity_types' => array(),
|
||||
'field_name' => 'field_region',
|
||||
'indexes' => array(
|
||||
'format' => array(
|
||||
0 => 'format',
|
||||
),
|
||||
),
|
||||
'locked' => 0,
|
||||
'module' => 'text',
|
||||
'settings' => array(
|
||||
'max_length' => 255,
|
||||
),
|
||||
'translatable' => 0,
|
||||
'type' => 'text',
|
||||
);
|
||||
|
||||
return $field_bases;
|
||||
}
|
|
@ -0,0 +1,311 @@
|
|||
<?php
|
||||
/**
|
||||
* @file
|
||||
* groups_ambassador.features.field_instance.inc
|
||||
*/
|
||||
|
||||
/**
|
||||
* Implements hook_field_default_field_instances().
|
||||
*/
|
||||
function groups_ambassador_field_default_field_instances() {
|
||||
$field_instances = array();
|
||||
|
||||
// Exported field_instance: 'comment-comment_node_ambassador_application-comment_body'
|
||||
$field_instances['comment-comment_node_ambassador_application-comment_body'] = array(
|
||||
'bundle' => 'comment_node_ambassador_application',
|
||||
'default_value' => NULL,
|
||||
'deleted' => 0,
|
||||
'description' => '',
|
||||
'display' => array(
|
||||
'default' => array(
|
||||
'label' => 'hidden',
|
||||
'module' => 'text',
|
||||
'settings' => array(),
|
||||
'type' => 'text_default',
|
||||
'weight' => 0,
|
||||
),
|
||||
),
|
||||
'entity_type' => 'comment',
|
||||
'field_name' => 'comment_body',
|
||||
'label' => 'Comment',
|
||||
'required' => TRUE,
|
||||
'settings' => array(
|
||||
'text_processing' => 1,
|
||||
'user_register_form' => FALSE,
|
||||
),
|
||||
'widget' => array(
|
||||
'module' => 'text',
|
||||
'settings' => array(
|
||||
'rows' => 5,
|
||||
),
|
||||
'type' => 'text_textarea',
|
||||
'weight' => 0,
|
||||
),
|
||||
);
|
||||
|
||||
// Exported field_instance: 'node-ambassador_application-field_applicant'
|
||||
$field_instances['node-ambassador_application-field_applicant'] = array(
|
||||
'bundle' => 'ambassador_application',
|
||||
'default_value' => NULL,
|
||||
'default_value_function' => '',
|
||||
'deleted' => 0,
|
||||
'description' => '',
|
||||
'display' => array(
|
||||
'default' => array(
|
||||
'label' => 'above',
|
||||
'module' => 'entityreference',
|
||||
'settings' => array(
|
||||
'link' => FALSE,
|
||||
),
|
||||
'type' => 'entityreference_label',
|
||||
'weight' => 0,
|
||||
),
|
||||
'teaser' => array(
|
||||
'label' => 'above',
|
||||
'settings' => array(),
|
||||
'type' => 'hidden',
|
||||
'weight' => 0,
|
||||
),
|
||||
),
|
||||
'entity_type' => 'node',
|
||||
'field_name' => 'field_applicant',
|
||||
'label' => 'Applicant',
|
||||
'required' => 1,
|
||||
'settings' => array(
|
||||
'behaviors' => array(
|
||||
'prepopulate' => array(
|
||||
'status' => 0,
|
||||
),
|
||||
),
|
||||
'user_register_form' => FALSE,
|
||||
),
|
||||
'widget' => array(
|
||||
'active' => 1,
|
||||
'module' => 'entityreference',
|
||||
'settings' => array(
|
||||
'match_operator' => 'CONTAINS',
|
||||
'path' => '',
|
||||
'size' => 60,
|
||||
),
|
||||
'type' => 'entityreference_autocomplete',
|
||||
'weight' => 4,
|
||||
),
|
||||
);
|
||||
|
||||
// Exported field_instance: 'node-ambassador_application-field_collaboration'
|
||||
$field_instances['node-ambassador_application-field_collaboration'] = array(
|
||||
'bundle' => 'ambassador_application',
|
||||
'default_value' => NULL,
|
||||
'deleted' => 0,
|
||||
'description' => 'Collaboration plans of the applicant.',
|
||||
'display' => array(
|
||||
'default' => array(
|
||||
'label' => 'above',
|
||||
'module' => 'text',
|
||||
'settings' => array(),
|
||||
'type' => 'text_default',
|
||||
'weight' => 5,
|
||||
),
|
||||
'teaser' => array(
|
||||
'label' => 'above',
|
||||
'settings' => array(),
|
||||
'type' => 'hidden',
|
||||
'weight' => 0,
|
||||
),
|
||||
),
|
||||
'entity_type' => 'node',
|
||||
'field_name' => 'field_collaboration',
|
||||
'label' => 'Collaboration',
|
||||
'required' => 0,
|
||||
'settings' => array(
|
||||
'text_processing' => 0,
|
||||
'user_register_form' => FALSE,
|
||||
),
|
||||
'widget' => array(
|
||||
'active' => 1,
|
||||
'module' => 'text',
|
||||
'settings' => array(
|
||||
'rows' => 5,
|
||||
),
|
||||
'type' => 'text_textarea',
|
||||
'weight' => 10,
|
||||
),
|
||||
);
|
||||
|
||||
// Exported field_instance: 'node-ambassador_application-field_ideas'
|
||||
$field_instances['node-ambassador_application-field_ideas'] = array(
|
||||
'bundle' => 'ambassador_application',
|
||||
'default_value' => NULL,
|
||||
'deleted' => 0,
|
||||
'description' => 'New ideas of the applicant',
|
||||
'display' => array(
|
||||
'default' => array(
|
||||
'label' => 'above',
|
||||
'module' => 'text',
|
||||
'settings' => array(),
|
||||
'type' => 'text_default',
|
||||
'weight' => 4,
|
||||
),
|
||||
'teaser' => array(
|
||||
'label' => 'above',
|
||||
'settings' => array(),
|
||||
'type' => 'hidden',
|
||||
'weight' => 0,
|
||||
),
|
||||
),
|
||||
'entity_type' => 'node',
|
||||
'field_name' => 'field_ideas',
|
||||
'label' => 'Ideas',
|
||||
'required' => 0,
|
||||
'settings' => array(
|
||||
'text_processing' => 0,
|
||||
'user_register_form' => FALSE,
|
||||
),
|
||||
'widget' => array(
|
||||
'active' => 1,
|
||||
'module' => 'text',
|
||||
'settings' => array(
|
||||
'rows' => 10,
|
||||
),
|
||||
'type' => 'text_textarea',
|
||||
'weight' => 9,
|
||||
),
|
||||
);
|
||||
|
||||
// Exported field_instance: 'node-ambassador_application-field_participation'
|
||||
$field_instances['node-ambassador_application-field_participation'] = array(
|
||||
'bundle' => 'ambassador_application',
|
||||
'default_value' => NULL,
|
||||
'deleted' => 0,
|
||||
'description' => 'Level of the previous participation.',
|
||||
'display' => array(
|
||||
'default' => array(
|
||||
'label' => 'above',
|
||||
'module' => 'text',
|
||||
'settings' => array(),
|
||||
'type' => 'text_default',
|
||||
'weight' => 3,
|
||||
),
|
||||
'teaser' => array(
|
||||
'label' => 'above',
|
||||
'settings' => array(),
|
||||
'type' => 'hidden',
|
||||
'weight' => 0,
|
||||
),
|
||||
),
|
||||
'entity_type' => 'node',
|
||||
'field_name' => 'field_participation',
|
||||
'label' => 'Participation',
|
||||
'required' => 0,
|
||||
'settings' => array(
|
||||
'text_processing' => 0,
|
||||
'user_register_form' => FALSE,
|
||||
),
|
||||
'widget' => array(
|
||||
'active' => 1,
|
||||
'module' => 'text',
|
||||
'settings' => array(
|
||||
'rows' => 5,
|
||||
),
|
||||
'type' => 'text_textarea',
|
||||
'weight' => 8,
|
||||
),
|
||||
);
|
||||
|
||||
// Exported field_instance: 'node-ambassador_application-field_reason'
|
||||
$field_instances['node-ambassador_application-field_reason'] = array(
|
||||
'bundle' => 'ambassador_application',
|
||||
'default_value' => NULL,
|
||||
'deleted' => 0,
|
||||
'description' => 'Reason of the application.',
|
||||
'display' => array(
|
||||
'default' => array(
|
||||
'label' => 'above',
|
||||
'module' => 'text',
|
||||
'settings' => array(),
|
||||
'type' => 'text_default',
|
||||
'weight' => 2,
|
||||
),
|
||||
'teaser' => array(
|
||||
'label' => 'above',
|
||||
'settings' => array(),
|
||||
'type' => 'hidden',
|
||||
'weight' => 0,
|
||||
),
|
||||
),
|
||||
'entity_type' => 'node',
|
||||
'field_name' => 'field_reason',
|
||||
'label' => 'Reason',
|
||||
'required' => 0,
|
||||
'settings' => array(
|
||||
'text_processing' => 0,
|
||||
'user_register_form' => FALSE,
|
||||
),
|
||||
'widget' => array(
|
||||
'active' => 1,
|
||||
'module' => 'text',
|
||||
'settings' => array(
|
||||
'rows' => 10,
|
||||
),
|
||||
'type' => 'text_textarea',
|
||||
'weight' => 7,
|
||||
),
|
||||
);
|
||||
|
||||
// Exported field_instance: 'node-ambassador_application-field_region'
|
||||
$field_instances['node-ambassador_application-field_region'] = array(
|
||||
'bundle' => 'ambassador_application',
|
||||
'default_value' => NULL,
|
||||
'deleted' => 0,
|
||||
'description' => 'Region where the application resides.',
|
||||
'display' => array(
|
||||
'default' => array(
|
||||
'label' => 'above',
|
||||
'module' => 'text',
|
||||
'settings' => array(),
|
||||
'type' => 'text_default',
|
||||
'weight' => 1,
|
||||
),
|
||||
'teaser' => array(
|
||||
'label' => 'above',
|
||||
'settings' => array(),
|
||||
'type' => 'hidden',
|
||||
'weight' => 0,
|
||||
),
|
||||
),
|
||||
'entity_type' => 'node',
|
||||
'field_name' => 'field_region',
|
||||
'label' => 'Region',
|
||||
'required' => 1,
|
||||
'settings' => array(
|
||||
'text_processing' => 0,
|
||||
'user_register_form' => FALSE,
|
||||
),
|
||||
'widget' => array(
|
||||
'active' => 1,
|
||||
'module' => 'text',
|
||||
'settings' => array(
|
||||
'size' => 60,
|
||||
),
|
||||
'type' => 'text_textfield',
|
||||
'weight' => 6,
|
||||
),
|
||||
);
|
||||
|
||||
// Translatables
|
||||
// Included for use with string extractors like potx.
|
||||
t('Applicant');
|
||||
t('Collaboration');
|
||||
t('Collaboration plans of the applicant.');
|
||||
t('Comment');
|
||||
t('Ideas');
|
||||
t('Level of the previous participation.');
|
||||
t('New ideas of the applicant');
|
||||
t('Participation');
|
||||
t('Reason');
|
||||
t('Reason of the application.');
|
||||
t('Region');
|
||||
t('Region where the application resides.');
|
||||
|
||||
return $field_instances;
|
||||
}
|
|
@ -22,3 +22,87 @@ function groups_ambassador_ctools_plugin_api($module = NULL, $api = NULL) {
|
|||
function groups_ambassador_views_api($module = NULL, $api = NULL) {
|
||||
return array("api" => "3.0");
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements hook_node_info().
|
||||
*/
|
||||
function groups_ambassador_node_info() {
|
||||
$items = array(
|
||||
'ambassador_application' => array(
|
||||
'name' => t('Ambassador application'),
|
||||
'base' => 'node_content',
|
||||
'description' => t('Holds the ambassador application data.'),
|
||||
'has_title' => '1',
|
||||
'title_label' => t('Title'),
|
||||
'help' => '',
|
||||
),
|
||||
);
|
||||
drupal_alter('node_info', $items);
|
||||
return $items;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements hook_rdf_default_mappings().
|
||||
*/
|
||||
function groups_ambassador_rdf_default_mappings() {
|
||||
$schemaorg = array();
|
||||
|
||||
// Exported RDF mapping: ambassador_application
|
||||
$schemaorg['node']['ambassador_application'] = array(
|
||||
'rdftype' => array(
|
||||
0 => 'sioc:Item',
|
||||
1 => 'foaf:Document',
|
||||
),
|
||||
'title' => array(
|
||||
'predicates' => array(
|
||||
0 => 'dc:title',
|
||||
),
|
||||
),
|
||||
'created' => array(
|
||||
'predicates' => array(
|
||||
0 => 'dc:date',
|
||||
1 => 'dc:created',
|
||||
),
|
||||
'datatype' => 'xsd:dateTime',
|
||||
'callback' => 'date_iso8601',
|
||||
),
|
||||
'changed' => array(
|
||||
'predicates' => array(
|
||||
0 => 'dc:modified',
|
||||
),
|
||||
'datatype' => 'xsd:dateTime',
|
||||
'callback' => 'date_iso8601',
|
||||
),
|
||||
'body' => array(
|
||||
'predicates' => array(
|
||||
0 => 'content:encoded',
|
||||
),
|
||||
),
|
||||
'uid' => array(
|
||||
'predicates' => array(
|
||||
0 => 'sioc:has_creator',
|
||||
),
|
||||
'type' => 'rel',
|
||||
),
|
||||
'name' => array(
|
||||
'predicates' => array(
|
||||
0 => 'foaf:name',
|
||||
),
|
||||
),
|
||||
'comment_count' => array(
|
||||
'predicates' => array(
|
||||
0 => 'sioc:num_replies',
|
||||
),
|
||||
'datatype' => 'xsd:integer',
|
||||
),
|
||||
'last_activity' => array(
|
||||
'predicates' => array(
|
||||
0 => 'sioc:last_activity_date',
|
||||
),
|
||||
'datatype' => 'xsd:dateTime',
|
||||
'callback' => 'date_iso8601',
|
||||
),
|
||||
);
|
||||
|
||||
return $schemaorg;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
/**
|
||||
* @file
|
||||
* groups_ambassador.features.user_permission.inc
|
||||
*/
|
||||
|
||||
/**
|
||||
* Implements hook_user_default_permissions().
|
||||
*/
|
||||
function groups_ambassador_user_default_permissions() {
|
||||
$permissions = array();
|
||||
|
||||
// Exported permission: 'create ambassador_application content'.
|
||||
$permissions['create ambassador_application content'] = array(
|
||||
'name' => 'create ambassador_application content',
|
||||
'roles' => array(),
|
||||
'module' => 'node',
|
||||
);
|
||||
|
||||
// Exported permission: 'delete any ambassador_application content'.
|
||||
$permissions['delete any ambassador_application content'] = array(
|
||||
'name' => 'delete any ambassador_application content',
|
||||
'roles' => array(),
|
||||
'module' => 'node',
|
||||
);
|
||||
|
||||
// Exported permission: 'delete own ambassador_application content'.
|
||||
$permissions['delete own ambassador_application content'] = array(
|
||||
'name' => 'delete own ambassador_application content',
|
||||
'roles' => array(),
|
||||
'module' => 'node',
|
||||
);
|
||||
|
||||
// Exported permission: 'edit any ambassador_application content'.
|
||||
$permissions['edit any ambassador_application content'] = array(
|
||||
'name' => 'edit any ambassador_application content',
|
||||
'roles' => array(),
|
||||
'module' => 'node',
|
||||
);
|
||||
|
||||
// Exported permission: 'edit own ambassador_application content'.
|
||||
$permissions['edit own ambassador_application content'] = array(
|
||||
'name' => 'edit own ambassador_application content',
|
||||
'roles' => array(),
|
||||
'module' => 'node',
|
||||
);
|
||||
|
||||
return $permissions;
|
||||
}
|
|
@ -6,7 +6,9 @@ version = 7.x-1.0
|
|||
project = groups_ambassador
|
||||
dependencies[] = ds
|
||||
dependencies[] = groups_user_profile
|
||||
dependencies[] = node
|
||||
dependencies[] = strongarm
|
||||
dependencies[] = text
|
||||
dependencies[] = views
|
||||
features[ctools][] = ds:ds:1
|
||||
features[ctools][] = strongarm:strongarm:1
|
||||
|
@ -15,7 +17,51 @@ features[ds_field_settings][] = user|user|profile_teaser
|
|||
features[ds_layout_settings][] = user|user|profile_teaser
|
||||
features[ds_view_modes][] = profile_teaser
|
||||
features[features_api][] = api:2
|
||||
features[field_base][] = field_applicant
|
||||
features[field_base][] = field_collaboration
|
||||
features[field_base][] = field_ideas
|
||||
features[field_base][] = field_participation
|
||||
features[field_base][] = field_reason
|
||||
features[field_base][] = field_region
|
||||
features[field_instance][] = comment-comment_node_ambassador_application-comment_body
|
||||
features[field_instance][] = node-ambassador_application-field_applicant
|
||||
features[field_instance][] = node-ambassador_application-field_collaboration
|
||||
features[field_instance][] = node-ambassador_application-field_ideas
|
||||
features[field_instance][] = node-ambassador_application-field_participation
|
||||
features[field_instance][] = node-ambassador_application-field_reason
|
||||
features[field_instance][] = node-ambassador_application-field_region
|
||||
features[node][] = ambassador_application
|
||||
features[schemaorg][] = node-ambassador_application
|
||||
features[user_permission][] = create ambassador_application content
|
||||
features[user_permission][] = delete any ambassador_application content
|
||||
features[user_permission][] = delete own ambassador_application content
|
||||
features[user_permission][] = edit any ambassador_application content
|
||||
features[user_permission][] = edit own ambassador_application content
|
||||
features[variable][] = additional_settings__active_tab_ambassador_application
|
||||
features[variable][] = comment_ambassador_application
|
||||
features[variable][] = comment_anonymous_ambassador_application
|
||||
features[variable][] = comment_default_mode_ambassador_application
|
||||
features[variable][] = comment_default_per_page_ambassador_application
|
||||
features[variable][] = comment_form_location_ambassador_application
|
||||
features[variable][] = comment_preview_ambassador_application
|
||||
features[variable][] = field_bundle_settings_node__ambassador_application
|
||||
features[variable][] = field_bundle_settings_user__user
|
||||
features[variable][] = language_content_type_ambassador_application
|
||||
features[variable][] = node_options_ambassador_application
|
||||
features[variable][] = node_preview_ambassador_application
|
||||
features[variable][] = node_submitted_ambassador_application
|
||||
features[variable][] = pathauto_node_ambassador_application_pattern
|
||||
features[views_view][] = ambassador_applications
|
||||
features[views_view][] = groups_ambassador_list
|
||||
features_exclude[dependencies][ctools] = ctools
|
||||
features_exclude[dependencies][commons_bw] = commons_bw
|
||||
features_exclude[dependencies][date] = date
|
||||
features_exclude[dependencies][entityreference] = entityreference
|
||||
features_exclude[dependencies][features] = features
|
||||
features_exclude[dependencies][metatag] = metatag
|
||||
features_exclude[dependencies][rdf] = rdf
|
||||
features_exclude[dependencies][schemaorg] = schemaorg
|
||||
features_exclude[variable][comment_subject_field_ambassador_application] = comment_subject_field_ambassador_application
|
||||
features_exclude[variable][menu_options_ambassador_application] = menu_options_ambassador_application
|
||||
features_exclude[variable][menu_parent_ambassador_application] = menu_parent_ambassador_application
|
||||
no autodetect = 1
|
||||
|
|
|
@ -18,6 +18,13 @@ function groups_ambassador_menu() {
|
|||
'access callback' => 'user_is_logged_in',
|
||||
'file' => 'includes/ask.form.inc',
|
||||
);
|
||||
$items['ambassador-program/apply'] = array(
|
||||
'title' => 'OpenStack Ambassador Application',
|
||||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('groups_ambassador_apply_form'),
|
||||
'access callback' => 'user_is_logged_in',
|
||||
'file' => 'includes/apply.form.inc',
|
||||
);
|
||||
return $items;
|
||||
}
|
||||
|
||||
|
@ -111,6 +118,10 @@ function groups_ambassador_theme() {
|
|||
'template' => 'groups_ambassador_submission',
|
||||
'variables' => array(),
|
||||
),
|
||||
'groups_ambassador_apply_confirm' => $base + array(
|
||||
'template' => 'groups_ambassador_apply_confirm',
|
||||
'variables' => array(),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -128,4 +139,17 @@ function _groups_ambassador_get_ambassador_list() {
|
|||
$uids[] = $row->uid;
|
||||
}
|
||||
return user_load_multiple($uids);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert standard user array into _privatemsg recipient format.
|
||||
*/
|
||||
function groups_ambassador_get_privatemsg_recipients($recipient_users) {
|
||||
$recipients = array();
|
||||
foreach ($recipient_users as $user) {
|
||||
$user->type = 'user';
|
||||
$user->recipient = $user->uid;
|
||||
$recipients['user_'.$user->uid] = $user;
|
||||
}
|
||||
return $recipients;
|
||||
}
|
|
@ -10,6 +10,81 @@
|
|||
function groups_ambassador_strongarm() {
|
||||
$export = array();
|
||||
|
||||
$strongarm = new stdClass();
|
||||
$strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
|
||||
$strongarm->api_version = 1;
|
||||
$strongarm->name = 'additional_settings__active_tab_ambassador_application';
|
||||
$strongarm->value = 'edit-panelizer';
|
||||
$export['additional_settings__active_tab_ambassador_application'] = $strongarm;
|
||||
|
||||
$strongarm = new stdClass();
|
||||
$strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
|
||||
$strongarm->api_version = 1;
|
||||
$strongarm->name = 'comment_ambassador_application';
|
||||
$strongarm->value = '1';
|
||||
$export['comment_ambassador_application'] = $strongarm;
|
||||
|
||||
$strongarm = new stdClass();
|
||||
$strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
|
||||
$strongarm->api_version = 1;
|
||||
$strongarm->name = 'comment_anonymous_ambassador_application';
|
||||
$strongarm->value = 0;
|
||||
$export['comment_anonymous_ambassador_application'] = $strongarm;
|
||||
|
||||
$strongarm = new stdClass();
|
||||
$strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
|
||||
$strongarm->api_version = 1;
|
||||
$strongarm->name = 'comment_default_mode_ambassador_application';
|
||||
$strongarm->value = 1;
|
||||
$export['comment_default_mode_ambassador_application'] = $strongarm;
|
||||
|
||||
$strongarm = new stdClass();
|
||||
$strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
|
||||
$strongarm->api_version = 1;
|
||||
$strongarm->name = 'comment_default_per_page_ambassador_application';
|
||||
$strongarm->value = '50';
|
||||
$export['comment_default_per_page_ambassador_application'] = $strongarm;
|
||||
|
||||
$strongarm = new stdClass();
|
||||
$strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
|
||||
$strongarm->api_version = 1;
|
||||
$strongarm->name = 'comment_form_location_ambassador_application';
|
||||
$strongarm->value = 1;
|
||||
$export['comment_form_location_ambassador_application'] = $strongarm;
|
||||
|
||||
$strongarm = new stdClass();
|
||||
$strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
|
||||
$strongarm->api_version = 1;
|
||||
$strongarm->name = 'comment_preview_ambassador_application';
|
||||
$strongarm->value = '1';
|
||||
$export['comment_preview_ambassador_application'] = $strongarm;
|
||||
|
||||
$strongarm = new stdClass();
|
||||
$strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
|
||||
$strongarm->api_version = 1;
|
||||
$strongarm->name = 'field_bundle_settings_node__ambassador_application';
|
||||
$strongarm->value = array(
|
||||
'view_modes' => array(),
|
||||
'extra_fields' => array(
|
||||
'form' => array(
|
||||
'metatags' => array(
|
||||
'weight' => '3',
|
||||
),
|
||||
'title' => array(
|
||||
'weight' => '0',
|
||||
),
|
||||
'path' => array(
|
||||
'weight' => '2',
|
||||
),
|
||||
'redirect' => array(
|
||||
'weight' => '1',
|
||||
),
|
||||
),
|
||||
'display' => array(),
|
||||
),
|
||||
);
|
||||
$export['field_bundle_settings_node__ambassador_application'] = $strongarm;
|
||||
|
||||
$strongarm = new stdClass();
|
||||
$strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
|
||||
$strongarm->api_version = 1;
|
||||
|
@ -60,5 +135,40 @@ function groups_ambassador_strongarm() {
|
|||
);
|
||||
$export['field_bundle_settings_user__user'] = $strongarm;
|
||||
|
||||
$strongarm = new stdClass();
|
||||
$strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
|
||||
$strongarm->api_version = 1;
|
||||
$strongarm->name = 'language_content_type_ambassador_application';
|
||||
$strongarm->value = '0';
|
||||
$export['language_content_type_ambassador_application'] = $strongarm;
|
||||
|
||||
$strongarm = new stdClass();
|
||||
$strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
|
||||
$strongarm->api_version = 1;
|
||||
$strongarm->name = 'node_options_ambassador_application';
|
||||
$strongarm->value = array();
|
||||
$export['node_options_ambassador_application'] = $strongarm;
|
||||
|
||||
$strongarm = new stdClass();
|
||||
$strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
|
||||
$strongarm->api_version = 1;
|
||||
$strongarm->name = 'node_preview_ambassador_application';
|
||||
$strongarm->value = '1';
|
||||
$export['node_preview_ambassador_application'] = $strongarm;
|
||||
|
||||
$strongarm = new stdClass();
|
||||
$strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
|
||||
$strongarm->api_version = 1;
|
||||
$strongarm->name = 'node_submitted_ambassador_application';
|
||||
$strongarm->value = 0;
|
||||
$export['node_submitted_ambassador_application'] = $strongarm;
|
||||
|
||||
$strongarm = new stdClass();
|
||||
$strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
|
||||
$strongarm->api_version = 1;
|
||||
$strongarm->name = 'pathauto_node_ambassador_application_pattern';
|
||||
$strongarm->value = 'ambassador-applicants/[node:nid]';
|
||||
$export['pathauto_node_ambassador_application_pattern'] = $strongarm;
|
||||
|
||||
return $export;
|
||||
}
|
||||
|
|
|
@ -10,6 +10,63 @@
|
|||
function groups_ambassador_views_default_views() {
|
||||
$export = array();
|
||||
|
||||
$view = new view();
|
||||
$view->name = 'ambassador_applications';
|
||||
$view->description = '';
|
||||
$view->tag = 'default';
|
||||
$view->base_table = 'node';
|
||||
$view->human_name = 'Ambassador applications';
|
||||
$view->core = 7;
|
||||
$view->api_version = '3.0';
|
||||
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
|
||||
|
||||
/* Display: Master */
|
||||
$handler = $view->new_display('default', 'Master', 'default');
|
||||
$handler->display->display_options['title'] = 'Ambassador applications';
|
||||
$handler->display->display_options['use_more_always'] = FALSE;
|
||||
$handler->display->display_options['access']['type'] = 'perm';
|
||||
$handler->display->display_options['cache']['type'] = 'none';
|
||||
$handler->display->display_options['query']['type'] = 'views_query';
|
||||
$handler->display->display_options['exposed_form']['type'] = 'basic';
|
||||
$handler->display->display_options['pager']['type'] = 'some';
|
||||
$handler->display->display_options['pager']['options']['items_per_page'] = '5';
|
||||
$handler->display->display_options['style_plugin'] = 'default';
|
||||
$handler->display->display_options['row_plugin'] = 'node';
|
||||
/* Field: Content: Title */
|
||||
$handler->display->display_options['fields']['title']['id'] = 'title';
|
||||
$handler->display->display_options['fields']['title']['table'] = 'node';
|
||||
$handler->display->display_options['fields']['title']['field'] = 'title';
|
||||
$handler->display->display_options['fields']['title']['label'] = '';
|
||||
$handler->display->display_options['fields']['title']['alter']['word_boundary'] = FALSE;
|
||||
$handler->display->display_options['fields']['title']['alter']['ellipsis'] = FALSE;
|
||||
/* Sort criterion: Content: Post date */
|
||||
$handler->display->display_options['sorts']['created']['id'] = 'created';
|
||||
$handler->display->display_options['sorts']['created']['table'] = 'node';
|
||||
$handler->display->display_options['sorts']['created']['field'] = 'created';
|
||||
$handler->display->display_options['sorts']['created']['order'] = 'DESC';
|
||||
/* Filter criterion: Content: Type */
|
||||
$handler->display->display_options['filters']['type']['id'] = 'type';
|
||||
$handler->display->display_options['filters']['type']['table'] = 'node';
|
||||
$handler->display->display_options['filters']['type']['field'] = 'type';
|
||||
$handler->display->display_options['filters']['type']['value'] = array(
|
||||
'ambassador_application' => 'ambassador_application',
|
||||
);
|
||||
|
||||
/* Display: Block */
|
||||
$handler = $view->new_display('block', 'Block', 'block');
|
||||
$translatables['ambassador_applications'] = array(
|
||||
t('Master'),
|
||||
t('Ambassador applications'),
|
||||
t('more'),
|
||||
t('Apply'),
|
||||
t('Reset'),
|
||||
t('Sort by'),
|
||||
t('Asc'),
|
||||
t('Desc'),
|
||||
t('Block'),
|
||||
);
|
||||
$export['ambassador_applications'] = $view;
|
||||
|
||||
$view = new view();
|
||||
$view->name = 'groups_ambassador_list';
|
||||
$view->description = '';
|
||||
|
|
|
@ -0,0 +1,131 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Form constructor for the Ambassador Application form
|
||||
*/
|
||||
function groups_ambassador_apply_form($form = array(), &$form_state) {
|
||||
if (!empty($form_state['values']['region'])) {
|
||||
$form['submission'] = array(
|
||||
'#markup' => theme('groups_ambassador_apply_confirm', array()),
|
||||
);
|
||||
} else {
|
||||
$form = _groups_ambassador_apply_form_build($form, $form_state);
|
||||
}
|
||||
return $form;
|
||||
}
|
||||
|
||||
/**
|
||||
* Build Ambassador Application form elements
|
||||
*/
|
||||
function _groups_ambassador_apply_form_build($form, &$form_state) {
|
||||
$form['region'] = array(
|
||||
'#type' => 'textfield',
|
||||
'#title' => t('Where do you reside'),
|
||||
'#description' => t('Please enter one location as best you can. A helpful '.
|
||||
'way to think is where you will spend >6 months out of the next year'),
|
||||
'#required' => TRUE,
|
||||
);
|
||||
$form['reason'] = array(
|
||||
'#type' => 'textarea',
|
||||
'#title' => t('Why are you applying to become an OpenStack Ambassador?'),
|
||||
'#description' => t('Tell us about your passion and your vision!'),
|
||||
'#required' => TRUE,
|
||||
'#resizable' => FALSE,
|
||||
'#rows' => 10,
|
||||
);
|
||||
$form['participation'] = array(
|
||||
'#type' => 'textarea',
|
||||
'#title' => t('How have you participated in the OpenStack Community to '.
|
||||
'date?'),
|
||||
'#description' => t('Are you an ATC? Are you running User Groups? '.
|
||||
'Have you setup OpenStack Mini-confs? What\'s your track record...'),
|
||||
'#required' => TRUE,
|
||||
'#resizable' => FALSE,
|
||||
'#rows' => 10,
|
||||
);
|
||||
$form['ideas'] = array(
|
||||
'#type' => 'textarea',
|
||||
'#title' => t('What ideas do you have for your community, that you wish '.
|
||||
'you had time or resources to implement?'),
|
||||
'#description' => t('We\'re practical people - do you have any concrete, '.
|
||||
'implementable ideas derived from that passion or vision above?'),
|
||||
'#required' => TRUE,
|
||||
'#resizable' => FALSE,
|
||||
'#rows' => 10,
|
||||
);
|
||||
$form['collaboration'] = array(
|
||||
'#type' => 'textarea',
|
||||
'#title' => t('How will you work with others to achieve your goals?'),
|
||||
'#description' => t('A great leader doesn\'t work alone, and we\'re keen '.
|
||||
'for you to demonstrate how you intend to work with others both in your '.
|
||||
'local area and abroad.'),
|
||||
'#required' => TRUE,
|
||||
'#resizable' => FALSE,
|
||||
'#rows' => 10,
|
||||
);
|
||||
$form['submit'] = array(
|
||||
'#type' => 'submit',
|
||||
'#value' => t('Submit'),
|
||||
);
|
||||
return $form;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements hook_form_submit()
|
||||
*/
|
||||
function groups_ambassador_apply_form_submit($form, &$form_state) {
|
||||
$form_state['rebuild'] = TRUE;
|
||||
$node = _groups_ambassador_create_application_node($form_state['values']);
|
||||
_groups_ambassador_application_node_send_notification($node);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new ambassador application node entry.
|
||||
*/
|
||||
function _groups_ambassador_create_application_node($values) {
|
||||
$current_user = user_uid_optional_load();
|
||||
$n = entity_create('node', array('type' => 'ambassador_application'));
|
||||
$n->uid = $current_user->uid;
|
||||
$node = entity_metadata_wrapper('node', $n);
|
||||
$node->title = t('@name ambassador application - @date',
|
||||
array(
|
||||
'@name' => $current_user->name,
|
||||
'@date' => date('m/d/Y', time()),
|
||||
));
|
||||
$node->field_applicant->set($current_user->uid);
|
||||
$node->field_region->set($values['region']);
|
||||
$node->field_reason->set($values['reason']);
|
||||
$node->field_participation->set($values['participation']);
|
||||
$node->field_ideas->set($values['ideas']);
|
||||
$node->field_collaboration->set($values['collaboration']);
|
||||
$node->save();
|
||||
return $node;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send notification to ambassadors about new application.
|
||||
*/
|
||||
function _groups_ambassador_application_node_send_notification($node) {
|
||||
$node_url = $GLOBALS['base_url'].'/'.
|
||||
drupal_lookup_path('alias',"node/".$node->nid->value());
|
||||
|
||||
$current_user = user_uid_optional_load();
|
||||
$admin_user = user_load(1);
|
||||
$ambassadors = _groups_ambassador_get_ambassador_list();
|
||||
$recipients = groups_ambassador_get_privatemsg_recipients($ambassadors);
|
||||
$message = (object)array(
|
||||
'author' => $admin_user,
|
||||
'format' => 'filtered_html',
|
||||
'timestamp' => time(),
|
||||
'recipients' => $recipients,
|
||||
'has_tokens' => false,
|
||||
);
|
||||
|
||||
$message->subject = t('[Ambassador] New ambassador application: @name',
|
||||
array('@name' => $current_user->name));
|
||||
|
||||
$message->body = t('A new ambassador application has arrived. <br/><br/>'.
|
||||
'Check the link below for details:.<br/><a href="@url">@url</a>',
|
||||
array('@url' => $node_url));
|
||||
$message = _privatemsg_send($message);
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
<div class="ask-form-thankyou">
|
||||
<p>Thank you for your Ambassador application.</p>
|
||||
<p class="ambassador-link"><a href="/ambassador-program"><i class="fa fa-chevron-left"></i> Return to Ambassador program page</a></p>
|
||||
</div>
|
Loading…
Reference in New Issue