 7414932235
			
		
	
	
		7414932235
		
	
	
	
	
		
			
			It involves how widgets work. Now widgets must always be *registered* to work, even blockparser's. Blockparser has got then a nice GUI to select which pages should be available as widgets; once the page has been enabled it is then available in the main widget panels This solves the non-editable input things with non-firefox browsers: this way you just won't have the editbox anymore :P I hope you'll like the changes. There are many additions in lang files, so be careful to update (otherwise you'll get blank lines)!
		
			
				
	
	
		
			125 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 	function admin_widgets_head() {
 | |
| 		echo '<script type="text/javascript" src="'.BLOG_BASEURL.ADMIN_DIR.'panels/widgets/admin.widgets.js"></script>';
 | |
| 	}
 | |
| 	add_action('wp_footer', 'admin_widgets_head');
 | |
| 	
 | |
|  
 | |
|  	class admin_widgets_default extends AdminPanelAction {
 | |
| 	 
 | |
| 		//var $validators =  array(array('content', 'content', 'notEmpty', false, false));
 | |
| 		var $events = array('save');
 | |
| 		
 | |
| 		
 | |
| 		function get_widget_lists($wlist, $wpos, &$widget_list, $registered_w, $add_empties) {
 | |
| 		
 | |
| 			if (!isset($wlist[$wpos]))
 | |
| 				return;
 | |
| 		
 | |
| 			$widget_list[$wpos] = array();
 | |
| 		
 | |
| 			foreach($wlist[$wpos] as $idx => $wdg) {
 | |
| 					
 | |
| 					$widget_list[$wpos][$idx] = array();
 | |
| 					
 | |
| 					$newid = $wdg; # @list($newid, $params) = explode(":", $wdg);
 | |
| 					
 | |
| 					$widget_list[$wpos][$idx]['id'] = $newid;
 | |
| 					
 | |
| 					
 | |
| 					if (isset($registered_w[$newid])){
 | |
| 						$thiswdg =& $registered_w[$newid];
 | |
| 						
 | |
| 						$widget_list[$wpos][$idx]['name'] = $thiswdg['name'];
 | |
| 						
 | |
| 						if ($thiswdg['nparams'] > 0) {
 | |
| 							$widget_list[$wpos][$idx]['params'] = $params;
 | |
| 						}
 | |
| 						
 | |
| 						/*
 | |
| 						 *	here should go the check for
 | |
| 						 *	limited parameters: parameters limited to a 
 | |
| 						 *	particular set would mean using a <select> control
 | |
| 						 * 	in the template
 | |
| 						 *
 | |
| 						 */
 | |
| 					
 | |
| 					} else {
 | |
| 
 | |
| 						global $lang;
 | |
| 					
 | |
| 						$widget_list[$wpos][$idx]['name'] = $newid;
 | |
| 						$widget_list[$wpos][$idx]['class'] = 'errors';
 | |
| 							
 | |
| 						$errs = sprintf($lang['admin']['widgets']['errors']['generic'], $newid);
 | |
| 						$this->smarty->append('warnings', $errs); 
 | |
| 						
 | |
| 					}
 | |
| 				}
 | |
| 				
 | |
| 			
 | |
| 			if (!$widget_list[$wpos] && !$add_empties)	
 | |
| 				unset($widget_list[$wpos]);
 | |
| 			
 | |
| 		
 | |
| 		}
 | |
| 		
 | |
| 		function main() {
 | |
| 		
 | |
| 		
 | |
| 			lang_load('admin.widgets');
 | |
| 			# $this->smarty->assign('warnings', admin_widgets_checkall());
 | |
| 			global $fp_widgets;
 | |
| 			
 | |
| 			
 | |
| 			$registered_w = get_registered_widgets();
 | |
| 			$registered_ws = get_registered_widgetsets(null);
 | |
| 			$this->smarty->assign('fp_registered_widgets', $registered_w);
 | |
| 			
 | |
| 			
 | |
| 			$wlist = $fp_widgets->getList();
 | |
| 			$widget_list = array();
 | |
| 			
 | |
| 			foreach($registered_ws as $wpos) {
 | |
| 				
 | |
| 				$widget_list[$wpos] = array();
 | |
| 				
 | |
| 				$this->get_widget_lists($wlist, $wpos, $widget_list, $registered_w, true);
 | |
| 				
 | |
| 				unset($wlist[$wpos]);
 | |
| 				
 | |
| 			}
 | |
| 			
 | |
| 			$oldwidget_list = array();
 | |
| 			foreach($wlist as $wpos => $c){
 | |
| 				$this->get_widget_lists($wlist, $wpos, $oldwidget_list, $registered_w, false);
 | |
| 			}
 | |
| 			
 | |
| 			$this->smarty->assign('widgetlist', $widget_list);
 | |
| 			$this->smarty->assign('oldwidgetlist', $oldwidget_list);
 | |
| 			
 | |
| 		
 | |
| 			$conf = io_load_file(CONFIG_DIR . 'widgets.conf.php');
 | |
| 			
 | |
| 			$this->smarty->assign('pluginconf', $conf);
 | |
| 			
 | |
| 			return 0;
 | |
| 			
 | |
| 			
 | |
| 		}
 | |
| 		
 | |
| 
 | |
| 		function onsave() {
 | |
| 
 | |
| 			$fp_widgets = isset($_POST['widgets'])? $_POST['widgets'] : array(); 	
 | |
| 			$success = system_save(CONFIG_DIR . 'widgets.conf.php', compact('fp_widgets'));
 | |
| 
 | |
| 			$this->smarty->assign('success', ( $success )? 1 : -1 );
 | |
| 			
 | |
| 			return PANEL_REDIRECT_CURRENT;
 | |
| 			
 | |
| 		}
 | |
| 	
 | |
| 	}
 | |
| ?>
 |