Skip to content

Commit

Permalink
Merge branch 'homepage'
Browse files Browse the repository at this point in the history
Conflicts:
inc/customizer.php
inc/reg-sidebars.php
  • Loading branch information
andrewmbacon committed Jun 27, 2014
1 parent cb47531 commit 7591bf6
Show file tree
Hide file tree
Showing 5 changed files with 351 additions and 35 deletions.
138 changes: 132 additions & 6 deletions inc/customizer.php
Original file line number Diff line number Diff line change
Expand Up @@ -131,11 +131,6 @@ function huskypress_parentSite_register( $wp_customize )
/**/







function huskypress_navoption_register( $wp_customize )
{
$wp_customize->add_setting( 'navoption1', //Give it a SERIALIZED name (so all theme settings can live under one db record)
Expand Down Expand Up @@ -176,7 +171,138 @@ function huskypress_navoption_register( $wp_customize )
)
);
}
add_action( 'customize_register', 'huskypress_navoption_register' );
add_action( 'customize_register', 'huskypress_navoption_register' );

function huskypress_layoutoption_register( $wp_customize )
{

/**
* Class to create the layout builder
*/
class Slider_Custom_Control extends WP_Customize_Control
{
/**
* Enqueue the styles and scripts
*/
public function enqueue()
{
wp_enqueue_script( 'layoutbuilder', get_template_directory_uri() . '/js/layoutbuilder.js', array( 'jquery' ));
wp_enqueue_script( 'jquery-ui-slider' );
wp_enqueue_style('jquery-style', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css');
}

/**
* Render the content on the theme customizer page
*/
public function render_content()
{

?>
<div class="sliderAddRow">Add Row</div><div class="sliders"></div><div class="sliderDeleteColumn disabled">Delete Column</div><div class="sliderDeleteRow">Delete Last Row</div>
<?php
}
}

/**
* Class to create the custom heading
*/
class Heading_Custom_Control extends WP_Customize_Control
{
public $description = '';
/**
* Render the content on the theme customizer page
*/
public function render_content()
{
echo '<h4>'.$this->label.'</h4>';
if(strlen($this->description) > 0) echo '<p>'.$this->description.'</p>';
}
}
$wp_customize->add_section( 'layout_builder',
array(
'title' => __( 'Layout Builder', 'mytheme' ), //Visible title of section
'priority' => 35, //Determines what order this appears in
'capability' => 'edit_theme_options', //Capability needed to tweak
'description' => __('Allows you to customize homepage layout', 'huskypress'), //Descriptive tooltip
)
);
$wp_customize->add_setting( 'homepagerows', //Give it a SERIALIZED name (so all theme settings can live under one db record)
array(
'default' => '2', //Default setting/value to save
'type' => 'theme_mod', //Is this an 'option' or a 'theme_mod'?
'capability' => 'edit_theme_options', //Optional. Special permissions for accessing this setting.
'transport' => 'refresh', //What triggers a refresh of the setting? 'refresh' or 'postMessage' (instant)?
)
);
$wp_customize->add_control('homepagerows', array(
'type' => 'hidden',
'label' => 'Rows',
'section' => 'layout_builder',
'priority' => 9
)
);
//Add row settings/controls
for($i=0;$i<5;$i++){
$wp_customize->add_setting( 'homepage_'.$i, //Give it a SERIALIZED name (so all theme settings can live under one db record)
array(
'default' => '12', //Default setting/value to save
'type' => 'theme_mod', //Is this an 'option' or a 'theme_mod'?
'capability' => 'edit_theme_options', //Optional. Special permissions for accessing this setting.
'transport' => 'refresh', //What triggers a refresh of the setting? 'refresh' or 'postMessage' (instant)?
)
);
$wp_customize->add_control('homepage_'.$i, array(
'type' => 'hidden',
'label' => 'Row '.$i.' Width',
'section' => 'layout_builder',
'setting' => 'setting',
'priority' => ($i+10),
'class' => 'column'
)
);
}
$wp_customize->add_setting( 'slider', //Give it a SERIALIZED name (so all theme settings can live under one db record)
array(
'default' => '0', //Default setting/value to save
'type' => 'theme_mod', //Is this an 'option' or a 'theme_mod'?
'capability' => 'edit_theme_options', //Optional. Special permissions for accessing this setting.
'transport' => 'refresh', //What triggers a refresh of the setting? 'refresh' or 'postMessage' (instant)?
)
);
$wp_customize->add_control(
new Slider_Custom_Control(
$wp_customize,
'slider',
array(
'label' => 'Slider',
'priority' => 1,
'section' => 'layout_builder'
)
)
);


$wp_customize->add_setting( 'headingtest', //Give it a SERIALIZED name (so all theme settings can live under one db record)
array(
'default' => '', //Default setting/value to save
'type' => 'theme_mod', //Is this an 'option' or a 'theme_mod'?
'capability' => 'edit_theme_options', //Optional. Special permissions for accessing this setting.
'transport' => 'refresh', //What triggers a refresh of the setting? 'refresh' or 'postMessage' (instant)?
)
);
$wp_customize->add_control(
new Heading_Custom_Control(
$wp_customize,
'headingtest',
array(
'label' => 'Heading Test',
'description' => 'Test description describing the heading test.',
'priority' => 1,
'section' => 'layout_builder'
)
)
);
}
add_action( 'customize_register', 'huskypress_layoutoption_register' );

?>
44 changes: 15 additions & 29 deletions inc/reg-sidebars.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
'before_title' => '<div class="widget-head"><h2 class="widget-title">',
'after_title' => '</h2></div><div class="widget-content">'
));

