diff --git a/inc/roots-activation.php b/inc/roots-activation.php index ccaa42e..0302211 100644 --- a/inc/roots-activation.php +++ b/inc/roots-activation.php @@ -1,94 +1,329 @@ post_title; +function roots_theme_activation_options_init() { + if (roots_get_theme_activation_options() === false) { + add_option('roots_theme_activation_options', roots_get_default_theme_activation_options()); } - $pages_to_create = array_diff($default_pages, $temp); - - foreach ($pages_to_create as $new_page_title) { - - // create post object - $add_default_pages = array( - 'post_title' => $new_page_title, - 'post_content' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum consequat, orci ac laoreet cursus, dolor sem luctus lorem, eget consequat magna felis a magna. Aliquam scelerisque condimentum ante, eget facilisis tortor lobortis in. In interdum venenatis justo eget consequat. Morbi commodo rhoncus mi nec pharetra. Aliquam erat volutpat. Mauris non lorem eu dolor hendrerit dapibus. Mauris mollis nisl quis sapien posuere consectetur. Nullam in sapien at nisi ornare bibendum at ut lectus. Pellentesque ut magna mauris. Nam viverra suscipit ligula, sed accumsan enim placerat nec. Cras vitae metus vel dolor ultrices sagittis. Duis venenatis augue sed risus laoreet congue ac ac leo. Donec fermentum accumsan libero sit amet iaculis. Duis tristique dictum enim, ac fringilla risus bibendum in. Nunc ornare, quam sit amet ultricies gravida, tortor mi malesuada urna, quis commodo dui nibh in lacus. Nunc vel tortor mi. Pellentesque vel urna a arcu adipiscing imperdiet vitae sit amet neque. Integer eu lectus et nunc dictum sagittis. Curabitur commodo vulputate fringilla. Sed eleifend, arcu convallis adipiscing congue, dui turpis commodo magna, et vehicula sapien turpis sit amet nisi.', - 'post_status' => 'publish', - 'post_type' => 'page' - ); - - // insert the post into the database - $result = wp_insert_post($add_default_pages); - } - - $home = get_page_by_title('Home'); - update_option('show_on_front', 'page'); - update_option('page_on_front', $home->ID); - - $home_menu_order = array( - 'ID' => $home->ID, - 'menu_order' => -1 + register_setting( + 'roots_activation_options', + 'roots_theme_activation_options', + 'roots_theme_activation_options_validate' ); - wp_update_post($home_menu_order); +} - // set the permalink structure - if (get_option('permalink_structure') !== '/%year%/%postname%/') { - update_option('permalink_structure', '/%year%/%postname%/'); - } +add_action('admin_init', 'roots_theme_activation_options_init'); - $wp_rewrite->init(); - $wp_rewrite->flush_rules(); +function roots_activation_options_page_capability($capability) { + return 'edit_theme_options'; +} - // don't organize uploads by year and month - update_option('uploads_use_yearmonth_folders', 0); - update_option('upload_path', 'assets'); +add_filter('option_page_capability_roots_activation_options', 'roots_activation_options_page_capability'); - // automatically create menus and set their locations - // add all pages to the Primary Navigation - $roots_nav_theme_mod = false; - - if (!has_nav_menu('primary_navigation')) { - $primary_nav_id = wp_create_nav_menu('Primary Navigation', array('slug' => 'primary_navigation')); - $roots_nav_theme_mod['primary_navigation'] = $primary_nav_id; - } - - if (!has_nav_menu('utility_navigation')) { - $utility_nav_id = wp_create_nav_menu('Utility Navigation', array('slug' => 'utility_navigation')); - $roots_nav_theme_mod['utility_navigation'] = $utility_nav_id; - } - - if ($roots_nav_theme_mod) { - set_theme_mod('nav_menu_locations', $roots_nav_theme_mod); - } - - $primary_nav = wp_get_nav_menu_object('Primary Navigation'); - - $primary_nav_term_id = (int) $primary_nav->term_id; - $menu_items= wp_get_nav_menu_items($primary_nav_term_id); - if (!$menu_items || empty($menu_items)) { - $pages = get_pages(); - foreach($pages as $page) { - $item = array( - 'menu-item-object-id' => $page->ID, - 'menu-item-object' => 'page', - 'menu-item-type' => 'post_type', - 'menu-item-status' => 'publish' - ); - wp_update_nav_menu_item($primary_nav_term_id, 0, $item); - } +function roots_theme_activation_options_add_page() { + $roots_activation_options = roots_get_theme_activation_options(); + if (!$roots_activation_options['first_run']) { + $theme_page = add_theme_page( + __('Theme Activation', 'roots'), + __('Theme Activation', 'roots'), + 'edit_theme_options', + 'theme_activation_options', + 'roots_theme_activation_options_render_page' + ); + } else { + if (is_admin() && isset($_GET['page']) && $_GET['page'] === 'theme_activation_options') { + wp_redirect(admin_url('themes.php?page=theme_options')); + exit; + } } } -?> +add_action('admin_menu', 'roots_theme_activation_options_add_page', 50); + +function roots_get_default_theme_activation_options() { + $default_theme_activation_options = array( + 'first_run' => false, + 'create_front_page' => false, + 'change_permalink_structure' => false, + 'change_uploads_folder' => false, + 'create_navigation_menus' => false, + 'add_pages_to_primary_navigation' => false, + ); + + return apply_filters('roots_default_theme_activation_options', $default_theme_activation_options); +} + +function roots_get_theme_activation_options() { + return get_option('roots_theme_activation_options', roots_get_default_theme_activation_options()); +} + +function roots_theme_activation_options_render_page() { ?> + +
+ +

+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ + +
+
+ +post_title; + } + + $pages_to_create = array_diff($default_pages, $temp); + + foreach ($pages_to_create as $new_page_title) { + $add_default_pages = array( + 'post_title' => $new_page_title, + 'post_content' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum consequat, orci ac laoreet cursus, dolor sem luctus lorem, eget consequat magna felis a magna. Aliquam scelerisque condimentum ante, eget facilisis tortor lobortis in. In interdum venenatis justo eget consequat. Morbi commodo rhoncus mi nec pharetra. Aliquam erat volutpat. Mauris non lorem eu dolor hendrerit dapibus. Mauris mollis nisl quis sapien posuere consectetur. Nullam in sapien at nisi ornare bibendum at ut lectus. Pellentesque ut magna mauris. Nam viverra suscipit ligula, sed accumsan enim placerat nec. Cras vitae metus vel dolor ultrices sagittis. Duis venenatis augue sed risus laoreet congue ac ac leo. Donec fermentum accumsan libero sit amet iaculis. Duis tristique dictum enim, ac fringilla risus bibendum in. Nunc ornare, quam sit amet ultricies gravida, tortor mi malesuada urna, quis commodo dui nibh in lacus. Nunc vel tortor mi. Pellentesque vel urna a arcu adipiscing imperdiet vitae sit amet neque. Integer eu lectus et nunc dictum sagittis. Curabitur commodo vulputate fringilla. Sed eleifend, arcu convallis adipiscing congue, dui turpis commodo magna, et vehicula sapien turpis sit amet nisi.', + 'post_status' => 'publish', + 'post_type' => 'page' + ); + + $result = wp_insert_post($add_default_pages); + } + + $home = get_page_by_title('Home'); + update_option('show_on_front', 'page'); + update_option('page_on_front', $home->ID); + + $home_menu_order = array( + 'ID' => $home->ID, + 'menu_order' => -1 + ); + wp_update_post($home_menu_order); + } + + if ($roots_theme_activation_options['change_permalink_structure']) { + $roots_theme_activation_options['change_permalink_structure'] = false; + + if (get_option('permalink_structure') !== '/%postname%/') { + update_option('permalink_structure', '/%postname%/'); + } + + global $wp_rewrite; + $wp_rewrite->init(); + $wp_rewrite->flush_rules(); + } + + if ($roots_theme_activation_options['change_uploads_folder']) { + $roots_theme_activation_options['change_uploads_folder'] = false; + + update_option('uploads_use_yearmonth_folders', 0); + update_option('upload_path', 'assets'); + } + + if ($roots_theme_activation_options['create_navigation_menus']) { + $roots_theme_activation_options['create_navigation_menus'] = false; + + $roots_nav_theme_mod = false; + + if (!has_nav_menu('primary_navigation')) { + $primary_nav_id = wp_create_nav_menu('Primary Navigation', array('slug' => 'primary_navigation')); + $roots_nav_theme_mod['primary_navigation'] = $primary_nav_id; + } + + if (!has_nav_menu('utility_navigation')) { + $utility_nav_id = wp_create_nav_menu('Utility Navigation', array('slug' => 'utility_navigation')); + $roots_nav_theme_mod['utility_navigation'] = $utility_nav_id; + } + + if ($roots_nav_theme_mod) { + set_theme_mod('nav_menu_locations', $roots_nav_theme_mod); + } + } + + if ($roots_theme_activation_options['add_pages_to_primary_navigation']){ + $roots_theme_activation_options['add_pages_to_primary_navigation'] = false; + + $primary_nav = wp_get_nav_menu_object('Primary Navigation'); + $primary_nav_term_id = (int) $primary_nav->term_id; + $menu_items= wp_get_nav_menu_items($primary_nav_term_id); + if (!$menu_items || empty($menu_items)) { + $pages = get_pages(); + foreach($pages as $page) { + $item = array( + 'menu-item-object-id' => $page->ID, + 'menu-item-object' => 'page', + 'menu-item-type' => 'post_type', + 'menu-item-status' => 'publish' + ); + wp_update_nav_menu_item($primary_nav_term_id, 0, $item); + } + } + } + + update_option('roots_theme_activation_options', $roots_theme_activation_options); +} + +add_action('admin_init','roots_theme_activation_action'); + +function roots_deactivation_action() { + update_option('roots_theme_activation_options', roots_get_default_theme_activation_options()); +} + +add_action('switch_theme', 'roots_deactivation_action'); + +?> \ No newline at end of file diff --git a/inc/roots-cleanup.php b/inc/roots-cleanup.php index 96008d0..099f36a 100644 --- a/inc/roots-cleanup.php +++ b/inc/roots-cleanup.php @@ -419,7 +419,7 @@ function roots_notice_tagline() { } } -if (get_option('blogdescription') === 'Just another WordPress site') { +if ((get_option('blogdescription') === 'Just another WordPress site') && isset($_GET['page']) != 'theme_activation_options') { add_action('admin_notices', 'roots_notice_tagline'); } @@ -428,7 +428,7 @@ function roots_notice_tagline_ignore() { $user_id = $current_user->ID; if (isset($_GET['tagline_notice_ignore']) && '0' == $_GET['tagline_notice_ignore']) { add_user_meta($user_id, 'ignore_tagline_notice', 'true', true); - } + } } add_action('admin_init', 'roots_notice_tagline_ignore'); diff --git a/inc/roots-options.php b/inc/roots-options.php index 3883032..4573a53 100644 --- a/inc/roots-options.php +++ b/inc/roots-options.php @@ -27,16 +27,19 @@ function roots_option_page_capability($capability) { add_filter('option_page_capability_roots_options', 'roots_option_page_capability'); function roots_theme_options_add_page() { - $theme_page = add_theme_page( - __('Theme Options', 'roots'), - __('Theme Options', 'roots'), - 'edit_theme_options', - 'theme_options', - 'roots_theme_options_render_page' - ); - if (!$theme_page) - return; + $roots_options = roots_get_theme_options(); + $roots_activation_options = roots_get_theme_activation_options(); + if ($roots_activation_options['first_run']) { + $theme_page = add_theme_page( + __('Theme Options', 'roots'), + __('Theme Options', 'roots'), + 'edit_theme_options', + 'theme_options', + 'roots_theme_options_render_page' + ); + } + } add_action('admin_menu', 'roots_theme_options_add_page'); @@ -44,10 +47,10 @@ function roots_admin_bar_render() { global $wp_admin_bar; $wp_admin_bar->add_menu(array( - 'parent' => 'appearance', - 'id' => 'theme_options', - 'title' => __('Theme Options', 'roots'), - 'href' => admin_url( 'themes.php?page=theme_options') + 'parent' => 'appearance', + 'id' => 'theme_options', + 'title' => __('Theme Options', 'roots'), + 'href' => admin_url('themes.php?page=theme_options') )); } add_action('wp_before_admin_bar_render', 'roots_admin_bar_render'); @@ -55,7 +58,7 @@ add_action('wp_before_admin_bar_render', 'roots_admin_bar_render'); global $roots_css_frameworks; $roots_css_frameworks = array( 'blueprint' => array( - 'name' => 'blueprint', + 'name' => 'blueprint', 'label' => __('Blueprint CSS', 'roots'), 'classes' => array( 'container' => 'span-24', @@ -64,12 +67,12 @@ $roots_css_frameworks = array( ) ), '960gs_12' => array( - 'name' => '960gs_12', + 'name' => '960gs_12', 'label' => __('960gs (12 cols)', 'roots'), 'classes' => array( 'container' => 'container_12', - 'main' => 'grid_7 suffix_1', - 'sidebar' => 'grid_4' + 'main' => 'grid_7 suffix_1', + 'sidebar' => 'grid_4' ) ), '960gs_16' => array( @@ -77,80 +80,80 @@ $roots_css_frameworks = array( 'label' => __('960gs (16 cols)', 'roots'), 'classes' => array( 'container' => 'container_16', - 'main' => 'grid_9 suffix_1', - 'sidebar' => 'grid_6' + 'main' => 'grid_9 suffix_1', + 'sidebar' => 'grid_6' ) ), '960gs_24' => array( - 'name' => '960gs_24', + 'name' => '960gs_24', 'label' => __('960gs (24 cols)', 'roots'), 'classes' => array( 'container' => 'container_24', - 'main' => 'grid_15 suffix_1', - 'sidebar' => 'grid_8' + 'main' => 'grid_15 suffix_1', + 'sidebar' => 'grid_8' ) ), '1140' => array( - 'name' => '1140', + 'name' => '1140', 'label' => __('1140', 'roots'), 'classes' => array( 'container' => '', - 'main' => 'eightcol', - 'sidebar' => 'fourcol last' + 'main' => 'eightcol', + 'sidebar' => 'fourcol last' ) ), 'adapt' => array( - 'name' => 'adapt', + 'name' => 'adapt', 'label' => __('Adapt.js', 'roots'), 'classes' => array( 'container' => 'container_12 clearfix', - 'main' => 'grid_7 suffix_1', - 'sidebar' => 'grid_4' + 'main' => 'grid_7 suffix_1', + 'sidebar' => 'grid_4' ) ), 'less' => array( - 'name' => 'less', + 'name' => 'less', 'label' => __('Less Framework 4', 'roots'), 'classes' => array( 'container' => 'container', - 'main' => '', - 'sidebar' => '' + 'main' => '', + 'sidebar' => '' ) ), 'foundation' => array( - 'name' => 'foundation', + 'name' => 'foundation', 'label' => __('Foundation', 'roots'), 'classes' => array( 'container' => 'row', - 'main' => 'eight columns', - 'sidebar' => 'four columns' + 'main' => 'eight columns', + 'sidebar' => 'four columns' ) ), 'bootstrap' => array( - 'name' => 'bootstrap', + 'name' => 'bootstrap', 'label' => __('Bootstrap', 'roots'), 'classes' => array( 'container' => 'row', - 'main' => 'span11', - 'sidebar' => 'span5' + 'main' => 'span11', + 'sidebar' => 'span5' ) ), 'bootstrap_less' => array( - 'name' => 'bootstrap_less', + 'name' => 'bootstrap_less', 'label' => __('Bootstrap w/ Less', 'roots'), 'classes' => array( 'container' => 'row', - 'main' => 'span11', - 'sidebar' => 'span5' + 'main' => 'span11', + 'sidebar' => 'span5' ) ), 'none' => array( - 'name' => 'none', + 'name' => 'none', 'label' => __('None', 'roots'), 'classes' => array( 'container' => '', - 'main' => '', - 'sidebar' => '' + 'main' => '', + 'sidebar' => '' ) ) ); @@ -180,7 +183,7 @@ function roots_get_default_theme_options($default_framework = '') { 'root_relative_urls' => true, 'clean_menu' => true, 'bootstrap_javascript' => false, - 'bootstrap_less_javascript' => false + 'bootstrap_less_javascript' => false, ); return apply_filters('roots_default_theme_options', $default_theme_options); @@ -192,6 +195,7 @@ function roots_get_theme_options() { function roots_theme_options_render_page() { global $roots_css_frameworks; + ?>
@@ -204,7 +208,7 @@ function roots_theme_options_render_page() { $roots_options = roots_get_theme_options(); $roots_default_options = roots_get_default_theme_options($roots_options['css_framework']); ?> - + @@ -224,7 +228,7 @@ function roots_theme_options_render_page() {

- +
@@ -234,12 +238,12 @@ function roots_theme_options_render_page() {

- +
- + - +
@@ -252,7 +256,7 @@ function roots_theme_options_render_page() {
@@ -373,4 +377,4 @@ function roots_theme_options_validate($input) { return apply_filters('roots_theme_options_validate', $output, $input, $defaults); } -?> +?> \ No newline at end of file