public static function register_settings_callback($arguments)
 {
     extract($arguments);
     $data = get_file_data($path . '/parts/' . $folder . '/' . $part, apply_filters('piklist_get_file_data', array('title' => 'Title', 'setting' => 'Setting', 'tab' => 'Tab', 'tab_order' => 'Tab Order', 'order' => 'Order'), 'settings'));
     $data = apply_filters('piklist_add_part', $data, 'settings');
     if (!isset(self::$settings[$data['setting']])) {
         self::$settings[$data['setting']] = array();
     }
     array_push(self::$settings[$data['setting']], array_merge($arguments, array_merge($data, array('slug' => piklist::dashes("{$add_on} {$part}"), 'page' => piklist::dashes($add_on)))));
 }
 public static function register_help_tabs_callback($arguments)
 {
     $screen = get_current_screen();
     extract($arguments);
     $file = $path . '/parts/' . $folder . '/' . $part;
     $data = get_file_data($file, apply_filters('piklist_get_file_data', array('title' => 'Title', 'capability' => 'Capability', 'role' => 'Role', 'page' => 'Page', 'sidebar' => 'Sidebar'), 'help'));
     $data = apply_filters('piklist_add_part', $data, 'help');
     $pages = isset($data['page']) ? explode(',', $data['page']) : false;
     if (($screen->id == $data['page'] || empty($data['page']) || in_array($screen->id, $pages)) && (isset($data['capability']) && current_user_can($data['capability']) || isset($data['role']) && piklist_user::current_user_role($data['role']))) {
         if ($data['sidebar'] == 'true') {
             get_current_screen()->set_help_sidebar(piklist::render($file, null, true));
         } else {
             get_current_screen()->add_help_tab(array('id' => piklist::dashes($add_on . '-' . $part), 'title' => $data['title'], 'content' => piklist::render($file, null, true)));
         }
     }
 }
 public static function register_dashboard_widgets_callback($arguments)
 {
     global $current_screen;
     extract($arguments);
     $file = $path . '/parts/' . $folder . '/' . $part;
     $data = get_file_data($file, apply_filters('piklist_get_file_data', array('title' => 'Title', 'capability' => 'Capability', 'role' => 'Role', 'id' => 'ID', 'network' => 'Network'), 'dashboard'));
     $data = apply_filters('piklist_add_part', $data, 'dashboard');
     if ($data['network'] == 'only' && $current_screen->id != 'dashboard-network') {
         return;
     }
     if ((empty($data['network']) || $data['network'] == 'false') && (isset($current_screen) && $current_screen->id == 'dashboard-network')) {
         return;
     }
     if (isset($data['capability']) && current_user_can($data['capability']) || isset($data['role']) && piklist_user::current_user_role($data['role'])) {
         $id = empty($data['id']) ? piklist::dashes($add_on . '-' . $part) : $data['id'];
         self::$widgets[$id] = array('id' => $id, 'file' => $file, 'data' => $data);
         wp_add_dashboard_widget($id, self::$widgets[$id]['data']['title'], array('piklist_dashboard', 'render_widget'));
     }
 }
