WordPress.org

Plugin Directory

Changeset 489719


Ignore:
Timestamp:
01/14/12 04:47:24 (2 years ago)
Author:
MZAWeb
Message:

Removed lots of duplicated code (silly me!). Upgraded base framework

Location:
wp-aletheia-feedbacks/trunk
Files:
1 added
7 edited

Legend:

Unmodified
Added
Removed
  • wp-aletheia-feedbacks/trunk/aletheia.class.php

    r461145 r489719  
    2323 
    2424    public function load_modules(){ 
     25 
     26        require_once $this->myPath . "/" . $this->modules_path . '/lib/MZAFormBuilderForTypes.php'; 
    2527        require_once $this->myPath . "/" . $this->modules_path . '/lib/MZAFormBuilderForSettings.php'; 
    2628        require_once $this->myPath . "/" . $this->modules_path . '/lib/MZACustomType.php'; 
  • wp-aletheia-feedbacks/trunk/aletheia.php

    r463906 r489719  
    22/* 
    33Plugin Name: WP-Aletheia: Feedback 
    4 Plugin URI: http://wp-aletheia.org/ 
     4Plugin URI: http://mzaweb.com/en 
    55Description: Gather feedback from your users and customers. 
    66Author: MZAWeb 
    77Author URI: http://mzaweb.com/en 
    8 Version: 1.1 
     8Version: 1.2 
    99*/ 
    1010 
  • wp-aletheia-feedbacks/trunk/framework/MZAFeedback/MZAFeedback.php

    r489706 r489719  
    5858            $this->customBoxTitle = __("Feedback information", "MZAFeedback"); 
    5959 
    60             $this->boxes = array( 
    61  
    62                 "url" => array( 
    63                     "name" => "url", 
    64                     "title" => __('Feedback URL','MZAFeedback'), 
    65                     "type" => "text" 
    66                 ), 
    67  
    68                 "page" => array( 
    69                     "name" => "page", 
    70                     "title" => __('Feedback Page Name','MZAFeedback'), 
    71                     "type" => "text" 
    72                 ), 
    73  
    74                 "site" => array( 
    75                    "name" => "site", 
    76                     "title" => __('Site','MZAFeedback'), 
    77                     "type" => "text" 
     60            $this->sections = array( 
     61                "general" => array( 
     62                    "title" => __("Feedback Info","MZAFeedback"), 
     63                    "fields" => array( 
     64                        "url" => array( 
     65                            "title" =>  __('Feedback URL','MZAFeedback'), 
     66                            "type" => "text", 
     67                        ), 
     68                        "page" => array( 
     69                            "title" =>  __('Feedback Page where the Feedback was placed','MZAFeedback'), 
     70                            "type" => "text", 
     71                        ), 
     72                        "site" => array( 
     73                            "title" =>  __('Website where the Feedback was placed','MZAFeedback'), 
     74                            "type" => "text", 
     75                        ), 
     76                    ) 
    7877                ) 
    79  
    8078            ); 
     79 
    8180 
    8281            if (is_admin()){ 
  • wp-aletheia-feedbacks/trunk/framework/lib/MZACustomType.php

    r467218 r489719  
    11<?php 
    22 
    3 if (!class_exists("MZACustomType") ){ 
     3if (class_exists("MZACustomType")) 
     4    return; 
    45 
    56    abstract class MZACustomType{ 
     
    89        protected $customTypeName; 
    910 
    10         protected $boxes = null; 
     11        protected $sections = null; 
    1112        protected $params = null; 
    1213        protected $taxonomies = null; 
    1314        protected $editColumns = null; 
     15 
     16        protected $builder = null; 
    1417 
    1518        protected $customBoxTitle = "Details"; 
     
    4144 
    4245            add_action('init', array($this, "registerType")); 
    43             add_action('save_post', array($this, "save_postdata")); 
     46 
     47            $this->builder =  new MZAFormBuilderForTypes($this->className, $this->className, $this->sections, array($this, "update_sections")); 
    4448 
    4549 
     
    5357 
    5458 
     59        public function update_sections($sections, $post_id){ 
     60            $this->sections = $sections; 
     61 
     62            foreach($this->sections as $key_section => $section){ 
     63               foreach ($section["fields"] as $key_field => $field){ 
     64                   if ($post_id){ 
     65                       update_post_meta($post_id, "_". $key_field, $this->sections[$key_section]["fields"][$key_field]["value"]); 
     66                   } 
     67               } 
     68           } 
     69        } 
     70 
    5571        public function columns_edit($columns){ 
    5672            return $this->editColumns; 
     
    7187        public function registerType(){ 
    7288 
    73             $boxes = $this->get_boxes(); 
    74  
    75             if (!empty($boxes)){ 
     89 
     90            $sections = $this->get_sections(); 
     91 
     92            if (!empty($sections)){ 
    7693                $this->params['register_meta_box_cb'] =  array($this, 'add_areas_custom_box'); 
    7794            } 
     
    93110 
    94111        public function add_areas_custom_box(){ 
    95             $boxes = $this->get_boxes(); 
    96             if (!empty($boxes)){ 
     112            $sections = $this->get_sections(); 
     113            if (!empty($sections)){ 
    97114                add_meta_box( $this->customTypeName . '_areas_custom_box', $this->customBoxTitle, 
    98115                    array($this,'inner_custom_box'), $this->customTypeName, 'normal', 'high' ); 
     
    102119        public function inner_custom_box($post){ 
    103120 
    104             wp_nonce_field($this->customTypeName . '_inner_custom_box', $this->customTypeName . '_nonce'); 
    105  
    106             foreach($this->get_boxes() as $meta_box_combo) { 
    107  
    108                 echo'<h2>'.$meta_box_combo['title'].'</h2>'; 
    109  
    110                 $field_name = $this->get_field_name($meta_box_combo['name']); 
    111                 $meta_box_value = get_post_meta($post->ID, $field_name, true); 
    112                 $type = $meta_box_combo["type"]; 
    113  
    114                 if (method_exists($this, "show_field_" . strtolower($type) )){ 
    115                     call_user_func(array($this, "show_field_" . strtolower($type)), $field_name, $meta_box_value, $meta_box_combo); 
     121            global $post; 
     122 
     123            $this->load_sections($post->ID); 
     124 
     125            $this->builder->sections = $this->sections; 
     126 
     127            $this->builder->do_form(); 
     128        } 
     129 
     130 
     131        private function load_sections($post_id){ 
     132            $customs = get_post_custom_keys($post_id); 
     133            foreach($this->sections as $key_section => $section){ 
     134                foreach ($section["fields"] as $key_field => $field){ 
     135                    $val = ""; 
     136 
     137                    if (is_array($customs) && in_array("_" . $key_field, $customs)){ 
     138                        $val = $this->get_meta($post_id, $key_field); 
     139                    }else{ 
     140                        if (isset($field["default"])) 
     141                            $val = $field["default"]; 
     142                    } 
     143                    $this->sections[$key_section]["fields"][$key_field]["value"] = $val; 
    116144                } 
    117  
    118                 if (isset($meta_box_combo['description'])){ 
    119                     echo'<p><label for="'. $field_name . '">'.$meta_box_combo['description'].'</label></p>'; 
    120                 } 
    121             } 
    122         } 
    123  
    124         public function save_postdata( $post_id ) { 
    125  
    126             if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) 
    127                 return $post_id; 
    128  
    129             if ( empty($_POST) ) 
    130                 return $post_id; 
    131  
    132             if ( !current_user_can( 'edit_post', $post_id )) 
    133                 return $post_id; 
    134  
    135             $type = ""; 
    136  
    137             if (isset($_POST['post_type'])) 
    138                 $type = $_POST['post_type']; 
    139             else if (isset($_GET['post_type'])) 
    140                 $type = $_GET['post_type']; 
    141  
    142             if ( $this->customTypeName == strtolower($type) ){ 
    143  
    144                 $boxes = $this->get_boxes(); 
    145  
    146                 if (!empty($boxes)){ 
    147                     if (!wp_verify_nonce($_POST[$this->customTypeName . '_nonce'], $this->customTypeName . '_inner_custom_box')){ 
    148                         return $post_id; 
    149                     } 
    150                 } 
    151  
    152                 foreach($boxes as $meta_box) { 
    153  
    154                     $field_name = $this->get_field_name($meta_box['name']); 
    155  
    156                     $data = $this->process_field_data($_POST[$field_name]); 
    157  
    158                     $existing = get_post_meta($post_id, $field_name, true); 
    159  
    160                     if( $existing == ""){ 
    161                         add_post_meta($post_id, $field_name, $data, true); 
    162                     } else { 
    163                         if($data == ""){ 
    164                             delete_post_meta($post_id, $field_name, $existing); 
    165                         } else { 
    166                             update_post_meta($post_id, $field_name, $data); 
    167                         } 
    168                     } 
    169                 }    
    170  
    171             } 
    172             return $post_id; 
     145            } 
    173146        } 
    174147 
     
    203176 
    204177        public function get_meta($post_id, $meta_name){ 
    205             if (array_key_exists($meta_name, $this->boxes)){ 
    206                 $real_name = $this->get_field_name($meta_name); 
    207                 return get_post_meta($post_id, $real_name, true); 
    208             } 
    209             return null; 
     178            return get_post_meta($post_id, "_" . $meta_name, true); 
    210179        } 
    211180 
    212181        public function set_meta($post_id, $meta_name, $value){ 
    213             if (array_key_exists($meta_name, $this->boxes)){ 
    214                 $real_name = $this->get_field_name($meta_name); 
    215                 return update_post_meta($post_id, $real_name, $value); 
    216             } 
    217             return null; 
    218         } 
    219  
    220  
    221         /* Fields */ 
    222  
    223         private function get_field_name($field_name){ 
    224             $field_name = $this->customTypeName . '_' . $field_name; 
    225             return $field_name; 
    226         } 
    227  
    228         private function process_field_data($data){ 
    229             return $data; 
    230         } 
    231  
    232         private function show_field_text($field_name, $meta_box_value, $args){ 
    233             echo '<input type="text" name="' . $field_name .'" value="'.esc_attr($meta_box_value).'" size="55" />'; 
    234         } 
    235  
    236         private function show_field_textarea($field_name, $meta_box_value, $args){ 
    237             echo '<textarea name="' . $field_name .'" cols="57" rows="10">'.esc_textarea($meta_box_value).'</textarea>'; 
    238         } 
    239  
    240         private function show_field_checkboxes($field_name, $meta_box_value, $args){ 
    241            if (isset($args["options"]) && is_array($args["options"])){ 
    242  
    243                foreach ($args["options"] as $name => $data ){ 
    244  
    245                    $label = $data[0]; 
    246                    $value = $data[1]; 
    247  
    248                    $checked = ""; 
    249                    if ($meta_box_value == $value){ 
    250                         $checked = " checked "; 
    251                    } 
    252                    echo '<input type="checkbox" '. $checked .' name="' . $field_name . "_" . $name .'" value="'.$value.'"/>&nbsp;<span>' . $label . '</span>'; 
    253                } 
    254             } 
    255         } 
    256  
    257         private function show_field_user($field_name, $meta_box_value, $args){ 
    258  
    259             echo '<select name="'.$field_name.'">'; 
    260  
    261             $query_args = array(); 
    262             if (isset($args["role"])){ 
    263                 $query_args["role"] = $args["role"]; 
    264             } 
    265  
    266             $users = get_users($query_args); 
    267  
    268             foreach($users as $user){ 
    269                 $selected = ""; 
    270                 if ($meta_box_value == $user->ID){ 
    271                     $selected = " selected "; 
    272                 } 
    273  
    274                 echo '<option '. $selected .' value="'. $user->ID .'">' . $user->display_name . '</option>'; 
    275             } 
    276  
    277             echo '</select>'; 
    278  
     182            return update_post_meta($post_id, "_" . $meta_name, $value); 
     183        } 
     184 
     185        public function get_name(){ 
     186            return $this->customTypeName; 
    279187        } 
    280188 
    281189        // Filters 
    282190 
    283         private function get_boxes(){ 
    284             return apply_filters( $this->className . "_boxes", $this->boxes ); 
     191        private function get_sections(){ 
     192            return apply_filters( $this->className . "_sections", $this->sections ); 
    285193        } 
    286194 
     
    289197        } 
    290198 
    291 } 
     199 
     200 
    292201    } 
    293202 
  • wp-aletheia-feedbacks/trunk/framework/lib/MZAFormBuilder.php

    r467223 r489719  
    33if (!class_exists("MZAFormBuilder")){ 
    44 
    5 abstract class MZAFormBuilder { 
     5    abstract class MZAFormBuilder { 
    66 
    7     protected $sections; 
    8     protected $title; 
    9     protected $name; 
    10     protected $changes_listener; 
     7        public $sections; 
     8        protected $title; 
     9        protected $name; 
     10        protected $changes_listener; 
    1111 
    12     function __construct($name, $title, $sections, $changes_listener){ 
    13         $this->title = $title; 
    14         $this->name = $name; 
    15         $this->sections = $sections; 
    16         $this->changes_listener = $changes_listener; 
    17     } 
     12        function __construct($name, $title, $sections, $changes_listener){ 
     13            $this->title = $title; 
     14            $this->name = $name; 
     15            $this->sections = $sections; 
     16            $this->changes_listener = $changes_listener; 
     17        } 
    1818 
    19     /* for implementation in childs */ 
    20     abstract protected function form_head(); 
    21     abstract protected function form_submit(); 
    22     abstract protected function form_footer(); 
    23     abstract protected function section_head($key, $section); 
    24     abstract protected function section_footer($key, $section); 
    25     abstract protected function do_field($name, $field); 
     19        /* for implementation in childs */ 
     20        abstract protected function form_head(); 
     21        abstract protected function form_submit(); 
     22        abstract protected function form_footer(); 
     23        abstract protected function section_head($key, $section); 
     24        abstract protected function section_footer($key, $section); 
     25        abstract protected function do_field($name, $field); 
    2626 
    27     private function maybe_process_form(){ 
     27        public function maybe_process_form($post_id = null){ 
    2828 
    29         if (!empty($_POST)){ 
     29           if (!empty($_POST)){ 
     30                if ( isset($_POST[$this->name . "_nonce"]) ){ 
     31                    if ( !wp_verify_nonce($_POST[$this->name . "_nonce"], $this->name ) ) 
     32                        wp_die( 'Cheatin&#8217; uh?' ); 
    3033 
    31             if ( isset($_POST[$this->name . "_nonce"]) ){ 
     34                    if ( !check_admin_referer( $this->name, $this->name . "_nonce" ) ) 
     35                        wp_die( 'Cheatin&#8217; uh?' ); 
    3236 
    33                 if ( !wp_verify_nonce($_POST[$this->name . "_nonce"], $this->name ) ) 
    34                     wp_die( 'Cheatin&#8217; uh?' ); 
    35  
    36                 if ( !check_admin_referer( $this->name, $this->name . "_nonce" ) ) 
    37                     wp_die( 'Cheatin&#8217; uh?' ); 
    38  
    39                 foreach($this->sections as $key_section => $section){ 
    40                     foreach ($section["fields"] as $key_field => $field){ 
    41                         if ( isset($_POST[$this->field_name($key_field, $key_section)]) ){ 
    42                             $this->sections[$key_section]["fields"][$key_field]["value"] = $_POST[$this->field_name($key_field, $key_section)]; 
    43                         }else{ 
    44                             if ( isset($this->sections[$key_section]["fields"][$key_field]["value"]) ){ 
    45                                 $this->sections[$key_section]["fields"][$key_field]["value"] = ""; 
     37                    foreach($this->sections as $key_section => $section){ 
     38                        foreach ($section["fields"] as $key_field => $field){ 
     39                            if ( isset($_POST[$this->field_name($key_field, $key_section)]) ){ 
     40                                $this->sections[$key_section]["fields"][$key_field]["value"] = $_POST[$this->field_name($key_field, $key_section)]; 
     41                            }else{ 
     42                                if ( isset($this->sections[$key_section]["fields"][$key_field]["value"]) ){ 
     43                                    $this->sections[$key_section]["fields"][$key_field]["value"] = ""; 
     44                                } 
    4645                            } 
    4746                        } 
    4847                    } 
    49                 } 
    50  
    51                 if (is_array($this->changes_listener)){ 
    52                     if ( method_exists($this->changes_listener[0], $this->changes_listener[1]) ){ 
    53                         call_user_func_array($this->changes_listener, array($this->sections)); 
     48                    if (is_array($this->changes_listener)){ 
     49                        if ( method_exists($this->changes_listener[0], $this->changes_listener[1]) ){ 
     50                            call_user_func_array($this->changes_listener, array($this->sections, $post_id)); 
     51                        } 
    5452                    } 
    5553                } 
    5654            } 
     55 
    5756        } 
    58     } 
    59  
    60  
    61      
    62     public function do_form(){ 
    6357 
    6458 
    6559 
    66         $this->maybe_process_form(); 
     60        public function do_form(){ 
     61 
     62            $this->maybe_process_form(); 
     63            $sections = $this->sections; 
     64 
     65            $this->form_head(); 
     66 
     67            wp_nonce_field($this->name, $this->name . "_nonce", true, true); 
     68 
     69            if (!empty($sections)){ 
     70                foreach($sections as $key => $section){ 
     71                    $this->do_section($key, $section); 
     72                } 
     73            } 
     74            $this->form_submit(); 
     75 
     76            $this->form_footer(); 
     77        } 
     78 
     79        protected function do_section($key, $section){ 
     80            $this->section_head($key, $section); 
     81            if ( isset($section["fields"]) && !empty($section["fields"]) ){ 
     82                foreach ($section["fields"] as $name => $field){ 
     83                    $this->do_field ($this->field_name($name, $key), $field); 
     84                } 
     85            } 
     86            $this->section_footer($key, $section); 
     87        } 
    6788 
    6889 
    69         $sections = $this->sections; 
     90        protected function field_name($name, $section ){ 
     91            return $this->name . "_" . $section . "_" . $name; 
     92        } 
    7093 
    71         $this->form_head(); 
     94        /* Fields */ 
    7295 
    73         wp_nonce_field($this->name, $this->name . "_nonce", true, true); 
     96        protected function do_field_text($name, $field){ 
     97            echo '<input type="text" name="' . $name .'" value="'.esc_attr(isset($field["value"]) ? $field["value"] : "").'" class="regular-text" />'; 
     98        } 
    7499 
    75         if (!empty($sections)){ 
    76             foreach($sections as $key => $section){ 
    77                 $this->do_section($key, $section); 
     100        protected function do_field_password($name, $field){ 
     101            echo '<input type="password" name="' . $name .'" value="'.esc_attr(isset($field["value"]) ? $field["value"] : "").'" class="regular-text" />'; 
     102        } 
     103 
     104        protected function do_field_textarea($name, $field){ 
     105            echo '<textarea name="' . $name .'" cols="57" rows="10">'.esc_textarea(isset($field["value"]) ? $field["value"] : "").'</textarea>'; 
     106        } 
     107 
     108        protected function do_field_checkbox($name, $field){ 
     109 
     110           if (isset($field["options"]) && is_array($field["options"])){ 
     111               foreach ($field["options"] as $value => $label ){ 
     112                   echo '<input type="checkbox" '. checked(isset($field["value"]) ? $field["value"] : "", $value, false) .' name="' . $name .'" value="'.$value.'"/>&nbsp;<span>' . $label . '</span>'; 
     113               } 
    78114            } 
    79115        } 
    80         $this->form_submit(); 
    81116 
    82         $this->form_footer(); 
     117        protected function do_field_radio($name, $field){ 
     118            if (isset($field["options"]) && is_array($field["options"])){ 
     119                foreach ($field["options"] as $value => $label ){ 
     120 
     121                    echo '<input type="radio" '. checked(isset($field["value"]) ? $field["value"] : "", $value, false) .' name="' . $name .'" value="'.$value.'"/>&nbsp;<span>' . $label . '</span><br/>'; 
     122                } 
     123             } 
     124         } 
     125 
     126        protected function do_field_user($name, $field){ 
     127            $query_args = array(); 
     128            if (isset($field["role"])){ 
     129                $query_args["role"] = $field["role"]; 
     130            } 
     131            $users = get_users($query_args); 
     132 
     133            echo '<select name="'.$name.'">'; 
     134            foreach($users as $user){ 
     135                echo '<option '. selected(isset($field["value"]) ? $field["value"] : "", $user->ID, false) .' value="'. $user->ID .'">' . $user->display_name . '</option>'; 
     136            } 
     137            echo '</select>'; 
     138        } 
     139 
     140        protected function do_field_role($name, $field){ 
     141            $wp_roles = new WP_Roles(); 
     142            echo '<select name="'.$name.'">'; 
     143            foreach ( $wp_roles->role_names as $role => $role_name ) { 
     144                echo '<option '. selected(isset($field["value"]) ? $field["value"] : "", $role, false)  .' value="'. $role .'">' . $role_name . '</option>'; 
     145            } 
     146            echo '</select>'; 
     147        } 
     148 
     149        protected function do_field_time($name, $field){ 
     150            echo '<input type="text" name="' . $name .'" value="'.esc_attr(isset($field["value"]) ? $field["value"] : "").'" size="5" />'; 
     151        } 
     152 
    83153    } 
    84  
    85     protected function do_section($key, $section){ 
    86         $this->section_head($key, $section); 
    87         if ( isset($section["fields"]) && !empty($section["fields"]) ){ 
    88             foreach ($section["fields"] as $name => $field){ 
    89                 $this->do_field ($this->field_name($name, $key), $field); 
    90             } 
    91         } 
    92         $this->section_footer($key, $section); 
    93     } 
    94  
    95  
    96     protected function field_name($name, $section ){ 
    97         return $this->name . "_" . $section . "_" . $name; 
    98     } 
    99  
    100     /* Fields */ 
    101  
    102     protected function do_field_text($name, $field){ 
    103         echo '<input type="text" name="' . $name .'" value="'.esc_attr(isset($field["value"]) ? $field["value"] : "").'" class="regular-text" />'; 
    104     } 
    105  
    106     protected function do_field_password($name, $field){ 
    107         echo '<input type="password" name="' . $name .'" value="'.esc_attr(isset($field["value"]) ? $field["value"] : "").'" class="regular-text" />'; 
    108     } 
    109  
    110     protected function do_field_textarea($name, $field){ 
    111         echo '<textarea name="' . $name .'" cols="57" rows="10">'.esc_textarea(isset($field["value"]) ? $field["value"] : "").'</textarea>'; 
    112     } 
    113  
    114     protected function do_field_checkbox($name, $field){ 
    115  
    116        if (isset($field["options"]) && is_array($field["options"])){ 
    117            foreach ($field["options"] as $value => $label ){ 
    118                echo '<input type="checkbox" '. checked(isset($field["value"]) ? $field["value"] : "", $value, false) .' name="' . $name .'" value="'.$value.'"/>&nbsp;<span>' . $label . '</span>'; 
    119            } 
    120         } 
    121     } 
    122  
    123     protected function do_field_radio($name, $field){ 
    124         if (isset($field["options"]) && is_array($field["options"])){ 
    125             foreach ($field["options"] as $value => $label ){ 
    126  
    127                 echo '<input type="radio" '. checked(isset($field["value"]) ? $field["value"] : "", $value, false) .' name="' . $name .'" value="'.$value.'"/>&nbsp;<span>' . $label . '</span><br/>'; 
    128             } 
    129          } 
    130      } 
    131  
    132     protected function do_field_user($name, $field){ 
    133         $query_args = array(); 
    134         if (isset($field["role"])){ 
    135             $query_args["role"] = $field["role"]; 
    136         } 
    137         $users = get_users($query_args); 
    138  
    139         echo '<select name="'.$name.'">'; 
    140         foreach($users as $user){ 
    141             echo '<option '. selected(isset($field["value"]) ? $field["value"] : "", $user->ID, false) .' value="'. $user->ID .'">' . $user->display_name . '</option>'; 
    142         } 
    143         echo '</select>'; 
    144     } 
    145  
    146     protected function do_field_role($name, $field){ 
    147         $wp_roles = new WP_Roles(); 
    148         echo '<select name="'.$name.'">'; 
    149         foreach ( $wp_roles->role_names as $role => $role_name ) { 
    150             echo '<option '. selected(isset($field["value"]) ? $field["value"] : "", $role, false)  .' value="'. $role .'">' . $role_name . '</option>'; 
    151         } 
    152         echo '</select>'; 
    153     } 
    154  
    155 } 
    156154} 
    157155?> 
  • wp-aletheia-feedbacks/trunk/framework/lib/MZAFormBuilderForSettings.php

    r467223 r489719  
    11<?php 
    2 /** 
    3  * Created by JetBrains PhpStorm. 
    4  * User: rabino 
    5  * Date: 11/1/11 
    6  * Time: 9:07 PM 
    7  * To change this template use File | Settings | File Templates. 
    8  */ 
    92 
    103if (!class_exists("MZAFormBuilder")){ 
     
    147if (!class_exists("MZAFormBuilderForSettings")){ 
    158  
    16 class MZAFormBuilderForSettings extends MZAFormBuilder { 
     9    class MZAFormBuilderForSettings extends MZAFormBuilder { 
    1710 
    18     public function __construct($name, $title, $sections, $changes_listener=null){ 
    19         parent::__construct($name, $title, $sections, $changes_listener); 
    20          
    21     } 
     11        public function __construct($name, $title, $sections, $changes_listener=null){ 
     12            parent::__construct($name, $title, $sections, $changes_listener); 
    2213 
    23     protected function form_head(){ 
    24         echo '<div class="wrap">'; 
    25         echo '<h2>'. $this->title .'</h2>'; 
    26         echo '<form name="'. $this->name .'_form" method="post" action="">'; 
    27     } 
    28  
    29     protected function form_footer(){ 
    30         echo '</form>'; 
    31         echo '</div>'; 
    32     } 
    33  
    34     protected function form_submit(){ 
    35         echo "<p class='submit'>"; 
    36         echo "<input type='submit' id='submit' name='submit' class='button-primary' value='" . __("Save Changes") . "'>"; 
    37         echo "</p>"; 
    38     } 
    39  
    40     protected function section_head($key, $section){ 
    41         if (isset($section["title"]) && $section["title"] != ""){ 
    42             echo '<h3 class="title">' . $section["title"] . '</h3>'; 
    4314        } 
    4415 
    45         if (isset($section["description"]) && $section["description"] != ""){ 
    46             echo '<p>'; 
    47                 echo $section["description"]; 
    48             echo '</p>'; 
     16        protected function form_head(){ 
     17            echo '<div class="wrap">'; 
     18            echo '<h2>'. $this->title .'</h2>'; 
     19            echo '<form id="'. $this->name .'_form" name="'. $this->name .'_form" method="post" action="">'; 
    4920        } 
    5021 
    51         do_action("MZAFormBuilder_section_head", $this->name, $key ); 
     22        protected function form_footer(){ 
     23            echo '</form>'; 
     24            echo '</div>'; 
     25        } 
    5226 
    53         echo '<table class="form-table">'; 
    54         echo '<tbody>'; 
    55     } 
     27        protected function form_submit(){ 
     28            echo "<p class='submit'>"; 
     29            echo "<input type='submit' id='submit' name='submit' class='button-primary' value='" . __("Save Changes") . "'>"; 
     30            echo "</p>"; 
     31        } 
    5632 
    57     protected function section_footer($key, $section){ 
    58         echo '</tbody>'; 
    59         echo '</table>'; 
    60     } 
     33        protected function section_head($key, $section){ 
     34            if (isset($section["title"]) && $section["title"] != ""){ 
     35                echo '<h3 class="title">' . $section["title"] . '</h3>'; 
     36            } 
     37 
     38            if (isset($section["description"]) && $section["description"] != ""){ 
     39                echo '<p>'; 
     40                    echo $section["description"]; 
     41                echo '</p>'; 
     42            } 
     43 
     44            do_action("MZAFormBuilder_section_head", $this->name, $key ); 
     45 
     46            echo '<table class="form-table" id="section-'. $key .'" class="section">'; 
     47            echo '<tbody>'; 
     48        } 
     49 
     50        protected function section_footer($key, $section){ 
     51            echo '</tbody>'; 
     52            echo '</table>'; 
     53        } 
    6154 
    6255 
    63     protected function do_field($name, $field){ 
     56        protected function do_field($name, $field){ 
    6457 
    65         if (method_exists($this, "do_field_" . strtolower($field["type"]) )){ 
     58            if (method_exists($this, "do_field_" . strtolower($field["type"]) )){ 
    6659 
    67             echo '<tr valign="top">'; 
    68                 echo '<th scope="row">'; 
    69                     echo '<label for="'.$name.'">' . $field["title"]  . '</label>'; 
    70                 echo '</th>'; 
    71                 echo '<td>'; 
    72                     call_user_func(array($this, "do_field_" . strtolower($field["type"])), $name, $field); 
     60                echo '<tr valign="top" id="field-row-'. $name .'" class="field-row field-row-'.$field["type"].'">'; 
     61                    echo '<th scope="row">'; 
     62                        echo '<label for="'.$name.'">' . $field["title"]  . '</label>'; 
     63                    echo '</th>'; 
     64                    echo '<td>'; 
     65                        call_user_func(array($this, "do_field_" . strtolower($field["type"])), $name, $field); 
    7366 
    74                     if ( isset($field["description"]) && $field["description"] != "" ){ 
    75                         echo "&nbsp;&nbsp;<span class='description'>" . $field["description"] . "</span>"; 
    76                     } 
     67                        if ( isset($field["description"]) && $field["description"] != "" ){ 
     68                            echo "&nbsp;&nbsp;<span class='description'>" . $field["description"] . "</span>"; 
     69                        } 
    7770 
    78                 echo '</td>'; 
    79             echo '</tr>'; 
     71                    echo '</td>'; 
     72                echo '</tr>'; 
     73            } 
     74 
    8075        } 
    8176 
     
    8378 
    8479} 
    85  
    86  
    87 } 
    88  
    89 ?> 
  • wp-aletheia-feedbacks/trunk/framework/lib/MZASettings.php

    r467223 r489719  
    11<?php 
    22 
    3 if (!class_exists("MZASettings")){ 
     3if (!class_exists("MZAFormBuilderForSettings")){ 
     4    include_once "MZAFormBuilderForSettings.php"; 
     5} 
     6 
     7if (class_exists("MZASettings")) 
     8    return; 
    49 
    510class MZASettings { 
     
    813    private $location; 
    914    private $sections = array(); 
     15    private $page; 
    1016 
    1117    private $settings; 
     
    1622    public $settingsPageTitle = "Settings"; 
    1723    public $settingsLinkTitle = "Settings"; 
     24    public $customJS = ""; 
     25    public $customCSS = ""; 
     26 
    1827 
    1928    public function __construct($owner, $location, $sections){ 
     
    2635 
    2736        add_action('admin_menu', array($this, 'settings_submenu')); 
     37 
     38    } 
     39 
     40 
     41    public function admin_head(){ 
     42 
     43        if ($this->customJS != ""){ 
     44            echo "<script type='text/javascript'>"; 
     45            echo "jQuery(document).ready(function($) {"; 
     46            echo $this->customJS; 
     47            echo "});"; 
     48            echo "</script>"; 
     49        } 
     50 
     51        if ($this->customCSS != ""){ 
     52            echo "<style type='text/css'>"; 
     53            echo $this->customCSS; 
     54            echo "</style>"; 
     55        } 
    2856    } 
    2957 
     
    3361 
    3462    public function settings_submenu() { 
    35         add_submenu_page( $this->location , $this->settingsPageTitle, $this->settingsLinkTitle, 'manage_options', $this->owner . '-settings', array($this, 'settings_page') ); 
     63        $this->page = add_submenu_page( $this->location , $this->settingsPageTitle, $this->settingsLinkTitle, 'manage_options', $this->owner . '-settings', array($this, 'settings_page') ); 
     64        add_action('admin_head-'.$this->page, array($this, 'admin_head'),100); 
    3665    } 
    3766 
     
    104133    } 
    105134 
    106     public function update_sections($sections){ 
     135    public function update_sections($sections, $post_id=null){ 
    107136        $this->sections = $sections; 
    108137        $this->save(); 
    109          
    110138    } 
    111139 
    112140} 
    113  
    114  
    115 } 
    116 ?> 
Note: See TracChangeset for help on using the changeset viewer.