| 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 | ?>
 | 
|---|