TRUE,
'#theme' => 'nikadevs_cms_background_table',
'#prefix' => '
',
'#suffix' => '
'
);
// If the form rebuilded by AHAH then get ordered list of items from POST
if (isset($form_state['values']['items'])) {
$settings = $form_state['values']['items'];
}
else {
$settings = variable_get('nikadevs_cms_background_' . variable_get('theme_default', ''), array());
}
//dpm($form_state);
if ($settings != array()) {
foreach ($settings as $id => $item) {
$form['items'][$id] = nikadevs_cms_background_row($item);
}
}
if (isset($form_state['values']['add_new'])) {
$form['items'][] = nikadevs_cms_background_row();
}
$form['add_new'] = array(
'#type' => 'submit',
'#value' => t('Add new item'),
'#submit' => array('nikadevs_cms_ajax_background_add_one'),
'#ajax' => array(
'callback' => 'nikadevs_cms_ajax_background_callback',
'wrapper' => 'backgrounds-table',
'effect' => 'fade',
'method' => 'replace',
)
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Save'),
'#prefix' => '
'
);
return $form;
}
function nikadevs_cms_background_submit($form, &$form_state) {
foreach($form_state['values']['items'] as $i => $item) {
if($item['delete']) {
unset($form_state['values']['items'][$i]);
if($item['fid'] && $file = file_load($item['fid'])) {
file_delete($file);
}
}
}
variable_set('nikadevs_cms_background_' . variable_get('theme_default', ''), $form_state['values']['items']);
}
function nikadevs_cms_background_row($item = array()) {
$row = array(
'pages' => array(
'#type' => 'textarea',
'#rows' => 3,
'#default_value' => isset($item['pages']) ? $item['pages'] : '',
'#attributes' => array('class' => array('background-pages')),
),
'fid' => array(
'#type' => 'textfield',
'#default_value' => isset($item['fid']) ? $item['fid'] : 0,
'#attributes' => array('style' => array('display:none;')),
),
'blur' => array(
'#type' => 'textfield',
'#default_value' => isset($item['blur']) ? $item['blur'] : 0,
'#description' => t('Example: 0.5'),
'#size' => 3
),
'delete' => array(
'#type' => 'checkbox',
'#default_value' => isset($item['delete']) ? $item['delete'] : 0,
)
);
return $row;
}
function nikadevs_cms_ajax_background_callback($form, $form_state) {
return $form['items'];
}
/**
* Submit handler for add new item
*/
function nikadevs_cms_ajax_background_add_one($form, &$form_state) {
$form_state['rebuild'] = TRUE;
}
function theme_nikadevs_cms_background_table($form) {
$header = array(t('Pages'), t('Background'), t('Upload New Image'), t('Blur'), t('Delete'));
$rows = array();
$output = '';
foreach (element_children($form['form']) as $key) {
$element = &$form['form'][$key];
$row = array(render($element['pages']));
$image = $element['fid']['#default_value'] ? '' . theme('image_style', array('style_name' => 'media_thumbnail', 'path' => file_load($element['fid']['#default_value'])->uri)) . '
': '';
$row[] = '' . $image . '
' . render($element['fid']);
$row[] = 'Select Image';
$row[] = render($element['blur']);
$row[] = render($element['delete']);
$rows[] = $row;
}
$output .= theme('table', array('rows' => $rows, 'header' => $header));
return $output;
}
/**
* Implementation of hook_preprocess_html().
*/
function nikadevs_cms_preprocess_html(&$variables) {
$settings = variable_get('nikadevs_cms_background_' . variable_get('theme_default', ''), array());
foreach($settings as $setting) {
if(!empty($setting['pages'])) {
$pages = drupal_strtolower($setting['pages']);
// Convert the Drupal path to lowercase
$path = drupal_strtolower(drupal_get_path_alias($_GET['q']));
// Compare the lowercase internal and lowercase path alias (if any).
$page_match = drupal_match_path($path, $pages);
if ($path != $_GET['q']) {
$page_match = $page_match || drupal_match_path($_GET['q'], $pages);
}
// If match found - use this layout
if($page_match) {
$image = file_create_url(file_load($setting['fid'])->uri);
$css = "background-image: url('" . $image . "') !important;
background-repeat: no-repeat;
background-position: center top;
-webkit-background-size: cover;
background-size: cover;
";
if($setting['blur']) {
drupal_add_css(drupal_get_path('module', 'nikadevs_cms') . '/css/nikadevs_cms_background.css');
drupal_add_js(drupal_get_path('module', 'nikadevs_cms') . '/js/pixastic.custom.js');
$variables['classes_array'][] = 'blur-page';
$variables['attributes_array']['data-blur-amount'] = $setting['blur'];
$variables['attributes_array']['data-blur-image'] = $image;
}else {
$variables['classes_array'][] = 'body-background';
drupal_add_css('body{' . $css . '}', array('type' => 'inline'));
}
return $css;
}
}
}
}