| 1 | <?php | 
|---|
| 2 | /* | 
|---|
| 3 | * XPressME Menu Widget | 
|---|
| 4 | * XPressME MENU widget using the the WordPress 2.8 widget API. This is meant strictly as a means of showing the new API using the <a href="http://jessealtman.com/2009/06/08/tutorial-wordpress-28-widget-api/">tutorial</a>. | 
|---|
| 5 | */ | 
|---|
| 6 | class XPress_Menu_Widget extends WP_Widget | 
|---|
| 7 | { | 
|---|
| 8 | /** | 
|---|
| 9 | * Declares the XPress_Menu_Widget class. | 
|---|
| 10 | * | 
|---|
| 11 | */ | 
|---|
| 12 | function XPress_Menu_Widget(){ | 
|---|
| 13 | $widget_ops = array('classname' => 'widget_xpress', 'description' => __( "XPressME User Menu Widget") ); | 
|---|
| 14 | $control_ops = array('width' => 600, 'height' => 300); | 
|---|
| 15 | $this->WP_Widget('XPress_Menu', __('XPressME MENU'), $widget_ops, $control_ops); | 
|---|
| 16 | } | 
|---|
| 17 |  | 
|---|
| 18 | /** | 
|---|
| 19 | * Displays the Widget | 
|---|
| 20 | * | 
|---|
| 21 | */ | 
|---|
| 22 | function widget($args, $instance){ | 
|---|
| 23 | global $xpress_config,$xoops_config; | 
|---|
| 24 | global $current_user; | 
|---|
| 25 |  | 
|---|
| 26 | extract($args); | 
|---|
| 27 | $title = apply_filters('widget_title', empty($instance['title']) ? ' ' : $instance['title']); | 
|---|
| 28 |  | 
|---|
| 29 | # Before the widget | 
|---|
| 30 | echo $before_widget; | 
|---|
| 31 |  | 
|---|
| 32 | # The title | 
|---|
| 33 | if ( $title ) | 
|---|
| 34 | echo $before_title . $title . $after_title; | 
|---|
| 35 |  | 
|---|
| 36 | # Make the XPressME MENU widget | 
|---|
| 37 | $menu = array(); | 
|---|
| 38 | for($i = 0; $i < 10; $i++) { | 
|---|
| 39 | $menu[$i]['Type'] = $instance['Type_' . $i]; | 
|---|
| 40 | $menu[$i]['Title'] = $instance['Title_' . $i]; | 
|---|
| 41 | $menu[$i]['URL'] = $instance['URL_' . $i]; | 
|---|
| 42 | $menu[$i]['Visible'] = $instance['Visible_' . $i]; | 
|---|
| 43 | $menu[$i]['Weight'] = $instance['Weight_' . $i]; | 
|---|
| 44 | } | 
|---|
| 45 | echo '<ul>'; | 
|---|
| 46 | for($i = 0; $i < 10; $i++) { | 
|---|
| 47 | $type = $menu[$i]['Type']; | 
|---|
| 48 | if ($menu[$i]['Visible'] && !empty($menu[$i]['Title']) ){ | 
|---|
| 49 | switch($type){ | 
|---|
| 50 | case 0: | 
|---|
| 51 | case 1: | 
|---|
| 52 | echo '<li><a href="' . $menu[$i]['URL'] . '">' . $menu[$i]['Title'] . '</a></li>'; | 
|---|
| 53 | break; | 
|---|
| 54 | case 2: // Add New | 
|---|
| 55 | if (is_user_logged_in()){ | 
|---|
| 56 | if ($current_user->user_level > 0){ | 
|---|
| 57 | if (xpress_is_wp_version('<','2.1') ){ | 
|---|
| 58 | echo '<li><a href="'.get_settings('siteurl').'/wp-admin/post.php" title="'. $menu[$i]['Title'] .'">'. $menu[$i]['Title'] .'</a></li>'; | 
|---|
| 59 | } else { | 
|---|
| 60 | echo '<li><a href="'.get_settings('siteurl').'/wp-admin/post-new.php" title="'. $menu[$i]['Title'] .'">'. $menu[$i]['Title'] .'</a></li>'; | 
|---|
| 61 | } | 
|---|
| 62 | } | 
|---|
| 63 | } | 
|---|
| 64 | break; | 
|---|
| 65 | case 3: // User Profile | 
|---|
| 66 | if (is_user_logged_in()) { | 
|---|
| 67 | echo '<li><a href="'.get_settings('siteurl').'/wp-admin/profile.php" title="' . $menu[$i]['Title'] .'">'. $menu[$i]['Title'] .'</a></li>'; | 
|---|
| 68 | } | 
|---|
| 69 | break; | 
|---|
| 70 | case 4: // WordPress Admin | 
|---|
| 71 | if (is_user_logged_in()){ | 
|---|
| 72 | if ($current_user->user_level > 7){ | 
|---|
| 73 | echo '<li><a href="'.get_settings('siteurl').'/wp-admin/" title="'. $menu[$i]['Title'] .'">'. $menu[$i]['Title'] .'</a></li>'; | 
|---|
| 74 | } | 
|---|
| 75 | } | 
|---|
| 76 | break; | 
|---|
| 77 | case 5: // Module Admin | 
|---|
| 78 | if($GLOBALS["xoopsUserIsAdmin"]){ | 
|---|
| 79 | echo '<li><a href="'.get_settings('siteurl').'/admin/index.php"  title="'. $menu[$i]['Title'] .'">'. $menu[$i]['Title'] .'</a></li>'; | 
|---|
| 80 | } | 
|---|
| 81 | break; | 
|---|
| 82 | case 6: // XPressME Setting | 
|---|
| 83 | if (is_user_logged_in()){ | 
|---|
| 84 | if ($current_user->user_level > 7){ | 
|---|
| 85 | echo '<li><a href="'.get_settings('siteurl').'/wp-admin/admin.php?page=xpressme\\xpressme.php" title="'. $menu[$i]['Title'] .'">'. $menu[$i]['Title'] .'</a></li>'; | 
|---|
| 86 | } | 
|---|
| 87 | } | 
|---|
| 88 | break; | 
|---|
| 89 | case 7: // Display Mode Select | 
|---|
| 90 | if ($xpress_config->viewer_type == 'user_select'){ | 
|---|
| 91 | echo disp_mode_set(); | 
|---|
| 92 | } | 
|---|
| 93 | break; | 
|---|
| 94 | default: | 
|---|
| 95 | } | 
|---|
| 96 | } | 
|---|
| 97 | } | 
|---|
| 98 |  | 
|---|
| 99 | echo '</ul>'; | 
|---|
| 100 | # After the widget | 
|---|
| 101 | echo $after_widget; | 
|---|
| 102 | } | 
|---|
| 103 |  | 
|---|
| 104 | /** | 
|---|
| 105 | * Saves the widgets settings. | 
|---|
| 106 | * | 
|---|
| 107 | */ | 
|---|
| 108 | function update($new_instance, $old_instance){ | 
|---|
| 109 | $instance = $old_instance; | 
|---|
| 110 | $instance['title'] = strip_tags(stripslashes($new_instance['title'])); | 
|---|
| 111 |  | 
|---|
| 112 | for($i = 0; $i < 10; $i++) { | 
|---|
| 113 | $instance['Type_'. $i] = strip_tags(stripslashes($new_instance['Type_'. $i])); | 
|---|
| 114 | $instance['Title_' . $i] = strip_tags(stripslashes($new_instance['Title_'. $i])); | 
|---|
| 115 | if ($instance['Type_'. $i] < 2){ | 
|---|
| 116 | $instance['URL_' . $i] = strip_tags(stripslashes($new_instance['URL_'. $i])); | 
|---|
| 117 | } else { | 
|---|
| 118 | $instance['URL_' . $i] = ''; | 
|---|
| 119 | } | 
|---|
| 120 | $instance['Visible_' . $i] = strip_tags(stripslashes($new_instance['Visible_'. $i])); | 
|---|
| 121 | } | 
|---|
| 122 |  | 
|---|
| 123 | return $instance; | 
|---|
| 124 | } | 
|---|
| 125 |  | 
|---|
| 126 | /** | 
|---|
| 127 | * Creates the edit form for the widget. | 
|---|
| 128 | * | 
|---|
| 129 | */ | 
|---|
| 130 | function form($instance){ | 
|---|
| 131 | global $xpress_config,$xoops_config; | 
|---|
| 132 |  | 
|---|
| 133 | if (xpress_is_wp_version('<','2.1') ){ | 
|---|
| 134 | $addnew = get_settings('siteurl').'/wp-admin/post.php'; | 
|---|
| 135 | } else { | 
|---|
| 136 | $addnew = get_settings('siteurl').'/wp-admin/post-new.php'; | 
|---|
| 137 | } | 
|---|
| 138 | $type = array(); | 
|---|
| 139 | $type[0] = __('Link', 'xpressme'); | 
|---|
| 140 | $type[1] = __('Site Home', 'xpressme'); | 
|---|
| 141 | $type[2] = __('Add New', 'xpressme'); | 
|---|
| 142 | $type[3] = __('User Profile', 'xpressme'); | 
|---|
| 143 | $type[4] = __('WordPress Admin', 'xpressme'); | 
|---|
| 144 | $type[5] = __('Module Admin', 'xpressme'); | 
|---|
| 145 | $type[6] = __('XPressME Setting', 'xpressme'); | 
|---|
| 146 | $type[7] = __('Display Mode Select', 'xpressme'); | 
|---|
| 147 |  | 
|---|
| 148 | $auto_setting = __('Auto Setting', 'xpressme'); | 
|---|
| 149 |  | 
|---|
| 150 | //Defaults | 
|---|
| 151 | $instance = wp_parse_args( (array) $instance, | 
|---|
| 152 | array( | 
|---|
| 153 | 'title'=> __('User Menu', 'xpressme'), | 
|---|
| 154 |  | 
|---|
| 155 | 'Type_0' =>1 , | 
|---|
| 156 | 'Title_0' => __('Site Home', 'xpressme'), | 
|---|
| 157 | 'URL_0' => get_xoops_url(), | 
|---|
| 158 | 'Visible_0' => 1, | 
|---|
| 159 |  | 
|---|
| 160 | 'Type_1' =>2 , | 
|---|
| 161 | 'Title_1' => __('Add New', 'xpressme'), | 
|---|
| 162 | 'URL_1' => $auto_setting, | 
|---|
| 163 | 'Visible_1' => 1, | 
|---|
| 164 |  | 
|---|
| 165 | 'Type_2' =>3 , | 
|---|
| 166 | 'Title_2' => __('User Profile', 'xpressme'), | 
|---|
| 167 | 'URL_2' => __('Auto Setting', 'xpressme'), | 
|---|
| 168 | 'Visible_2' => 1, | 
|---|
| 169 |  | 
|---|
| 170 | 'Weight_2' => 3, | 
|---|
| 171 | 'Type_3' =>4 , | 
|---|
| 172 | 'Title_3' => __('WordPress Admin', 'xpressme'), | 
|---|
| 173 | 'URL_3' => $auto_setting, | 
|---|
| 174 | 'Visible_3' => 1, | 
|---|
| 175 |  | 
|---|
| 176 | 'Type_4' =>5 , | 
|---|
| 177 | 'Title_4' => __('Module Admin', 'xpressme'), | 
|---|
| 178 | 'URL_4' => $auto_setting, | 
|---|
| 179 | 'Visible_4' => 1, | 
|---|
| 180 |  | 
|---|
| 181 | 'Type_5' =>6 , | 
|---|
| 182 | 'Title_5' => __('XPressME Setting', 'xpressme'), | 
|---|
| 183 | 'URL_5' => $auto_setting, | 
|---|
| 184 | 'Visible_5' => 1, | 
|---|
| 185 |  | 
|---|
| 186 | 'Type_6' =>7 , | 
|---|
| 187 | 'Title_6' => $auto_setting, | 
|---|
| 188 | 'URL_6' => $auto_setting, | 
|---|
| 189 | 'Visible_6' => 1, | 
|---|
| 190 | 'Type_7' =>0 , | 
|---|
| 191 | 'Title_7' => __('Link', 'xpressme'), | 
|---|
| 192 | 'URL_7' => '', | 
|---|
| 193 | 'Visible_7' => 0, | 
|---|
| 194 |  | 
|---|
| 195 | 'Type_8' =>0 , | 
|---|
| 196 | 'Title_8' => __('Link', 'xpressme'), | 
|---|
| 197 | 'URL_8' => '', | 
|---|
| 198 | 'Visible_8' => 0, | 
|---|
| 199 |  | 
|---|
| 200 | 'Type_9' =>0 , | 
|---|
| 201 | 'Title_9' => __('Link', 'xpressme'), | 
|---|
| 202 | 'URL_9' => '', | 
|---|
| 203 | 'Visible_9' => 0, | 
|---|
| 204 | ) ); | 
|---|
| 205 |  | 
|---|
| 206 | echo ' | 
|---|
| 207 | <script type="text/javascript"> | 
|---|
| 208 | function TypeSelect(type_id,title_id,url_id){ | 
|---|
| 209 | var type=document.getElementById(type_id); | 
|---|
| 210 | var title=document.getElementById(title_id); | 
|---|
| 211 | var link_url=document.getElementById(url_id); | 
|---|
| 212 | var auto_set = \''. $auto_setting .'\'; | 
|---|
| 213 | title.value = type[type.value].text; | 
|---|
| 214 | if(type.value > 1){ | 
|---|
| 215 | link_url.value = auto_set; | 
|---|
| 216 | link_url.disabled = true; | 
|---|
| 217 | link_url.style.backgroundColor = \'transparent\'; | 
|---|
| 218 | } else { | 
|---|
| 219 | if (link_url.value == auto_set) link_url.value = \'\'; | 
|---|
| 220 | link_url.disabled = false; | 
|---|
| 221 | link_url.style.backgroundColor = \'#FFFFEE\'; | 
|---|
| 222 | } | 
|---|
| 223 | if(type.value == 1){ | 
|---|
| 224 | link_url.value = \''.get_xoops_url() . '\'; | 
|---|
| 225 | } | 
|---|
| 226 | if(type.value == 7){ | 
|---|
| 227 | title.value = auto_set; | 
|---|
| 228 | title.disabled = true; | 
|---|
| 229 | title.style.backgroundColor = \'transparent\'; | 
|---|
| 230 | } else { | 
|---|
| 231 | if (title.value == auto_set) title.value = \'\'; | 
|---|
| 232 | title.disabled = false; | 
|---|
| 233 | title.style.backgroundColor = \'#FFFFEE\'; | 
|---|
| 234 | } | 
|---|
| 235 |  | 
|---|
| 236 | } | 
|---|
| 237 | </script>'; | 
|---|
| 238 |  | 
|---|
| 239 | // Output the options | 
|---|
| 240 | echo '<p><label for="' . $this->get_field_name('title') . '">'. "\n"; | 
|---|
| 241 | echo __('Title:') . '<input style="width: 200px;" id="' . $this->get_field_id('title') . '" name="' . $this->get_field_name('title') . '" type="text" value="' . $instance['title'] . '" /></label></p>'. "\n"; | 
|---|
| 242 | echo " | 
|---|
| 243 | <table width='100%' class='outer' cellpadding='4' cellspacing='1' border=\"1\" bordercolor=\"#888888\"> | 
|---|
| 244 | <tr valign='middle' align='center' style=\"background-color:#2E323B;color:#FFFFFF\"> | 
|---|
| 245 | <th width='10%'>Type</th> | 
|---|
| 246 | <th width='15%'>Title</th> | 
|---|
| 247 | <th width='10%'>URL</th> | 
|---|
| 248 | <th width='10px'>Visible</th> | 
|---|
| 249 | </tr> | 
|---|
| 250 | "; | 
|---|
| 251 | for($i = 0; $i < 10; $i++) { | 
|---|
| 252 | $even = $i % 2; | 
|---|
| 253 | if ($even) { | 
|---|
| 254 | $back_color = ' style="background-color:#E3E3E3"'; | 
|---|
| 255 | } else { | 
|---|
| 256 | $back_color = ' style="background-color:#F5F5F5"'; | 
|---|
| 257 | } | 
|---|
| 258 | $text_back_color = ' style="background-color:#FFFFEE"'; | 
|---|
| 259 | echo "<tr $back_color>"; | 
|---|
| 260 |  | 
|---|
| 261 | $select_arg = "'" . $this->get_field_id('Type_' . $i) . "','" . $this->get_field_id('Title_' . $i) . "','" . $this->get_field_id('URL_' . $i) . "'"; | 
|---|
| 262 | echo '<th><select id="' . $this->get_field_id('Type_' . $i) . '" name="' . $this->get_field_name('Type_' . $i) . '" ' .$back_color . 'onchange="TypeSelect(' . $select_arg . ')">'; | 
|---|
| 263 | for ($j = 0; $j < 8; $j++) { | 
|---|
| 264 | if ($instance['Type_'. $i] == $j) $select = ' selected="selected"'; else $select = ''; | 
|---|
| 265 | echo '<option ' . $select . 'value="'. $j . '">' . $type[$j] . '</option>'; | 
|---|
| 266 | } | 
|---|
| 267 | echo '</select></th>'; | 
|---|
| 268 |  | 
|---|
| 269 | if ($instance['Type_'. $i] == 7) { | 
|---|
| 270 | $title_disible = 'disabled=disabled'; | 
|---|
| 271 | $title_back_color = $back_color; | 
|---|
| 272 | $title_value = $auto_setting; | 
|---|
| 273 |  | 
|---|
| 274 | } else { | 
|---|
| 275 | $title_disible = ''; | 
|---|
| 276 | $title_back_color = $text_back_color; | 
|---|
| 277 | $title_value = $instance['Title_'. $i]; | 
|---|
| 278 | } | 
|---|
| 279 | echo '<th style="padding:2px"><input size="24" id="' . $this->get_field_id('Title_' . $i) . '" name="' . $this->get_field_name('Title_' . $i) . '" type="text" value="' . $title_value . '" ' .$title_back_color . $title_disible .  '/></th>'. "\n"; | 
|---|
| 280 | if ($instance['Type_'. $i] > 1) { | 
|---|
| 281 | $url_disible = 'disabled=disabled'; | 
|---|
| 282 | $url_back_color = $back_color; | 
|---|
| 283 | $url_value = $auto_setting; | 
|---|
| 284 | } else { | 
|---|
| 285 | $url_disible = ''; | 
|---|
| 286 | $url_back_color = $text_back_color; | 
|---|
| 287 | $url_value = $instance['URL_'. $i]; | 
|---|
| 288 | } | 
|---|
| 289 | echo '<th style="padding:2px"><input size="40" id="' . $this->get_field_id('URL_' . $i) . '" name="' . $this->get_field_name('URL_' . $i) . '" type="text" value="' . $url_value . '" ' .$url_back_color . $url_disible . '/></th>'. "\n"; | 
|---|
| 290 | if ($instance['Visible_'. $i]) $check = ' checked="checked"'; else $check = ''; | 
|---|
| 291 | echo '<th><input size="4" id="' . $this->get_field_id('Visible_' . $i) . '" name="' . $this->get_field_name('Visible_' . $i) . '" type="checkbox" value="1"' . $check . ' /></th>'. "\n"; | 
|---|
| 292 | echo '</tr>'; | 
|---|
| 293 | } | 
|---|
| 294 | echo    '</table>'; | 
|---|
| 295 | } | 
|---|
| 296 |  | 
|---|
| 297 | }// END class | 
|---|
| 298 |  | 
|---|
| 299 | /** | 
|---|
| 300 | * Register Hello World widget. | 
|---|
| 301 | * | 
|---|
| 302 | * Calls 'widgets_init' action after the Hello World widget has been registered. | 
|---|
| 303 | */ | 
|---|
| 304 | function XPress_MenuInit() { | 
|---|
| 305 | register_widget('XPress_Menu_Widget'); | 
|---|
| 306 | } | 
|---|
| 307 | add_action('widgets_init', 'XPress_MenuInit'); | 
|---|
| 308 | ?> | 
|---|