<?php class clsViewMenu { var $FilterFields; var $CurrentFilter; var $CurrentSortField; var $CurrentSortOrder; var $SortFields; var $FilterVar; //Config name for the current filter value var $SortVar; //config sort name var $OrderVar; //sort order var name var $FilterMax; var $DefaultSortField; var $PerPageVar; var $PerPageValue; var $CheckboxName; function clsViewMenu() { $this->FilterFields = array(); $this->SortFields = array(); $this->CurrentFilter =0; $this->FilterMax = 0; $this->CurrentSortOrder = ""; $this->CurrentSortField = ""; } function AddFilterField($Label,$BitPlace) { $this->FilterFields[$Label]=$BitPlace; } function AddSortField($Field,$Label,$IsDefault=FALSE) { $this->SortFields[$Field] = $Label; if($IsDefault) $this->DefaultSortField = $Field; } function GetViewMenuJS($imagesURL) { $FilterVal = (int)$this->CurrentFilter; $FilterVar = $this->FilterVar; $fMax = $this->FilterMax; $sOrder = $this->CurrentSortOrder; $sOrderVar = $this->OrderVar; $sField = $this->CurrentSortField; $sDefault = $this->DefaultSortField; if(!strlen($sField)) $sField = $sDefault; if(!strlen($sOrder)) $sOrder = "asc"; $AllValue = $this->FilterMax; $PerPageVal = $this->PerPageValue; $PerPageVar = $this->PerPageVar; $SortVar = $this->SortVar; $CheckboxName = $this->CheckboxName; ob_start(); print <<<END var FilterView=$FilterVal; var PerPage = $PerPageVal; function fwLoadMenus() { var SortOrder='$sOrder'; var SortField='$sField'; var SortDefault='$sDefault'; END; if(count($this->FilterFields)>0) { echo " window.menu_filter = new Menu(lang_View); menu_filter.imagePath = '$imagesURL'+'/'; menu_filter.addMenuItem(lang_All,\"config_val('$FilterVar',$AllValue);\",FilterView==$AllValue); menu_filter.addMenuSeparator(); "; foreach($this->FilterFields as $Label=>$Bit) { if($Label =="-") { print " menu_filter.addMenuSeparator();\n"; } else print " menu_filter.addMenuItem('$Label',\"FlipBit('$FilterVar',FilterView,$Bit);\",BitStatus(FilterView,$Bit));\n"; } } else echo "var menu_filter = false;\n"; print <<<END window.menu_sorting = new Menu(lang_Sort); menu_sorting.imagePath = "$imagesURL"+'/'; menu_sorting.addMenuItem(lang_Asc,"config_val('$sOrderVar','asc');",RadioIsSelected(SortOrder,'asc')); menu_sorting.addMenuItem(lang_Desc,"config_val('$sOrderVar','desc');",RadioIsSelected(SortOrder,'desc')); menu_sorting.addMenuSeparator(); menu_sorting.addMenuItem(lang_Default,"config_val('$SortVar','$sDefault');",""); END; foreach($this->SortFields as $field=>$label) { print " menu_sorting.addMenuItem('$label',\"config_val('$SortVar','$field');\",RadioIsSelected(SortField,'$field'));\n"; } print <<<END window.menu_results = new Menu('Items '+lang_PerPage); menu_results.imagePath = "$imagesURL"+'/'; menu_results.addMenuItem("10","config_val('$PerPageVar', '10');",RadioIsSelected(PerPage,10)); menu_results.addMenuItem("20","config_val('$PerPageVar', '20');",RadioIsSelected(PerPage,20)); menu_results.addMenuItem("50","config_val('$PerPageVar', '50');",RadioIsSelected(PerPage,50)); menu_results.addMenuItem("100","config_val('$PerPageVar', '100');",RadioIsSelected(PerPage,100)); menu_results.addMenuItem("500","config_val('$PerPageVar', '500');",RadioIsSelected(PerPage,500)); window.menu_select = new Menu(lang_Select); menu_select.addMenuItem(lang_All,"$CheckboxName.selectAll(true);",""); menu_select.addMenuItem(lang_Unselect,"$CheckboxName.selectAll(false);",""); menu_select.addMenuItem(lang_Invert,"$CheckboxName.invertItems();",""); window.view_menu = new Menu("root"); view_menu.imagePath = "$imagesURL"+'/'; if(menu_filter) window.view_menu.addMenuItem(menu_filter); window.view_menu.addMenuItem(menu_sorting); window.view_menu.addMenuItem(menu_results); window.view_menu.addMenuItem(menu_select); window.triedToWriteMenus = false; window.view_menu.writeMenus(); } // fwLoadMenus() END; $o = ob_get_contents(); ob_end_clean(); return $o; } }