View source
<?php
define('GRIDBUILDER_FIXED', 0);
define('GRIDBUILDER_FLUID', 1);
function gridbuilder_menu_alter(&$items) {
if (module_exists('layout') && isset($items['admin/structure/panels/layouts/grids'])) {
$items['admin/structure/panels/layouts/grids']['type'] = MENU_LOCAL_TASK;
}
}
function gridbuilder_permission() {
return array(
'administer gridbuilder' => array(
'title' => t('Administer grid builder grids'),
'description' => t('Administer grids created with the grid builder.'),
),
);
}
function gridbuilder_ctools_plugin_directory($owner, $plugin_type) {
if ($owner == 'ctools' && $plugin_type == 'export_ui') {
return "plugins/{$plugin_type}";
}
}
function gridbuilder_ctools_plugin_api($owner, $api) {
if ($owner == 'gridbuilder' && $api == 'default_gridbuilder_grids') {
return array(
'version' => 1,
);
}
}
function gridbuilder_default_gridbuilder_grids() {
$export = array();
$grid = new stdClass();
$grid->api_version = 1;
$grid->name = 'three_column_fluid';
$grid->admin_title = 'Three column fluid';
$grid->grid_type = GRIDBUILDER_FLUID;
$grid->width = '100';
$grid->columns = '3';
$grid->padding_width = '1.5';
$grid->gutter_width = '2';
$export['three_column_fluid'] = $grid;
$grid = new stdClass();
$grid->api_version = 1;
$grid->name = 'six_column_fluid';
$grid->admin_title = 'Six column fluid';
$grid->grid_type = GRIDBUILDER_FLUID;
$grid->width = '100';
$grid->columns = '6';
$grid->padding_width = '1.5';
$grid->gutter_width = '2';
$export['six_column_fluid'] = $grid;
$grid = new stdClass();
$grid->api_version = 1;
$grid->name = 'twelve_column_fluid';
$grid->admin_title = 'Twelve column fluid';
$grid->grid_type = GRIDBUILDER_FLUID;
$grid->width = '100';
$grid->columns = '12';
$grid->padding_width = '1.5';
$grid->gutter_width = '2';
$export['twelve_column_fluid'] = $grid;
$grid = new stdClass();
$grid->api_version = 1;
$grid->name = 'ninesixty_12';
$grid->admin_title = '960px wide, 12 column grid';
$grid->grid_type = GRIDBUILDER_FIXED;
$grid->width = '960';
$grid->columns = '12';
$grid->padding_width = '20';
$grid->gutter_width = '10';
$export['ninesixty_12'] = $grid;
$grid = new stdClass();
$grid->api_version = 1;
$grid->name = 'ninesixty_16';
$grid->admin_title = '960px wide, 16 column grid';
$grid->grid_type = GRIDBUILDER_FIXED;
$grid->width = '960';
$grid->columns = '16';
$grid->padding_width = '20';
$grid->gutter_width = '10';
$export['ninesixty_16'] = $grid;
return $export;
}
function gridbuilder_load_all() {
ctools_include('export');
return ctools_export_crud_load_all('gridbuilder');
}
function gridbuilder_load($name) {
ctools_include('export');
return ctools_export_crud_load('gridbuilder', $name);
}
function gridbuilder_get_css($name, $wrapper_selector = NULL, $span_selector_prefix = NULL, $skip_spacing = FALSE) {
$css = module_invoke_all('gridbuilder_get_css', $name);
if (!empty($css)) {
return join('', $css);
}
$grid = gridbuilder_load($name);
$css = '';
if (empty($wrapper_selector)) {
$wrapper_selector = '.rld-container-' . $grid->name;
}
if (empty($span_selector_prefix)) {
$span_selector_prefix = '.rld-span_';
}
if ($skip_spacing) {
$grid->gutter_width = $grid->padding_width = 0;
}
switch ($grid->grid_type) {
case GRIDBUILDER_FLUID:
$size_suffix = '%';
$grid->width = '100';
break;
case GRIDBUILDER_FIXED:
$size_suffix = 'px';
break;
}
$colwidth = ($grid->width - ($grid->columns - 1) * $grid->gutter_width) / $grid->columns;
$css = $wrapper_selector . ' .rld-col {
border: 0px solid rgba(0,0,0,0);
float: left;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
-moz-background-clip: padding-box !important;
-webkit-background-clip: padding-box !important;
background-clip: padding-box !important;
margin-left: ' . $grid->gutter_width . $size_suffix . ';
padding: 0 ' . $grid->padding_width . $size_suffix . ';
}
' . $wrapper_selector . ' .rld-col' . $span_selector_prefix . 'first {
margin-left: 0;
clear: both;
}
';
for ($i = 1; $i <= $grid->columns; $i++) {
$css .= $wrapper_selector . ' ' . $span_selector_prefix . $i . " {\n";
if ($i == 1) {
$css .= ' width: ' . $colwidth * $i . $size_suffix . ";\n";
}
elseif ($i == $grid->columns) {
$css .= " width: " . $grid->width . $size_suffix . ";\n margin-left: 0;\n";
}
else {
$css .= ' width: ' . ($colwidth * $i + $grid->gutter_width * ($i - 1)) . $size_suffix . ";\n";
}
$css .= "}\n";
}
return $css;
}