register_sidebar( array(
'name' => __( 'Mega Footer' ),
'id' => 'mega-footer',
Expand All @@ -27,36 +27,22 @@
'before_title' => '<div class="widget-head"><h2 class="widget-title">',
'after_title' => '</h2></div><div class="widget-content">'
) );

}

// if no title then add widget content wrapper to before widget
add_filter( 'dynamic_sidebar_params', 'check_sidebar_params' );
function check_sidebar_params( $params ) {
global $wp_registered_widgets;
$settings_getter = $wp_registered_widgets[ $params[0]['widget_id'] ]['callback'][0];
$settings = $settings_getter->get_settings();
$settings = $settings[ $params[1]['number'] ];
if ( $params[0][ 'after_widget' ] == '</div></aside>' && isset( $settings[ 'title' ] ) && empty( $settings[ 'title' ] ) ){
$params[0][ 'before_widget' ] .= '<div class="widget-content">';
}
#Counts widgets in mega footer and adds column class accordingly
if( $params[0]['id'] == 'mega-footer' ){
if( is_multisite() ){
$widgets = get_site_option('sidebars_widgets')['mega-footer'];
} else {
$widgets = get_option('sidebars_widgets')['mega-footer'];
}
$count = count($widgets);
if( $count > 6 ){
$cols = 2;
} else {
$cols = floor(12 / $count);
}
$params[0]['before_widget'] = str_replace('class="', 'class="col-sm-' . $cols . ' ', $params[0]['before_widget']);
}
return $params;
for($i=0; $i<60; $i++){
register_sidebar(array(
'name' => __( 'Home '.$i, 'theme_text_domain' ),
'id' => 'home'.$i,
'description' => 'Appears with Archives, Search Results, the Blog page template, and when viewing single posts.',
'class' => 'sidebar',
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
'after_widget' => '</div></aside>',
'before_title' => '<div class="widget-head"><h2 class="widget-title">',
'after_title' => '</h2></div><div class="widget-content">'
));
}
}