function piklist($option, $arguments = array())
{
    if (!is_array($arguments) && strstr($arguments, '=')) {
        parse_str($arguments, $arguments);
    }
    if (is_array($option) || is_object($option)) {
        $list = array();
        $arguments = is_array($arguments) ? $arguments : array($arguments);
        foreach ($option as $key => $value) {
            if (count($arguments) > 1) {
                if (in_array('_key', $arguments)) {
                    $_value = $arguments[1];
                    $list[$key] = is_object($value) ? $value->{$_value} : $value[$_value];
                } else {
                    $__key = $arguments[0];
                    $_key = is_object($value) ? $value->{$__key} : (isset($value[$__key]) ? $value[$__key] : null);
                    $_value = $arguments[1];
                    $list[$_key] = is_object($value) ? $value->{$_value} : (isset($value[$_value]) ? $value[$_value] : null);
                }
            } else {
                $_value = $arguments[0];
                array_push($list, is_object($value) && isset($value->{$_value}) ? $value->{$_value} : (isset($value[$_value]) ? $value[$_value] : null));
            }
        }
        return $list;
    } else {
        switch ($option) {
            case 'field':
                if (piklist_setting::get('active_section')) {
                    piklist_setting::register_setting($arguments);
                } else {
                    piklist_form::render_field($arguments, isset($arguments['return']) ? $arguments['return'] : false);
                }
                break;
            case 'list_table':
                piklist_list_table::render($arguments);
                break;
            case 'post_type_labels':
                return piklist::post_type_labels($arguments);
                break;
            case 'taxonomy_labels':
                return piklist::taxonomy_labels($arguments);
                break;
            case 'option':
            case 'post_custom':
            case 'post_meta':
            case 'get_post_custom':
            case 'user_custom':
            case 'user_meta':
            case 'get_user_custom':
            case 'term_custom':
            case 'term_meta':
            case 'get_term_custom':
                switch ($option) {
                    case 'user_custom':
                    case 'user_meta':
                    case 'get_user_custom':
                        $type = 'user';
                        break;
                    case 'term_custom':
                    case 'term_meta':
                    case 'get_term_custom':
                        $type = 'term';
                        break;
                    case 'post_custom':
                    case 'post_meta':
                    case 'get_post_custom':
                        $type = 'post';
                        break;
                    default:
                        $type = 'option';
                        break;
                }
                return piklist::object($type, $arguments);
                break;
            case 'dashes':
                return piklist::dashes($arguments);
                break;
            case 'slug':
                return piklist::slug($arguments);
                break;
            case 'performance':
                piklist::performance();
                break;
            case 'include_meta_boxes':
                // TODO: Improve
                if (isset($arguments['post_type'])) {
                    $post_type = $arguments['post_type'];
                    unset($arguments['post_type']);
                } else {
                    $post_type = null;
                }
                piklist::include_meta_boxes($arguments, $post_type);
                break;
            case 'include_actions':
                // TODO: Improve
                if (isset($arguments['action'])) {
                    $post_type = $arguments['action'];
                    unset($arguments['action']);
                }
                piklist::include_actions($action, $arguments);
                break;
            case 'include_user_profile_fields':
                piklist_user::include_user_profile_fields($arguments);
                break;
            case 'comments_template':
                $file = isset($arguments[0]) ? $arguments[0] : '/comments.php';
                $seperate_comments = isset($arguments[1]) ? $arguments[1] : false;
                piklist_comments::comments_template($file, $seperate_comments);
                break;
            default:
                $return = isset($arguments['return']) ? $arguments['return'] : false;
                $loop = isset($arguments['loop']) ? $arguments['loop'] : null;
                unset($arguments['return']);
                unset($arguments['loop']);
                return piklist::render($option, $arguments, $return, $loop);
                break;
        }
    }
}
 public static function admin_pages_callback($arguments)
 {
     extract($arguments);
     $data = get_file_data($path . '/parts/' . $folder . '/' . $part, apply_filters('piklist_get_file_data', array('title' => 'Title', 'page' => 'Page', 'flow' => 'Flow', 'flow_page' => 'Flow Page', 'tab' => 'Tab', 'order' => 'Order', 'position' => 'Position'), 'admin-pages'));
     $data = apply_filters('piklist_add_part', $data, 'admin-pages');
     if (!empty($data['page']) && (!isset($_REQUEST['flow_page']) || isset($_REQUEST['flow_page']) && $_REQUEST['flow_page'] === $data['flow_page'])) {
         if (!isset(self::$admin_page_sections[$data['page']])) {
             self::$admin_page_sections[$data['page']] = array();
         }
         array_push(self::$admin_page_sections[$data['page']], array_merge($arguments, array_merge($data, array('slug' => piklist::dashes("{$add_on} {$part}"), 'page' => piklist::dashes($add_on), 'part' => $path . '/parts/admin-pages/' . $part))));
         $tab = !empty($data['tab']) ? piklist::dashes($data['tab']) : 'default';
         if (!isset(self::$admin_page_tabs[$data['page']][$tab]) && $tab) {
             self::$admin_page_tabs[$data['page']][$tab] = array('title' => $data['tab'], 'page' => $tab);
         }
         uasort(self::$admin_page_sections[$data['page']], array('piklist', 'sort_by_order'));
     }
 }
示例#6
0
文件: add-ons.php 项目: a42/piklist
    ?>
"
        value="<?php 
    echo esc_attr($values[$index]);
    ?>
"
        <?php 
    echo $active ? 'checked="checked"' : '';
    ?>
        <?php 
    echo piklist_form::attributes_to_string($attributes);
    ?>
      />
    
      <a href="#<?php 
    echo piklist::dashes(piklist_add_on::$available_add_ons[$values[$index]]['Name']);
    ?>
