[403] | 1 | <?php
|
---|
| 2 | /*
|
---|
[670] | 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>.
|
---|
[403] | 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") );
|
---|
[445] | 14 | $control_ops = array('width' => 600, 'height' => 300);
|
---|
[403] | 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;
|
---|
[445] | 24 | global $current_user;
|
---|
[403] | 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
|
---|
[445] | 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 | }
|
---|
[403] | 45 | echo '<ul>';
|
---|
| 46 | for($i = 0; $i < 10; $i++) {
|
---|
[445] | 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 | }
|
---|
[403] | 97 | }
|
---|
[445] | 98 |
|
---|
[403] | 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++) {
|
---|
[445] | 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]));
|
---|
[403] | 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;
|
---|
[445] | 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 |
|
---|
[403] | 150 | //Defaults
|
---|
| 151 | $instance = wp_parse_args( (array) $instance,
|
---|
| 152 | array(
|
---|
[445] | 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,
|
---|
[403] | 204 | ) );
|
---|
[445] | 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 | }
|
---|
[403] | 235 |
|
---|
[445] | 236 | }
|
---|
| 237 | </script>';
|
---|
[403] | 238 |
|
---|
| 239 | // Output the options
|
---|
| 240 | echo '<p><label for="' . $this->get_field_name('title') . '">'. "\n";
|
---|
[445] | 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 | ";
|
---|
[403] | 251 | for($i = 0; $i < 10; $i++) {
|
---|
[445] | 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>';
|
---|
[403] | 293 | }
|
---|
[445] | 294 | echo '</table>';
|
---|
[403] | 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 | ?>
|
---|