Asked by rvelices on this topic
http://forum.phpwebgallery.net/viewtopic.php?pid=92097#p92097 A plugin to integrate the menu class see test_menu directory A plugin to show how to use the menu class see AMenuManager directory And common classes needed for the AMenuManager plugin see grum_plugins_classes-2 directory See topic http://forum.phpwebgallery.net/viewtopic.php?pid=92637#p92637 for more informations git-svn-id: http://piwigo.org/svn/trunk@2466 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
parent
ee0af5d43d
commit
7ebed79726
58 changed files with 5207 additions and 0 deletions
13
plugins/AMenuManager/admin/amm_admin.tpl
Executable file
13
plugins/AMenuManager/admin/amm_admin.tpl
Executable file
|
@ -0,0 +1,13 @@
|
|||
<div class="titrePage">
|
||||
<h2 style="position:absolute;right:0px;top:32px;height:auto;font-size:12px;font-weight:normal;">:: {$plugin.AMM_VERSION} ::</h2>
|
||||
<h2>{'g002_title_page'|@translate} <span style="font-size:-1;font-weight:normal;">{$TABSHEET_TITLE}</span></h2>
|
||||
|
||||
{$tabsheet}
|
||||
</div>
|
||||
|
||||
{if isset($page_nfo)}
|
||||
<p>{$page_nfo}</p>
|
||||
{/if}
|
||||
|
||||
{$AMM_BODY_PAGE}
|
||||
|
108
plugins/AMenuManager/admin/amm_linksconfig.tpl
Normal file
108
plugins/AMenuManager/admin/amm_linksconfig.tpl
Normal file
|
@ -0,0 +1,108 @@
|
|||
{literal}
|
||||
<script type="text/javascript">
|
||||
|
||||
//global var ; need to not have to initialize them every time a value is changed
|
||||
var objlang;
|
||||
var objnames = new Array('iamm_links_title');
|
||||
var objinput = new Array(); //input text from form => objinput[name]
|
||||
var objhidden = new Array(); //input hidden from form => objhidden[name][lang]
|
||||
|
||||
function init()
|
||||
{
|
||||
objlang = document.getElementById('islang');
|
||||
for(i=0;i<objnames.length;i++)
|
||||
{
|
||||
objinput[i] = document.getElementById(objnames[i]);
|
||||
objhidden[i] = new Array();
|
||||
for(j=0;j<objlang.options.length;j++)
|
||||
{
|
||||
objhidden[i][j] = document.getElementById(objnames[i]+'_'+objlang.options[j].value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function change_lang()
|
||||
{
|
||||
for(i=0;i<objnames.length;i++)
|
||||
{
|
||||
objinput[i].value = objhidden[i][objlang.options.selectedIndex].value;
|
||||
}
|
||||
}
|
||||
|
||||
function apply_changes(input_id)
|
||||
{
|
||||
var obj=document.getElementById(input_id);
|
||||
objhidden[objnames.indexOf(input_id)][objlang.options.selectedIndex].value = obj.value;
|
||||
}
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
|
||||
|
||||
<h3><span style="font-weight:normal"><a href="{$datas.lnk_list}" title="{'g002_configlinks'|@translate}">{'g002_linkslist'|@translate} </span></a> / {'g002_configlinks'|@translate}
|
||||
</h3>
|
||||
|
||||
|
||||
<form method="post" action="" class="general">
|
||||
<fieldset>
|
||||
<legend>{'g002_setting_link_block_menu'|@translate}</legend>
|
||||
|
||||
{if isset($datas.language_list) and count($datas.language_list)}
|
||||
{foreach from=$datas.language_list key=name item=language_row}
|
||||
<input type="hidden" name="famm_links_title_{$language_row.LANG}"
|
||||
id="iamm_links_title_{$language_row.LANG}" value="{$language_row.MENUBARTIT}">
|
||||
{/foreach}
|
||||
{/if}
|
||||
|
||||
<table class="formtable">
|
||||
<tr>
|
||||
<td>{'g002_setting_link_block_active'|@translate}</td>
|
||||
<td>
|
||||
<select name="famm_links_active" id="iamm_links_active">
|
||||
{html_options values=$datas.yesno_values output=$datas.yesno_labels selected=$datas.active_selected}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>{'g002_setting_link_block_title'|@translate}</td>
|
||||
<td>
|
||||
<input type="text" id="iamm_links_title" value="" maxlength="50" onkeyup="apply_changes('iamm_links_title');" />
|
||||
<select onchange="change_lang();" id="islang">
|
||||
{html_options values=$datas.language_list_values output=$datas.language_list_labels selected=$datas.lang_selected}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{'g002_setting_link_links'|@translate}</legend>
|
||||
<table class="formtable">
|
||||
<tr>
|
||||
<td>{'g002_setting_link_show_icon'|@translate}</td>
|
||||
<td>
|
||||
<select name="famm_links_show_icons" id="iamm_links_show_icons">
|
||||
{html_options values=$datas.yesno_values output=$datas.yesno_labels selected=$datas.show_icons_selected}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
<p>
|
||||
<input type="submit" name="famm_submit_apply" id="iamm_submit_apply" value="{'g002_apply'|@translate}" >
|
||||
</p>
|
||||
|
||||
<input type="hidden" name="famm_modeedit" value="config">
|
||||
|
||||
</form>
|
||||
|
||||
<script type="text/javascript">
|
||||
init();
|
||||
change_lang();
|
||||
</script>
|
56
plugins/AMenuManager/admin/amm_linkslist.tpl
Normal file
56
plugins/AMenuManager/admin/amm_linkslist.tpl
Normal file
|
@ -0,0 +1,56 @@
|
|||
{literal}
|
||||
<script type="text/javascript">
|
||||
|
||||
function load_list(do_action, item, permut)
|
||||
{
|
||||
/*
|
||||
do_action
|
||||
'list' : just load list
|
||||
'permut' : permut items in list
|
||||
'delete' : delete the item in list
|
||||
*/
|
||||
var doc = document.getElementById("iurls");
|
||||
|
||||
action_todo='';
|
||||
if(do_action=='permut')
|
||||
{
|
||||
action_todo='links_permut&fItem='+item+'&fPermut='+permut;
|
||||
}
|
||||
else if(do_action=='delete')
|
||||
{
|
||||
if(confirm('{/literal}{'g002_confirm_delete_link'|@translate}{literal}'))
|
||||
{
|
||||
action_todo='links_delete&fItem='+item;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
action_todo='links_list';
|
||||
}
|
||||
|
||||
if(action_todo!='')
|
||||
{
|
||||
http_request=create_httpobject('get', '', '{/literal}{$datas.AMM_AJAX_URL_LIST}{literal}'+action_todo, false);
|
||||
http_request.send(null);
|
||||
doc.innerHTML=http_request.responseText;
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
|
||||
<h3>{'g002_linkslist'|@translate} / <span style="font-weight:normal"><a href="{$datas.lnk_config}" title="{'g002_configlinks'|@translate}">{'g002_configlinks'|@translate}</a></span>
|
||||
</h3>
|
||||
|
||||
[{$datas.nburl}]<br/>
|
||||
<a href="{$datas.lnk_create}" title="{'g002_addlink'|@translate}">{'g002_addlink'|@translate}</a>
|
||||
|
||||
<br/>
|
||||
|
||||
<div id="iurls"></div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
load_list('list', 0, 0);
|
||||
</script>
|
28
plugins/AMenuManager/admin/amm_linkslist_detail.tpl
Normal file
28
plugins/AMenuManager/admin/amm_linkslist_detail.tpl
Normal file
|
@ -0,0 +1,28 @@
|
|||
|
||||
{if isset($datas.urls) and count($datas.urls)}
|
||||
<table class="table2 littlefont">
|
||||
<tr class="throw">
|
||||
<th width='15'> </th>
|
||||
<th>{'g002_label'|@translate}</th>
|
||||
<th>{'g002_url'|@translate}</th>
|
||||
<th>{'g002_mode'|@translate}</th>
|
||||
<th>{'g002_visible'|@translate}</th>
|
||||
<th colspan=4> </th>
|
||||
</tr>
|
||||
|
||||
{foreach from=$datas.urls key=name item=url}
|
||||
<tr>
|
||||
<td>{if $url.img!=""}<img src='{$url.img}'/>{else} {/if}</td>
|
||||
<td>{$url.label}</td>
|
||||
<td>{$url.url}</td>
|
||||
<td>{$url.mode}</td>
|
||||
<td style="text-align:center;">{$url.visible}</td>
|
||||
<td width="15px">{if $url.up}<a style="cursor:pointer;" onclick="load_list('permut', {$url.ID}, {$url.IDPREV})"><img src='{$plugin.PATH}/admin/go-up.png'/></a>{else} {/if}</td>
|
||||
<td width="15px">{if $url.down}<a style="cursor:pointer;" onclick="load_list('permut', {$url.ID}, {$url.IDNEXT})"><img src='{$plugin.PATH}/admin/go-down.png'/></a>{else} {/if}</td>
|
||||
<td width="15px"><a href="{$url.edit}"><img src='{$themeconf.icon_dir}/category_edit.png'/></a></td>
|
||||
<td width="15px"><a style="cursor:pointer;" onclick="load_list('delete', {$url.ID}, 0)"><img src='{$themeconf.icon_dir}/delete.png'/></a></td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
|
||||
</table>
|
||||
{/if}
|
97
plugins/AMenuManager/admin/amm_linkslist_edit.tpl
Normal file
97
plugins/AMenuManager/admin/amm_linkslist_edit.tpl
Normal file
|
@ -0,0 +1,97 @@
|
|||
{literal}
|
||||
<script type="text/javascript">
|
||||
|
||||
function change_selected_icon()
|
||||
{
|
||||
var doc = document.getElementById("iamm_icon");
|
||||
|
||||
var icon_list = Array();
|
||||
|
||||
{/literal}
|
||||
{foreach from=$datas.icons_values key=name item=icon}
|
||||
icon_list.push('{$icon.img}');
|
||||
{/foreach}
|
||||
{literal}
|
||||
|
||||
doc.style.backgroundImage='url('+icon_list[doc.options.selectedIndex]+')';
|
||||
}
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
|
||||
{if isset($datas.modeedit)}
|
||||
|
||||
<h3>
|
||||
{if $datas.modeedit=='create'}
|
||||
{'g002_createoflink'|@translate}
|
||||
{else}
|
||||
{'g002_editoflink'|@translate}
|
||||
{/if}
|
||||
/ <span style="font-weight:normal"><a href="{$datas.lnk_list}">{'g002_linkslist'|@translate}</a></span></h3>
|
||||
</h3>
|
||||
|
||||
<form method="post" action="" class="general">
|
||||
<fieldset>
|
||||
<table class="formtable">
|
||||
<tr>
|
||||
<td>{'g002_label'|@translate}<td>
|
||||
<td><input type='text' name="famm_label" id='iamm_label' value='{$datas.label}' maxlength=50 size=50></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>{'g002_url'|@translate}<td>
|
||||
<td><input type='text' name="famm_url" id='iamm_url' value='{$datas.url}' maxlength=255 size=50></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>{'g002_icon'|@translate}<td>
|
||||
<td>
|
||||
<select name="famm_icon" id="iamm_icon" onchange="change_selected_icon();" style="background-image:url('{$datas.icons_img}');background-position:2px 1px;background-repeat:no-repeat;padding-left:18px;">
|
||||
{foreach from=$datas.icons_values key=name item=icon}
|
||||
<option value="{$icon.value}" style="background: transparent url('{$icon.img}') no-repeat scroll 0px 0px;padding-left:20px;" {if $icon.value==$datas.icons_selected}selected{/if}>{$icon.label}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>{'g002_mode'|@translate}<td>
|
||||
<td>
|
||||
<select name="famm_mode" id="iamm_mode">
|
||||
{html_options values=$datas.mode_values output=$datas.mode_labels selected=$datas.mode_selected}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>{'g002_visible'|@translate}<td>
|
||||
<td>
|
||||
<select name="famm_visible" id="iamm_visible">
|
||||
{html_options values=$datas.visible_values output=$datas.visible_labels selected=$datas.visible_selected}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
|
||||
{if $datas.modeedit=='create'}
|
||||
<p>
|
||||
<input type="submit" name="famm_submit_create" id="iamm_submit_create" value="{'g002_createthelink'|@translate}" >
|
||||
</p>
|
||||
{/if}
|
||||
|
||||
{if $datas.modeedit=='modify'}
|
||||
<p>
|
||||
<input type="submit" name="famm_submit_modify" id="iamm_submit_modify" value="{'g002_editthelink'|@translate}" >
|
||||
</p>
|
||||
{/if}
|
||||
|
||||
<input type="hidden" name="famm_modeedit" value="{$datas.modeedit}">
|
||||
<input type="hidden" name="famm_id" value="{$datas.id}">
|
||||
|
||||
</form>
|
||||
|
||||
{/if}
|
47
plugins/AMenuManager/admin/amm_sectionslist.tpl
Normal file
47
plugins/AMenuManager/admin/amm_sectionslist.tpl
Normal file
|
@ -0,0 +1,47 @@
|
|||
{literal}
|
||||
<script type="text/javascript">
|
||||
|
||||
function load_list(do_action, item, position)
|
||||
{
|
||||
/*
|
||||
do_action
|
||||
'list' : just load list
|
||||
'permut' : permut items in list
|
||||
'delete' : delete the item in list
|
||||
*/
|
||||
var doc = document.getElementById("isections");
|
||||
|
||||
action_todo='';
|
||||
if(do_action=='position')
|
||||
{
|
||||
action_todo='sections_position&fItem='+item+'&fPosition='+position;
|
||||
}
|
||||
else if(do_action=='showhide')
|
||||
{
|
||||
action_todo='sections_showhide&fItem='+item;
|
||||
}
|
||||
else
|
||||
{
|
||||
action_todo='sections_list';
|
||||
}
|
||||
|
||||
if(action_todo!='')
|
||||
{
|
||||
http_request=create_httpobject('get', '', '{/literal}{$datas.AMM_AJAX_URL_LIST}{literal}'+action_todo, false);
|
||||
http_request.send(null);
|
||||
doc.innerHTML=http_request.responseText;
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
|
||||
<h3>{'g002_sectionslist'|@translate}</h3>
|
||||
|
||||
<div id="isections"></div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
load_list('list', 0, 0);
|
||||
</script>
|
24
plugins/AMenuManager/admin/amm_sectionslist_detail.tpl
Normal file
24
plugins/AMenuManager/admin/amm_sectionslist_detail.tpl
Normal file
|
@ -0,0 +1,24 @@
|
|||
|
||||
{if isset($datas.sections) and count($datas.sections)}
|
||||
<table class="table2 littlefont">
|
||||
<tr class="throw">
|
||||
<th>{'g002_owner'|@translate}</th>
|
||||
<th>{'g002_sectionid'|@translate}</th>
|
||||
<th>{'g002_name'|@translate}</th>
|
||||
<th>{'g002_visible'|@translate}</th>
|
||||
<th colspan=2> </th>
|
||||
</tr>
|
||||
|
||||
{foreach from=$datas.sections key=name item=section}
|
||||
<tr>
|
||||
<td>{$section.OWNER}</td>
|
||||
<td>{$section.ID}</td>
|
||||
<td>{$section.NAME}</td>
|
||||
<td style="text-align:center;"><a style="cursor:pointer;" onclick="load_list('showhide', '{$section.ID}', '')">{$section.VISIBLE}</a></td>
|
||||
<td width="15px">{if $section.up}<a style="cursor:pointer;" onclick="load_list('position', '{$section.ID}', '{$section.PREVPOS}')"><img src='{$plugin.PATH}/admin/go-up.png'/></a>{else} {/if}</td>
|
||||
<td width="15px">{if $section.down}<a style="cursor:pointer;" onclick="load_list('position', '{$section.ID}', '{$section.NEXTPOS}')"><img src='{$plugin.PATH}/admin/go-down.png'/></a>{else} {/if}</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
|
||||
</table>
|
||||
{/if}
|
BIN
plugins/AMenuManager/admin/go-down.png
Normal file
BIN
plugins/AMenuManager/admin/go-down.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 720 B |
BIN
plugins/AMenuManager/admin/go-up.png
Normal file
BIN
plugins/AMenuManager/admin/go-up.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 630 B |
33
plugins/AMenuManager/admin/index.php
Executable file
33
plugins/AMenuManager/admin/index.php
Executable file
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | PhpWebGallery - a PHP based picture gallery |
|
||||
// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
|
||||
// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | file : $Id: index.php 1912 2007-03-16 06:30:07Z rub $
|
||||
// | last update : $Date: 2007-03-16 07:30:07 +0100 (ven, 16 mar 2007) $
|
||||
// | last modifier : $Author: rub $
|
||||
// | revision : $Revision: 1912 $
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | This program is free software; you can redistribute it and/or modify |
|
||||
// | it under the terms of the GNU General Public License as published by |
|
||||
// | the Free Software Foundation |
|
||||
// | |
|
||||
// | This program is distributed in the hope that it will be useful, but |
|
||||
// | WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
||||
// | General Public License for more details. |
|
||||
// | |
|
||||
// | You should have received a copy of the GNU General Public License |
|
||||
// | along with this program; if not, write to the Free Software |
|
||||
// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
|
||||
// | USA. |
|
||||
// +-----------------------------------------------------------------------+
|
||||
|
||||
// Recursive call
|
||||
$url = '../';
|
||||
header( 'Request-URI: '.$url );
|
||||
header( 'Content-Location: '.$url );
|
||||
header( 'Location: '.$url );
|
||||
exit();
|
||||
?>
|
28
plugins/AMenuManager/admin/plugin_admin.php
Executable file
28
plugins/AMenuManager/admin/plugin_admin.php
Executable file
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
/* -----------------------------------------------------------------------------
|
||||
Plugin : Advanced Menu Manager
|
||||
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 ! >>
|
||||
------------------------------------------------------------------------------
|
||||
See main.inc.php for release information
|
||||
|
||||
--------------------------------------------------------------------------- */
|
||||
|
||||
if (!defined('PHPWG_ROOT_PATH')) { die('Hacking attempt!'); }
|
||||
|
||||
include(AMM_PATH."amm_aip.class.inc.php");
|
||||
|
||||
global $prefixeTable;
|
||||
|
||||
load_language('plugin.lang', AMM_PATH);
|
||||
|
||||
$main_plugin_object = get_plugin_data($plugin_id);
|
||||
|
||||
$plugin_ai = new AMM_AIP($prefixeTable, $main_plugin_object->get_filelocation());
|
||||
$plugin_ai->manage();
|
||||
|
||||
?>
|
4
plugins/AMenuManager/amm.css
Normal file
4
plugins/AMenuManager/amm.css
Normal file
|
@ -0,0 +1,4 @@
|
|||
|
||||
.littlefont { font-size:90%; }
|
||||
table.littlefont th { text-align:center; padding:3px;padding-left:9px;padding-right:9px; }
|
||||
table.littlefont td { text-align:left; padding:0px;padding-left:3px;padding-right:3px; }
|
25
plugins/AMenuManager/amm.sql
Normal file
25
plugins/AMenuManager/amm.sql
Normal file
|
@ -0,0 +1,25 @@
|
|||
|
||||
-- *************************************************************** -- EOQ
|
||||
-- * SQL export made with Grum Plugins Classes (Export tool r1.3) -- EOQ
|
||||
-- * Export date :2008-08-02 02:51:37 -- EOQ
|
||||
-- * Export options : [drop] [create] [insert] -- EOQ
|
||||
-- *************************************************************** -- EOQ
|
||||
|
||||
|
||||
|
||||
-- *************************************************************** -- EOQ
|
||||
-- * Statements for piwigo_amm_urls table -- EOQ
|
||||
-- *************************************************************** -- EOQ
|
||||
DROP TABLE `piwigo_amm_urls`; -- EOQ
|
||||
CREATE TABLE `piwigo_amm_urls` (
|
||||
`id` int(11) NOT NULL auto_increment,
|
||||
`label` varchar(50) NOT NULL default '',
|
||||
`url` varchar(255) NOT NULL default '',
|
||||
`mode` int(11) NOT NULL default '0',
|
||||
`icon` varchar(50) NOT NULL default '',
|
||||
`position` int(11) NOT NULL default '0',
|
||||
`visible` char(1) NOT NULL default 'y',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `order_key` (`position`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- EOQ
|
||||
INSERT INTO `piwigo_amm_urls` VALUES('1', 'Test', 'http://192.168.1.1', '0', 'internet.png', '0', 'y'); -- EOQ
|
39
plugins/AMenuManager/amm_aim.class.inc.php
Executable file
39
plugins/AMenuManager/amm_aim.class.inc.php
Executable file
|
@ -0,0 +1,39 @@
|
|||
<?php
|
||||
/* -----------------------------------------------------------------------------
|
||||
Plugin : Advanced Menu Manager
|
||||
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 ! >>
|
||||
------------------------------------------------------------------------------
|
||||
See main.inc.php for release information
|
||||
|
||||
AMM_AIM : classe to manage plugin integration into plugin menu
|
||||
|
||||
--------------------------------------------------------------------------- */
|
||||
|
||||
if (!defined('PHPWG_ROOT_PATH')) { die('Hacking attempt!'); }
|
||||
|
||||
include_once('amm_root.class.inc.php');
|
||||
|
||||
class AMM_AIM extends AMM_root
|
||||
{
|
||||
function AMM_AIM($prefixeTable, $filelocation)
|
||||
{
|
||||
parent::__construct($prefixeTable, $filelocation);
|
||||
}
|
||||
|
||||
/*
|
||||
initialize events call for the plugin
|
||||
*/
|
||||
function init_events()
|
||||
{
|
||||
add_event_handler('get_admin_plugin_menu_links', array(&$this, 'plugin_admin_menu') );
|
||||
}
|
||||
|
||||
} // amm_aim class
|
||||
|
||||
|
||||
?>
|
642
plugins/AMenuManager/amm_aip.class.inc.php
Executable file
642
plugins/AMenuManager/amm_aip.class.inc.php
Executable file
|
@ -0,0 +1,642 @@
|
|||
<?php
|
||||
/* -----------------------------------------------------------------------------
|
||||
Plugin : Advanced Menu Manager
|
||||
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 ! >>
|
||||
------------------------------------------------------------------------------
|
||||
See main.inc.php for release information
|
||||
|
||||
AIP classe => manage integration in administration interface
|
||||
|
||||
--------------------------------------------------------------------------- */
|
||||
if (!defined('PHPWG_ROOT_PATH')) { die('Hacking attempt!'); }
|
||||
|
||||
include_once(PHPWG_PLUGINS_PATH.'AMenuManager/amm_root.class.inc.php');
|
||||
include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
|
||||
include_once(PHPWG_PLUGINS_PATH.'grum_plugins_classes-2/css.class.inc.php');
|
||||
include_once(PHPWG_PLUGINS_PATH.'grum_plugins_classes-2/ajax.class.inc.php');
|
||||
include_once(PHPWG_PLUGINS_PATH.'grum_plugins_classes-2/genericjs.class.inc.php');
|
||||
|
||||
class AMM_AIP extends AMM_root
|
||||
{
|
||||
protected $tabsheet;
|
||||
protected $css; //the css object
|
||||
protected $ajax;
|
||||
|
||||
protected $urls_modes=array(0 => 'new_window', 1 => 'current_window');
|
||||
|
||||
function AMM_AIP($prefixeTable, $filelocation)
|
||||
{
|
||||
parent::__construct($prefixeTable, $filelocation);
|
||||
|
||||
$this->load_config();
|
||||
$this->init_events();
|
||||
|
||||
$this->tabsheet = new tabsheet();
|
||||
$this->tabsheet->add('setmenu',
|
||||
l10n('g002_setmenu'),
|
||||
$this->page_link.'&fAMM_tabsheet=setmenu');
|
||||
$this->tabsheet->add('links',
|
||||
l10n('g002_addlinks'),
|
||||
$this->page_link.'&fAMM_tabsheet=links');
|
||||
$this->tabsheet->add('randompict',
|
||||
l10n('g002_randompict'),
|
||||
$this->page_link.'&fAMM_tabsheet=randompict');
|
||||
$this->tabsheet->add('personnalblock',
|
||||
l10n('g002_personnalblock'),
|
||||
$this->page_link.'&fAMM_tabsheet=personnalblock');
|
||||
$this->css = new css(dirname($this->filelocation).'/'.$this->plugin_name_files.".css");
|
||||
$this->ajax = new Ajax();
|
||||
}
|
||||
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
Public classe functions
|
||||
--------------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
manage plugin integration into piwigo's admin interface
|
||||
*/
|
||||
public function manage()
|
||||
{
|
||||
global $template;
|
||||
|
||||
|
||||
$template->set_filename('plugin_admin_content', dirname(__FILE__)."/admin/amm_admin.tpl");
|
||||
|
||||
$this->return_ajax_content();
|
||||
|
||||
$this->init_request();
|
||||
|
||||
$this->tabsheet->select($_REQUEST['fAMM_tabsheet']);
|
||||
$this->tabsheet->assign();
|
||||
$selected_tab=$this->tabsheet->get_selected();
|
||||
$template->assign($this->tabsheet->get_titlename(), "[".$selected_tab['caption']."]");
|
||||
|
||||
$template_plugin["AMM_VERSION"] = "<i>".$this->plugin_name."</i> ".l10n('g002_version').AMM_VERSION;
|
||||
$template_plugin["AMM_PAGE"] = $_REQUEST['fAMM_tabsheet'];
|
||||
$template_plugin["PATH"] = AMM_PATH;
|
||||
|
||||
$template->assign('plugin', $template_plugin);
|
||||
|
||||
|
||||
if(isset($_POST['famm_modeedit']))
|
||||
{
|
||||
$post_action=$_POST['famm_modeedit'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$post_action="";
|
||||
}
|
||||
|
||||
$page_nfo="";
|
||||
if($_REQUEST['fAMM_tabsheet']=='links')
|
||||
{
|
||||
$page_nfo=l10n('g002_addlinks_nfo');
|
||||
|
||||
switch($_REQUEST['action'])
|
||||
{
|
||||
case 'list':
|
||||
$this->display_links_list_page();
|
||||
break;
|
||||
case 'create':
|
||||
case 'modify':
|
||||
if($post_action==$_REQUEST['action'])
|
||||
{
|
||||
if(!$this->adviser_abort())
|
||||
{
|
||||
$this->action_create_modify_url();
|
||||
}
|
||||
$this->display_links_list_page();
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->display_links_manage_page($_REQUEST['action']);
|
||||
}
|
||||
break;
|
||||
case 'config':
|
||||
if($post_action==$_REQUEST['action'])
|
||||
{
|
||||
if(!$this->adviser_abort())
|
||||
{
|
||||
$this->action_modify_config();
|
||||
}
|
||||
}
|
||||
$this->display_links_config_page();
|
||||
break;
|
||||
}
|
||||
}
|
||||
elseif($_REQUEST['fAMM_tabsheet']=='randompict')
|
||||
{
|
||||
$page_nfo=l10n('g002_randompict_nfo');
|
||||
}
|
||||
elseif($_REQUEST['fAMM_tabsheet']=='personnalblock')
|
||||
{
|
||||
$page_nfo=l10n('g002_personnalblock_nfo');
|
||||
}
|
||||
elseif($_REQUEST['fAMM_tabsheet']=='setmenu')
|
||||
{
|
||||
$page_nfo=l10n('g002_setmenu_nfo');
|
||||
$this->display_sections_list_page();
|
||||
}
|
||||
|
||||
$template->assign('page_nfo', $page_nfo);
|
||||
|
||||
$template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');
|
||||
}
|
||||
|
||||
/*
|
||||
initialize events call for the plugin
|
||||
*/
|
||||
public function init_events()
|
||||
{
|
||||
add_event_handler('menubar_file', array(&$this, 'plugin_public_menu') );
|
||||
add_event_handler('loc_end_page_header', array(&$this->css, 'apply_CSS'));
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
Private classe functions
|
||||
--------------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
return ajax content
|
||||
*/
|
||||
protected function return_ajax_content()
|
||||
{
|
||||
global $ajax, $template;
|
||||
|
||||
if(isset($_REQUEST['ajaxfct']))
|
||||
{
|
||||
//$this->debug("AJAXFCT:".$_REQUEST['ajaxfct']);
|
||||
$result="<p class='errors'>".l10n('g002_error_invalid_ajax_call')."</p>";
|
||||
switch($_REQUEST['ajaxfct'])
|
||||
{
|
||||
case 'links_list':
|
||||
$result=$this->ajax_amm_links_list();
|
||||
break;
|
||||
case 'links_permut':
|
||||
$result=$this->ajax_amm_links_permut($_REQUEST['fItem'], $_REQUEST['fPermut']);
|
||||
break;
|
||||
case 'links_delete':
|
||||
$result=$this->ajax_amm_links_delete($_REQUEST['fItem']);
|
||||
break;
|
||||
case 'sections_list':
|
||||
$result=$this->ajax_amm_section_list();
|
||||
break;
|
||||
case 'sections_position':
|
||||
$result=$this->ajax_amm_section_position($_REQUEST['fItem'], $_REQUEST['fPosition']);
|
||||
break;
|
||||
case 'sections_showhide':
|
||||
$result=$this->ajax_amm_section_showhide($_REQUEST['fItem']);
|
||||
break;
|
||||
}
|
||||
//$template->
|
||||
$this->ajax->return_result($result);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
if empty, initialize $_request
|
||||
*/
|
||||
private function init_request()
|
||||
{
|
||||
//initialise $REQUEST values if not defined
|
||||
if(!array_key_exists('fAMM_tabsheet', $_REQUEST))
|
||||
{
|
||||
$_REQUEST['fAMM_tabsheet']='setmenu';
|
||||
}
|
||||
|
||||
if(($_REQUEST['fAMM_tabsheet']=='links') and !isset($_REQUEST['action']))
|
||||
{
|
||||
$_REQUEST['action']='list';
|
||||
}
|
||||
|
||||
|
||||
} //init_request
|
||||
|
||||
|
||||
/*
|
||||
manage display for urls table page
|
||||
*/
|
||||
private function display_links_list_page()
|
||||
{
|
||||
global $template, $user;
|
||||
$template->set_filename('body_page',
|
||||
dirname($this->filelocation).'/admin/amm_linkslist.tpl');
|
||||
|
||||
$tmp=$this->get_count_url();
|
||||
if($tmp==0)
|
||||
{
|
||||
$tmp=l10n("g002_nolinks");
|
||||
}
|
||||
elseif($tmp==1)
|
||||
{
|
||||
$tmp="1 ".l10n("g002_link");
|
||||
}
|
||||
else
|
||||
{
|
||||
$tmp=$tmp." ".l10n("g002_links");
|
||||
}
|
||||
|
||||
|
||||
$template_datas=array(
|
||||
'lnk_create' => $this->page_link.'&fAMM_tabsheet=links&action=create',
|
||||
'lnk_config' => $this->page_link.'&fAMM_tabsheet=links&action=config',
|
||||
'AMM_AJAX_URL_LIST' => $this->page_link."&ajaxfct=",
|
||||
'nburl' => $tmp
|
||||
);
|
||||
|
||||
$template->assign("datas", $template_datas);
|
||||
$template->assign_var_from_handle('AMM_BODY_PAGE', 'body_page');
|
||||
}
|
||||
|
||||
/*
|
||||
manage display for urls config page
|
||||
*/
|
||||
private function display_links_config_page()
|
||||
{
|
||||
global $template, $user;
|
||||
$template->set_filename('body_page',
|
||||
dirname($this->filelocation).'/admin/amm_linksconfig.tpl');
|
||||
|
||||
$template_datas=array(
|
||||
'lnk_list' => $this->page_link.'&fAMM_tabsheet=links',
|
||||
'AMM_AJAX_URL_LIST' => $this->page_link."&ajaxfct=",
|
||||
'show_icons_selected' => $this->my_config['amm_links_show_icons'],
|
||||
'active_selected' => $this->my_config['amm_links_active'],
|
||||
'lang_selected' => $user['language']
|
||||
);
|
||||
|
||||
$template_datas['language_list'] = array();
|
||||
foreach($this->my_config['amm_links_title'] as $key => $val)
|
||||
{
|
||||
$template_datas['language_list'][] = array(
|
||||
'LANG' => $key,
|
||||
'MENUBARTIT' => base64_decode($val)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
$lang=get_languages();
|
||||
foreach($lang as $key => $val)
|
||||
{
|
||||
$template_datas['language_list_values'][] = $key;
|
||||
$template_datas['language_list_labels'][] = $val;
|
||||
}
|
||||
|
||||
|
||||
$template_datas['yesno_values'] = array('y','n');
|
||||
$template_datas['yesno_labels'][] = l10n('g002_yesno_y');
|
||||
$template_datas['yesno_labels'][] = l10n('g002_yesno_n');
|
||||
|
||||
|
||||
$template->assign("datas", $template_datas);
|
||||
$template->assign_var_from_handle('AMM_BODY_PAGE', 'body_page');
|
||||
}
|
||||
|
||||
/*
|
||||
manage display for urls create/modify page
|
||||
*/
|
||||
private function display_links_manage_page($modeedit = 'create', $urlid=0)
|
||||
{
|
||||
global $template, $user;
|
||||
$template->set_filename('body_page',
|
||||
dirname($this->filelocation).'/admin/amm_linkslist_edit.tpl');
|
||||
|
||||
$extensions_list=array('jpg'=>0,'jpeg'=>0,'gif'=>0,'png'=>0);
|
||||
$template_icons_list=array();
|
||||
$directory=dir(dirname($this->filelocation).'/links_pictures/');
|
||||
while($file=$directory->read())
|
||||
{
|
||||
if(isset($extensions_list[get_extension(strtolower($file))]))
|
||||
{
|
||||
$template_icons_list[]=$file;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if($modeedit=='modify')
|
||||
{
|
||||
$url=$this->get_url($urlid);
|
||||
|
||||
$template_datas=array(
|
||||
'id' => $urlid,
|
||||
'modeedit' => 'modify',
|
||||
'label' => $url['label'],
|
||||
'url' => $url['url'],
|
||||
'icons_selected' => $url['icon'],
|
||||
'mode_selected' => $url['mode'],
|
||||
'visible_selected' => $url['visible']
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$template_datas=array(
|
||||
'id' => '',
|
||||
'modeedit' => 'create',
|
||||
'label' => '',
|
||||
'url' => '',
|
||||
'icons_selected' => $template_icons_list[0],
|
||||
'mode_selected' => 0,
|
||||
'visible_selected' => 'y'
|
||||
);
|
||||
}
|
||||
|
||||
$template_datas['lnk_list'] = $this->page_link.'&fAMM_tabsheet=links';
|
||||
$template_datas['icons_img'] = AMM_PATH."links_pictures/".$template_datas['icons_selected'];
|
||||
$template_datas['icons_values'] = array();
|
||||
foreach($template_icons_list as $key => $val)
|
||||
{
|
||||
$template_datas['icons_values'][] = array(
|
||||
'img' => AMM_PATH."links_pictures/".$val,
|
||||
'value' => $val,
|
||||
'label' => $val
|
||||
);
|
||||
}
|
||||
$template_datas['mode_values'] = array(0,1);
|
||||
$template_datas['mode_labels'][] = l10n("g002_mode_".$this->urls_modes[0]);
|
||||
$template_datas['mode_labels'][] = l10n("g002_mode_".$this->urls_modes[1]);
|
||||
$template_datas['visible_values'] = array('y','n');
|
||||
$template_datas['visible_labels'][] = l10n('g002_yesno_y');
|
||||
$template_datas['visible_labels'][] = l10n('g002_yesno_n');
|
||||
|
||||
$template->assign("datas", $template_datas);
|
||||
$template->assign_var_from_handle('AMM_BODY_PAGE', 'body_page');
|
||||
}
|
||||
|
||||
/*
|
||||
manage create/modify url into database and display result
|
||||
*/
|
||||
protected function action_create_modify_url()
|
||||
{
|
||||
$datas=array(
|
||||
'id' => $_POST['famm_id'],
|
||||
'label' => $_POST['famm_label'],
|
||||
'url' => $_POST['famm_url'],
|
||||
'mode' => $_POST['famm_mode'],
|
||||
'icon' => $_POST['famm_icon'],
|
||||
'position' => 0,
|
||||
'visible' => $_POST['famm_visible']
|
||||
);
|
||||
|
||||
switch($_POST['famm_modeedit'])
|
||||
{
|
||||
case 'create':
|
||||
$this->add_url($datas);
|
||||
break;
|
||||
case 'modify':
|
||||
$this->modify_url($datas);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
manage urls config save into database
|
||||
*/
|
||||
protected function action_modify_config()
|
||||
{
|
||||
$this->my_config['amm_links_show_icons']=$_POST['famm_links_show_icons'];
|
||||
$this->my_config['amm_links_active']=$_POST['famm_links_active'];
|
||||
$languages=get_languages();
|
||||
foreach($languages as $key => $val)
|
||||
{
|
||||
$this->my_config['amm_links_title'][$key]=base64_encode(stripslashes($_POST['famm_links_title_'.$key]));
|
||||
}
|
||||
$this->save_config();
|
||||
}
|
||||
|
||||
/*
|
||||
manage display for sections table page
|
||||
*/
|
||||
private function display_sections_list_page()
|
||||
{
|
||||
global $template, $user;
|
||||
$template->set_filename('body_page',
|
||||
dirname($this->filelocation).'/admin/amm_sectionslist.tpl');
|
||||
|
||||
$template_datas=array(
|
||||
'AMM_AJAX_URL_LIST' => $this->page_link."&ajaxfct=",
|
||||
);
|
||||
|
||||
$template->assign("datas", $template_datas);
|
||||
$template->assign_var_from_handle('AMM_BODY_PAGE', 'body_page');
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
manage adviser profile
|
||||
return true if user is adviser
|
||||
*/
|
||||
protected function adviser_abort()
|
||||
{
|
||||
if(is_adviser())
|
||||
{
|
||||
$this->display_result(l10n("g002_adviser_not_allowed"), false);
|
||||
return(true);
|
||||
}
|
||||
return(false);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
functions to manage urls tables
|
||||
--------------------------------------------------------------------------- */
|
||||
// protected function get_urls()
|
||||
// protected function get_count_url()
|
||||
// => defined in root class
|
||||
|
||||
// return properties of an given url
|
||||
private function get_url($url_id)
|
||||
{
|
||||
$returned=array();
|
||||
$sql="SELECT * FROM ".$this->tables['urls']." WHERE id = '".$url_id."'";
|
||||
$result=pwg_query($sql);
|
||||
if($result)
|
||||
{
|
||||
$returned=mysql_fetch_array($result);
|
||||
}
|
||||
return($returned);
|
||||
}
|
||||
|
||||
// permut position of two 2 urls
|
||||
private function permut_url($url_id, $url_permut)
|
||||
{
|
||||
$sql="SELECT id, position FROM ".$this->tables['urls']." WHERE id IN ('".$url_id."','".$url_permut."')";
|
||||
$result=pwg_query($sql);
|
||||
if($result)
|
||||
{
|
||||
$tmp=array();
|
||||
while($row=mysql_fetch_array($result))
|
||||
{
|
||||
$tmp[$row['id']]=$row['position'];
|
||||
}
|
||||
$sql="UPDATE ".$this->tables['urls']." SET position = ".$tmp[$url_id]." WHERE id = '".$url_permut."'";
|
||||
pwg_query($sql);
|
||||
$sql="UPDATE ".$this->tables['urls']." SET position = ".$tmp[$url_permut]." WHERE id = '".$url_id."'";
|
||||
pwg_query($sql);
|
||||
}
|
||||
}
|
||||
|
||||
// delete an url
|
||||
private function delete_url($url_id)
|
||||
{
|
||||
$sql="DELETE FROM ".$this->tables['urls']." WHERE id = '".$url_id."' ";
|
||||
return(pwg_query($sql));
|
||||
}
|
||||
|
||||
// add an url
|
||||
private function add_url($datas)
|
||||
{
|
||||
$numurl=$this->get_count_url();
|
||||
$sql="INSERT INTO ".$this->tables['urls']." (id, label, url, mode, icon, position, visible)
|
||||
VALUES ('', '".addslashes($datas['label'])."', '".$datas['url']."', '".$datas['mode']."',
|
||||
'".$datas['icon']."', '".$numurl."', '".$datas['visible']."')";
|
||||
return(pwg_query($sql));
|
||||
}
|
||||
|
||||
// modify an url
|
||||
private function modify_url($datas)
|
||||
{
|
||||
$sql="UPDATE ".$this->tables['urls']." SET label = '".addslashes($datas['label'])."',
|
||||
url = '".$datas['url']."', mode = '".$datas['mode']."', icon = '".$datas['icon']."',
|
||||
visible = '".$datas['visible']."'
|
||||
WHERE id = '".$datas['id']."'";
|
||||
return(pwg_query($sql));
|
||||
}
|
||||
|
||||
// just modify url visibility
|
||||
private function set_url_visibility($urlid, $visible)
|
||||
{
|
||||
$sql="UPDATE ".$this->tables['urls']." SET visible = '".$visible."'
|
||||
WHERE id = '".$urlid."'";
|
||||
return(pwg_query($sql));
|
||||
}
|
||||
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
ajax functions
|
||||
--------------------------------------------------------------------------- */
|
||||
|
||||
// return a html formatted list of urls
|
||||
private function ajax_amm_links_list()
|
||||
{
|
||||
global $template, $user;
|
||||
$local_tpl = new Template(AMM_PATH."admin/", "");
|
||||
$local_tpl->set_filename('body_page',
|
||||
dirname($this->filelocation).'/admin/amm_linkslist_detail.tpl');
|
||||
|
||||
$template_datas['urls']=array();
|
||||
$urls=$this->get_urls();
|
||||
for($i=0;$i<count($urls);$i++)
|
||||
{
|
||||
$template_datas['urls'][]=array(
|
||||
'img' => AMM_PATH."links_pictures/".$urls[$i]['icon'],
|
||||
'label' => $urls[$i]['label'],
|
||||
'url' => $urls[$i]['url'],
|
||||
'mode' => l10n("g002_mode_".$this->urls_modes[$urls[$i]['mode']]),
|
||||
'up' => ($i==0)?false:true,
|
||||
'down' => ($i<(count($urls)-1))?true:false,
|
||||
'edit' => $this->page_link.'&fAMM_tabsheet=links&action=modify&fItem='.$urls[$i]['id'],
|
||||
'ID' => $urls[$i]['id'],
|
||||
'IDPREV' => ($i==0)?0:$urls[$i-1]['id'],
|
||||
'IDNEXT' => ($i<(count($urls)-1))?$urls[$i+1]['id']:0,
|
||||
'visible' => l10n('g002_yesno_'.$urls[$i]['visible'])
|
||||
);
|
||||
}
|
||||
|
||||
$themeconf=array(
|
||||
'icon_dir' => $template->get_themeconf('icon_dir')
|
||||
);
|
||||
|
||||
$local_tpl->assign('themeconf', $themeconf);
|
||||
$local_tpl->assign('datas', $template_datas);
|
||||
$local_tpl->assign('plugin', array('PATH' => AMM_PATH));
|
||||
|
||||
return($local_tpl->parse('body_page', true));
|
||||
}
|
||||
|
||||
// permut position of 2 urls and returns a html formatted list of urls
|
||||
private function ajax_amm_links_permut($urlid, $urlpermut)
|
||||
{
|
||||
$this->permut_url($urlid, $urlpermut);
|
||||
return($this->ajax_amm_links_list());
|
||||
}
|
||||
|
||||
// delete an url and returns a html formatted list of urls
|
||||
private function ajax_amm_links_delete($urlid)
|
||||
{
|
||||
if(!$this->adviser_abort())
|
||||
{
|
||||
$this->delete_url($urlid);
|
||||
}
|
||||
return($this->ajax_amm_links_list());
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// return a html formatted list of menu's sections
|
||||
private function ajax_amm_section_list()
|
||||
{
|
||||
global $menu;
|
||||
$local_tpl = new Template(AMM_PATH."admin/", "");
|
||||
$local_tpl->set_filename('body_page',
|
||||
dirname($this->filelocation).'/admin/amm_sectionslist_detail.tpl');
|
||||
|
||||
$sections=$menu->registered();
|
||||
$i=0;
|
||||
foreach($sections as $key => $val)
|
||||
{
|
||||
$template_datas['sections'][]=array(
|
||||
'OWNER' => $val['OWNER'],
|
||||
'NAME' => l10n($val['NAME']),
|
||||
'ID' => $key,
|
||||
'VISIBLE' => l10n('g002_yesno_'.$this->my_config['amm_sections_visible'][$key]),
|
||||
'POSITION' => $val['POSITION'],
|
||||
'NEXTPOS' => $val['POSITION']+2,
|
||||
'PREVPOS' => $val['POSITION']-1,
|
||||
'up' => ($i==0)?false:true,
|
||||
'down' => ($i<(count($sections)-1))?true:false
|
||||
);
|
||||
$i++;
|
||||
}
|
||||
|
||||
$local_tpl->assign('datas', $template_datas);
|
||||
$local_tpl->assign('plugin', array('PATH' => AMM_PATH));
|
||||
|
||||
return($local_tpl->parse('body_page', true));
|
||||
}
|
||||
|
||||
// move item to the specified position
|
||||
private function ajax_amm_section_position($urlid, $position)
|
||||
{
|
||||
global $menu;
|
||||
|
||||
$menu->register_position($urlid, $position);
|
||||
return($this->ajax_amm_section_list());
|
||||
}
|
||||
|
||||
// move item to the specified position
|
||||
private function ajax_amm_section_showhide($urlid)
|
||||
{
|
||||
global $menu;
|
||||
|
||||
$switchvisible=array('y'=>'n', 'n'=>'y');
|
||||
|
||||
$this->my_config['amm_sections_visible'][$urlid]=$switchvisible[$this->my_config['amm_sections_visible'][$urlid]];
|
||||
$this->save_config();
|
||||
|
||||
return($this->ajax_amm_section_list());
|
||||
}
|
||||
|
||||
|
||||
} // AMM_AIP class
|
||||
|
||||
|
||||
?>
|
84
plugins/AMenuManager/amm_install.class.inc.php
Normal file
84
plugins/AMenuManager/amm_install.class.inc.php
Normal file
|
@ -0,0 +1,84 @@
|
|||
<?php
|
||||
/* -----------------------------------------------------------------------------
|
||||
Plugin : Advanced Menu Manager
|
||||
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 ! >>
|
||||
------------------------------------------------------------------------------
|
||||
See main.inc.php for release information
|
||||
|
||||
MyPolls_Install : classe to manage plugin install
|
||||
|
||||
--------------------------------------------------------------------------- */
|
||||
@include_once('amm_root.class.inc.php');
|
||||
include_once(PHPWG_PLUGINS_PATH.'grum_plugins_classes-2/tables.class.inc.php');
|
||||
|
||||
|
||||
class AMM_install extends AMM_root
|
||||
{
|
||||
private $tablef;
|
||||
private $exportfile;
|
||||
|
||||
public function AMM_install($prefixeTable, $filelocation)
|
||||
{
|
||||
parent::__construct($prefixeTable, $filelocation);
|
||||
$this->tablef= new manage_tables($this->tables);
|
||||
$this->exportfile=dirname($this->filelocation).'/'.$this->plugin_name_files.'.sql';
|
||||
}
|
||||
|
||||
/*
|
||||
function for installation process
|
||||
return true if install process is ok, otherwise false
|
||||
*/
|
||||
public function install()
|
||||
{
|
||||
|
||||
$tables_def=array(
|
||||
"CREATE TABLE `".$this->tables['urls']."` (
|
||||
`id` int(11) NOT NULL auto_increment,
|
||||
`label` varchar(50) NOT NULL default '',
|
||||
`url` varchar(255) NOT NULL default '',
|
||||
`mode` int(11) NOT NULL default '0',
|
||||
`icon` varchar(50) NOT NULL default '',
|
||||
`position` int(11) NOT NULL default '0',
|
||||
`visible` char(1) NOT NULL default 'y',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `order_key` (`position`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1"
|
||||
);
|
||||
//$table_def array
|
||||
|
||||
$result=$this->tablef->create_tables($tables_def);
|
||||
return($result);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
function for uninstall process
|
||||
*/
|
||||
public function uninstall()
|
||||
{
|
||||
$this->tablef->export($this->exportfile);
|
||||
$this->delete_config();
|
||||
$this->tablef->drop_tables();
|
||||
}
|
||||
|
||||
public function activate()
|
||||
{
|
||||
global $template;
|
||||
|
||||
$this->init_config();
|
||||
$this->load_config();
|
||||
$this->save_config();
|
||||
}
|
||||
|
||||
public function deactivate()
|
||||
{
|
||||
}
|
||||
|
||||
} //class
|
||||
|
||||
?>
|
92
plugins/AMenuManager/amm_pip.class.inc.php
Normal file
92
plugins/AMenuManager/amm_pip.class.inc.php
Normal file
|
@ -0,0 +1,92 @@
|
|||
<?php
|
||||
/* -----------------------------------------------------------------------------
|
||||
Plugin : Advanced Menu Manager
|
||||
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 ! >>
|
||||
------------------------------------------------------------------------------
|
||||
See main.inc.php for release information
|
||||
|
||||
PIP classe => manage integration in public interface
|
||||
|
||||
--------------------------------------------------------------------------- */
|
||||
if (!defined('PHPWG_ROOT_PATH')) { die('Hacking attempt!'); }
|
||||
|
||||
include_once(PHPWG_PLUGINS_PATH.'AMenuManager/amm_root.class.inc.php');
|
||||
|
||||
class AMM_PIP extends AMM_root
|
||||
{
|
||||
function AMM_PIP($prefixeTable, $filelocation)
|
||||
{
|
||||
parent::__construct($prefixeTable, $filelocation);
|
||||
|
||||
$this->load_config();
|
||||
$this->init_events();
|
||||
}
|
||||
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
Public classe functions
|
||||
--------------------------------------------------------------------------- */
|
||||
|
||||
|
||||
/*
|
||||
initialize events call for the plugin
|
||||
*/
|
||||
public function init_events()
|
||||
{
|
||||
add_event_handler('loc_begin_menubar', array(&$this, 'modify_menu') );
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
protected classe functions
|
||||
--------------------------------------------------------------------------- */
|
||||
public function modify_menu()
|
||||
{
|
||||
global $menu, $user;
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Add a new section (links)
|
||||
*/
|
||||
$urls=$this->get_urls(true);
|
||||
if(($this->my_config['amm_links_active']=='y')and(count($urls)>0))
|
||||
{
|
||||
if($this->my_config['amm_links_show_icons']=='y')
|
||||
{
|
||||
for($i=0;$i<count($urls);$i++)
|
||||
{
|
||||
$urls[$i]['icon']=AMM_PATH."links_pictures/".$urls[$i]['icon'];
|
||||
}
|
||||
}
|
||||
|
||||
$section = new Section('mbAMM_links', base64_decode($this->my_config['amm_links_title'][$user['language']]), dirname(__FILE__).'/menu_templates/menubar_links.tpl');
|
||||
$section->set_items(array(
|
||||
'LINKS' => $urls,
|
||||
'icons' => 'y'
|
||||
));
|
||||
$menu->add($section->get());
|
||||
}
|
||||
|
||||
/*
|
||||
Hide sections
|
||||
*/
|
||||
foreach($this->my_config['amm_sections_visible'] as $key => $val)
|
||||
{
|
||||
if($val=='n')
|
||||
{
|
||||
$menu->remove($key);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
} // AMM_PIP class
|
||||
|
||||
|
||||
?>
|
113
plugins/AMenuManager/amm_root.class.inc.php
Normal file
113
plugins/AMenuManager/amm_root.class.inc.php
Normal file
|
@ -0,0 +1,113 @@
|
|||
<?php
|
||||
/* -----------------------------------------------------------------------------
|
||||
Plugin : Advanced Menu Manager
|
||||
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 ! >>
|
||||
------------------------------------------------------------------------------
|
||||
See main.inc.php for release information
|
||||
|
||||
AMM_root : root classe for plugin
|
||||
|
||||
--------------------------------------------------------------------------- */
|
||||
|
||||
if (!defined('PHPWG_ROOT_PATH')) { die('Hacking attempt!'); }
|
||||
|
||||
include_once(PHPWG_PLUGINS_PATH.'grum_plugins_classes-2/common_plugin.class.inc.php');
|
||||
|
||||
class AMM_root extends common_plugin
|
||||
{
|
||||
function AMM_root($prefixeTable, $filelocation)
|
||||
{
|
||||
$this->plugin_name="Advanced Menu Manager";
|
||||
$this->plugin_name_files="amm";
|
||||
parent::__construct($prefixeTable, $filelocation);
|
||||
|
||||
$list=array('urls');
|
||||
$this->set_tables_list($list);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
common AIP & PIP functions
|
||||
--------------------------------------------------------------------------- */
|
||||
|
||||
/* this function initialize var $my_config with default values */
|
||||
public function init_config()
|
||||
{
|
||||
global $menu;
|
||||
|
||||
$this->my_config=array(
|
||||
'amm_links_show_icons' => 'y',
|
||||
'amm_links_active' => 'y',
|
||||
'amm_links_title' => array(),
|
||||
'amm_sections_visible' => array()
|
||||
);
|
||||
|
||||
$languages=get_languages();
|
||||
foreach($languages as $key => $val)
|
||||
{
|
||||
if($key=='fr_FR')
|
||||
{
|
||||
$this->my_config['amm_links_title'][$key]='Liens';
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->my_config['amm_links_title'][$key]='Links';
|
||||
}
|
||||
}
|
||||
|
||||
$sections=$menu->registered();
|
||||
foreach($sections as $key => $val)
|
||||
{
|
||||
$this->my_config['amm_sections_visible'][$key]='y';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// return an array of urls (each url is an array)
|
||||
protected function get_urls($only_visible=false)
|
||||
{
|
||||
$returned=array();
|
||||
$sql="SELECT * FROM ".$this->tables['urls'];
|
||||
if($only_visible)
|
||||
{
|
||||
$sql.=" WHERE visible = 'y' ";
|
||||
}
|
||||
$sql.=" ORDER BY position";
|
||||
$result=pwg_query($sql);
|
||||
if($result)
|
||||
{
|
||||
while($row=mysql_fetch_array($result))
|
||||
{
|
||||
$returned[]=$row;
|
||||
}
|
||||
}
|
||||
return($returned);
|
||||
}
|
||||
|
||||
//return number of url
|
||||
protected function get_count_url($only_visible=false)
|
||||
{
|
||||
$returned=0;
|
||||
$sql="SELECT count(id) FROM ".$this->tables['urls'];
|
||||
if($only_visible)
|
||||
{
|
||||
$sql.=" WHERE visible = 'y' ";
|
||||
}
|
||||
$result=pwg_query($sql);
|
||||
if($result)
|
||||
{
|
||||
$tmp=mysql_fetch_row($result);
|
||||
$returned=$tmp[0];
|
||||
}
|
||||
return($returned);
|
||||
}
|
||||
|
||||
|
||||
} // amm_root class
|
||||
|
||||
|
||||
?>
|
33
plugins/AMenuManager/index.php
Executable file
33
plugins/AMenuManager/index.php
Executable file
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | PhpWebGallery - a PHP based picture gallery |
|
||||
// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
|
||||
// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | file : $Id: index.php 1912 2007-03-16 06:30:07Z rub $
|
||||
// | last update : $Date: 2007-03-16 07:30:07 +0100 (ven, 16 mar 2007) $
|
||||
// | last modifier : $Author: rub $
|
||||
// | revision : $Revision: 1912 $
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | This program is free software; you can redistribute it and/or modify |
|
||||
// | it under the terms of the GNU General Public License as published by |
|
||||
// | the Free Software Foundation |
|
||||
// | |
|
||||
// | This program is distributed in the hope that it will be useful, but |
|
||||
// | WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
||||
// | General Public License for more details. |
|
||||
// | |
|
||||
// | You should have received a copy of the GNU General Public License |
|
||||
// | along with this program; if not, write to the Free Software |
|
||||
// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
|
||||
// | USA. |
|
||||
// +-----------------------------------------------------------------------+
|
||||
|
||||
// Recursive call
|
||||
$url = '../';
|
||||
header( 'Request-URI: '.$url );
|
||||
header( 'Content-Location: '.$url );
|
||||
header( 'Location: '.$url );
|
||||
exit();
|
||||
?>
|
33
plugins/AMenuManager/language/en_UK/index.php
Executable file
33
plugins/AMenuManager/language/en_UK/index.php
Executable file
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | PhpWebGallery - a PHP based picture gallery |
|
||||
// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
|
||||
// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | file : $Id: index.php 1912 2007-03-16 06:30:07Z rub $
|
||||
// | last update : $Date: 2007-03-16 07:30:07 +0100 (ven, 16 mar 2007) $
|
||||
// | last modifier : $Author: rub $
|
||||
// | revision : $Revision: 1912 $
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | This program is free software; you can redistribute it and/or modify |
|
||||
// | it under the terms of the GNU General Public License as published by |
|
||||
// | the Free Software Foundation |
|
||||
// | |
|
||||
// | This program is distributed in the hope that it will be useful, but |
|
||||
// | WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
||||
// | General Public License for more details. |
|
||||
// | |
|
||||
// | You should have received a copy of the GNU General Public License |
|
||||
// | along with this program; if not, write to the Free Software |
|
||||
// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
|
||||
// | USA. |
|
||||
// +-----------------------------------------------------------------------+
|
||||
|
||||
// Recursive call
|
||||
$url = '../';
|
||||
header( 'Request-URI: '.$url );
|
||||
header( 'Content-Location: '.$url );
|
||||
header( 'Location: '.$url );
|
||||
exit();
|
||||
?>
|
58
plugins/AMenuManager/language/en_UK/plugin.lang.php
Executable file
58
plugins/AMenuManager/language/en_UK/plugin.lang.php
Executable file
|
@ -0,0 +1,58 @@
|
|||
<?php
|
||||
|
||||
$lang['Grum Plugin Classes is not installed'] = 'Plugin <b>Grum Plugin Classes</b> in not installed';
|
||||
|
||||
$lang['g002_title_page'] = 'Advanced Menu Management';
|
||||
$lang['g002_version'] = 'r';
|
||||
|
||||
$lang['g002_error_invalid_ajax_call'] = "Invalid function call !";
|
||||
|
||||
$lang['g002_setmenu'] = 'Menu management';
|
||||
$lang['g002_addlinks'] = 'Links';
|
||||
$lang['g002_randompict'] = 'Random picture';
|
||||
$lang['g002_personnalblock'] = 'Personalised menu';
|
||||
|
||||
$lang['g002_setmenu_nfo'] = 'Management of displayed menu\'s blocks';
|
||||
$lang['g002_addlinks_nfo'] = 'Menu\'s block allowing to display a list of hyperlink';
|
||||
$lang['g002_randompict_nfo'] = 'Menu\'s block allowing to display a random picture from the gallery';
|
||||
$lang['g002_personnalblock_nfo'] = 'Display personalised blocks into menu';
|
||||
|
||||
|
||||
$lang['g002_mode_new_window'] = 'New window';
|
||||
$lang['g002_mode_current_window'] = 'Current window';
|
||||
$lang['g002_addlink'] = 'Add a link';
|
||||
$lang['g002_label'] = 'Label';
|
||||
$lang['g002_url'] = 'URL';
|
||||
$lang['g002_mode'] = 'Mode';
|
||||
$lang['g002_icon'] = 'Representative picture';
|
||||
$lang['g002_visible'] = 'Visible';
|
||||
$lang['g002_linkslist'] = "Links list";
|
||||
$lang['g002_confirm_delete_link'] = "Delete link ?";
|
||||
$lang['g002_nolinks'] = 'No links';
|
||||
$lang['g002_link'] = 'link';
|
||||
$lang['g002_links'] = 'links';
|
||||
|
||||
$lang['g002_createoflink'] = 'Add link';
|
||||
$lang['g002_editoflink'] = 'Edit link';
|
||||
$lang['g002_createthelink'] = 'Add link';
|
||||
$lang['g002_editthelink'] = 'Edit link';
|
||||
|
||||
$lang['g002_configlinks'] = 'Links settings';
|
||||
$lang['g002_setting_link_block_menu'] = 'Menu integration';
|
||||
$lang['g002_setting_link_links']='Links';
|
||||
$lang['g002_setting_link_show_icon'] = 'Display links representative picture';
|
||||
$lang['g002_setting_link_block_active'] = 'Display block in menu';
|
||||
$lang['g002_setting_link_block_title'] = 'Block title';
|
||||
$lang['g002_apply'] = 'Apply';
|
||||
|
||||
$lang['g002_sectionslist'] = 'Menu\'s blocks';
|
||||
|
||||
$lang['g002_yesno_y'] = 'Yes';
|
||||
$lang['g002_yesno_n'] = 'No';
|
||||
|
||||
$lang['g002_owner'] = 'Owner';
|
||||
$lang['g002_sectionid'] = 'Identifier';
|
||||
$lang['g002_name'] = 'Label';
|
||||
|
||||
|
||||
?>
|
33
plugins/AMenuManager/language/fr_FR/index.php
Executable file
33
plugins/AMenuManager/language/fr_FR/index.php
Executable file
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | PhpWebGallery - a PHP based picture gallery |
|
||||
// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
|
||||
// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | file : $Id: index.php 1912 2007-03-16 06:30:07Z rub $
|
||||
// | last update : $Date: 2007-03-16 07:30:07 +0100 (ven, 16 mar 2007) $
|
||||
// | last modifier : $Author: rub $
|
||||
// | revision : $Revision: 1912 $
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | This program is free software; you can redistribute it and/or modify |
|
||||
// | it under the terms of the GNU General Public License as published by |
|
||||
// | the Free Software Foundation |
|
||||
// | |
|
||||
// | This program is distributed in the hope that it will be useful, but |
|
||||
// | WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
||||
// | General Public License for more details. |
|
||||
// | |
|
||||
// | You should have received a copy of the GNU General Public License |
|
||||
// | along with this program; if not, write to the Free Software |
|
||||
// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
|
||||
// | USA. |
|
||||
// +-----------------------------------------------------------------------+
|
||||
|
||||
// Recursive call
|
||||
$url = '../';
|
||||
header( 'Request-URI: '.$url );
|
||||
header( 'Content-Location: '.$url );
|
||||
header( 'Location: '.$url );
|
||||
exit();
|
||||
?>
|
58
plugins/AMenuManager/language/fr_FR/plugin.lang.php
Executable file
58
plugins/AMenuManager/language/fr_FR/plugin.lang.php
Executable file
|
@ -0,0 +1,58 @@
|
|||
<?php
|
||||
|
||||
$lang['Grum Plugin Classes is not installed'] = 'Le plugin <b>Grum Plugin Classes</b> n\'est pas installé';
|
||||
|
||||
$lang['g002_title_page'] = 'Gestion avancée du menu';
|
||||
$lang['g002_version'] = 'v';
|
||||
|
||||
$lang['g002_error_invalid_ajax_call'] = "Appel de fonction invalide !";
|
||||
|
||||
$lang['g002_setmenu'] = 'Gestion du menu';
|
||||
$lang['g002_addlinks'] = 'Liens';
|
||||
$lang['g002_randompict'] = 'Image aléatoire';
|
||||
$lang['g002_personnalblock'] = 'Menu personnalisé';
|
||||
|
||||
$lang['g002_setmenu_nfo'] = 'Gestion de l\'affichage des sections affichées dans le menu';
|
||||
$lang['g002_addlinks_nfo'] = 'Section permettant d\'afficher dans le menu une liste d\'hyperliens vers d\'autres sites internet';
|
||||
$lang['g002_randompict_nfo'] = 'Section permettant d\'afficher dans le menu une image prise au hasard dans la gallerie';
|
||||
$lang['g002_personnalblock_nfo'] = 'Afficher dans le menu des sections au contenu personnalisés';
|
||||
|
||||
|
||||
$lang['g002_mode_new_window'] = 'Nouvelle fenêtre';
|
||||
$lang['g002_mode_current_window'] = 'Fenêtre courante';
|
||||
$lang['g002_addlink'] = 'Ajouter un lien';
|
||||
$lang['g002_label'] = 'Libellé';
|
||||
$lang['g002_url'] = 'URL';
|
||||
$lang['g002_mode'] = 'Mode';
|
||||
$lang['g002_icon'] = 'Image';
|
||||
$lang['g002_visible'] = 'Visible';
|
||||
$lang['g002_linkslist'] = "Liste des liens";
|
||||
$lang['g002_confirm_delete_link'] = "Supprimer le lien ?";
|
||||
$lang['g002_nolinks'] = 'Pas de liens';
|
||||
$lang['g002_link'] = 'lien';
|
||||
$lang['g002_links'] = 'liens';
|
||||
|
||||
$lang['g002_createoflink'] = 'Ajout d\'un lien';
|
||||
$lang['g002_editoflink'] = 'Modification d\'un lien';
|
||||
$lang['g002_createthelink'] = 'Ajouter le lien';
|
||||
$lang['g002_editthelink'] = 'Modifier le lien';
|
||||
|
||||
$lang['g002_configlinks'] = 'Configuration des liens';
|
||||
$lang['g002_setting_link_block_menu'] = 'Intégration dans le menu';
|
||||
$lang['g002_setting_link_links']='Liens';
|
||||
$lang['g002_setting_link_show_icon'] = 'Afficher les icônes de liens';
|
||||
$lang['g002_setting_link_block_active'] = 'Afficher la section dans le menu';
|
||||
$lang['g002_setting_link_block_title'] = 'Titre de la section dans le menu';
|
||||
$lang['g002_apply'] = 'Appliquer';
|
||||
|
||||
$lang['g002_sectionslist'] = 'Sections du menu';
|
||||
|
||||
$lang['g002_yesno_y'] = 'Oui';
|
||||
$lang['g002_yesno_n'] = 'Non';
|
||||
|
||||
$lang['g002_owner'] = 'Propriétaire';
|
||||
$lang['g002_sectionid'] = 'Identifiant';
|
||||
$lang['g002_name'] = 'Libellé';
|
||||
|
||||
|
||||
?>
|
33
plugins/AMenuManager/language/index.php
Executable file
33
plugins/AMenuManager/language/index.php
Executable file
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | PhpWebGallery - a PHP based picture gallery |
|
||||
// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
|
||||
// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | file : $Id: index.php 1912 2007-03-16 06:30:07Z rub $
|
||||
// | last update : $Date: 2007-03-16 07:30:07 +0100 (ven, 16 mar 2007) $
|
||||
// | last modifier : $Author: rub $
|
||||
// | revision : $Revision: 1912 $
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | This program is free software; you can redistribute it and/or modify |
|
||||
// | it under the terms of the GNU General Public License as published by |
|
||||
// | the Free Software Foundation |
|
||||
// | |
|
||||
// | This program is distributed in the hope that it will be useful, but |
|
||||
// | WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
||||
// | General Public License for more details. |
|
||||
// | |
|
||||
// | You should have received a copy of the GNU General Public License |
|
||||
// | along with this program; if not, write to the Free Software |
|
||||
// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
|
||||
// | USA. |
|
||||
// +-----------------------------------------------------------------------+
|
||||
|
||||
// Recursive call
|
||||
$url = '../';
|
||||
header( 'Request-URI: '.$url );
|
||||
header( 'Content-Location: '.$url );
|
||||
header( 'Location: '.$url );
|
||||
exit();
|
||||
?>
|
BIN
plugins/AMenuManager/links_pictures/internet-url.png
Normal file
BIN
plugins/AMenuManager/links_pictures/internet-url.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 828 B |
BIN
plugins/AMenuManager/links_pictures/internet.png
Normal file
BIN
plugins/AMenuManager/links_pictures/internet.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 844 B |
66
plugins/AMenuManager/main.inc.php
Executable file
66
plugins/AMenuManager/main.inc.php
Executable file
|
@ -0,0 +1,66 @@
|
|||
<?php
|
||||
/*
|
||||
Plugin Name: Advanced Menu Manager
|
||||
Version: 1.0.0
|
||||
Description: Gestion avancée du menu / Advanced management of menu
|
||||
Plugin URI: http://phpwebgallery.net/ext/extension_view.php?eid=
|
||||
*/
|
||||
|
||||
/*
|
||||
--------------------------------------------------------------------------------
|
||||
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 ! >>
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
:: HISTORY
|
||||
|
||||
1.0.0 - 27/07/08 -
|
||||
|
||||
:: TO DO
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
:: NFO
|
||||
AMM_AIM : classe to manage plugin integration into plugin menu
|
||||
AMM_AIP : classe to manage plugin admin pages
|
||||
AMM_PIP : classe to manage plugin public integration
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
// pour faciliter le debug :o)
|
||||
ini_set('error_reporting', E_ALL);
|
||||
ini_set('display_errors', true);
|
||||
|
||||
if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
|
||||
|
||||
define('AMM_DIR' , basename(dirname(__FILE__)));
|
||||
define('AMM_PATH' , PHPWG_PLUGINS_PATH . AMM_DIR . '/');
|
||||
|
||||
define('AMM_VERSION' , '1.0.0'); // => ne pas oublier la version dans l'entête !!
|
||||
|
||||
global $prefixeTable, $menu;
|
||||
|
||||
if(basename($_SERVER["PHP_SELF"])=='admin.php')
|
||||
{
|
||||
//AMM admin part loaded and active only if in admin page
|
||||
include_once("amm_aim.class.inc.php");
|
||||
|
||||
$obj = new AMM_AIM($prefixeTable, __FILE__);
|
||||
$obj->init_events();
|
||||
set_plugin_data($plugin['id'], $obj);
|
||||
}
|
||||
else
|
||||
{
|
||||
//AMM public part loaded and active only if in admin page
|
||||
include_once("amm_pip.class.inc.php");
|
||||
|
||||
$obj = new AMM_PIP($prefixeTable, __FILE__);
|
||||
set_plugin_data($plugin['id'], $obj);
|
||||
}
|
||||
|
||||
?>
|
66
plugins/AMenuManager/maintain.inc.php
Executable file
66
plugins/AMenuManager/maintain.inc.php
Executable file
|
@ -0,0 +1,66 @@
|
|||
<?php
|
||||
|
||||
if (!defined('PHPWG_ROOT_PATH')) { die('Hacking attempt!'); }
|
||||
|
||||
ini_set('error_reporting', E_ALL);
|
||||
ini_set('display_errors', true);
|
||||
|
||||
define('AMM_DIR' , basename(dirname(__FILE__)));
|
||||
define('AMM_PATH' , PHPWG_PLUGINS_PATH . AMM_DIR . '/');
|
||||
@include_once(PHPWG_PLUGINS_PATH.'grum_plugins_classes-2/tables.class.inc.php');
|
||||
|
||||
|
||||
global $gpc_installed, $lang; //needed for plugin manager compatibility
|
||||
|
||||
$gpc_installed=false;
|
||||
if(file_exists(PHPWG_PLUGINS_PATH.'grum_plugins_classes-2/common_plugin.class.inc.php'))
|
||||
{
|
||||
@include_once("amm_install.class.inc.php");
|
||||
$gpc_installed=true;
|
||||
}
|
||||
|
||||
load_language('plugin.lang', AMM_PATH);
|
||||
|
||||
function plugin_install($plugin_id, $plugin_version, &$errors)
|
||||
{
|
||||
global $prefixeTable, $gpc_installed, $menu;
|
||||
if($gpc_installed)
|
||||
{
|
||||
$menu->register('mbAMM_links', 'Links', 0, 'AMM');
|
||||
$menu->register('mbAMM_randompict', 'Random pictures', 0, 'AMM');
|
||||
$amm=new AMM_install($prefixeTable, __FILE__);
|
||||
$result=$amm->install();
|
||||
}
|
||||
else
|
||||
{
|
||||
array_push($errors, l10n('Grum Plugin Classes is not installed'));
|
||||
}
|
||||
}
|
||||
|
||||
function plugin_activate($plugin_id, $plugin_version, &$errors)
|
||||
{
|
||||
}
|
||||
|
||||
function plugin_deactivate($plugin_id)
|
||||
{
|
||||
}
|
||||
|
||||
function plugin_uninstall($plugin_id)
|
||||
{
|
||||
global $prefixeTable, $gpc_installed, $menu;
|
||||
if($gpc_installed)
|
||||
{
|
||||
$menu->unregister('mbAMM_links');
|
||||
$menu->unregister('mbAMM_randompict');
|
||||
$amm=new AMM_install($prefixeTable, __FILE__);
|
||||
$result=$amm->uninstall();
|
||||
}
|
||||
else
|
||||
{
|
||||
array_push($errors, l10n('Grum Plugin Classes is not installed'));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
?>
|
16
plugins/AMenuManager/menu_templates/menubar_links.tpl
Normal file
16
plugins/AMenuManager/menu_templates/menubar_links.tpl
Normal file
|
@ -0,0 +1,16 @@
|
|||
|
||||
<!-- links menu bar -->
|
||||
{if $section.NAME!=""}
|
||||
<dt>{$section.NAME|@translate}</dt>
|
||||
{/if}
|
||||
<dd>
|
||||
<ul>
|
||||
{foreach from=$section.ITEMS.LINKS item=link}
|
||||
<li>
|
||||
{if $section.ITEMS.icons=='y'}<img src='{$link.icon}' style="position:relative;top:3px;"/>{/if}
|
||||
<a href="{$link.url}"
|
||||
{if $link.mode == 0} target = '_blank' {/if}>{$link.label}</a>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</dd>
|
56
plugins/grum_plugins_classes-2/ajax.class.inc.php
Executable file
56
plugins/grum_plugins_classes-2/ajax.class.inc.php
Executable file
|
@ -0,0 +1,56 @@
|
|||
<?php
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
class name: ajax
|
||||
class version: 2.0
|
||||
date: 2008-07-20
|
||||
------------------------------------------------------------------------------
|
||||
author: grum at grum.dnsalias.com
|
||||
<< May the Little SpaceFrog be with you >>
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
this classes provides base functions to add ajax.js file into html page ;
|
||||
just instanciate an ajax object, and call return_result
|
||||
$ajax_content_to_be_returned = "...............";
|
||||
$ajax = new ajax();
|
||||
$ajax->return_result($ajax_content_to_be_returned);
|
||||
|
||||
- constructor ajax()
|
||||
- function return_result($str)
|
||||
---------------------------------------------------------------------- */
|
||||
|
||||
|
||||
|
||||
class ajax
|
||||
{
|
||||
function ajax()
|
||||
{
|
||||
add_event_handler('loc_end_page_header', array(&$this, 'load_JS'));
|
||||
}
|
||||
|
||||
function load_JS()
|
||||
{
|
||||
global $template;
|
||||
|
||||
$name='plugins/'.basename(dirname(__FILE__)).'/ajax.js';
|
||||
|
||||
$template->append('head_elements', '<script src="'.$name.'" type="text/javascript"></script>');
|
||||
}
|
||||
|
||||
function return_result($str)
|
||||
{
|
||||
//$chars=get_html_translation_table(HTML_ENTITIES, ENT_NOQUOTES);
|
||||
$chars['<']='<';
|
||||
$chars['>']='>';
|
||||
$chars['&']='&';
|
||||
exit(strtr($str, $chars));
|
||||
}
|
||||
} //class
|
||||
|
||||
/*
|
||||
it's better to make $ajax instance into the plugin object, otherwise an object
|
||||
made here cannot be acceeded..
|
||||
*/
|
||||
//$ajax=new ajax();
|
||||
|
||||
?>
|
104
plugins/grum_plugins_classes-2/ajax.js
Executable file
104
plugins/grum_plugins_classes-2/ajax.js
Executable file
|
@ -0,0 +1,104 @@
|
|||
/* -----------------------------------------------------------------------------
|
||||
file: ajax.js
|
||||
file version: 1.1.0
|
||||
date: 2008-05-25
|
||||
------------------------------------------------------------------------------
|
||||
author: grum at grum.dnsalias.com
|
||||
<< May the Little SpaceFrog be with you >>
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
this classes provides base functions to add ajax into html page
|
||||
|
||||
+ create_httpobject provide a simple function to create an HTML request to a
|
||||
server ; return an XMLHttpRequest object (or compatible object for IE)
|
||||
|
||||
+ tHttpObject is a class providing :
|
||||
- an XMLHttpRequest object
|
||||
-
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
HISTORY VERSION
|
||||
v1.0.1 + [create_httpobject] overrideMimeType unknown by IE 7.0 ;
|
||||
v1.1.0 + add create_httpobject2 with mimetype parameter
|
||||
|
||||
-------------------------------------------------------------------------- */
|
||||
|
||||
|
||||
function create_httpobject(requesttype, charset, ajaxurl, async)
|
||||
{
|
||||
return(create_httpobject2(requesttype, charset, ajaxurl, async, ''));
|
||||
}
|
||||
|
||||
function create_httpobject2(requesttype, charset, ajaxurl, async, mimetype)
|
||||
{
|
||||
if (window.XMLHttpRequest)
|
||||
{
|
||||
// IE7 & FF method
|
||||
http_request = new XMLHttpRequest();
|
||||
}
|
||||
else
|
||||
{
|
||||
//Other IE method.....
|
||||
if (window.ActiveXObject)
|
||||
{
|
||||
try
|
||||
{
|
||||
http_request = new ActiveXObject("Msxml2.XMLHTTP");
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
try
|
||||
{
|
||||
http_request = new ActiveXObject("Microsoft.XMLHTTP");
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
window.alert("Your browser is unable to use XMLHTTPRequest");
|
||||
} // try-catch
|
||||
} // try-catch
|
||||
}
|
||||
} // if-else
|
||||
|
||||
if(charset=='') { charset='utf-8'; }
|
||||
|
||||
http_request.onreadystatechange = function() { };
|
||||
http_request.open(requesttype.toUpperCase(), ajaxurl, async);
|
||||
|
||||
if(mimetype=='')
|
||||
{
|
||||
mimetype='text/html';
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
http_request.overrideMimeType(mimetype+'; charset='+charset);
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
}
|
||||
|
||||
if(requesttype.toUpperCase()=='POST')
|
||||
{
|
||||
http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
||||
}
|
||||
|
||||
//method to restitute an XML object ; needed for compatibility between FF&IE
|
||||
http_request.XML = httpobject_responseXML;
|
||||
|
||||
return(http_request);
|
||||
}
|
||||
|
||||
|
||||
function httpobject_responseXML()
|
||||
{
|
||||
if (document.implementation && document.implementation.createDocument)
|
||||
{
|
||||
//ff method
|
||||
return(this.responseXML);
|
||||
}
|
||||
else
|
||||
{
|
||||
//ie method
|
||||
return(xmlCreateFromString(this.responseText));
|
||||
}
|
||||
}
|
209
plugins/grum_plugins_classes-2/common_plugin.class.inc.php
Executable file
209
plugins/grum_plugins_classes-2/common_plugin.class.inc.php
Executable file
|
@ -0,0 +1,209 @@
|
|||
<?php
|
||||
/* -----------------------------------------------------------------------------
|
||||
class name: common_plugin
|
||||
class version: 2.0
|
||||
date: 2008-07-13
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
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 class provides base functions to manage a plugin
|
||||
public
|
||||
ADMINISTRATION RELATED
|
||||
- manage()
|
||||
- plugin_admin_menu($menu)
|
||||
INITIALIZATION RELATED
|
||||
- init_events()
|
||||
CONFIG RELATED
|
||||
- get_filelocation()
|
||||
- get_admin_link()
|
||||
- init_config()
|
||||
- load_config()
|
||||
- save_config()
|
||||
- delete_config()
|
||||
|
||||
protected
|
||||
INITIALIZATION RELATED
|
||||
- set_tables_list($list)
|
||||
------------------------------------------------------------------------------
|
||||
:: HISTORY
|
||||
|
||||
2.0.0 - 2008-07-13
|
||||
migrate to piwigo 2.0 ; use of PHP5 classes possibilities
|
||||
|
||||
--------------------------------------------------------------------------- */
|
||||
|
||||
class common_plugin
|
||||
{
|
||||
protected $prefixeTable; // prefixe for tables names
|
||||
protected $page_link; //link to admin page
|
||||
protected $filelocation; //files plugin location on server
|
||||
protected $display_result_ok;
|
||||
protected $display_result_ko;
|
||||
protected $plugin_name; // used for interface display
|
||||
protected $plugin_name_files; // used for files
|
||||
protected $plugin_admin_file = "plugin_admin";
|
||||
protected $tables; // list of all tables names used by plugin
|
||||
public $my_config; // array of config parameters
|
||||
|
||||
/* constructor allows to initialize $prefixeTable value */
|
||||
public function common_plugin($prefixeTable, $filelocation)
|
||||
{
|
||||
$this->filelocation=$filelocation;
|
||||
$this->prefixeTable=$prefixeTable;
|
||||
$this->page_link="admin.php?page=plugin§ion=". basename(dirname($this->filelocation))."/admin/".$this->plugin_admin_file.".php";
|
||||
//$this->page_link=get_admin_plugin_menu_link($filelocation);
|
||||
$this->init_config();
|
||||
$this->display_result_ok="OK";
|
||||
$this->display_result_ko="KO";
|
||||
}
|
||||
|
||||
public function get_filelocation()
|
||||
{
|
||||
return($this->filelocation);
|
||||
}
|
||||
|
||||
public function get_admin_link()
|
||||
{
|
||||
return($this->page_link);
|
||||
}
|
||||
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
CONFIGURATION RELATED FUNCTIONS
|
||||
--------------------------------------------------------------------------- */
|
||||
|
||||
/* this function initialize var $my_config with default values */
|
||||
public function init_config()
|
||||
{
|
||||
$this->my_config=array();
|
||||
}
|
||||
|
||||
/* load config from CONFIG_TABLE into var $my_config */
|
||||
public function load_config()
|
||||
{
|
||||
$this->init_config();
|
||||
$sql="SELECT value FROM ".CONFIG_TABLE."
|
||||
WHERE param = '".$this->plugin_name_files."_config'";
|
||||
$result=pwg_query($sql);
|
||||
if($result)
|
||||
{
|
||||
$row=mysql_fetch_row($result);
|
||||
if(is_string($row[0]))
|
||||
{
|
||||
$config = unserialize($row[0]);
|
||||
reset($config);
|
||||
while (list($key, $val) = each($config))
|
||||
{ $this->my_config[$key] =$val; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* save var $my_config into CONFIG_TABLE */
|
||||
public function save_config()
|
||||
{
|
||||
$sql="REPLACE INTO ".CONFIG_TABLE."
|
||||
VALUES('".$this->plugin_name_files."_config', '"
|
||||
.serialize($this->my_config)."', '')";
|
||||
$result=pwg_query($sql);
|
||||
if($result)
|
||||
{ return true; }
|
||||
else
|
||||
{ return false; }
|
||||
}
|
||||
|
||||
/* delete config from CONFIG_TABLE */
|
||||
public function delete_config()
|
||||
{
|
||||
$sql="DELETE FROM ".CONFIG_TABLE."
|
||||
WHERE param='".$this->plugin_name_files."_config'";
|
||||
$result=pwg_query($sql);
|
||||
if($result)
|
||||
{ return true; }
|
||||
else
|
||||
{ return false; }
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
PLUGIN INITIALIZATION RELATED FUNCTIONS
|
||||
--------------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
initialize tables list used by the plugin
|
||||
$list = array('table1', 'table2')
|
||||
$this->tables_list['table1'] = $prefixeTable.$plugin_name.'_table1'
|
||||
*/
|
||||
protected function set_tables_list($list)
|
||||
{
|
||||
for($i=0;$i<count($list);$i++)
|
||||
{
|
||||
$this->tables[$list[$i]]=$this->prefixeTable.$this->plugin_name_files.'_'.$list[$i];
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
ADMINISTRATOR CONSOLE RELATED FUNCTIONS
|
||||
--------------------------------------------------------------------------- */
|
||||
|
||||
/* add plugin into administration menu */
|
||||
public function plugin_admin_menu($menu)
|
||||
{
|
||||
array_push($menu,
|
||||
array(
|
||||
'NAME' => $this->plugin_name,
|
||||
'URL' => get_admin_plugin_menu_link(dirname($this->filelocation).
|
||||
'/admin/'.$this->plugin_admin_file.'.php')
|
||||
));
|
||||
return $menu;
|
||||
}
|
||||
|
||||
/*
|
||||
manage plugin integration into piwigo's admin interface
|
||||
|
||||
to be surcharged by child's classes
|
||||
*/
|
||||
public function manage()
|
||||
{
|
||||
}
|
||||
|
||||
/*
|
||||
intialize plugin's events
|
||||
to be surcharged by child's classes
|
||||
*/
|
||||
public function init_events()
|
||||
{
|
||||
}
|
||||
|
||||
protected function debug($text)
|
||||
{
|
||||
global $page;
|
||||
array_push($page['infos'], "DEBUG MODE: ".$text);
|
||||
}
|
||||
|
||||
/*
|
||||
manage infos & errors display
|
||||
*/
|
||||
protected function display_result($action_msg, $result)
|
||||
{
|
||||
global $page;
|
||||
|
||||
if($result)
|
||||
{
|
||||
array_push($page['infos'], $action_msg);
|
||||
array_push($page['infos'], $this->display_result_ok);
|
||||
}
|
||||
else
|
||||
{
|
||||
array_push($page['errors'], $action_msg);
|
||||
array_push($page['errors'], $this->display_result_ko);
|
||||
}
|
||||
}
|
||||
} //class common_plugin
|
||||
|
||||
?>
|
76
plugins/grum_plugins_classes-2/css.class.inc.php
Executable file
76
plugins/grum_plugins_classes-2/css.class.inc.php
Executable file
|
@ -0,0 +1,76 @@
|
|||
<?php
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
class name: css
|
||||
class version: 2.0
|
||||
date: 2008-07-13
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
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 css
|
||||
classe consider that $filename is under plugins/ directory
|
||||
|
||||
|
||||
- constructor css($filename)
|
||||
- (public) function css_file_exists()
|
||||
- (public) function make_CSS($css)
|
||||
- (public) function apply_CSS()
|
||||
---------------------------------------------------------------------- */
|
||||
class css
|
||||
{
|
||||
private $filename;
|
||||
|
||||
public function css($filename)
|
||||
{
|
||||
$this->filename=$filename;
|
||||
}
|
||||
|
||||
/*
|
||||
make the css file
|
||||
*/
|
||||
public function make_CSS($css)
|
||||
{
|
||||
if($css!="")
|
||||
{
|
||||
$handle=fopen($this->filename, "w");
|
||||
if($handle)
|
||||
{
|
||||
fwrite($handle, $css);
|
||||
fclose($handle);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
return true if css file exists
|
||||
*/
|
||||
public function css_file_exists()
|
||||
{
|
||||
return(file_exists($this->filename));
|
||||
}
|
||||
|
||||
/*
|
||||
put a link in the template to load the css file
|
||||
this function have to be called in a 'loc_end_page_header' trigger
|
||||
|
||||
if $text="", insert link to css file, otherwise insert directly a <style> markup
|
||||
*/
|
||||
public function apply_CSS()
|
||||
{
|
||||
global $template;
|
||||
|
||||
if($this->css_file_exists())
|
||||
{
|
||||
$template->append('head_elements', '<link rel="stylesheet" type="text/css" href="plugins/'.basename(dirname($this->filename))."/".basename($this->filename).'">');
|
||||
}
|
||||
}
|
||||
} //class
|
||||
|
||||
?>
|
41
plugins/grum_plugins_classes-2/genericjs.class.inc.php
Executable file
41
plugins/grum_plugins_classes-2/genericjs.class.inc.php
Executable file
|
@ -0,0 +1,41 @@
|
|||
<?php
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
class name: genericjs
|
||||
class version: 2.0
|
||||
date: 2008-07-20
|
||||
------------------------------------------------------------------------------
|
||||
author: grum at grum.dnsalias.com
|
||||
<< May the Little SpaceFrog be with you >>
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
this classes provides base functions to add genericjs.js file into html page
|
||||
|
||||
> see genericjs.js file to know javascript functions added
|
||||
|
||||
- constructor genericjs()
|
||||
---------------------------------------------------------------------- */
|
||||
|
||||
|
||||
class genericjs
|
||||
{
|
||||
function genericjs()
|
||||
{
|
||||
add_event_handler('loc_end_page_header', array(&$this, 'load_JS'));
|
||||
}
|
||||
|
||||
function load_JS()
|
||||
{
|
||||
global $template;
|
||||
|
||||
$name='plugins/'.basename(dirname(__FILE__)).'/genericjs.js';
|
||||
|
||||
$template->append('head_elements', '<script src="'.$name.'" type="text/javascript"></script>');
|
||||
|
||||
}
|
||||
|
||||
} //class
|
||||
|
||||
$genericjs=new genericjs();
|
||||
|
||||
?>
|
49
plugins/grum_plugins_classes-2/genericjs.js
Executable file
49
plugins/grum_plugins_classes-2/genericjs.js
Executable file
|
@ -0,0 +1,49 @@
|
|||
/* -----------------------------------------------------------------------------
|
||||
file: genricjs.js
|
||||
file version: 1.0
|
||||
date: 2008-01-02
|
||||
------------------------------------------------------------------------------
|
||||
author: grum at grum.dnsalias.com
|
||||
<< May the Little SpaceFrog be with you >>
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
this classes provides base functions to make easiest a compliant code with
|
||||
FF2.0 & IE7.0
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
HISTORY VERSION
|
||||
|
||||
-------------------------------------------------------------------------- */
|
||||
|
||||
|
||||
|
||||
/*
|
||||
this is an implementation of the function <indexOf> to the Array class, as
|
||||
defined in the ECMA-262 standard
|
||||
for more information, see at http://developer.mozilla.org/fr/docs/R%C3%A9f%C3%A9rence_de_JavaScript_1.5_Core:Objets_globaux:Array:indexOf
|
||||
|
||||
not implemented in IE 7.0
|
||||
*/
|
||||
if (!Array.prototype.indexOf)
|
||||
{
|
||||
Array.prototype.indexOf = function(elt /*, from*/)
|
||||
{
|
||||
var len = this.length;
|
||||
|
||||
var from = Number(arguments[1]) || 0;
|
||||
from = (from < 0)
|
||||
? Math.ceil(from)
|
||||
: Math.floor(from);
|
||||
if (from < 0)
|
||||
from += len;
|
||||
|
||||
for (; from < len; from++)
|
||||
{
|
||||
if (from in this &&
|
||||
this[from] === elt)
|
||||
return from;
|
||||
}
|
||||
return -1;
|
||||
};
|
||||
}
|
47
plugins/grum_plugins_classes-2/google_translate.js
Executable file
47
plugins/grum_plugins_classes-2/google_translate.js
Executable file
|
@ -0,0 +1,47 @@
|
|||
/* -----------------------------------------------------------------------------
|
||||
file: google_translate.js
|
||||
file version: 2.0.0
|
||||
date: 2008-05-25
|
||||
------------------------------------------------------------------------------
|
||||
author: grum at grum.dnsalias.com
|
||||
<< May the Little SpaceFrog be with you >>
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
this classes provides base functions to use Google Translate AJAX API
|
||||
>> http://code.google.com/apis/ajaxlanguage/
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
HISTORY VERSION
|
||||
v2.0.0 +
|
||||
|
||||
-------------------------------------------------------------------------- */
|
||||
|
||||
google.load("language", "1");
|
||||
|
||||
|
||||
var global_google_translate_plugin_objdest;
|
||||
var global_google_translate_plugin_objproperty;
|
||||
|
||||
|
||||
function google_translate(text, pfrom, pto, objdest, objproperty)
|
||||
{
|
||||
global_google_translate_plugin_objdest = objdest;
|
||||
global_google_translate_plugin_objproperty = objproperty;
|
||||
google.language.translate(text, pfrom, pto, google_translate_do);
|
||||
}
|
||||
|
||||
function google_translate_do(result)
|
||||
{
|
||||
if (!result.error)
|
||||
{
|
||||
if(global_google_translate_plugin_objproperty=='value')
|
||||
{
|
||||
global_google_translate_plugin_objdest.value = result.translation;
|
||||
}
|
||||
else if(global_google_translate_plugin_objproperty=='innerHTML')
|
||||
{
|
||||
global_google_translate_plugin_objdest.innerHTML = result.translation;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
33
plugins/grum_plugins_classes-2/index.php
Executable file
33
plugins/grum_plugins_classes-2/index.php
Executable file
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | PhpWebGallery - a PHP based picture gallery |
|
||||
// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
|
||||
// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | file : $Id: index.php 1912 2007-03-16 06:30:07Z rub $
|
||||
// | last update : $Date: 2007-03-16 07:30:07 +0100 (ven, 16 mar 2007) $
|
||||
// | last modifier : $Author: rub $
|
||||
// | revision : $Revision: 1912 $
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | This program is free software; you can redistribute it and/or modify |
|
||||
// | it under the terms of the GNU General Public License as published by |
|
||||
// | the Free Software Foundation |
|
||||
// | |
|
||||
// | This program is distributed in the hope that it will be useful, but |
|
||||
// | WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
||||
// | General Public License for more details. |
|
||||
// | |
|
||||
// | You should have received a copy of the GNU General Public License |
|
||||
// | along with this program; if not, write to the Free Software |
|
||||
// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
|
||||
// | USA. |
|
||||
// +-----------------------------------------------------------------------+
|
||||
|
||||
// Recursive call
|
||||
$url = '../';
|
||||
header( 'Request-URI: '.$url );
|
||||
header( 'Content-Location: '.$url );
|
||||
header( 'Location: '.$url );
|
||||
exit();
|
||||
?>
|
50
plugins/grum_plugins_classes-2/main.inc.php
Executable file
50
plugins/grum_plugins_classes-2/main.inc.php
Executable file
|
@ -0,0 +1,50 @@
|
|||
<?php
|
||||
/*
|
||||
Plugin Name: Grum Plugins Classes.2
|
||||
Version: 2.0.0
|
||||
Description: Collection de classes partagées entre mes plugins (existants, ou à venir) / Partaged classes between my plugins (actuals or futures)
|
||||
Plugin URI: http://phpwebgallery.net/ext/extension_view.php?eid=199
|
||||
*/
|
||||
|
||||
/*
|
||||
--------------------------------------------------------------------------------
|
||||
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 ! >>
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
:: HISTORY
|
||||
2.0.0 - 20/07/08 +convert classes for piwigo 2.0
|
||||
|
||||
:: TO DO
|
||||
|
||||
:: WHAT ? WHY ?
|
||||
This plugin doesn't do anything itself. It just provide classes for others plugins.
|
||||
|
||||
Classes version for this package
|
||||
ajax.class.php -v2.0 + ajax.js -v1.0.1
|
||||
common_plugin.class.php -v2.0
|
||||
css.class.php -v2.0
|
||||
pages_navigation.class.php -v1.0
|
||||
public_integration.class.php -v1.0
|
||||
tables.class.php -v1.3
|
||||
tabsheets.class.inc.php -v1.1
|
||||
translate.class.inc.php -v2.0.0 + google_translate.js -v2.0.0
|
||||
users_groups.class.inc.php -v1.0
|
||||
genericjs.class.inc.php -v1.0 + genericjs.js -v1.0
|
||||
|
||||
See each file to know more about them
|
||||
--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
if(!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
|
||||
|
||||
define('GPC_DIR' , basename(dirname(__FILE__)));
|
||||
define('GPC_PATH' , PHPWG_PLUGINS_PATH . GPC_DIR . '/');
|
||||
|
||||
define('GPC_VERSION' , '2.0.0');
|
||||
|
||||
?>
|
26
plugins/grum_plugins_classes-2/maintain.inc.php
Executable file
26
plugins/grum_plugins_classes-2/maintain.inc.php
Executable file
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
|
||||
if (!defined('PHPWG_ROOT_PATH')) { die('Hacking attempt!'); }
|
||||
|
||||
// ini_set('error_reporting', E_ALL);
|
||||
// ini_set('display_errors', true);
|
||||
|
||||
|
||||
function plugin_install($plugin_id, $plugin_version, &$errors)
|
||||
{
|
||||
}
|
||||
|
||||
function plugin_activate($plugin_id, $plugin_version, &$errors)
|
||||
{
|
||||
}
|
||||
|
||||
function plugin_deactivate($plugin_id)
|
||||
{
|
||||
}
|
||||
|
||||
function plugin_uninstall($plugin_id)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
?>
|
294
plugins/grum_plugins_classes-2/pages_navigation.class.inc.php
Executable file
294
plugins/grum_plugins_classes-2/pages_navigation.class.inc.php
Executable file
|
@ -0,0 +1,294 @@
|
|||
<?php
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
class name: pages_navigation
|
||||
class version: 1.0
|
||||
date: 2007-11-17
|
||||
------------------------------------------------------------------------------
|
||||
author: grum at grum.dnsalias.com
|
||||
<< May the Little SpaceFrog be with you >>
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
this classes provides base functions to manage pages navigation
|
||||
|
||||
- constructor pages_navigation($url)
|
||||
- (public) function set_nb_items($nbitems)
|
||||
- (public) function get_nb_items()
|
||||
- (public) function set_nb_items_per_page($nbitems)
|
||||
- (public) function get_nb_items_per_page()
|
||||
- (public) function get_nb_pages()
|
||||
- (public) function set_current_page($page)
|
||||
- (public) function get_current_page()
|
||||
- (public) function set_base_url($url)
|
||||
- (public) function get_base_url()
|
||||
- (public) function make_navigation()
|
||||
- (public) function make_navigation_function()
|
||||
- (private) function calc_nb_pages()
|
||||
---------------------------------------------------------------------- */
|
||||
class pages_navigation
|
||||
{
|
||||
var $nbitems;
|
||||
var $nbitemsperpages;
|
||||
var $nbpages;
|
||||
var $currentpage;
|
||||
var $baseurl;
|
||||
var $pagevarurl;
|
||||
var $options;
|
||||
|
||||
function pages_navigation()
|
||||
{
|
||||
$this->nbitems=0;
|
||||
$this->nbitemsperpages=0;
|
||||
$this->nbpages=0;
|
||||
$this->currentpage=0;
|
||||
$this->baseurl='';
|
||||
$this->pagevarurl='';
|
||||
$this->options=array(
|
||||
'prev_next' => true,
|
||||
'first_last' => true,
|
||||
'display_all' => true,
|
||||
'number_displayed' => 2 //number of page displayed before and after current page
|
||||
);
|
||||
}
|
||||
|
||||
/*
|
||||
define value for total number of items
|
||||
*/
|
||||
function set_nb_items($nbitems)
|
||||
{
|
||||
if($nbitems!=$this->nbitems)
|
||||
{
|
||||
$this->nbitems=$nbitems;
|
||||
$this->calc_nb_pages();
|
||||
}
|
||||
return($nbitems);
|
||||
}
|
||||
|
||||
function get_nb_items()
|
||||
{
|
||||
return($nbitems);
|
||||
}
|
||||
|
||||
/*
|
||||
define value for number of items displayed per pages
|
||||
*/
|
||||
function set_nb_items_per_page($nbitems)
|
||||
{
|
||||
if(($nbitems!=$this->nbitemsperpages)&&($nbitems>0))
|
||||
{
|
||||
$this->nbitemsperpages=$nbitems;
|
||||
$this->calc_nb_pages();
|
||||
}
|
||||
return($this->nbitemsperpages);
|
||||
}
|
||||
|
||||
function get_nb_items_per_page()
|
||||
{
|
||||
return($this->nbitemsperpages);
|
||||
}
|
||||
|
||||
/*
|
||||
return numbers of pages
|
||||
*/
|
||||
function get_nb_pages()
|
||||
{
|
||||
return($this->nbpages);
|
||||
}
|
||||
|
||||
/*
|
||||
define the current page number
|
||||
*/
|
||||
function set_current_page($page)
|
||||
{
|
||||
if(($page!=$this->currentpage)&&($page<=$this->nbpages)&&($page>0))
|
||||
{
|
||||
$this->currentpage=$page;
|
||||
}
|
||||
return($this->currentpage);
|
||||
}
|
||||
|
||||
/*
|
||||
returns the current page number
|
||||
*/
|
||||
function get_current_page()
|
||||
{
|
||||
return($this->currentpage);
|
||||
}
|
||||
|
||||
/*
|
||||
define the value for url
|
||||
ex: "http://mysite.com/admin.php?var1=xxx&var2=xxx"
|
||||
*/
|
||||
function set_base_url($url)
|
||||
{
|
||||
if($url!=$this->baseurl)
|
||||
{
|
||||
$this->baseurl=$url;
|
||||
}
|
||||
return($this->baseurl);
|
||||
}
|
||||
|
||||
function get_base_url()
|
||||
{
|
||||
return($this->baseurl);
|
||||
}
|
||||
|
||||
/*
|
||||
define the value for variables's name
|
||||
ex: url = "http://mysite.com/admin.php?var1=xxx&var2=xxx"
|
||||
pagevar = "pagenumber"
|
||||
url made is "http://mysite.com/admin.php?var1=xxx&var2=xxx&pagenumber=xxx"
|
||||
*/
|
||||
function set_pagevar_url($var)
|
||||
{
|
||||
if($var!=$this->pagevarurl)
|
||||
{
|
||||
$this->pagevarurl=$var;
|
||||
}
|
||||
return($this->pagevarurl);
|
||||
}
|
||||
|
||||
function get_pagevar_url()
|
||||
{
|
||||
return($this->pagevarurl);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
returns an html formatted string
|
||||
*/
|
||||
function make_navigation($functionname='')
|
||||
{
|
||||
$text='';
|
||||
if(($this->options['display_all'])||($this->options['number_displayed']>=$this->nbpages))
|
||||
{
|
||||
for($i=1;$i<=$this->nbpages;$i++)
|
||||
{
|
||||
if($i!=$this->currentpage)
|
||||
{
|
||||
if($functionname=='')
|
||||
{
|
||||
$text.='<a href="'.$this->baseurl.'&'.$this->pagevarurl.'='.$i.'">'.$i.'</a> ';
|
||||
}
|
||||
else
|
||||
{
|
||||
$text.='<a style="cursor:pointer;" onclick="'.$functionname.'('.$i.');">'.$i.'</a> ';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$text.=$i.' ';
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for($i=$this->currentpage-$this->options['number_displayed'];$i<=$this->currentpage+$this->options['number_displayed'];$i++)
|
||||
{
|
||||
if(($i>0)&&($i<=$this->nbpages))
|
||||
{
|
||||
if($i!=$this->currentpage)
|
||||
{
|
||||
if($functionname=='')
|
||||
{
|
||||
$text.='<a href="'.$this->baseurl.'&'.$this->pagevarurl.'='.$i.'">'.$i.'</a> ';
|
||||
}
|
||||
else
|
||||
{
|
||||
$text.='<a style="cursor:pointer;" onclick="'.$functionname.'('.$i.');">'.$i.'</a> ';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$text.=$i.' ';
|
||||
}
|
||||
}
|
||||
}
|
||||
if($this->currentpage-$this->options['number_displayed']>0)
|
||||
{
|
||||
$text=' ... '.$text;
|
||||
}
|
||||
if($this->currentpage+$this->options['number_displayed']<$this->nbpages)
|
||||
{
|
||||
$text.=' ... ';
|
||||
}
|
||||
}
|
||||
|
||||
if($this->options['prev_next'])
|
||||
{
|
||||
$prevp='';
|
||||
$nextp='';
|
||||
if($this->currentpage>1)
|
||||
{
|
||||
if($functionname=='')
|
||||
{
|
||||
$prevp='<a href="'.$this->baseurl.'&'.$this->pagevarurl.'='.($this->currentpage-1).'"> Prev </a>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$prevp='<a style="cursor:pointer;" onclick="'.$functionname.'('.($this->currentpage-1).');"> Prev </a>';
|
||||
}
|
||||
}
|
||||
if($this->currentpage<$this->nbpages)
|
||||
{
|
||||
if($functionname=='')
|
||||
{
|
||||
$nextp='<a href="'.$this->baseurl.'&'.$this->pagevarurl.'='.($this->currentpage+1).'"> Next </a>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$nextp='<a style="cursor:pointer;" onclick="'.$functionname.'('.($this->currentpage+1).');"> Next </a>';
|
||||
}
|
||||
}
|
||||
|
||||
$text=$prevp.$text.$nextp;
|
||||
}
|
||||
|
||||
if($this->options['first_last'])
|
||||
{
|
||||
$firstp='';
|
||||
$lastp='';
|
||||
if($this->currentpage>1)
|
||||
{
|
||||
if($functionname=='')
|
||||
{
|
||||
$firstp='<a href="'.$this->baseurl.'&'.$this->pagevarurl.'=1"> First </a>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$firstp='<a style="cursor:pointer;" onclick="'.$functionname.'(1);"> First </a>';
|
||||
}
|
||||
}
|
||||
if($this->currentpage<$this->nbpages)
|
||||
{
|
||||
if($functionname=='')
|
||||
{
|
||||
$lastp='<a href="'.$this->baseurl.'&'.$this->pagevarurl.'='.$this->nbpages.'"> Last </a>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$lastp='<a style="cursor:pointer;" onclick="'.$functionname.'('.$this->nbpages.');"> Last </a>';
|
||||
}
|
||||
}
|
||||
|
||||
$text=$firstp.$text.$lastp;
|
||||
}
|
||||
|
||||
return($text);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
calculate the number of pages...
|
||||
*/
|
||||
function calc_nb_pages()
|
||||
{
|
||||
if($this->nbitemsperpages>0)
|
||||
{
|
||||
$this->nbpages=ceil($this->nbitems/$this->nbitemsperpages);
|
||||
}
|
||||
}
|
||||
|
||||
} //class
|
||||
|
||||
?>
|
202
plugins/grum_plugins_classes-2/public_integration.class.inc.php
Executable file
202
plugins/grum_plugins_classes-2/public_integration.class.inc.php
Executable file
|
@ -0,0 +1,202 @@
|
|||
<?php
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
class name: public_integration
|
||||
class version: 1.0
|
||||
date: 2007-10-31
|
||||
------------------------------------------------------------------------------
|
||||
author: grum at grum.dnsalias.com
|
||||
<< May the Little SpaceFrog be with you >>
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
this class provides base functions to manage an integration into main index
|
||||
page
|
||||
the class use plugin MenuBarManager function if installed
|
||||
|
||||
- constructor public_integration($section)
|
||||
- (public) function init_events()
|
||||
- (public) function set_callback_page_function($value)
|
||||
- (public) function set_callback_init_menu_function($value)
|
||||
- (public) function set_menu_tpl($tpl_code)
|
||||
- (public) function set_menu_list($list)
|
||||
- (public) function set_menu_title($title)
|
||||
- (public) function set_lnk_admin_add($text, $link)
|
||||
- (public) function set_lnk_admin_edit($text, $link)
|
||||
- (private) function update_menubar()
|
||||
- (private) function init_section()
|
||||
- (private) function call_page()
|
||||
|
||||
use init_events() function to initialize needed triggers for updating menubar
|
||||
use set_menu_tpl() function to initialize the template of menu
|
||||
use set_menu_title() function to initialize the title of menu
|
||||
use set_menu_list() function to initialize the elements of menu (see function for use)
|
||||
use set_lnk_admin_add() and set_lnk_admin_edit() functions for displaying specific admin links
|
||||
|
||||
the "callback_page_function" is called everytime a specific page is displayed
|
||||
the "callback_init_menu_function" is called everytime the menu is made (allows
|
||||
for example to prepare menu's title and list using user's language)
|
||||
|
||||
----------------------------------------------------------------------------- */
|
||||
|
||||
class public_integration
|
||||
{
|
||||
var $menu_tpl; //template definition for the menu
|
||||
var $menu_list; //an array of arrays array(array('text' => '', 'id' => '', 'link' => ''), array... )
|
||||
var $menu_title; //menu's title
|
||||
var $lnk_admin_add; //if set array('text'=>'', 'link'=>''), add a link "add" to the menu
|
||||
var $lnk_admin_edit; //if set array('text'=>'', 'link'=>''), add a link "edit" to the menu's elements
|
||||
var $section; //section applied to the page viewed
|
||||
var $callback_page_function; //called function to display page
|
||||
var $callback_init_menu_function; //called function to initialize menu
|
||||
|
||||
function public_integration($section)
|
||||
{
|
||||
$this->menu_tpl="";
|
||||
$this->menu_list=array();
|
||||
$this->menu_title="";
|
||||
$this->lnk_admin_add=array();
|
||||
$this->lnk_admin_edit=array();
|
||||
$this->section=$section;
|
||||
$this->callback_page_function='';
|
||||
$this->callback_init_menu_function='';
|
||||
}
|
||||
|
||||
//initialize events to manage menu & page integration
|
||||
function init_events()
|
||||
{
|
||||
add_event_handler('loc_begin_menubar', array(&$this, 'init_smarty'));
|
||||
add_event_handler('loc_end_menubar', array(&$this, 'update_menubar'));
|
||||
add_event_handler('loc_end_section_init', array(&$this, 'init_section'));
|
||||
add_event_handler('loc_end_index', array(&$this, 'call_page'));
|
||||
}
|
||||
|
||||
function set_callback_page_function($value)
|
||||
{
|
||||
$this->callback_page_function=$value;
|
||||
}
|
||||
|
||||
function set_callback_init_menu_function($value)
|
||||
{
|
||||
$this->callback_init_menu_function=$value;
|
||||
}
|
||||
|
||||
// set template definition for menu
|
||||
function set_menu_tpl($tpl_code)
|
||||
{
|
||||
$this->menu_tpl = $tpl_code;
|
||||
}
|
||||
|
||||
//set menu list
|
||||
function set_menu_list($list)
|
||||
{
|
||||
$this->menu_list = $list;
|
||||
}
|
||||
|
||||
//set menu title
|
||||
function set_menu_title($title)
|
||||
{
|
||||
$this->menu_title = $title;
|
||||
}
|
||||
|
||||
//set 'add' link to menu
|
||||
function set_lnk_admin_add($text, $link)
|
||||
{
|
||||
$this->lnk_admin_add = array('text' => $text, 'link' => $link);
|
||||
}
|
||||
|
||||
//set 'edit' link to menu
|
||||
function set_lnk_admin_edit($text, $link)
|
||||
{
|
||||
$this->lnk_admin_edit = array('text' => $text, 'link' => $link);
|
||||
}
|
||||
|
||||
function init_smarty()
|
||||
{
|
||||
global $template;
|
||||
|
||||
$template->smarty->register_prefilter(array(&$this, 'modify_tpl'));
|
||||
}
|
||||
|
||||
function modify_tpl($tpl_source, &$smarty)
|
||||
{
|
||||
return(str_replace('<div id="menubar">', '<div id="menubar">(test3)'.$this->menu_tpl, $tpl_source));
|
||||
}
|
||||
|
||||
/*
|
||||
Update PWG menubar
|
||||
- add a MyPolls block
|
||||
- add a MyPolls menu inside
|
||||
*/
|
||||
function update_menubar()
|
||||
{
|
||||
global $template;
|
||||
|
||||
@call_user_func($this->callback_init_menu_function);
|
||||
|
||||
//echo "update_menubar****".$this->menu_tpl."****".$this->menu_title."****".count($this->menu_list)."****";
|
||||
//do not do nothing because nothing to do
|
||||
if((($this->menu_tpl=="") ||
|
||||
(count($this->menu_list)==0) ||
|
||||
($this->menu_title=="")
|
||||
) and !is_admin())
|
||||
{
|
||||
return(false);
|
||||
}
|
||||
|
||||
$template_datas=array();
|
||||
$template_datas['links']=array();
|
||||
$template_datas['TITLE']='toto'.$this->menu_title;
|
||||
|
||||
if(is_admin() && (count($this->lnk_admin_add)>0))
|
||||
{
|
||||
$template_datas['links'][]=array(
|
||||
'LABEL' => "<i>".$this->lnk_admin_add['text']."</i>",
|
||||
'URL' => $this->lnk_admin_add['link']
|
||||
);
|
||||
}
|
||||
|
||||
foreach($this->menu_list as $key => $val)
|
||||
{
|
||||
if(is_admin() && (count($this->lnk_admin_edit)>0))
|
||||
{ $lnk_edit = "</a> --- <a href='".$this->lnk_admin_edit['link'].
|
||||
$val['id']."'>[".$this->lnk_admin_edit['text']."]"; }
|
||||
else
|
||||
{ $lnk_edit = ''; }
|
||||
|
||||
$template_datas['links'][]=array(
|
||||
'LABEL' => $val['text'].$lnk_edit,
|
||||
'URL' => $val['link']
|
||||
);
|
||||
}
|
||||
|
||||
$template->assign("datas", $template_datas);
|
||||
}
|
||||
|
||||
/*
|
||||
init section
|
||||
*/
|
||||
function init_section()
|
||||
{
|
||||
global $tokens, $page;
|
||||
|
||||
if ($tokens[0] == $this->section)
|
||||
{ $page['section'] = $this->section; }
|
||||
}
|
||||
|
||||
/*
|
||||
loads a page
|
||||
*/
|
||||
function call_page()
|
||||
{
|
||||
global $page, $user;
|
||||
|
||||
if($page['section'] == $this->section)
|
||||
{
|
||||
@call_user_func($this->callback_page_function);
|
||||
}
|
||||
}
|
||||
|
||||
} //class public_integration
|
||||
|
||||
|
||||
?>
|
447
plugins/grum_plugins_classes-2/tables.class.inc.php
Executable file
447
plugins/grum_plugins_classes-2/tables.class.inc.php
Executable file
|
@ -0,0 +1,447 @@
|
|||
<?php
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
class name: manage_tables
|
||||
class version: 1.3
|
||||
date: 2007-12-02
|
||||
------------------------------------------------------------------------------
|
||||
author: grum at grum.dnsalias.com
|
||||
<< May the Little SpaceFrog be with you >>
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
this class provides base functions to manage tables while plugin installation
|
||||
- constructor manage_tables($tables)
|
||||
- (public) function create_tables($tables_def)
|
||||
- (public) function update_tables_fields($tables_alteration)
|
||||
- (public) function drop_tables()
|
||||
- (public) function rename_tables($list) -v1.1
|
||||
- (public) function tables_exists() -v1.1
|
||||
- (public) function export($filename, $options, $tables, $infos) -v1.3
|
||||
- (public) function multi_queries($queries) -v1.3
|
||||
- (public) function import($filename) -v1.3
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
v1.1 + add rename_tables($list) function
|
||||
+ add tables_exists() function
|
||||
v1.2 + add export($filename, $options, $tables) function
|
||||
v1.3 + modify export($filename, $options, $tables, $infos, $resultboolean) function
|
||||
+ new parameters '$infos' allows to add some information on the
|
||||
exported file
|
||||
+ add 'delete' and 'colnames' options
|
||||
+ $resultbooelan option for return
|
||||
+ add multi_queries($queries) function
|
||||
+ add import($filename) function
|
||||
|
||||
-------------------------------------------------------------------------- */
|
||||
class manage_tables
|
||||
{
|
||||
var $tables; //array of tables names
|
||||
var $version = "1.3";
|
||||
|
||||
function manage_tables($tables)
|
||||
{
|
||||
$this->tables = $tables;
|
||||
}
|
||||
|
||||
/*
|
||||
create tables
|
||||
$tables_def is an array of SQL CREATE queries
|
||||
|
||||
return true if everything is ok, otherwise tablename
|
||||
*/
|
||||
function create_tables($tables_def)
|
||||
{
|
||||
//deleting tables if exists
|
||||
$this->drop_tables();
|
||||
|
||||
for($i=0;$i<count($tables_def);$i++)
|
||||
{
|
||||
$result=pwg_query($tables_def[$i]);
|
||||
if(!$result)
|
||||
{
|
||||
//if an error occurs, deleting created tables
|
||||
$this->drop_tables();
|
||||
return(false);
|
||||
}
|
||||
}
|
||||
return(true);
|
||||
}
|
||||
|
||||
/* update tables definition
|
||||
$tables_alteration : array of arrays
|
||||
example :
|
||||
$tables_alteration['table1']=array(
|
||||
"attribute1" => " ADD COLUMN `attribute1` text null default ''",
|
||||
"attribute2" => " ADD COLUMN `attribute2` text null default ''"));
|
||||
$tables_alteration['table2']=array(
|
||||
"attribute1" => " ADD COLUMN `attribute1` text null default ''",
|
||||
"attribute2" => " ADD COLUMN `attribute2` text null default ''"));
|
||||
|
||||
return true if no error, otherwise return table.fields of error
|
||||
*/
|
||||
function update_tables_fields($tables_alteration)
|
||||
{
|
||||
if(!is_array($tables_alteration))
|
||||
{
|
||||
return('');
|
||||
}
|
||||
|
||||
reset($tables_alteration);
|
||||
while (list($key, $val) = each($tables_alteration))
|
||||
{
|
||||
$sql="SHOW COLUMNS FROM $key";
|
||||
$result=pwg_query($sql);
|
||||
if($result)
|
||||
{
|
||||
$columns=array();
|
||||
while($row=mysql_fetch_assoc($result))
|
||||
{
|
||||
array_push($columns, $row['Field']);
|
||||
}
|
||||
|
||||
reset($val);
|
||||
while (list($attname, $sql) = each($val))
|
||||
{
|
||||
if(!in_array($attname, $columns))
|
||||
{
|
||||
$result=pwg_query("ALTER TABLE `$key` ".$sql);
|
||||
if(!$result)
|
||||
{
|
||||
return($key.".".$attname);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return(true);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
delete tables listed in $this->tables_list
|
||||
*/
|
||||
function drop_tables()
|
||||
{
|
||||
foreach($this->tables as $key => $table_name)
|
||||
{
|
||||
$sql="DROP TABLE IF EXISTS ".$table_name;
|
||||
$result=pwg_query($sql);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
rename tables name of list
|
||||
$list is an array('old_name' => 'new_name')
|
||||
return true if ok, else old table name
|
||||
*/
|
||||
function rename_tables($list)
|
||||
{
|
||||
$tmplist=array_flip($this->tables);
|
||||
foreach($list as $key => $val)
|
||||
{
|
||||
if(isset($tmplist[$key]))
|
||||
{
|
||||
$this->tables[$tmplist[$key]] = $val;
|
||||
$sql="ALTER TABLE `$key` RENAME TO `$val`";
|
||||
if(!pwg_query($sql))
|
||||
{
|
||||
return($key);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return($key);
|
||||
}
|
||||
}
|
||||
return(true);
|
||||
}
|
||||
|
||||
/*
|
||||
return true if all listed tables exists
|
||||
*/
|
||||
function tables_exists()
|
||||
{
|
||||
$list=array_flip($this->tables);
|
||||
$sql="SHOW TABLES";
|
||||
$result=pwg_query($sql);
|
||||
if($result)
|
||||
{
|
||||
while($row=mysql_fetch_row($result))
|
||||
{
|
||||
if(isset($list[$row[0]]))
|
||||
{
|
||||
array_splice($list, $row[0],1);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(count($list)>0)
|
||||
{
|
||||
return(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
return(true);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
export all tables as SQL in a text file
|
||||
|
||||
each query end with a " -- EOQ" ; it's just a method to increase parsing for
|
||||
import function
|
||||
|
||||
$filename : name of the file
|
||||
$options : array of options like
|
||||
array(
|
||||
'drop' => true/false, //add DROP TABLE statements
|
||||
'create' => true/false, //add CREATE TABLE statements
|
||||
'insert' => true/false, //add INSERT statements
|
||||
'delete' => true/false, //add delete statements
|
||||
'colnames' => true/false, //add columns names for inserts statements
|
||||
)
|
||||
$tables : array of tables names to export
|
||||
array('tablename1', 'tablenamen', 'tablename3', ...)
|
||||
if empty, assume that all tables have to be exported
|
||||
$infos : additional info written in exported file (as comment)
|
||||
$resultboolean : if true, result is true/false ;
|
||||
if false, if result, return a string with nfo about export
|
||||
*/
|
||||
function export($filename, $options=array(), $tables=array(), $infos="", $resultboolean=true)
|
||||
{
|
||||
$defaultopt=array(
|
||||
'drop' => true,
|
||||
'create' => true,
|
||||
'insert' => true,
|
||||
'delete' => false,
|
||||
'colnames' => false
|
||||
);
|
||||
|
||||
if(!isset($options['drop']))
|
||||
{
|
||||
$options['drop']=$defaultopt['drop'];
|
||||
}
|
||||
if(!isset($options['create']))
|
||||
{
|
||||
$options['create']=$defaultopt['create'];
|
||||
}
|
||||
if(!isset($options['insert']))
|
||||
{
|
||||
$options['insert']=$defaultopt['insert'];
|
||||
}
|
||||
if(!isset($options['delete']))
|
||||
{
|
||||
$options['delete']=$defaultopt['delete'];
|
||||
}
|
||||
if(!isset($options['colnames']))
|
||||
{
|
||||
$options['colnames']=$defaultopt['colnames'];
|
||||
}
|
||||
if(count($tables)==0)
|
||||
{
|
||||
$tables=$this->tables;
|
||||
}
|
||||
|
||||
$resultnfo='';
|
||||
|
||||
$returned=true;
|
||||
$text='
|
||||
-- *************************************************************** -- EOQ
|
||||
-- * SQL export made with Grum Plugins Classes (Export tool r'.$this->version.') -- EOQ
|
||||
-- * Export date :'.date('Y-m-d H:i:s').' -- EOQ
|
||||
-- * Export options :';
|
||||
if($options['drop']){$text.=' [drop]';}
|
||||
if($options['delete']){$text.=' [delete]';}
|
||||
if($options['create']){$text.=' [create]';}
|
||||
if($options['insert']){$text.=' [insert]';}
|
||||
if($options['colnames']){$text.=' [colnames]';}
|
||||
$text.=" -- EOQ";
|
||||
if($infos!="")
|
||||
{
|
||||
$text.='
|
||||
-- * '.$infos." -- EOQ";
|
||||
}
|
||||
$text.='
|
||||
-- *************************************************************** -- EOQ
|
||||
|
||||
';
|
||||
foreach($tables as $key => $val)
|
||||
{
|
||||
$countelems=0;
|
||||
|
||||
$text.="
|
||||
|
||||
-- *************************************************************** -- EOQ
|
||||
-- * Statements for ".$this->tables[$key]." table -- EOQ
|
||||
-- *************************************************************** -- EOQ
|
||||
";
|
||||
|
||||
if($options['drop'])
|
||||
{
|
||||
$text.=sprintf("DROP TABLE `%s`; -- EOQ\n", $this->tables[$key]);
|
||||
}
|
||||
|
||||
if($options['delete'])
|
||||
{
|
||||
$text.=sprintf("DELETE FROM `%s`; -- EOQ\n", $this->tables[$key]);
|
||||
}
|
||||
|
||||
if($options['create'])
|
||||
{
|
||||
$sql='SHOW CREATE TABLE '.$this->tables[$key];
|
||||
$result=pwg_query($sql);
|
||||
if($result)
|
||||
{
|
||||
while($row=mysql_fetch_row($result))
|
||||
{
|
||||
$text.=sprintf("%s; -- EOQ\n", $row[1]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$returned=false;
|
||||
}
|
||||
}
|
||||
|
||||
if($options['insert'])
|
||||
{
|
||||
$colnames="";
|
||||
if($options['colnames'])
|
||||
{
|
||||
$sql='SHOW COLUMNS FROM `'.$this->tables[$key].'`';
|
||||
$result=pwg_query($sql);
|
||||
if($result)
|
||||
{
|
||||
$tmp=array();
|
||||
while($row=mysql_fetch_row($result))
|
||||
{
|
||||
$tmp[]=$row[0];
|
||||
}
|
||||
}
|
||||
$colnames='('.implode(',', $tmp).')';
|
||||
}
|
||||
|
||||
$sql='SELECT * FROM '.$this->tables[$key];
|
||||
$result=pwg_query($sql);
|
||||
if($result)
|
||||
{
|
||||
while($row=mysql_fetch_row($result))
|
||||
{
|
||||
foreach($row as $key2 => $val2)
|
||||
{
|
||||
$row[$key2]="'".addslashes($val2)."'";
|
||||
}
|
||||
$text.=sprintf("INSERT INTO `%s` %s VALUES(%s); -- EOQ\n", $this->tables[$key], $colnames, implode(', ', $row));
|
||||
$countelems++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$returned=false;
|
||||
}
|
||||
$resultnfo.=$key.':'.$countelems.'@';
|
||||
}
|
||||
}
|
||||
$fhandle=fopen($filename, 'wb');
|
||||
if($fhandle)
|
||||
{
|
||||
fwrite($fhandle, $text);
|
||||
fclose($fhandle);
|
||||
}
|
||||
else
|
||||
{
|
||||
$returned=false;
|
||||
}
|
||||
if(($resultboolean==false)&&($returned))
|
||||
{
|
||||
$returned=$resultnfo;
|
||||
}
|
||||
return($returned);
|
||||
}
|
||||
|
||||
/*
|
||||
import an .sql file
|
||||
$filename : name of the file
|
||||
'errors' : -1 file don't exists
|
||||
-2 can't open file
|
||||
*/
|
||||
function import($filename)
|
||||
{
|
||||
$return = array(
|
||||
'numinsert'=>0,
|
||||
'numdelete'=>0,
|
||||
'numdrop'=>0,
|
||||
'numcreate'=>0,
|
||||
'errors'=>array(),
|
||||
'total_ok'=>0
|
||||
);
|
||||
|
||||
if(file_exists($filename))
|
||||
{
|
||||
$fhandle=fopen($filename, 'r');
|
||||
if($fhandle)
|
||||
{
|
||||
$queries=fread($fhandle, filesize($filename));
|
||||
fclose($fhandle);
|
||||
$return=$this->multi_queries($queries);
|
||||
}
|
||||
else
|
||||
{
|
||||
$return['errors']=-2;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$return['errors']=-1;
|
||||
}
|
||||
return($return);
|
||||
}
|
||||
|
||||
/*
|
||||
execute multiple query
|
||||
each query have to be separated by a "-- EOQ\n"
|
||||
|
||||
$queries : sql queries
|
||||
*/
|
||||
function multi_queries($queries)
|
||||
{
|
||||
$queries_list=preg_split(
|
||||
'/\s*;?\s*--\s+EOQ[\r\n]{1}/i', $queries, -1, PREG_SPLIT_NO_EMPTY);
|
||||
|
||||
$return = array(
|
||||
'numinsert'=>0,
|
||||
'numdelete'=>0,
|
||||
'numdrop'=>0,
|
||||
'numcreate'=>0,
|
||||
'errors'=>array(),
|
||||
'total_ok'=>0
|
||||
);
|
||||
|
||||
$i=0;
|
||||
foreach($queries_list as $key => $sql)
|
||||
{
|
||||
$i++;
|
||||
@$result=pwg_query($sql);
|
||||
if($result)
|
||||
{
|
||||
$return['total_ok']++;
|
||||
if(preg_match('/\b[\s]*insert[\s]+/i', $sql)>0)
|
||||
{$return['numinsert']++;}
|
||||
elseif(preg_match('/\b[\s]*drop[\s]+/i', $sql)>0)
|
||||
{$return['numdrop']++;}
|
||||
elseif(preg_match('/\b[\s]*delete[\s]+/i', $sql)>0)
|
||||
{$return['numdelete']++;}
|
||||
elseif(preg_match('/\b[\s]*create[\s]+/i',$sql)>0)
|
||||
{$return['numcreate']++;}
|
||||
}
|
||||
else
|
||||
{
|
||||
array_push($return['errors'], '['.$i.'] '.$sql);
|
||||
}
|
||||
}
|
||||
return($return);
|
||||
}
|
||||
|
||||
} //class
|
||||
|
||||
|
||||
?>
|
192
plugins/grum_plugins_classes-2/translate.class.inc.php
Executable file
192
plugins/grum_plugins_classes-2/translate.class.inc.php
Executable file
|
@ -0,0 +1,192 @@
|
|||
<?php
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
class name: translate
|
||||
class version: 2.0.1
|
||||
date: 2008-05-25
|
||||
------------------------------------------------------------------------------
|
||||
author: grum at grum.dnsalias.com
|
||||
<< May the Little SpaceFrog be with you >>
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
this classes provides base functions to manage call to "translate.google.com"
|
||||
|
||||
release 2.x use durect call to Google Translate AJAX API, so all functions
|
||||
from PHP class are removed (except for "can_translate")
|
||||
class call API in HTML header, and provide a .js file manage API call
|
||||
|
||||
- constructor translate()
|
||||
- (public) function can_translate($from, $to) //v1.1
|
||||
|
||||
version 1.1.1
|
||||
- google have changed HTML code for translation page ; change search string of translation result
|
||||
- bug corrected : if language given with uppercase, force them to lowercase
|
||||
version 2.0.0
|
||||
- use of Google Translate javascript API
|
||||
>> http://code.google.com/apis/ajaxlanguage/
|
||||
|
||||
---------------------------------------------------------------------- */
|
||||
class translate
|
||||
{
|
||||
var $language_list;
|
||||
|
||||
function translate()
|
||||
{
|
||||
//alloweds from->to transations languages
|
||||
$this->language_list=array_flip(
|
||||
array(
|
||||
'ar', //arabic
|
||||
'bg', //Bulgarian
|
||||
'zh', //Chinese (simplified)
|
||||
'hr', //Croatian
|
||||
'cs', //Czech
|
||||
'da', //Danish
|
||||
"nl", //Dutch
|
||||
'en', //English
|
||||
'fi', //Finnish
|
||||
"fr", //French
|
||||
"de", //German
|
||||
"el", //Greek
|
||||
'hi', //Hindi
|
||||
"it", //Italian
|
||||
"ja", //Japanese
|
||||
"ko", //Korean
|
||||
'no', //Norwegian
|
||||
'pl', //Polish
|
||||
"pt", //Portuguese
|
||||
'ro', //Romanian
|
||||
"ru", //Russian
|
||||
"es", //Spanish
|
||||
'sv' //Swedish
|
||||
)
|
||||
);
|
||||
add_event_handler('loc_end_page_header', array(&$this, 'load_JS'));
|
||||
}
|
||||
|
||||
function load_JS()
|
||||
{
|
||||
global $template;
|
||||
|
||||
$googleload='
|
||||
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
|
||||
<script type="text/javascript" src="plugins/'.basename(dirname(__FILE__)).'/google_translate.js"></script>';
|
||||
|
||||
$template->append('head_elements', $googleload);
|
||||
|
||||
|
||||
}
|
||||
|
||||
function can_translate($from, $to)
|
||||
{
|
||||
if(isset($this->language_list[strtolower($from)])&&isset($this->language_list[strtolower($to)]))
|
||||
{
|
||||
return(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
return(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
theses methods are removed for direct use of the Google AJAX API (better choice for
|
||||
performance)
|
||||
|
||||
how to :
|
||||
create one instance of this classe
|
||||
classe can be used by server to know authorized language to be translated
|
||||
all translations have to be made with javascript functions
|
||||
|
||||
=8<===========================================================================
|
||||
|
||||
function set_languages($lang)
|
||||
{
|
||||
$pair=explode('|', strtolower($lang));
|
||||
|
||||
if(isset($this->language_list[$pair[0]])&&isset($this->language_list[$pair[1]]))
|
||||
{
|
||||
$this->from_to_lang=strtolower($lang);
|
||||
}
|
||||
return($this->from_to_lang);
|
||||
}
|
||||
|
||||
function get_languages()
|
||||
{
|
||||
return($this->from_to_lang);
|
||||
}
|
||||
|
||||
function set_input_charset($charset)
|
||||
{
|
||||
$this->input_charset=$charset;
|
||||
}
|
||||
|
||||
function get_input_charset($charset)
|
||||
{
|
||||
return($this->input_charset);
|
||||
}
|
||||
|
||||
function set_output_charset($charset)
|
||||
{
|
||||
$this->output_charset=$charset;
|
||||
}
|
||||
|
||||
function get_output_charset($charset)
|
||||
{
|
||||
return($this->output_charset);
|
||||
}
|
||||
|
||||
function do_translation($text)
|
||||
{
|
||||
if(ini_get('allow_url_fopen')!="1")
|
||||
{
|
||||
return("");
|
||||
}
|
||||
|
||||
$req="http://translate.google.com/translate_t?text=".urlencode($text).
|
||||
"&langpair=".strtolower($this->from_to_lang);
|
||||
if($this->input_charset!="")
|
||||
{
|
||||
$req.="&ie=".$this->input_charset;
|
||||
}
|
||||
if($this->output_charset!="")
|
||||
{
|
||||
$req.="&oe=".$this->output_charset;
|
||||
}
|
||||
|
||||
$handle=fopen($req, "r");
|
||||
if($handle)
|
||||
{
|
||||
$contents="";
|
||||
while (!feof($handle))
|
||||
{
|
||||
$contents .= fread($handle, 4196);
|
||||
}
|
||||
fclose($handle);
|
||||
|
||||
$search="<div id=result_box dir=\"ltr\">";
|
||||
$p = strpos($contents, $search);
|
||||
if($p>0)
|
||||
{
|
||||
$contents=substr($contents, $p+strlen($search));
|
||||
$search="</div>";
|
||||
$p = strpos($contents, $search);
|
||||
$contents=substr($contents, 0, $p);
|
||||
}
|
||||
else
|
||||
{
|
||||
$contents="";
|
||||
}
|
||||
|
||||
return($contents);
|
||||
}
|
||||
else
|
||||
{
|
||||
return("");
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
} //class
|
||||
|
||||
?>
|
290
plugins/grum_plugins_classes-2/users_groups.class.inc.php
Executable file
290
plugins/grum_plugins_classes-2/users_groups.class.inc.php
Executable file
|
@ -0,0 +1,290 @@
|
|||
<?php
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
class name: allowed_access, groups, users
|
||||
class version: 1.0
|
||||
date: 2007-10-31
|
||||
------------------------------------------------------------------------------
|
||||
author: grum at grum.dnsalias.com
|
||||
<< May the Little SpaceFrog be with you >>
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
this classes provides base functions to manage users/groups access
|
||||
groups and users classes extends allowed_access classes
|
||||
|
||||
- constructor allowed_access($alloweds="")
|
||||
- constructor groups($alloweds="")
|
||||
- constructor users($alloweds="")
|
||||
- (public) function get_list()
|
||||
- (public) function set_allowed($id, $allowed)
|
||||
- (public) function set_alloweds()
|
||||
- (public) function get_alloweds($return_type)
|
||||
- (public) function is_allowed($id)
|
||||
- (public) function html_view($sep=", ", $empty="")
|
||||
- (public) function html_form($basename)
|
||||
- (private) function init_list()
|
||||
---------------------------------------------------------------------- */
|
||||
class allowed_access
|
||||
{
|
||||
var $access_list;
|
||||
|
||||
/*
|
||||
constructor initialize the groups_list
|
||||
*/
|
||||
function allowed_access($alloweds = "")
|
||||
{
|
||||
$this->init_list();
|
||||
$this->set_alloweds($alloweds);
|
||||
}
|
||||
|
||||
/*
|
||||
initialize the groups list
|
||||
*/
|
||||
function init_list()
|
||||
{
|
||||
$this->access_list=array();
|
||||
}
|
||||
|
||||
/*
|
||||
returns list (as an array)
|
||||
*/
|
||||
function get_list()
|
||||
{
|
||||
return($this->access_list);
|
||||
}
|
||||
|
||||
/*
|
||||
set element an allowed state
|
||||
*/
|
||||
function set_allowed($id, $allowed)
|
||||
{
|
||||
if(isset($this->access_list[$id]))
|
||||
{
|
||||
$this->access_list[$id]['allowed']=$allowed;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
set a group enabled/disabled state
|
||||
*/
|
||||
function set_state($id, $enabled)
|
||||
{
|
||||
if(isset($this->access_list[$id]))
|
||||
{
|
||||
$this->access_list[$id]['enabled']=$enabled;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
set alloweds list
|
||||
$list is string of id, separated with "/"
|
||||
*/
|
||||
function set_alloweds($list)
|
||||
{
|
||||
$alloweds=explode("/", $list);
|
||||
$alloweds=array_flip($alloweds);
|
||||
foreach($this->access_list as $key => $val)
|
||||
{
|
||||
if(isset($alloweds[$key]))
|
||||
{
|
||||
$this->access_list[$key]['allowed']=true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->access_list[$key]['allowed']=false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
get alloweds list
|
||||
return a string of groups, separated with "/"
|
||||
*/
|
||||
function get_alloweds($return_type = 'name')
|
||||
{
|
||||
$returned="";
|
||||
foreach($this->access_list as $key => $val)
|
||||
{
|
||||
if($val['allowed'])
|
||||
{ $returned.=$val[$return_type]."/"; }
|
||||
}
|
||||
return($returned);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
returns true if is allowed
|
||||
*/
|
||||
function is_allowed($id)
|
||||
{
|
||||
if(isset($this->access_list[$id]))
|
||||
{ return($this->access_list[$id]['allowed']); }
|
||||
else
|
||||
{ return(false); }
|
||||
}
|
||||
|
||||
/*
|
||||
returns true if all or one is allowed
|
||||
ids is an array
|
||||
*/
|
||||
function are_allowed($ids, $all=false)
|
||||
{
|
||||
foreach($ids as $val)
|
||||
{
|
||||
if($all)
|
||||
{
|
||||
if(!$this->is_allowed($val))
|
||||
{
|
||||
return(false);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if($this->is_allowed($val))
|
||||
{
|
||||
return(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
return(false);
|
||||
}
|
||||
|
||||
/*
|
||||
returns an HTML list with label rather than id
|
||||
*/
|
||||
function html_view($sep=", ", $empty="")
|
||||
{
|
||||
$returned="";
|
||||
foreach($this->access_list as $key => $val)
|
||||
{
|
||||
if($val['allowed'])
|
||||
{
|
||||
if($returned!="")
|
||||
{
|
||||
$returned.=$sep;
|
||||
}
|
||||
$returned.=$val['name'];
|
||||
}
|
||||
}
|
||||
if($returned=="")
|
||||
{
|
||||
$returned=$empty;
|
||||
}
|
||||
return($returned);
|
||||
}
|
||||
/*
|
||||
returns a generic HTML form to manage the groups access
|
||||
*/
|
||||
function html_form($basename)
|
||||
{
|
||||
/*
|
||||
<!-- BEGIN allowed_group_row -->
|
||||
<label><input type="checkbox" name="fmypolls_att_allowed_groups_{allowed_group_row.ID}" {allowed_group_row.CHECKED}/> {allowed_group_row.NAME}</label>
|
||||
<!-- END allowed_group_row -->
|
||||
*/
|
||||
$text='';
|
||||
foreach($this->access_list as $key => $val)
|
||||
{
|
||||
if($val['allowed'])
|
||||
{
|
||||
$checked=' checked';
|
||||
}
|
||||
else
|
||||
{
|
||||
$checked='';
|
||||
}
|
||||
|
||||
if($val['enabled'])
|
||||
{
|
||||
$enabled='';
|
||||
}
|
||||
else
|
||||
{
|
||||
$enabled=' disabled';
|
||||
}
|
||||
|
||||
$text.='<label><input type="checkbox" name="'.$basename.$val['id'].'" '.$checked.$enabled.'/>
|
||||
'.$val['name'].'</label> ';
|
||||
}
|
||||
return($text);
|
||||
}
|
||||
} //allowed_access
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
this class provides base functions to manage groups access
|
||||
init_list redefined to initialize access_list from database GROUPS
|
||||
---------------------------------------------------------------------- */
|
||||
class groups extends allowed_access
|
||||
{
|
||||
/*
|
||||
initialize the groups list
|
||||
*/
|
||||
function init_list()
|
||||
{
|
||||
$this->access_list=array();
|
||||
$sql="SELECT id, name FROM ".GROUPS_TABLE." ORDER BY name";
|
||||
$result=pwg_query($sql);
|
||||
if($result)
|
||||
{
|
||||
while($row=mysql_fetch_assoc($result))
|
||||
{
|
||||
$this->access_list[$row['id']] =
|
||||
array('id' => $row['id'],
|
||||
'name' => $row['name'],
|
||||
'allowed' => false,
|
||||
'enabled' => true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
this class provides base functions to manage users access
|
||||
----------------------------------------------------------------------------- */
|
||||
class users extends allowed_access
|
||||
{
|
||||
/*
|
||||
constructor
|
||||
*/
|
||||
function users($alloweds = "")
|
||||
{
|
||||
parent::allowed_access($alloweds);
|
||||
$this->set_state('admin', false);
|
||||
$this->set_allowed('admin', true);
|
||||
}
|
||||
|
||||
/*
|
||||
initialize the groups list
|
||||
*/
|
||||
function init_list()
|
||||
{
|
||||
$users_list = array('guest', 'generic', 'normal', 'admin');
|
||||
$this->access_list=array();
|
||||
foreach($users_list as $val)
|
||||
{
|
||||
$this->access_list[$val] =
|
||||
array('id' => $val,
|
||||
'name' => l10n('user_status_'.$val),
|
||||
'allowed' => false,
|
||||
'enabled' => true);
|
||||
}
|
||||
}
|
||||
} //class users
|
||||
|
||||
|
||||
|
||||
?>
|
33
plugins/test_menu/index.php
Executable file
33
plugins/test_menu/index.php
Executable file
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | PhpWebGallery - a PHP based picture gallery |
|
||||
// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
|
||||
// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | file : $Id: index.php 1912 2007-03-16 06:30:07Z rub $
|
||||
// | last update : $Date: 2007-03-16 07:30:07 +0100 (ven, 16 mar 2007) $
|
||||
// | last modifier : $Author: rub $
|
||||
// | revision : $Revision: 1912 $
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | This program is free software; you can redistribute it and/or modify |
|
||||
// | it under the terms of the GNU General Public License as published by |
|
||||
// | the Free Software Foundation |
|
||||
// | |
|
||||
// | This program is distributed in the hope that it will be useful, but |
|
||||
// | WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
||||
// | General Public License for more details. |
|
||||
// | |
|
||||
// | You should have received a copy of the GNU General Public License |
|
||||
// | along with this program; if not, write to the Free Software |
|
||||
// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
|
||||
// | USA. |
|
||||
// +-----------------------------------------------------------------------+
|
||||
|
||||
// Recursive call
|
||||
$url = '../';
|
||||
header( 'Request-URI: '.$url );
|
||||
header( 'Content-Location: '.$url );
|
||||
header( 'Location: '.$url );
|
||||
exit();
|
||||
?>
|
53
plugins/test_menu/main.inc.php
Executable file
53
plugins/test_menu/main.inc.php
Executable file
|
@ -0,0 +1,53 @@
|
|||
<?php
|
||||
/*
|
||||
Plugin Name: Test Menu
|
||||
Version: 1.0.0
|
||||
Description: Plugin pour montrer l'usage de la classe Menu / Plugin to show usage of the class Menu
|
||||
Plugin URI: http://phpwebgallery.net/ext/extension_view.php?eid=
|
||||
*/
|
||||
|
||||
/*
|
||||
--------------------------------------------------------------------------------
|
||||
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 ! >>
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
:: HISTORY
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
// pour faciliter le debug :o)
|
||||
ini_set('error_reporting', E_ALL);
|
||||
ini_set('display_errors', true);
|
||||
|
||||
if(!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
|
||||
|
||||
|
||||
define('TEST_MENU_DIR' , basename(dirname(__FILE__)));
|
||||
define('TEST_MENU_PATH' , PHPWG_PLUGINS_PATH . TEST_MENU_DIR . '/');
|
||||
|
||||
define('TEST_MENU_VERSION' , '1.0.0'); // => ne pas oublier la version dans l'entête !!
|
||||
|
||||
global $prefixeTable, $menu;
|
||||
|
||||
include_once("menu.class.inc.php");
|
||||
|
||||
function filemenu()
|
||||
{
|
||||
return(TEST_MENU_PATH."menubar.inc.php");
|
||||
}
|
||||
|
||||
$menu = new Menu();
|
||||
|
||||
if(basename($_SERVER["PHP_SELF"])!='admin.php')
|
||||
{
|
||||
add_event_handler('menubar_file', 'filemenu');
|
||||
}
|
||||
|
||||
|
||||
?>
|
44
plugins/test_menu/maintain.inc.php
Normal file
44
plugins/test_menu/maintain.inc.php
Normal file
|
@ -0,0 +1,44 @@
|
|||
<?php
|
||||
|
||||
if (!defined('PHPWG_ROOT_PATH')) { die('Hacking attempt!'); }
|
||||
|
||||
ini_set('error_reporting', E_ALL);
|
||||
ini_set('display_errors', true);
|
||||
|
||||
define('TEST_MENU_DIR' , basename(dirname(__FILE__)));
|
||||
define('TEST_MENU_PATH' , PHPWG_PLUGINS_PATH . TEST_MENU_DIR . '/');
|
||||
|
||||
include_once("menu.class.inc.php");
|
||||
|
||||
function plugin_install($plugin_id, $plugin_version, &$errors)
|
||||
{
|
||||
/* -[note]----------------------------------------------------------------------
|
||||
In normal case, piwigo's registered items of the $menu object are not
|
||||
initialized by a plugin, but by piwigo (while the install process).
|
||||
Piwigo's default registered items are initialized here to give a "how to"
|
||||
example of the classe
|
||||
----------------------------------------------------------------------------- */
|
||||
$menu=new Menu();
|
||||
$menu->register('mbLinks', 'Links', 1, 'piwigo');
|
||||
$menu->register('mbCategories', 'Categories', 2, 'piwigo');
|
||||
$menu->register('mbTags', 'Related tags', 3, 'piwigo');
|
||||
$menu->register('mbSpecial', 'special_categories', 4, 'piwigo');
|
||||
$menu->register('mbMenu', 'title_menu', 5, 'piwigo');
|
||||
$menu->register('mbIdentification', 'identification', 6, 'piwigo');
|
||||
}
|
||||
|
||||
function plugin_activate($plugin_id, $plugin_version, &$errors)
|
||||
{
|
||||
}
|
||||
|
||||
function plugin_deactivate($plugin_id)
|
||||
{
|
||||
}
|
||||
|
||||
function plugin_uninstall($plugin_id)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
?>
|
500
plugins/test_menu/menu.class.inc.php
Normal file
500
plugins/test_menu/menu.class.inc.php
Normal file
|
@ -0,0 +1,500 @@
|
|||
<?php
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
class name: menu, blocks
|
||||
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()
|
||||
|
||||
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()
|
||||
{
|
||||
$this->load_registered();
|
||||
}
|
||||
|
||||
/*
|
||||
public functions
|
||||
*/
|
||||
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
|
||||
|
||||
|
||||
|
||||
|
||||
?>
|
165
plugins/test_menu/menu_templates/menubar.tpl
Normal file
165
plugins/test_menu/menu_templates/menubar.tpl
Normal file
|
@ -0,0 +1,165 @@
|
|||
{* $Id: menubar.tpl 2409 2008-07-01 02:09:21Z rvelices $ *}
|
||||
|
||||
<div id="menubar">
|
||||
{if not empty($links)}
|
||||
<dl id="mbLinks">
|
||||
<dt>{'Links'|@translate}</dt>
|
||||
<dd>
|
||||
<ul>
|
||||
{foreach from=$links item=link}
|
||||
<li>
|
||||
<a href="{$link.URL}"
|
||||
{if isset($link.new_window) }onclick="window.open(this.href, '{$link.new_window.NAME|@escape:'javascript'}','{$link.new_window.FEATURES|@escape:'javascript'}'); return false;"{/if}
|
||||
>
|
||||
{$link.LABEL}
|
||||
</a>
|
||||
</li>
|
||||
{/foreach}{*links*}
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
{/if}{*links*}
|
||||
|
||||
{if isset($U_START_FILTER)}
|
||||
<a href="{$U_START_FILTER}" title="{'start_filter_hint'|@translate}" rel="nofollow"><img src="{$ROOT_URL}{$themeconf.icon_dir}/start_filter.png" class="button" alt="start filter"></a>
|
||||
{/if}
|
||||
{if isset($U_STOP_FILTER)}
|
||||
<a href="{$U_STOP_FILTER}" title="{'stop_filter_hint'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/stop_filter.png" class="button" alt="stop filter"></a>
|
||||
{/if}
|
||||
|
||||
<dl id="mbCategories">
|
||||
<dt><a href="{$U_CATEGORIES}">{'Categories'|@translate}</a></dt>
|
||||
<dd>
|
||||
{$MENU_CATEGORIES_CONTENT}
|
||||
{if isset($U_UPLOAD)}
|
||||
<ul><li>
|
||||
<a href="{$U_UPLOAD}">{'upload_picture'|@translate}</a>
|
||||
</li></ul>
|
||||
{/if}
|
||||
<p class="totalImages">{$pwg->l10n_dec('%d element', '%d elements', $NB_PICTURE)}</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
{if not empty($related_tags)}
|
||||
<dl id="mbTags">
|
||||
<dt>{'Related tags'|@translate}</dt>
|
||||
<dd>
|
||||
<ul id="menuTagCloud">
|
||||
{foreach from=$related_tags item=tag}
|
||||
<li>
|
||||
{if !empty($tag.U_ADD) }
|
||||
<a href="{$tag.U_ADD}"
|
||||
title="{$pwg->l10n_dec('%d element are also linked to current tags', '%d elements are also linked to current tags', $tag.counter)}"
|
||||
rel="nofollow">
|
||||
<img src="{$ROOT_URL}{$themeconf.icon_dir}/add_tag.png" alt="+" />
|
||||
</a>
|
||||
{/if}
|
||||
<a href="{$tag.URL}" class="tagLevel{$tag.level}" title="{'See elements linked to this tag only'|@translate}">{$tag.name}</a>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
{/if}
|
||||
|
||||
|
||||
<dl id="mbSpecial">
|
||||
<dt>{'special_categories'|@translate}</dt>
|
||||
<dd>
|
||||
<ul>
|
||||
{foreach from=$special_categories item=cat}
|
||||
<li><a href="{$cat.URL}" title="{$cat.TITLE}" {if isset($cat.REL)}{$cat.REL}{/if}>{$cat.NAME}</a></li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
<dl id="mbMenu">
|
||||
<dt>{'title_menu'|@translate}</dt>
|
||||
<dd>
|
||||
<form action="{$ROOT_URL}qsearch.php" method="get" id="quicksearch">
|
||||
<p>
|
||||
<input type="text" name="q" id="qsearchInput" onfocus="if (value==qsearch_prompt) value='';" onblur="if (value=='') value=qsearch_prompt;" />
|
||||
</p>
|
||||
</form>
|
||||
<script type="text/javascript">var qsearch_prompt="{'qsearch'|@translate|@escape:'javascript'}"; document.getElementById('qsearchInput').value=qsearch_prompt;</script>
|
||||
|
||||
<ul>
|
||||
{foreach from=$summaries item=sum}
|
||||
<li><a href="{$sum.U_SUMMARY}" title="{$sum.TITLE}" {if isset($sum.REL)}{$sum.REL}{/if}>{$sum.NAME}</a></li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
<dl id="mbIdentification">
|
||||
<dt>{'identification'|@translate}</dt>
|
||||
<dd>
|
||||
{if isset($USERNAME)}
|
||||
<p>{'hello'|@translate} {$USERNAME} !</p>
|
||||
{/if}
|
||||
|
||||
<ul>
|
||||
{if isset($U_REGISTER)}
|
||||
<li><a href="{$U_REGISTER}" title="{'Create a new account'|@translate}" rel="nofollow">{'Register'|@translate}</a></li>
|
||||
{/if}
|
||||
|
||||
{if isset($U_IDENTIFY)}
|
||||
<li><a href="{$U_IDENTIFY}" rel="nofollow">{'Connection'|@translate}</a></li>
|
||||
{/if}
|
||||
|
||||
{if isset($U_LOGOUT)}
|
||||
<li><a href="{$U_LOGOUT}">{'logout'|@translate}</a></li>
|
||||
{/if}
|
||||
|
||||
{if isset($U_PROFILE)}
|
||||
<li><a href="{$U_PROFILE}" title="{'hint_customize'|@translate}">{'customize'|@translate}</a></li>
|
||||
{/if}
|
||||
|
||||
{if isset($U_ADMIN)}
|
||||
<li><a href="{$U_ADMIN}" title="{'hint_admin'|@translate}">{'admin'|@translate}</a></li>
|
||||
{/if}
|
||||
</ul>
|
||||
|
||||
{if isset($U_IDENTIFY)}
|
||||
<form method="post" action="{$U_IDENTIFY}" class="filter" id="quickconnect">
|
||||
<fieldset>
|
||||
<legend>{'Quick connect'|@translate}</legend>
|
||||
|
||||
<label>
|
||||
{'Username'|@translate}
|
||||
<input type="text" name="username" size="15" value="">
|
||||
</label>
|
||||
|
||||
<label>
|
||||
{'Password'|@translate}
|
||||
<input type="password" name="password" size="15">
|
||||
</label>
|
||||
|
||||
{if $AUTHORIZE_REMEMBERING}
|
||||
<label>
|
||||
{'remember_me'|@translate}
|
||||
<input type="checkbox" name="remember_me" value="1">
|
||||
</label>
|
||||
{/if}
|
||||
<p>
|
||||
<input class="submit" type="submit" name="login" value="{'Submit'|@translate}">
|
||||
</p>
|
||||
|
||||
<ul class="actions">
|
||||
<li><a href="{$U_LOST_PASSWORD}" title="{'Forgot your password?'|@translate}" rel="nofollow"><img src="{$ROOT_URL}{$themeconf.icon_dir}/lost_password.png" class="button" alt="{'Forgot your password?'|@translate}"></a></li>
|
||||
{if isset($U_REGISTER)}
|
||||
<li><a href="{$U_REGISTER}" title="{'Create a new account'|@translate}" rel="nofollow"><img src="{$ROOT_URL}{$themeconf.icon_dir}/register.png" class="button" alt="{'Register'|@translate}"/></a></li>
|
||||
{/if}
|
||||
</ul>
|
||||
|
||||
</fieldset>
|
||||
</form>
|
||||
{/if}
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
</div> <!-- menubar -->
|
24
plugins/test_menu/menu_templates/menubar_categories.tpl
Normal file
24
plugins/test_menu/menu_templates/menubar_categories.tpl
Normal file
|
@ -0,0 +1,24 @@
|
|||
|
||||
<!-- categories menu bar -->
|
||||
|
||||
<dt>
|
||||
{if isset($section.ITEMS.U_START_FILTER)}
|
||||
<a href="{$section.ITEMS.U_START_FILTER}" title="{'start_filter_hint'|@translate}" rel="nofollow"><img src="{$ROOT_URL}{$themeconf.icon_dir}/start_filter.png" class="button" alt="start filter"></a>
|
||||
{/if}
|
||||
{if isset($section.ITEMS.U_STOP_FILTER)}
|
||||
<a href="{$section.ITEMS.U_STOP_FILTER}" title="{'stop_filter_hint'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/stop_filter.png" class="button" alt="stop filter"></a>
|
||||
{/if}
|
||||
|
||||
<a href="{$section.ITEMS.U_CATEGORIES}">{$section.NAME|@translate}</a>
|
||||
</dt>
|
||||
<dd>
|
||||
{$section.ITEMS.MENU_CATEGORIES_CONTENT}
|
||||
{if isset($section.ITEMS.U_UPLOAD)}
|
||||
<ul>
|
||||
<li>
|
||||
<a href="{$section.ITEMS.U_UPLOAD}">{'upload_picture'|@translate}</a>
|
||||
</li>
|
||||
</ul>
|
||||
{/if}
|
||||
<p class="totalImages">{$pwg->l10n_dec('%d element', '%d elements', $section.ITEMS.NB_PICTURE)}</p>
|
||||
</dd>
|
10
plugins/test_menu/menu_templates/menubar_generic.tpl
Normal file
10
plugins/test_menu/menu_templates/menubar_generic.tpl
Normal file
|
@ -0,0 +1,10 @@
|
|||
|
||||
<!-- generic menu bar -->
|
||||
<dt>{$section.NAME|@translate}</dt>
|
||||
<dd>
|
||||
<ul>
|
||||
{foreach from=$section.ITEMS item=item}
|
||||
<li><a href="{$item.URL}" title="{$item.TITLE}">{$item.NAME}</a></li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</dd>
|
67
plugins/test_menu/menu_templates/menubar_identification.tpl
Normal file
67
plugins/test_menu/menu_templates/menubar_identification.tpl
Normal file
|
@ -0,0 +1,67 @@
|
|||
|
||||
<!-- identification menu bar -->
|
||||
<dt>{$section.NAME|@translate}</dt>
|
||||
<dd>
|
||||
{if isset($section.ITEMS.USERNAME)}
|
||||
<p>{'hello'|@translate} {$section.ITEMS.USERNAME} !</p>
|
||||
{/if}
|
||||
|
||||
<ul>
|
||||
{if isset($section.ITEMS.U_REGISTER)}
|
||||
<li><a href="{$section.ITEMS.U_REGISTER}" title="{'Create a new account'|@translate}" rel="nofollow">{'Register'|@translate}</a></li>
|
||||
{/if}
|
||||
|
||||
{if isset($section.ITEMS.U_IDENTIFY)}
|
||||
<li><a href="{$section.ITEMS.U_IDENTIFY}" rel="nofollow">{'Connection'|@translate}</a></li>
|
||||
{/if}
|
||||
|
||||
{if isset($section.ITEMS.U_LOGOUT)}
|
||||
<li><a href="{$section.ITEMS.U_LOGOUT}">{'logout'|@translate}</a></li>
|
||||
{/if}
|
||||
|
||||
{if isset($section.ITEMS.U_PROFILE)}
|
||||
<li><a href="{$section.ITEMS.U_PROFILE}" title="{'hint_customize'|@translate}">{'customize'|@translate}</a></li>
|
||||
{/if}
|
||||
|
||||
{if isset($section.ITEMS.U_ADMIN)}
|
||||
<li><a href="{$section.ITEMS.U_ADMIN}" title="{'hint_admin'|@translate}">{'admin'|@translate}</a></li>
|
||||
{/if}
|
||||
</ul>
|
||||
|
||||
{if isset($section.ITEMS.U_IDENTIFY)}
|
||||
<form method="post" action="{$section.ITEMS.U_IDENTIFY}" class="filter" id="quickconnect">
|
||||
<fieldset>
|
||||
<legend>{'Quick connect'|@translate}</legend>
|
||||
|
||||
<label>
|
||||
{'Username'|@translate}
|
||||
<input type="text" name="username" size="15" value="">
|
||||
</label>
|
||||
|
||||
<label>
|
||||
{'Password'|@translate}
|
||||
<input type="password" name="password" size="15">
|
||||
</label>
|
||||
|
||||
{if $section.ITEMS.AUTHORIZE_REMEMBERING}
|
||||
<label>
|
||||
{'remember_me'|@translate}
|
||||
<input type="checkbox" name="remember_me" value="1">
|
||||
</label>
|
||||
{/if}
|
||||
<p>
|
||||
<input class="submit" type="submit" name="login" value="{'Submit'|@translate}">
|
||||
</p>
|
||||
|
||||
<ul class="actions">
|
||||
<li><a href="{$section.ITEMS.U_LOST_PASSWORD}" title="{'Forgot your password?'|@translate}" rel="nofollow"><img src="{$ROOT_URL}{$themeconf.icon_dir}/lost_password.png" class="button" alt="{'Forgot your password?'|@translate}"></a></li>
|
||||
{if isset($section.ITEMS.U_REGISTER)}
|
||||
<li><a href="{$section.ITEMS.U_REGISTER}" title="{'Create a new account'|@translate}" rel="nofollow"><img src="{$ROOT_URL}{$themeconf.icon_dir}/register.png" class="button" alt="{'Register'|@translate}"/></a></li>
|
||||
{/if}
|
||||
</ul>
|
||||
|
||||
</fieldset>
|
||||
</form>
|
||||
{/if}
|
||||
|
||||
</dd>
|
17
plugins/test_menu/menu_templates/menubar_links.tpl
Normal file
17
plugins/test_menu/menu_templates/menubar_links.tpl
Normal file
|
@ -0,0 +1,17 @@
|
|||
|
||||
<!-- links menu bar -->
|
||||
|
||||
<dt>{$section.NAME|@translate}</dt>
|
||||
<dd>
|
||||
<ul>
|
||||
{foreach from=$section.ITEMS item=link}
|
||||
<li>
|
||||
<a href="{$link.URL}"
|
||||
{if isset($link.new_window) }onclick="window.open(this.href, '{$link.new_window.NAME|@escape:'javascript'}','{$link.new_window.FEATURES|@escape:'javascript'}'); return false;"{/if}
|
||||
>
|
||||
{$link.LABEL}
|
||||
</a>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</dd>
|
15
plugins/test_menu/menu_templates/menubar_main.tpl
Normal file
15
plugins/test_menu/menu_templates/menubar_main.tpl
Normal file
|
@ -0,0 +1,15 @@
|
|||
|
||||
<!-- main menu bar -->
|
||||
|
||||
{if isset($sections) and count($sections)}
|
||||
<div id="menubar">
|
||||
{foreach from=$sections key=name item=section}
|
||||
{if not(empty($section.ITEMS))}
|
||||
<dl id="{$section.ID}">
|
||||
|
||||
{include file=$section.TEMPLATE section=$section}
|
||||
</dl>
|
||||
{/if}
|
||||
{/foreach}
|
||||
</div>
|
||||
{/if}
|
17
plugins/test_menu/menu_templates/menubar_menu.tpl
Normal file
17
plugins/test_menu/menu_templates/menubar_menu.tpl
Normal file
|
@ -0,0 +1,17 @@
|
|||
|
||||
<!-- menu menu bar -->
|
||||
<dt>{$section.NAME|@translate}</dt>
|
||||
<dd>
|
||||
<form action="{$ROOT_URL}qsearch.php" method="get" id="quicksearch">
|
||||
<p>
|
||||
<input type="text" name="q" id="qsearchInput" onfocus="if (value==qsearch_prompt) value='';" onblur="if (value=='') value=qsearch_prompt;" />
|
||||
</p>
|
||||
</form>
|
||||
<script type="text/javascript">var qsearch_prompt="{'qsearch'|@translate|@escape:'javascript'}"; document.getElementById('qsearchInput').value=qsearch_prompt;</script>
|
||||
|
||||
<ul>
|
||||
{foreach from=$section.ITEMS item=sum}
|
||||
<li><a href="{$sum.U_SUMMARY}" title="{$sum.TITLE}" {if isset($sum.REL)}{$sum.REL}{/if}>{$sum.NAME}</a></li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</dd>
|
10
plugins/test_menu/menu_templates/menubar_special.tpl
Normal file
10
plugins/test_menu/menu_templates/menubar_special.tpl
Normal file
|
@ -0,0 +1,10 @@
|
|||
|
||||
<!-- special menu bar -->
|
||||
<dt>{$section.NAME|@translate}</dt>
|
||||
<dd>
|
||||
<ul>
|
||||
{foreach from=$section.ITEMS item=cat}
|
||||
<li><a href="{$cat.URL}" title="{$cat.TITLE}" {if isset($cat.REL)}{$cat.REL}{/if}>{$cat.NAME}</a></li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</dd>
|
19
plugins/test_menu/menu_templates/menubar_tags.tpl
Normal file
19
plugins/test_menu/menu_templates/menubar_tags.tpl
Normal file
|
@ -0,0 +1,19 @@
|
|||
|
||||
<!-- tags menu bar -->
|
||||
<dt>{$section.NAME|@translate}</dt>
|
||||
<dd>
|
||||
<ul id="menuTagCloud">
|
||||
{foreach from=$section.ITEMS item=tag}
|
||||
<li>
|
||||
{if !empty($tag.U_ADD) }
|
||||
<a href="{$tag.U_ADD}"
|
||||
title="{$pwg->l10n_dec('%d element are also linked to current tags', '%d elements are also linked to current tags', $tag.counter)}"
|
||||
rel="nofollow">
|
||||
<img src="{$ROOT_URL}{$themeconf.icon_dir}/add_tag.png" alt="+" />
|
||||
</a>
|
||||
{/if}
|
||||
<a href="{$tag.URL}" class="tagLevel{$tag.level}" title="{'See elements linked to this tag only'|@translate}">{$tag.name}</a>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</dd>
|
288
plugins/test_menu/menubar.inc.php
Normal file
288
plugins/test_menu/menubar.inc.php
Normal file
|
@ -0,0 +1,288 @@
|
|||
<?php
|
||||
/*
|
||||
to use Menu class in piwigo, just replace the original menubar.inc.php file by
|
||||
this one
|
||||
*/
|
||||
|
||||
|
||||
$datas=array();
|
||||
|
||||
//-------------------------------------------------------------- categories
|
||||
$datas['categories']=array(
|
||||
'NB_PICTURE' => $user['nb_total_images'],
|
||||
'MENU_CATEGORIES_CONTENT' => get_categories_menu(),
|
||||
'U_CATEGORIES' => make_index_url(array('section' => 'categories')),
|
||||
'U_UPLOAD' => get_upload_menu_link()
|
||||
);
|
||||
|
||||
//------------------------------------------------------------------------ filter
|
||||
if (!empty($conf['filter_pages']) and get_filter_page_value('used'))
|
||||
{
|
||||
if ($filter['enabled'])
|
||||
{
|
||||
$datas['categories']['U_STOP_FILTER']=
|
||||
add_url_params(make_index_url(array()), array('filter' => 'stop'));
|
||||
}
|
||||
else
|
||||
{
|
||||
$datas['categories']['U_START_FILTER']=
|
||||
add_url_params(make_index_url(array()), array('filter' => 'start-recent-'.$user['recent_period']));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------------------- external links
|
||||
$datas['links']=array();
|
||||
foreach ($conf['links'] as $url => $url_data)
|
||||
{
|
||||
if (!is_array($url_data))
|
||||
{
|
||||
$url_data = array('label' => $url_data);
|
||||
}
|
||||
|
||||
if
|
||||
(
|
||||
(!isset($url_data['eval_visible']))
|
||||
or
|
||||
(eval($url_data['eval_visible']))
|
||||
)
|
||||
{
|
||||
$tpl_var = array(
|
||||
'URL' => $url,
|
||||
'LABEL' => $url_data['label']
|
||||
);
|
||||
|
||||
if (!isset($url_data['new_window']) or $url_data['new_window'])
|
||||
{
|
||||
$tpl_var['new_window'] =
|
||||
array(
|
||||
'NAME' => (isset($url_data['nw_name']) ? $url_data['nw_name'] : ''),
|
||||
'FEATURES' => (isset($url_data['nw_features']) ? $url_data['nw_features'] : '')
|
||||
);
|
||||
}
|
||||
$datas['links'][]=$tpl_var;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//------------------------------------------------------------------------ tags
|
||||
$datas['tags']=array();
|
||||
if ('tags' == @$page['section'])
|
||||
{
|
||||
// display tags associated to currently tagged items, less current tags
|
||||
$tags = array();
|
||||
if ( !empty($page['items']) )
|
||||
{
|
||||
$tags = get_common_tags($page['items'],
|
||||
$conf['menubar_tag_cloud_items_number'], $page['tag_ids']);
|
||||
}
|
||||
|
||||
$tags = add_level_to_tags($tags);
|
||||
|
||||
foreach ($tags as $tag)
|
||||
{
|
||||
$datas['tags'][]=
|
||||
array_merge( $tag,
|
||||
array(
|
||||
'URL' => make_index_url(
|
||||
array(
|
||||
'tags' => array($tag)
|
||||
)
|
||||
),
|
||||
|
||||
'U_ADD' => make_index_url(
|
||||
array(
|
||||
'tags' => array_merge(
|
||||
$page['tags'],
|
||||
array($tag)
|
||||
)
|
||||
)
|
||||
),
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//---------------------------------------------------------- special categories
|
||||
// favorites categories
|
||||
$datas['special']=array();
|
||||
if ( !is_a_guest() )
|
||||
{
|
||||
$datas['special']['favorite_cat']=array(
|
||||
'URL' => make_index_url(array('section' => 'favorites')),
|
||||
'TITLE' => l10n('favorite_cat_hint'),
|
||||
'NAME' => l10n('favorite_cat')
|
||||
);
|
||||
}
|
||||
// most visited
|
||||
$datas['special']['most_visited_cat']=array(
|
||||
'URL' => make_index_url(array('section' => 'most_visited')),
|
||||
'TITLE' => l10n('most_visited_cat_hint'),
|
||||
'NAME' => l10n('most_visited_cat')
|
||||
);
|
||||
// best rated
|
||||
if ($conf['rate'])
|
||||
{
|
||||
$datas['special']['best_rated_cat']=array(
|
||||
'URL' => make_index_url(array('section' => 'best_rated')),
|
||||
'TITLE' => l10n('best_rated_cat_hint'),
|
||||
'NAME' => l10n('best_rated_cat')
|
||||
);
|
||||
}
|
||||
// random
|
||||
$datas['special']['random_cat']=array(
|
||||
'URL' => get_root_url().'random.php',
|
||||
'TITLE' => l10n('random_cat_hint'),
|
||||
'NAME' => l10n('random_cat'),
|
||||
'REL'=> 'rel="nofollow"'
|
||||
);
|
||||
|
||||
// recent pics
|
||||
$datas['special']['recent_pics_cat']=array(
|
||||
'URL' => make_index_url(array('section' => 'recent_pics')),
|
||||
'TITLE' => l10n('recent_pics_cat_hint'),
|
||||
'NAME' => l10n('recent_pics_cat'),
|
||||
);
|
||||
// recent cats
|
||||
$datas['special']['recent_cats_cat']=array(
|
||||
'URL' => make_index_url(array('section' => 'recent_cats')),
|
||||
'TITLE' => l10n('recent_cats_cat_hint'),
|
||||
'NAME' => l10n('recent_cats_cat'),
|
||||
);
|
||||
|
||||
// calendar
|
||||
$datas['special']['calendar']=array(
|
||||
'URL' =>
|
||||
make_index_url(
|
||||
array(
|
||||
'chronology_field' => ($conf['calendar_datefield']=='date_available'
|
||||
? 'posted' : 'created'),
|
||||
'chronology_style'=> 'monthly',
|
||||
'chronology_view' => 'calendar'
|
||||
)
|
||||
),
|
||||
'TITLE' => l10n('calendar_hint'),
|
||||
'NAME' => l10n('calendar'),
|
||||
'REL'=> 'rel="nofollow"'
|
||||
);
|
||||
|
||||
|
||||
|
||||
//--------------------------------------------------------------- identification
|
||||
$datas['identification']=array();
|
||||
if (is_a_guest())
|
||||
{
|
||||
$datas['identification']=array(
|
||||
'U_IDENTIFY' => get_root_url().'identification.php',
|
||||
'AUTHORIZE_REMEMBERING' => $conf['authorize_remembering'],
|
||||
'U_LOST_PASSWORD' => get_root_url().'password.php',
|
||||
);
|
||||
|
||||
if ($conf['allow_user_registration'])
|
||||
{
|
||||
$datas['identification']['U_REGISTER']=get_root_url().'register.php';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$datas['identification']['USERNAME']= $user['username'];
|
||||
|
||||
if (is_autorize_status(ACCESS_CLASSIC))
|
||||
{
|
||||
$datas['identification']['U_PROFILE']=get_root_url().'profile.php';
|
||||
}
|
||||
|
||||
// the logout link has no meaning with Apache authentication : it is not
|
||||
// possible to logout with this kind of authentication.
|
||||
if (!$conf['apache_authentication'])
|
||||
{
|
||||
$datas['identification']['U_LOGOUT']= get_root_url().'?act=logout';
|
||||
}
|
||||
|
||||
if (is_admin())
|
||||
{
|
||||
$datas['identification']['U_ADMIN']= get_root_url().'admin.php';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------- menu summaries
|
||||
$datas['menu']=array();
|
||||
// tags link
|
||||
$datas['menu']['tags']=array(
|
||||
'TITLE' => l10n('See available tags'),
|
||||
'NAME' => l10n('Tags'),
|
||||
'U_SUMMARY'=> get_root_url().'tags.php',
|
||||
);
|
||||
|
||||
// search link
|
||||
$datas['menu']['search']=array(
|
||||
'TITLE'=>l10n('hint_search'),
|
||||
'NAME'=>l10n('Search'),
|
||||
'U_SUMMARY'=> get_root_url().'search.php',
|
||||
'REL'=> 'rel="search"'
|
||||
);
|
||||
|
||||
// comments link
|
||||
$datas['menu']['comments']=array(
|
||||
'TITLE'=>l10n('hint_comments'),
|
||||
'NAME'=>l10n('comments'),
|
||||
'U_SUMMARY'=> get_root_url().'comments.php',
|
||||
);
|
||||
|
||||
// about link
|
||||
$datas['menu']['about']=array(
|
||||
'TITLE' => l10n('about_page_title'),
|
||||
'NAME' => l10n('About'),
|
||||
'U_SUMMARY' => get_root_url().'about.php',
|
||||
);
|
||||
|
||||
// notification
|
||||
$datas['menu']['notification']=array(
|
||||
'TITLE'=>l10n('RSS feed'),
|
||||
'NAME'=>l10n('Notification'),
|
||||
'U_SUMMARY'=> get_root_url().'notification.php',
|
||||
'REL'=> 'rel="nofollow"'
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
$section = new Section('mbLinks', 'links', MENU_TEMPLATES_PATH.'menubar_links.tpl');
|
||||
$section->set_items($datas['links']);
|
||||
$menu->add($section->get());
|
||||
|
||||
|
||||
$section = new Section('mbTags', 'Related tags', MENU_TEMPLATES_PATH.'menubar_tags.tpl');
|
||||
$section->set_items($datas['tags']);
|
||||
$menu->add($section->get());
|
||||
|
||||
$section = new Section('mbSpecial', 'special_categories', MENU_TEMPLATES_PATH.'menubar_special.tpl');
|
||||
$section->set_items($datas['special']);
|
||||
$menu->add($section->get());
|
||||
|
||||
$section = new Section('mbMenu', 'title_menu', MENU_TEMPLATES_PATH.'menubar_menu.tpl');
|
||||
$section->set_items($datas['menu']);
|
||||
$menu->add($section->get());
|
||||
|
||||
$section = new Section('mbIdentification', 'identification', MENU_TEMPLATES_PATH.'menubar_identification.tpl');
|
||||
$section->set_items($datas['identification']);
|
||||
$menu->add($section->get());
|
||||
|
||||
$section = new Section('mbCategories', 'Categories', MENU_TEMPLATES_PATH.'menubar_categories.tpl');
|
||||
$section->set_items($datas['categories']);
|
||||
$menu->add($section->get());
|
||||
|
||||
|
||||
$menu->apply();
|
||||
|
||||
|
||||
|
||||
|
||||
?>
|
Loading…
Reference in a new issue