" class="button<?php 
    echo $active ? '' : '-primary';
    ?>
 piklist-field-add-on-button">
        <?php 
    $active ? _e('Disable', 'piklist') : _e('Activate', 'piklist');
    ?>
      </a>

      <?php 
    if (isset($settings[$values[$index]])) {
        ?>
      
        <a href="<?php 
 public function register_widgets_callback($arguments)
 {
     extract($arguments);
     if (!strstr($part, '-form.php')) {
         $path .= '/parts/' . $folder . '/';
         $name = piklist::dashes(strtolower(str_replace('.php', '', $part)));
         $form = file_exists($path . $name . '-form.php') ? $path . $name . '-form' : false;
         if ($form) {
             $data = get_file_data($form . '.php', apply_filters('piklist_get_file_data', array('height' => 'Height', 'width' => 'Width'), 'widgets'));
             $data = apply_filters('piklist_add_part', $data, 'widgets');
         } else {
             $data = null;
         }
         $this->widgets[$name] = array('name' => $name, 'add_on' => $add_on, 'path' => $path . $name, 'form' => $form, 'form_data' => $data, 'data' => get_file_data($path . $part, array('title' => 'Title', 'description' => 'Description', 'tags' => 'Tags', 'class' => 'Class')));
     }
 }
示例#8
0
/**
 * piklist
 * The core helper function for the Piklist framework.
 *
 * @since 1.0
 */
function piklist($option, $arguments = array())
{
    if (!is_array($arguments) && strstr($arguments, '=')) {
        parse_str($arguments, $arguments);
    }
    if (is_array($option) || is_object($option)) {
        return empty($arguments) ? piklist::object_format($option) : piklist::pluck($option, $arguments);
    } else {
        switch ($option) {
            case 'field':
                if (piklist_setting::get('active_section')) {
                    piklist_setting::register_setting($arguments);
                } else {
                    return piklist_form::render_field($arguments, isset($arguments['return']) ? $arguments['return'] : false);
                }
                break;
            case 'form':
                return piklist_form::render_form($arguments['form'], isset($arguments['add_on']) ? $arguments['add_on'] : null);
                break;
            case 'list_table':
                piklist_list_table::render($arguments);
                break;
            case 'post_type_labels':
                return piklist::post_type_labels($arguments);
                break;
            case 'taxonomy_labels':
                return piklist::taxonomy_labels($arguments);
                break;
            case 'option':
            case 'post_custom':
            case 'post_meta':
            case 'get_post_custom':
            case 'user_custom':
            case 'user_meta':
            case 'get_user_custom':
            case 'term_custom':
            case 'term_meta':
            case 'get_term_custom':
                switch ($option) {
                    case 'user_custom':
                    case 'user_meta':
                    case 'get_user_custom':
                        $type = 'user';
                        break;
                    case 'term_custom':
                    case 'term_meta':
                    case 'get_term_custom':
                        $type = 'term';
                        break;
                    case 'post_custom':
                    case 'post_meta':
                    case 'get_post_custom':
                        $type = 'post';
                        break;
                    default:
                        $type = 'option';
                        break;
                }
                return piklist::object($type, $arguments);
                break;
            case 'dashes':
                return piklist::dashes($arguments);
                break;
            case 'slug':
                return piklist::slug($arguments);
                break;
            case 'humanize':
                return piklist::humanize($arguments);
                break;
            case 'performance':
                piklist::performance();
                break;
            case 'comments_template':
                $file = isset($arguments[0]) ? $arguments[0] : '/comments.php';
                $seperate_comments = isset($arguments[1]) ? $arguments[1] : false;
                piklist_comments::comments_template($file, $seperate_comments);
                break;
            case 'include_meta_boxes':
                piklist::render('shared/notice', array('content' => sprintf(__('This page is using the old Piklist WorkFlow system. Please update your code to the %snew WorkFlow system%s.', 'piklist'), '<a href="https://piklist.com/user-guide/docs/building-workflows-piklist-v0-9-9/" target="_blank">', '</a>'), 'notice_type' => 'error'));
                break;
            case 'prefix':
                return piklist::$prefix;
                break;
            case 'url':
                return isset(piklist::$add_ons[$arguments]) ? piklist::$add_ons[$arguments]['url'] : null;
                break;
            case 'path':
                return isset(piklist::$add_ons[$arguments]) ? piklist::$add_ons[$arguments]['path'] : null;
                break;
            default:
                $return = isset($arguments['return']) ? $arguments['return'] : false;
                $loop = isset($arguments['loop']) ? $arguments['loop'] : null;
                unset($arguments['return']);
                unset($arguments['loop']);
                return piklist::render($option, $arguments, $return, $loop);
                break;
        }
    }
}
示例#9
0
 /**
  * register_workflows_callback
  * Handle registered workflow tabs.
  *
  * @param array $arguments The configuration data for the workflow tab.
  *
  * @access public
  * @static
  * @since 1.0
  */
 public static function register_workflows_callback($arguments)
 {
     $pagenow = basename($_SERVER['SCRIPT_NAME']);
     extract($arguments);
     foreach ($data['flow'] as $flow) {
         $tab = $data['tab'] ? current($data['tab']) : null;
         $data['flow_page'] = piklist::slug(($tab ? $tab . ' ' : null) . $data['title'], 'UTF-8');
         $data['flow_slug'] = $flow == piklist::dashes($flow) ? $flow : piklist::slug($flow, 'UTF-8');
         if ((piklist_admin::is_user() || piklist_admin::is_term()) && $data['position'] == 'title') {
             $data['position'] = 'body';
         }
         $workflow = array('part' => $part ? $path . '/parts/' . $folder . '/' . $part : null, 'data' => $data);
         $url_arguments = array(piklist::$prefix => array('flow' => $data['flow_slug'], 'flow_page' => $data['flow_page']));
         $url_arguments['post'] = isset($post->ID) ? $post->ID : (isset($_REQUEST['post']) ? (int) $_REQUEST['post'] : null);
         parse_str($_SERVER['QUERY_STRING'], $url_defaults);
         foreach (array('message', 'paged', 'updated') as $variable) {
             unset($url_defaults[$variable]);
         }
         $url = array_merge($url_defaults, $url_arguments);
         if ($data['redirect'] != false) {
             /**
              * piklist_workflow_redirect_url
              * 
              * @since 1.0
              */
             $data['redirect'] = apply_filters('piklist_workflow_redirect_url', $data['redirect'], $workflow, $data);
             $workflow['url'] = admin_url($data['redirect'] . (strstr($data['redirect'], '?') ? '&' : '?') . http_build_query(array_filter($url)));
         } elseif ($data['disable'] == false) {
             if ($url_arguments['post']) {
                 unset($url['page']);
                 $url['action'] = 'edit';
                 $pagenow = 'post.php';
             }
             $workflow['url'] = admin_url($pagenow . '?' . http_build_query(array_filter($url)));
         }
         if (!isset(self::$workflows[$data['flow_slug']])) {
             self::$workflows[$data['flow_slug']] = array();
         }
         if (!$tab) {
             if ($data['header'] === true) {
                 array_unshift(self::$workflows[$data['flow_slug']], $workflow);
             } elseif (!empty($data['order'])) {
                 self::$workflows[$data['flow_slug']][$data['order']] = $workflow;
             } else {
                 array_push(self::$workflows[$data['flow_slug']], $workflow);
             }
         } else {
             if (!isset(self::$sub_workflows[$data['flow_slug']])) {
                 self::$sub_workflows[$data['flow_slug']] = array();
             }
             if (!isset(self::$sub_workflows[$data['flow_slug']][$tab])) {
                 self::$sub_workflows[$data['flow_slug']][$tab] = array();
             }
             if (!empty($data['order'])) {
                 self::$sub_workflows[$data['flow_slug']][$tab][$data['order']] = $workflow;
             } else {
                 array_push(self::$sub_workflows[$data['flow_slug']][$tab], $workflow);
             }
         }
     }
 }
 /**
  * widget
  * Render the front end view of the widget.
  *
  * @param array $arguments The part object.
  * @param array $instance The widget instance.
  *
  * @access public
  * @static
  * @since 1.0
  */
 public function widget($arguments, $instance)
 {
     extract($arguments);
     if (isset($instance['widget'])) {
         $widget = $instance['widget'];
         unset($instance['widget']);
     }
     if (isset($widget) && !empty($instance)) {
         $this->setup($this->widget_name);
         foreach ($instance as $field => &$value) {
             $value = maybe_unserialize($value);
         }
         $this->widgets[$widget]['instance'] = $instance;
         do_action('piklist_pre_render_widget', $this->widgets[$widget]);
         foreach ($this->widgets[$widget]['render'] as $render) {
             if (!strstr($render, '-form.php')) {
                 piklist::render($render, array('instance' => $instance, 'settings' => $instance, 'before_widget' => str_replace('class="', 'class="' . piklist::dashes($this->widgets[$widget]['add_on'] . ' ' . $this->widgets[$widget]['id']) . ' ' . $this->widgets[$widget]['data']['class'] . ' ', $before_widget), 'after_widget' => $after_widget, 'before_title' => $before_title, 'after_title' => $after_title, 'data' => $this->widgets[$widget]['data']));
             }
         }
         do_action('piklist_post_render_widget', $this->widgets[$widget]);
     }
 }