function mf_remove_extra( $sidebars_widgets ){
$widgets = $sidebars_widgets['mega-footer'];
if( is_array($sidebars_widgets['mega-footer']) ){
Expand Down
162 changes: 162 additions & 0 deletions js/layoutbuilder.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
jQuery(document).ready(function($) {

//Slider
$(function() {

var currentHandle = -1;
var canDelete = -1;
var rows = 0;
wp.customize('homepagerows', function(obj) {

rows = obj.get();

} );
var addRow = function(i){
$('.sliders').append('<div class="slider" id="slider'+i+'"></div><div class="sliderAddColumn" id="addColumn'+i+'">Add Column</div>');
$('#addColumn'+i).click(function(){
addColumnButton(this);
});
var myarr = [];
var widths = [];
wp.customize('homepage_'+i, function(obj) {

widths = new String(obj.get());

} );
widths = widths.split(',');
for(var j in widths){
if(myarr.length == 0){
myarr[myarr.length] = parseInt(widths[j]);
}
else{
myarr[myarr.length] = parseInt(widths[j])+myarr[myarr.length-1];
}

}
if(myarr.length == 0) myarr[0] = 12;
$( "#slider"+i ).slider({
min: 0,
max: 12,
step: 1,
values: myarr,
change: function(event, ui){onSliderChange(event, ui, i);}
});
$( "#slider"+i ).children().last().css('display','none');
}

var addColumnButton = function(button){
var row = $(button).attr('id').substr(-1);
var myarr = $( "#slider"+row ).slider( "option", "values" );
if(myarr.length == 11) return;
myarr[myarr.length] = 12;
myarr.sort(function(a,b){return a - b});
$( "#slider"+row ).slider( "destroy" );
$( "#slider"+row ).slider({
min: 0,
max: 12,
step: 1,
values: myarr,
change: function(event, ui){onSliderChange(event, ui, row);}
});
$( "#slider"+row ).children().last().css('display','none');
}

var deleteColumn = function(){
if(!currentHandle) return;
var row = canDelete;
//if(!$(':focus').hasClass('ui-slider-handle')) return;
var count = 0;
var widths = 0;
var values = $.unique($('#slider'+row).slider( "values" ));
if(values.indexOf(currentHandle) == -1) return;
values.splice(values.indexOf(currentHandle),1);
values.sort(function(a,b){return a - b});
$( "#slider"+row ).slider( "destroy" );
$( "#slider"+row ).slider({
min: 0,
max: 12,
step: 1,
values: values,
change: function(event, ui){onSliderChange(event, ui, row);}
});
$( "#slider"+row ).children().last().css('display','none');
for(var j in values){
if(values[j] != 0){
if(widths == 0) widths = values[j];
else {
var dif = parseInt(values[j])-parseInt(values[j-1]);
widths = widths+','+dif
}
}
}
wp.customize('homepage_'+row, function(obj) {

obj.set(widths);

} );
$('.sliderDeleteColumn').addClass('disabled');
}

var onSliderChange = function(event, ui, row){
var widths = 0;
var values = $.unique(ui.values);
values.sort(function(a,b){return a - b});
for(var j in values){
if(values[j] != 0){
if(widths == 0) widths = values[j];
else {
var dif = parseInt(values[j])-parseInt(values[j-1]);
widths = widths+','+dif
}
}
}
wp.customize('homepage_'+row, function(obj) {

obj.set(widths);

} );
currentHandle = parseInt($(':focus').css('left').split('px')[0])/20;
canDelete = row;
$('.sliderDeleteColumn').removeClass('disabled');
}


for(var i=0; i<rows; i++){
addRow(i);
}

$('.sliderAddRow').click(function(){
if(rows == 5) return;
$('.sliderDeleteRow').removeClass('disabled')
addRow(rows);
rows++;
wp.customize('homepagerows', function(obj) {

obj.set(rows);

} );
});

$('.sliderDeleteRow').click(function(){
if(rows == 0) return;
rows--;
if(rows == 0) $('.sliderDeleteRow').addClass('disabled');
$( "#slider"+rows ).slider( "destroy" );
$( "#slider"+rows ).remove();
$( "#addColumn"+rows ).remove()
wp.customize('homepagerows', function(obj) {

obj.set(rows);

} );
currentHandle = -1;
canDelete = -1;
$('.sliderDeleteColumn').addClass('disabled');
});

$('.sliderDeleteColumn').click(function(){
deleteColumn();
});
});

})
1 change: 1 addition & 0 deletions js/min/layoutbuilder.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 7591bf6

Please sign in to comment.