/wp-content/themes/osmosis/includes/admin/grve-admin-custom-sidebars.php

https://github.com/Canuckaholic/Pop-Digital · PHP · 140 lines · 104 code · 29 blank · 7 comment · 11 complexity · dfbc9dbd0107b3354025ca3b6cb6c91d MD5 · raw file

  1. <?php
  2. /*
  3. * Admin Custom Sidebars
  4. *
  5. * @author Greatives Team
  6. * @URI http://greatives.eu
  7. */
  8. function grve_add_sidebar_settings() {
  9. if ( isset( $_POST['grvesidebar_nonce'] ) && wp_verify_nonce( $_POST['grvesidebar_nonce'], 'save_sidebars' ) ) {
  10. $sidebars_items = array();
  11. if( isset( $_POST['grve_custom_sidebar_item_id'] ) ) {
  12. $num_of_sidebars = sizeof( $_POST['grve_custom_sidebar_item_id'] );
  13. for ( $i=0; $i < $num_of_sidebars; $i++ ) {
  14. $this_sidebar = array (
  15. 'id' => $_POST['grve_custom_sidebar_item_id'][ $i ],
  16. 'name' => $_POST['grve_custom_sidebar_item_name'][ $i ],
  17. );
  18. array_push( $sidebars_items, $this_sidebar );
  19. }
  20. }
  21. if ( empty( $sidebars_items ) ) {
  22. delete_option( 'grve-osmosis-custom-sidebars' );
  23. } else {
  24. update_option( 'grve-osmosis-custom-sidebars', $sidebars_items );
  25. }
  26. //Update Sidebar list
  27. wp_get_sidebars_widgets();
  28. wp_safe_redirect( 'themes.php?page=grve-custom-sidebar-settings&sidebar-settings=saved' );
  29. }
  30. add_submenu_page(
  31. 'themes.php',
  32. __( 'Sidebars', GRVE_THEME_TRANSLATE ),
  33. __( 'Sidebars', GRVE_THEME_TRANSLATE ),
  34. 'manage_options',
  35. 'grve-custom-sidebar-settings',
  36. 'grve_show_sidebar_settings'
  37. );
  38. }
  39. add_action( 'admin_menu', 'grve_add_sidebar_settings' );
  40. function grve_show_sidebar_settings() {
  41. $grve_custom_sidebars = get_option( 'grve-osmosis-custom-sidebars' );
  42. ?>
  43. <div id="grve-sidebar-wrap" class="wrap">
  44. <h2><?php echo __( "Sidebars", GRVE_THEME_TRANSLATE ); ?></h2>
  45. <?php if( isset( $_GET['sidebar-settings'] ) ) { ?>
  46. <div class="grve-sidebar-saved grve-notice-green">
  47. <strong><?php _e( 'Settings Saved!', GRVE_THEME_TRANSLATE ); ?></strong>
  48. </div>
  49. <?php } ?>
  50. <input type="text" id="grve_custom_sidebar_item_name_new" value=""/>
  51. <input type="button" id="grve-add-custom-sidebar-item" class="button button-primary" value="<?php _e( 'Add New', GRVE_THEME_TRANSLATE ); ?>"/>
  52. <span class="grve-sidebar-spinner"></span>
  53. <div class="grve-sidebar-notice grve-notice-red" style="display:none;">
  54. <strong><?php _e( 'Field must not be empty!', GRVE_THEME_TRANSLATE ); ?></strong>
  55. </div>
  56. <div class="grve-sidebar-notice-exists grve-notice-red" style="display:none;">
  57. <strong><?php _e( 'Sidebar with this name already exists!', GRVE_THEME_TRANSLATE ); ?></strong>
  58. </div>
  59. <form method="post" action="themes.php?page=grve-custom-sidebar-settings">
  60. <?php wp_nonce_field( 'save_sidebars', 'grvesidebar_nonce' ); ?>
  61. <div id="grve-custom-sidebar-container">
  62. <?php grve_print_admin_custom_sidebars( $grve_custom_sidebars ); ?>
  63. </div>
  64. <?php submit_button(); ?>
  65. </form>
  66. </div>
  67. <?php
  68. }
  69. function grve_print_admin_custom_sidebars( $grve_custom_sidebars ) {
  70. if ( ! empty( $grve_custom_sidebars ) ) {
  71. foreach ( $grve_custom_sidebars as $grve_custom_sidebar ) {
  72. grve_print_admin_single_custom_sidebar( $grve_custom_sidebar );
  73. }
  74. }
  75. }
  76. function grve_print_admin_single_custom_sidebar( $sidebar_item, $mode = '' ) {
  77. $grve_button_class = "grve-custom-sidebar-item-delete-button";
  78. $sidebar_item_id = uniqid('grve_sidebar_');
  79. if( $mode = "new" ) {
  80. $grve_button_class = "grve-custom-sidebar-item-delete-button grve-item-new";
  81. }
  82. ?>
  83. <div class="grve-custom-sidebar-item">
  84. <input class="<?php echo esc_attr( $grve_button_class ); ?> button" type="button" value="<?php _e( 'Delete', GRVE_THEME_TRANSLATE ); ?>">
  85. <h3 class="grve-custom-sidebar-title">
  86. <span><?php _e( 'Custom Sidebar', GRVE_THEME_TRANSLATE ); ?>: <?php echo grve_array_value( $sidebar_item, 'name' ); ?></span>
  87. </h3>
  88. <div class="grve-custom-sidebar-settings">
  89. <input type="hidden" name="grve_custom_sidebar_item_id[]" value="<?php echo grve_array_value( $sidebar_item, 'id', $sidebar_item_id ); ?>">
  90. <input type="hidden" class="grve-custom-sidebar-item-name" name="grve_custom_sidebar_item_name[]" value="<?php echo grve_array_value( $sidebar_item, 'name' ); ?>"/>
  91. </div>
  92. </div>
  93. <?php
  94. }
  95. add_action( 'wp_ajax_grve_get_custom_sidebar', 'grve_get_custom_sidebar' );
  96. function grve_get_custom_sidebar() {
  97. if( isset( $_POST['grve_sidebar_name'] ) ) {
  98. $sidebar_item_name = $_POST['grve_sidebar_name'];
  99. $sidebar_item_id = uniqid('grve_sidebar_');
  100. if( empty( $sidebar_item_name ) ) {
  101. $sidebar_item_name = $sidebar_item_id;
  102. }
  103. $this_sidebar = array (
  104. 'id' => $sidebar_item_id,
  105. 'name' => $sidebar_item_name,
  106. );
  107. grve_print_admin_single_custom_sidebar( $this_sidebar, 'new' );
  108. }
  109. die();
  110. }
  111. ?>