aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/test_menu/menu.class.inc.php
diff options
context:
space:
mode:
authorrvelices <rv-github@modusoptimus.com>2008-08-28 00:32:39 +0000
committerrvelices <rv-github@modusoptimus.com>2008-08-28 00:32:39 +0000
commitabb2f22b2e96a89a44ad9d36db3bf612c6f88b9f (patch)
treeca36d7b1bd7035f9952c4f564406eaa87c954cdb /plugins/test_menu/menu.class.inc.php
parent7f956e71b91f32ff6ca87ea6a0f56cc0f02c7005 (diff)
- based on test_menu by grum (thanks to you) - integration of dynamic menu bar to pwg
- the menubar is composed now of dynamic blocks that can be ordered/hidden - plugins can add their own blocks git-svn-id: http://piwigo.org/svn/trunk@2488 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to 'plugins/test_menu/menu.class.inc.php')
-rw-r--r--plugins/test_menu/menu.class.inc.php511
1 files changed, 0 insertions, 511 deletions
diff --git a/plugins/test_menu/menu.class.inc.php b/plugins/test_menu/menu.class.inc.php
deleted file mode 100644
index 7eece66bd..000000000
--- a/plugins/test_menu/menu.class.inc.php
+++ /dev/null
@@ -1,511 +0,0 @@
-<?php
-
-/* -----------------------------------------------------------------------------
- classes names : menu, section
- class version : 1.0
- date : 2008-07-25
-
- ------------------------------------------------------------------------------
- Author : Grum
- email : grum@grum.dnsalias.com
- website : http://photos.grum.dnsalias.com
- PWG user : http://forum.phpwebgallery.net/profile.php?id=3706
-
- << May the Little SpaceFrog be with you ! >>
- ------------------------------------------------------------------------------
-
- this classes provides base functions to manage the public gallery menu
-
- ** The Section class **
- This class allows you to easily make a section block for the menu
- Public methods
- get_id()
- get_name()
- get_template()
- get_position()
- get_tag()
- get_items()
- set_name($value)
- set_template($value)
- set_tag($value)
- set_items($value)
- items_count()
- get()
- Constructor
- $id : section's id have to be unique in the menu
- $name : section's name is displayed on the menu
- $template : name of smarty template file ; if file doesn't exist, use of the
- generic template
- $tag : a facultative data ; use it as you want !
- $items : items of the menu : no specfic structure because it depends of
- the template model
-
- ** The Menu class **
- This class allows to easily manage the menu
- Public methods
- add($section_datas)
- remove($id)
- replace($section_datas)
- clear()
- section($id)
- sections()
- ids()
- count()
- register($id, $name, $position, $owner)
- register_position($id, $position)
- unregister($id)
- registered()
- apply()
- get_registered_filename()
-
- How to use Menu class :
- 1/ create an instance
- $menu = new Menu();
- instance have to be created by piwigo, plugin have to use of a global
- variable
-
- 2/ register your menu section
- register a section allows to know sections even if $menu is not loaded
- register a section allows to manage position into menu
- register function only reference some information about section, it does
- not create the section of menu (an only registered section is not
- displayed in menu)
- best place to register a section : when plugin is activated
- when deactivate plugin, unregister the section
-
- 3/ add section to menu
- add a section allows to really create section into menu
-
-
-
-
- ------------------------------------------------------------------------------
- :: HISTORY
-
- 1.0.0 - 2008-07-25
- first lines of code...
-
- --------------------------------------------------------------------------- */
-
-// theses constant ave to be adapted for a piwigo's integration
-define('MENU_TEMPLATES_DIR' , dirname(__FILE__));
-define('MENU_TEMPLATES_PATH' , MENU_TEMPLATES_DIR . '/menu_templates/');
-define('MENU_REGISTERED_PATH' ,
- PHPWG_PLUGINS_PATH . basename(dirname(__FILE__)) . '/');
-
-
-class Menu
-{
- protected $sections=array(); //array key is unique ID of sections
- protected $registered_sections=array();
- protected $registered_file="registered.dat";
-
- public function Menu($registered_path='')
- {
- if($registered_path!='')
- {
- $this->registered_file=$registered_path.$this->registered_file;
- }
- $this->load_registered();
- }
-
- /*
- public functions
- */
- public function get_registered_filename()
- {
- // return filename of file for maintain of registered sections
- return($this->registered_file);
- }
-
- public function add($section_datas)
- {
- // add a section to the menu ; datas can be made with the Section class
- if($this->section_is_valid($section_datas) and
- !isset($this->sections[$section_datas['ID']]) )
- {
- $this->sections[$section_datas['ID']]=$section_datas;
-
- if(isset($this->registered_sections[$section_datas['ID']]))
- {
- $this->sections[$section_datas['ID']]['POSITION']=$this->registered_sections[$section_datas['ID']]['POSITION'];
- }
- else
- {
- $this->sections[$section_datas['ID']]['POSITION']=0;
- }
- return(true);
- }
- return(false);
- }
-
- public function remove($id)
- {
- // remove a section from the menu
- unset($this->sections[$id]);
- }
-
- public function replace($section_datas)
- {
- // replace an existing section description by another one
- if($this->section_is_valid($section_datas) and
- isset($this->sections[$section_datas['ID']]) )
- {
- $this->sections[$section_datas['ID']]=$section_datas;
- return(true);
- }
- return(false);
- }
-
- public function clear()
- {
- // clear all sections of the menu
- $this->sections=array();
- }
-
- public function section($id)
- {
- //return a section structure or false if requested ID not exists
- if(isset($this->sections[$id]))
- {
- return($this->sections[$id]);
- }
- return(false);
- }
-
- public function sections()
- {
- //return all sections
- return($this->sections);
- }
-
- public function ids()
- {
- //return all section's ids
- return(array_keys($this->sections));
- }
-
- public function count()
- {
- //return number of sections
- return(count($this->sections));
- }
-
- public function register($id, $name, $position, $owner)
- {
- /*
- register section for menu ; register a section allows to know sections list
- even if menu is not made (ie: we are in admin interface)
-
- register a section is not adding a section : it's just for making a list of
- potential sections.
- you can add in the menu a section who is not registered
-
- $id : section id
- $name : name of section
- $position : position of section
- $owner : owner of section (piwigo or plugin's name)
- */
- if(!isset($this->registered_sections[$id]))
- {
- if($position<1)
- {
- $position=1;
- }
- $this->registered_sections[$id]=array(
- 'NAME' => $name,
- 'POSITION'=>$position,
- 'OWNER' => $owner
- );
- $this->register_position($id, $position);
- //$this->save_registered(); ==> made with register_position
- return(true);
- }
- return(false);
- }
-
- public function unregister($id)
- {
- // just unregister a section from menu
- if(isset($this->registered_sections[$id]))
- {
- unset($this->registered_sections[$id]);
- $this->registered_sections=$this->renum_position($this->registered_sections);
- $this->save_registered();
- return(true);
- }
- return(false);
- }
-
- public function register_position($id, $position)
- {
- // register a new position for section
- // if a section already have the same position, all section are shifted
-
- // sort registered sections by position
- $this->sort_registered();
- //preparing sections
- $incpos=false;
- foreach($this->registered_sections as $key => $val)
- {
- if(($val['POSITION']==$position)and($key!=$id))
- {
- $incpos=true;
- }
- if(($incpos)and($key!=$id))
- {
- $this->registered_sections[$key]['POSITION']++;
- }
- }
- //affect new position
- $this->registered_sections[$id]['POSITION']=$position;
- //sort
- $this->sort_registered();
- //renum positions
- $this->registered_sections=$this->renum_position($this->registered_sections);
- $this->save_registered();
- }
-
- public function registered()
- {
- // return list of registered sections
- return($this->registered_sections);
- }
-
- public function apply()
- {
- //apply datas on the template
- global $template;
-
- $template->set_filenames(
- array('menubar' => MENU_TEMPLATES_PATH.'menubar_main.tpl')
- );
-
- trigger_action('loc_begin_menubar');
- $this->sort();
- $template->assign('sections', $this->sections);
- trigger_action('loc_end_menubar');
-
- $template->assign_var_from_handle('MENUBAR', 'menubar');
- }
-
- /*
- protected functions
- */
- protected function section_is_valid($section_datas)
- {
- if(is_array($section_datas) and
- isset($section_datas['ID']) and
- isset($section_datas['NAME']) and
- isset($section_datas['TEMPLATE']) and
- isset($section_datas['ITEMS']) and
- isset($section_datas['TAG']))
- {
- return(true);
- }
- return(false);
- }
-
- protected function load_registered()
- {
- //load registered sections : database or file ??
- $this->registered_sections=array();
-
- $filename=MENU_REGISTERED_PATH.$this->registered_file;
-
- if(file_exists($filename))
- {
- $fhandle=fopen($filename, "r");
- if($fhandle)
- {
- $datas=fread($fhandle, filesize($filename));
- fclose($fhandle);
- $this->registered_sections=unserialize($datas);
- return(true);
- }
- }
- return(false);
- }
-
- protected function save_registered()
- {
- //save registered sections : database or file ??
- $filename=MENU_REGISTERED_PATH.$this->registered_file;
-
- $fhandle=fopen($filename, "w");
- if($fhandle)
- {
- $written=fwrite($fhandle, serialize($this->registered_sections));
- fclose($fhandle);
- return($written);
- }
- return(false);
- }
-
-
- protected function sort()
- {
- $tmp=$this->sections;
- uksort($tmp, array(&$this, 'sort_sections_cmpfct'));
- $this->sections=$tmp;
- }
-
- protected function sort_registered()
- {
- $tmp=$this->registered_sections;
- uksort($tmp, array(&$this, 'sort_registered_cmpfct'));
- $this->registered_sections=$tmp;
- }
-
-
- private function sort_sections_cmpfct($a, $b)
- {
- if($this->sections[$a]['POSITION']==$this->sections[$b]['POSITION'])
- {
- return(($this->sections[$a]['ID']<$this->sections[$b]['ID'])?-1:1);
- }
- return(($this->sections[$a]['POSITION']<$this->sections[$b]['POSITION'])?-1:1);
- }
-
- private function sort_registered_cmpfct($a, $b)
- {
- return(($this->registered_sections[$a]['POSITION']<$this->registered_sections[$b]['POSITION'])?-1:1);
- }
-
- private function renum_position($datas)
- {
- $i=1;
- foreach($datas as $key => $val)
- {
- $datas[$key]['POSITION']=$i;
- $i+=1;
- }
- return($datas);
- }
-
-
-
-
-} // class Menu
-
-
-
-
-
-class Section
-{
- protected $name;
- protected $template="generic.tpl";
- protected $id;
- protected $tag;
- protected $items=array();
-
- public function Section($id, $name, $template="", $tag="")
- {
- $this->id = $id;
- $this->tag = $tag;
- $this->set_name($name);
- if(!$this->set_template($template))
- {
- $this->template=MENU_TEMPLATES_PATH."generic.tpl";
- }
-
- } // constructor
-
- /*
- public functions
- */
- public function get()
- {
- //this method returns a data structure ready to be used with the Menu class
- return(
- array(
- 'ID' => $this->id,
- 'NAME' => $this->name,
- 'TEMPLATE' => $this->template,
- 'ITEMS' => $this->items,
- 'TAG' => $this->tag
- )
- );
- }
-
- public function get_id()
- {
- return($this->id);
- }
-
- public function get_name()
- {
- return($this->name);
- }
-
- public function get_template()
- {
- return($this->template);
- }
-
- public function get_tag()
- {
- return($this->tag);
- }
-
- public function get_items()
- {
- return($this->items);
- }
-
- public function set_name($value)
- {
- $this->name=$value;
- }
-
- public function set_template($value)
- {
- if($this->is_template($value))
- {
- $this->template=$value;
- return(true);
- }
- return(false);
- }
-
- public function set_tag($value)
- {
- $this->tag=$value;
- }
-
- public function set_items($value)
- {
- $this->items=$value;
- }
-
- public function items_count()
- {
- if(is_array($this->items))
- {
- return(count($this->items));
- }
- else
- {
- return(-1);
- }
- }
-
- /*
- protected functions
- */
- protected function is_template($templatename)
- {
- if(file_exists($templatename) and (preg_match('/.+\.tpl$/i',$templatename)))
- {
- return(true);
- }
- return(false);
- } // is_template
-
-} //class Section
-
-
-
-
-?> \ No newline at end of file