function contentanalysis_analysis_form in Content Analysis 6
Same name and namespace in other branches
- 8 contentanalysis.module \contentanalysis_analysis_form()
- 7 contentanalysis.module \contentanalysis_analysis_form()
Provides common Content Analysis form fields
- creates checkboxes of installed analyzers
- requests additional fields from analyzer modules for analyzer definitions declaring "form elements callback"
- initializes Drupal.settings for AJAX calls
- formats fields according to the requested interface
Parameters
$form_state: standard form_state generated by form_api
$analysis: contentanalysis formated analysis array
$node: Node object of the node being analyzed
$mode: The style of form to return, options are [admin|node-edit|block]
Return value
form_api formated array
2 calls to contentanalysis_analysis_form()
- contentanalysis_form_alter in ./
contentanalysis.module - Implementation of hook_form_alter().
- contentanalysis_page_analyzer_form in ./
contentanalysis.module - Provides content analysis admin form
1 string reference to 'contentanalysis_analysis_form'
File
- ./
contentanalysis.module, line 183
Code
function contentanalysis_analysis_form($form_state, $analysis = array(), $node = array(), $mode = 'admin') {
// check the number of calls
drupal_add_js(drupal_get_path('module', 'contentanalysis') . '/contentanalysis.js');
ctools_include('ajax');
// Module include the dependence it needs for ajax.
ctools_include('modal');
ctools_modal_add_js();
ctools_add_js('ajax-responder');
$fields = array();
drupal_add_css(drupal_get_path('module', 'contentanalysis') . '/contentanalysis.css');
$display = variable_get('contentanalysis_display', array(
'sections',
'main',
));
$analyzers = module_invoke_all('contentanalysis_analyzers');
drupal_alter('contentanalysis_analyzers', $analyzers);
$analyzer_modules = array();
foreach ($analyzers as $aid => $analyzer) {
if ($analyzer['module']) {
$analyzer_modules[$aid] = array(
'aid' => $aid,
'module' => $analyzer['module'],
);
}
}
// generate code to secure form
if (!($code = $_SESSION['contentanalysis']['code'])) {
$code = md5(rand());
$_SESSION['contentanalysis']['code'] = $code;
}
$report_style = variable_get('contentanalysis_node_report_display', 'both');
$display_inline = 1;
$display_dialog = 1;
if ($report_style == 'dialog') {
$display_inline = 0;
}
elseif ($report_style == 'inline') {
$display_dialog = 0;
}
// hack protecting settings on mutiple calls
static $js_added;
if (!$js_added) {
drupal_add_js(array(
'contentanalysis' => array(
'analyze_callback' => variable_get('contentanalysis_host', '') . base_path() . 'contentanalysis/analyze_js',
'base_path' => base_path(),
'path_to_module' => base_path() . drupal_get_path('module', 'contentanalysis'),
'nid' => (int) $node->nid ? $node->nid : -1,
'node_type' => $node->type,
'display_sections' => $display['sections'] ? 1 : 0,
'display_main' => $display['main'] ? 1 : 0,
'analyze_on_start' => variable_get('contentanalysis_analyze_on_start', '0'),
'analyzer_modules' => $analyzer_modules,
'code' => $code,
'display_dialog' => $display_dialog,
'display_inline' => $display_inline,
),
), 'setting');
$js_added = TRUE;
}
$analyzers = module_invoke_all('contentanalysis_analyzers');
drupal_alter('contentanalysis_analyzers', $analyzers);
$fields['analyzers'] = contentanalysis_get_analyzer_form_element($analysis, $analyzers);
foreach ($analyzers as $aid => $analyzer) {
if ($analyzer['form elements callback']) {
$e = call_user_func($analyzer['form elements callback'], $form_state, $analysis, $node);
if (is_array($e)) {
$fs = array(
'#type' => 'fieldset',
'#title' => $analyzer['title'] . ' ' . t('analyzer options'),
'#tree' => TRUE,
);
$fields[$aid] = array_merge($fs, $e);
}
}
}
if ($mode == 'node-edit') {
$form = $fields;
$report_style = variable_get('contentanalysis_node_report_display', 'both');
if ($report_style == 'both') {
$form['clickme'] = array(
'#type' => 'markup',
'#value' => '<div id="contentanalysis-buttons">' . ($output = ctools_ajax_text_button(t('Analyze content'), 'contentanalysis/ajax/analysis', t('Content Analysis'), 'contentanalysis-button', 'ctools-use-modal') . '</div>'),
);
}
elseif ($report_style == 'dialog') {
$form['clickme'] = array(
'#type' => 'markup',
'#value' => '<div id="contentanalysis-buttons">' . ($output = ctools_ajax_text_button(t('Analyze content'), 'contentanalysis/ajax/analysis_only', t('Content Analysis'), 'contentanalysis-button', 'ctools-use-modal') . '</div>'),
);
}
elseif ($report_style == 'inline') {
$form['clickme'] = array(
'#type' => 'markup',
'#value' => '<div id="contentanalysis-buttons">' . l(t('Analyze content'), base_path() . 'contentanalysis/analyze_js', array(
'attributes' => array(
'id' => 'contentanalysis-ininline-analysis-button',
'class' => "contentanalysis-analyze-content contentanalysis-button",
"onclick" => "contentanalysis_inline_analysis(); return (false);",
),
)) . '</div>',
);
}
else {
$v = '<div id="contentanalysis-buttons">';
$v .= t('Analyze content') . ': ';
$v .= ctools_ajax_text_button(t('Full reports'), 'contentanalysis/ajax/analysis', t('Content Analysis'), 'contentanalysis-button', 'ctools-use-modal');
$v .= ' ';
$v .= ctools_ajax_text_button(t('Main report'), 'contentanalysis/ajax/analysis_only', t('Content Analysis'), 'contentanalysis-button', 'ctools-use-modal');
$v .= ' ';
$v .= '<a href="#" id="contentanalysis-ininline-analysis-button" class="contentanalysis-analyze-content contentanalysis-button" onclick="contentanalysis_inline_analysis(); return (false);">' . t('Inline reports') . '</a>';
//$v .= l(t('Inline recommendations'), '#', array('attributes' => array('class' => "contentanalysis-analyze-content", "onclick" => "contentanalysis_inline_analysis(); return (false);")));
$v .= '</div>';
$form['clickme'] = array(
'#type' => 'markup',
'#value' => $v,
);
}
}
elseif ($mode == 'admin') {
$form = $fields;
$form['clickme'] = array(
'#type' => 'markup',
'#value' => '<div>' . ($output = ctools_ajax_text_button(t('Analyze content'), 'contentanalysis/ajax/analysis', t('Content Analysis'), 'contentanalysis-button', 'ctools-use-modal') . '</div>'),
);
}
else {
$form['clickme'] = array(
'#type' => 'markup',
'#value' => '<div>' . ($output = ctools_ajax_text_button(t('Analyze content'), 'contentanalysis/ajax/analysis', t('Content Analysis'), 'contentanalysis-button', 'ctools-use-modal') . '</div>'),
);
$form['contentanalysis_options'] = array(
'#title' => t('options'),
'#type' => 'fieldset',
'#collapsible' => TRUE,
'#collapsed' => TRUE,
);
$form['contentanalysis_options'] = array_merge($form['contentanalysis_options'], $fields);
}
return $form;
}