array( 'title' => t('Administer fulcrm collection'), 'description' => t('Perform main installation/administration tasks for fulcrm collection.'), ), ); } function fulcrm_collection_menu() { /* $items[ 'admin/config/services/fulcrm' ] = array( 'page callback' => 'system_admin_menu_block_page', 'file' => 'system.admin.inc', 'file path' => drupal_get_path('module', 'system'), 'title' => 'fulcrm', 'description' => 'Configuration integration with fulcrm.org.', 'position' => 'right', 'access callback' => 'user_access', 'access arguments' => array('access administration pages'), ); */ $items[ 'admin/config/services/fulcrm/collection' ] = array( 'page callback' => 'fulcrm_collection_admin', 'file' => 'fulcrm_collection.admin.inc', 'title' => 'fulcrm Collection', 'description' => 'Configure collection for fulcrm.org.', 'access callback' => 'user_access', 'access arguments' => array('administer fulcrm collection'), ); return $items; } function fulcrm_collection_get_d_value( $d, $key ) { $key = explode( '.', $key ); foreach ( $key as $bit ) { if ( array_key_exists( $bit, $d ) ) $d = $d[ $bit ]; else return NULL; } return $d; } function _fulcrm_collection_set_d_value( &$d, $key, $value ) { switch ( count( $key ) ) { case 0: return NULL; case 1: $d[ $key[ 0 ] ] = $value; return $value; default: if ( !array_key_exists( $key[ 0 ], $d ) ) $d[ $key[ 0 ] ] = array(); return _fulcrm_collection_set_value( $d[ $key[ 0 ] ], array_slice( $key, 1 ), $value ); } } function fulcrm_collection_set_d_value( &$d, $key, $value ) { return _fulcrm_collection_set_d_value( $d, explode( '.', $key ), $value ); } function fulcrm_collection_form_values_to_d( $prefix, $values ) { $d = array(); foreach ( $values as $k => $v ) { $bits = explode( '/fulcrm/', $k ); if ( ( count( $bits ) === 2 ) && ( $bits[ 0 ] === $prefix ) ) { if ( $bits[ 1 ] === 'fulcrm_collections' ) fulcrm_collection_set_d_value( $d, $bits[ 1 ], array( $v ) ); else fulcrm_collection_set_d_value( $d, $bits[ 1 ], $v ); } } return $d; } function fulcrm_collection_to_form( $prefix, $collection_data, $d = array() ) { $form = array(); foreach ( $collection_data[ '_structure' ] as $set_data ) { switch ( $set_data[ 'type' ] ) { case 'ddataset': $fieldset = array( '#type' => 'fieldset', '#title' => $set_data[ 'name' ], '#description' => $set_data[ 'description' ], ); foreach ( $set_data[ 'fields' ] as $field_data ) { switch ( $field_data[ 'type' ] ) { case 'text': case 'email': case 'tel': $fieldset[ $prefix . '/fulcrm/' . $field_data[ 'key' ] ] = array( '#type' => 'textfield', '#title' => $field_data[ 'name' ], '#description' => $field_data[ 'description' ], '#required' => $field_data[ 'required' ], '#default_value' => fulcrm_collection_get_d_value( $d, $field_data[ 'key' ] ), ); break; case 'textarea': $fieldset[ $prefix . '/fulcrm/' . $field_data[ 'key' ] ] = array( '#type' => 'textarea', '#title' => $field_data[ 'name' ], '#description' => $field_data[ 'description' ], '#required' => $field_data[ 'required' ], '#default_value' => fulcrm_collection_get_d_value( $d, $field_data[ 'key' ] ), ); break; default: drupal_set_message( t('Cannot handle ":type" collection structure.', array( ':type' => $field_data[ 'type' ] )), 'error' ); break; } } $form[] = $fieldset; break; default: drupal_set_message( t('Cannot handle ":type" collection structure.', array( 'type' => $set_data[ 'type' ] )), 'error' ); break; } } $form[ $prefix . '/fulcrm/fulcrm_collections' ] = array( '#type' => 'hidden', '#default_value' => $collection_data[ 's' ], ); return $form; }