function panels_ajax_flexible_edit_settings in Panels 7.3
Same name and namespace in other branches
- 6.3 plugins/layouts/flexible/flexible.inc \panels_ajax_flexible_edit_settings()
AJAX responder to edit flexible settings for an item.
Parameters
object $handler: The display renderer handler object.
mixed $id: Id for the panel.
1 string reference to 'panels_ajax_flexible_edit_settings'
- flexible.inc in plugins/
layouts/ flexible/ flexible.inc - Flexible layout plugin.
File
- plugins/
layouts/ flexible/ flexible.inc, line 977 - Flexible layout plugin.
Code
function panels_ajax_flexible_edit_settings($handler, $id) {
$settings =& $handler->display->layout_settings;
panels_flexible_convert_settings($settings, $handler->plugins['layout']);
if (empty($settings['items'][$id])) {
ctools_modal_render(t('Error'), t('Invalid item id.'));
}
$item =& $settings['items'][$id];
$siblings = array();
if ($id != 'canvas') {
$siblings = $settings['items'][$item['parent']]['children'];
}
switch ($item['type']) {
case 'column':
$title = t('Configure column');
break;
case 'row':
if ($id == 'canvas') {
$title = t('Configure canvas');
}
else {
$title = t('Configure row');
}
break;
case 'region':
$title = t('Configure region');
break;
}
$form_state = array(
'display' => &$handler->display,
'item' => &$item,
'id' => $id,
'siblings' => $siblings,
'settings' => &$settings,
'ajax' => TRUE,
'title' => $title,
'op' => 'edit',
);
$output = ctools_modal_form_wrapper('panels_flexible_config_item_form', $form_state);
if (!empty($form_state['executed'])) {
// If the width type changed then other nearby items will have
// to have their widths adjusted.
panels_edit_cache_set($handler->cache);
$css_id = isset($handler->display->css_id) ? $handler->display->css_id : '';
$renderer = panels_flexible_create_renderer(TRUE, $css_id, array(), $settings, $handler->display, $handler->plugins['layout'], $handler);
$output = array();
// If the item is a region, replace the title.
$class = $renderer->base[$item['type']] . '-' . $id;
if ($item['type'] == 'region') {
$output[] = ajax_command_replace(".{$class} h2.label", '<h2 class="label">' . check_plain($item['title']) . '</h2>');
}
// Rerender our links in case something changed.
$output[] = ajax_command_replace('.flexible-links-' . $id, panels_flexible_render_item_links($renderer, $id, $item));
// If editing the canvas, reset the CSS width.
if ($id == 'canvas') {
// Update canvas CSS.
$css = array(
'.' . $renderer->item_class['column'] . '-inside' => array(
'padding-left' => $renderer->column_separation,
'padding-right' => $renderer->column_separation,
),
'.' . $renderer->item_class['region'] . '-inside' => array(
'padding-left' => $renderer->region_separation,
'padding-right' => $renderer->region_separation,
),
'.' . $renderer->item_class['row'] => array(
'padding-bottom' => $renderer->row_separation,
),
);
if (!empty($item['fixed_width']) && intval($item['fixed_width'])) {
$css['.' . $renderer->base['canvas']] = array(
'width' => intval($item['fixed_width']) . 'px',
);
}
else {
$css['.' . $renderer->base['canvas']] = array(
'width' => 'auto',
);
}
foreach ($css as $selector => $data) {
$output[] = ajax_command_css($selector, $data);
}
}
$output[] = ctools_modal_command_dismiss();
}
$handler->commands = $output;
}