diff options
author | grum <grum@piwigo.org> | 2008-08-07 21:52:45 +0000 |
---|---|---|
committer | grum <grum@piwigo.org> | 2008-08-07 21:52:45 +0000 |
commit | 526d8006a16bd8b666d94aaf152346537045a0a5 (patch) | |
tree | be1a62befe2bdbe3d0d03a8155aa1d1b228093e5 | |
parent | 5e3d71c9cab75c7796c566823df96765522c8965 (diff) |
updating files for the Menu class (test_menu)
+ add functionnalities
updating files for the AMenuManager plugin
+ fixes some bugs
+ add functionnalities
updating common classes grum_plugins_classes-2
(needed for the AMenuManager plugin)
+ add functionalities for google_translator use
git-svn-id: http://piwigo.org/svn/trunk@2468 68402e56-0260-453c-a942-63ccdbb3a9ee
21 files changed, 1322 insertions, 251 deletions
diff --git a/plugins/AMenuManager/admin/amm_linksconfig.tpl b/plugins/AMenuManager/admin/amm_linksconfig.tpl index 55ee8b6a0..25e6d75cc 100644 --- a/plugins/AMenuManager/admin/amm_linksconfig.tpl +++ b/plugins/AMenuManager/admin/amm_linksconfig.tpl @@ -35,6 +35,15 @@ objhidden[objnames.indexOf(input_id)][objlang.options.selectedIndex].value = obj.value; } + function do_translation() + { + var inputid = document.getElementById('iamm_links_title'); + var tolang = objlang.options[objlang.options.selectedIndex].value.substr(0,2); + + google_translate(inputid.value, '{/literal}{$datas.fromlang}{literal}', tolang, inputid, 'value', apply_changes, inputid.id); + } + + </script> {/literal} @@ -46,7 +55,7 @@ <form method="post" action="" class="general"> <fieldset> - <legend>{'g002_setting_link_block_menu'|@translate}</legend> + <legend>{'g002_setting_block_menu'|@translate}</legend> {if isset($datas.language_list) and count($datas.language_list)} {foreach from=$datas.language_list key=name item=language_row} @@ -57,7 +66,7 @@ <table class="formtable"> <tr> - <td>{'g002_setting_link_block_active'|@translate}</td> + <td>{'g002_setting_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} @@ -66,12 +75,18 @@ </tr> <tr> - <td>{'g002_setting_link_block_title'|@translate}</td> + <td>{'g002_setting_block_title'|@translate}</td> <td> - <input type="text" id="iamm_links_title" value="" maxlength="50" onkeyup="apply_changes('iamm_links_title');" /> + <input type="text" id="iamm_links_title" value="" maxlength="50" onkeyup="apply_changes('iamm_links_title');" onblur="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> + </select><br> + </td> + </tr> + <tr> + <td></td> + <td style="font-size:80%;"> + <a style="cursor:pointer;" onclick="do_translation()">{'g002_translate'|@translate}</a> </td> </tr> diff --git a/plugins/AMenuManager/admin/amm_personalisedlist.tpl b/plugins/AMenuManager/admin/amm_personalisedlist.tpl new file mode 100644 index 000000000..d7595e036 --- /dev/null +++ b/plugins/AMenuManager/admin/amm_personalisedlist.tpl @@ -0,0 +1,50 @@ +{literal} +<script type="text/javascript"> + + function load_list(do_action, item) + { + /* + do_action + 'list' : just load list + 'delete' : delete the item in list + */ + var doc = document.getElementById("isections"); + + action_todo=''; + if(do_action=='delete') + { + if(confirm('{/literal}{'g002_confirm_delete_link'|@translate}{literal}')) + { + action_todo='personalised_delete&fItem='+item; + } + } + else + { + action_todo='personalised_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_personalisedlist'|@translate}</h3> + +[{$datas.nbsections}]<br/> +<a href="{$datas.lnk_create}" title="{'g002_addsection'|@translate}">{'g002_addsection'|@translate}</a> + +<br/> + +<div id="isections"></div> + + +<script type="text/javascript"> + load_list('list', 0); +</script>
\ No newline at end of file diff --git a/plugins/AMenuManager/admin/amm_personalisedlist_detail.tpl b/plugins/AMenuManager/admin/amm_personalisedlist_detail.tpl new file mode 100644 index 000000000..fd785e359 --- /dev/null +++ b/plugins/AMenuManager/admin/amm_personalisedlist_detail.tpl @@ -0,0 +1,22 @@ + +{if isset($datas.sections) and count($datas.sections)} + <table class="table2 littlefont"> + <tr class="throw"> + <th>{'g002_setting_personalised_nfo'|@translate}</th> + <th>{'g002_title'|@translate}</th> + <th>{'g002_visible'|@translate}</th> + <th colspan=2> </th> + </tr> + + {foreach from=$datas.sections key=name item=section} + <tr> + <td>{$section.nfo}</td> + <td>{$section.title}</td> + <td style="text-align:center;">{$section.visible}</td> + <td width="15px"><a href="{$section.edit}"><img src='{$themeconf.icon_dir}/category_edit.png'/></a></td> + <td width="15px"><a style="cursor:pointer;" onclick="load_list('delete', {$section.ID})"><img src='{$themeconf.icon_dir}/delete.png'/></a></td> + </tr> + {/foreach} + + </table> +{/if} diff --git a/plugins/AMenuManager/admin/amm_personalisedlist_edit.tpl b/plugins/AMenuManager/admin/amm_personalisedlist_edit.tpl new file mode 100644 index 000000000..ddccc6b23 --- /dev/null +++ b/plugins/AMenuManager/admin/amm_personalisedlist_edit.tpl @@ -0,0 +1,155 @@ +{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_personalised_title', 'iamm_personalised_content'); + 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; + } + + function do_translation() + { + var inputid = document.getElementById('iamm_personalised_title'); + var tolang = objlang.options[objlang.options.selectedIndex].value.substr(0,2); + + google_translate(inputid.value, '{/literal}{$datas.fromlang}{literal}', tolang, inputid, 'value', apply_changes, inputid.id); + } + +</script> +{/literal} + + +{if isset($datas.modeedit)} + + <h3> + {if $datas.modeedit=='create'} + {'g002_createofpersonalised'|@translate} + {else} + {'g002_editofpersonalised'|@translate} + {/if} + / <span style="font-weight:normal"><a href="{$datas.personalised_list}">{'g002_personalisedlist'|@translate}</a></span></h3> + </h3> + + +<form method="post" action="" class="general"> + <fieldset> + <legend>{'g002_setting_personalised_properties'|@translate}</legend> + + <table class="formtable"> + <tr> + <td>{'g002_setting_block_active'|@translate}</td> + <td> + <select name="famm_personalised_visible" id="iamm_personalised_visible"> + {html_options values=$datas.yesno_values output=$datas.yesno_labels selected=$datas.visible_selected} + </select> + </td> + </tr> + + <tr> + <td>{'g002_setting_personalised_nfo'|@translate}</td> + <td> + <input type="text" name="famm_personalised_nfo" id="iamm_personalised_nfo" value="{$datas.nfo}" maxlength="25"/> + </td> + </tr> + + </table> + + </fieldset> + + <fieldset> + <legend>{'g002_setting_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_personalised_title_{$language_row.LANG}" + id="iamm_personalised_title_{$language_row.LANG}" value="{$language_row.MENUBARTIT}"> + <input type="hidden" name="famm_personalised_content_{$language_row.LANG}" + id="iamm_personalised_content_{$language_row.LANG}" value="{$language_row.MENUBARCONTENT}"> + {/foreach} + {/if} + + <table class="formtable"> + + <tr> + <td>{'g002_setting_block_langchoice'|@translate}</td> + <td> + <select onchange="change_lang();" id="islang"> + {html_options values=$datas.language_list_values output=$datas.language_list_labels selected=$datas.lang_selected} + </select><br> + </td> + </tr> + + <tr> + <td colspan=2><hr/></td> + </tr> + + <tr> + <td>{'g002_setting_block_title'|@translate}</td> + <td> + <input type="text" id="iamm_personalised_title" value="" maxlength="50" onkeyup="apply_changes('iamm_personalised_title');" onblur="apply_changes('iamm_personalised_title');"/> + </td> + </tr> + <tr> + <td></td> + <td style="font-size:80%;"> + <a style="cursor:pointer;" onclick="do_translation()">{'g002_translate'|@translate}</a> + </td> + </tr> + + <tr> + <td>{'g002_setting_personalised_content'|@translate}</td> + <td> + <textarea id="iamm_personalised_content" cols=80 rows=25 onkeyup="apply_changes('iamm_personalised_content');" /></textarea> + </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="{$datas.modeedit}"> + <input type="hidden" name="famm_id" value="{$datas.id}"> + +</form> + + +<script type="text/javascript"> + init(); + change_lang(); +</script> + +{/if}
\ No newline at end of file diff --git a/plugins/AMenuManager/admin/amm_randompicconfig.tpl b/plugins/AMenuManager/admin/amm_randompicconfig.tpl new file mode 100644 index 000000000..df70311f0 --- /dev/null +++ b/plugins/AMenuManager/admin/amm_randompicconfig.tpl @@ -0,0 +1,132 @@ +{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_randompicture_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; + } + + function do_translation() + { + var inputid = document.getElementById('iamm_randompicture_title'); + var tolang = objlang.options[objlang.options.selectedIndex].value.substr(0,2); + + google_translate(inputid.value, '{/literal}{$datas.fromlang}{literal}', tolang, inputid, 'value', apply_changes, inputid.id); + + } + + +</script> +{/literal} + + + +<h3>{'g002_configrandompic'|@translate}</h3> + + +<form method="post" action="" class="general"> + <fieldset> + <legend>{'g002_setting_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_randompicture_title_{$language_row.LANG}" + id="iamm_randompicture_title_{$language_row.LANG}" value="{$language_row.MENUBARTIT}"> + {/foreach} + {/if} + + <table class="formtable"> + <tr> + <td>{'g002_setting_block_active'|@translate}</td> + <td> + <select name="famm_randompicture_active" id="iamm_randompicture_active"> + {html_options values=$datas.yesno_values output=$datas.yesno_labels selected=$datas.active_selected} + </select> + </td> + </tr> + + <tr> + <td>{'g002_setting_block_title'|@translate}</td> + <td> + <input type="text" id="iamm_randompicture_title" value="" maxlength="50" onkeyup="apply_changes('iamm_randompicture_title');" onblur="apply_changes('iamm_randompicture_title');"/> + <select onchange="change_lang();" id="islang"> + {html_options values=$datas.language_list_values output=$datas.language_list_labels selected=$datas.lang_selected} + </select><br> + </td> + </tr> + <tr> + <td></td> + <td style="font-size:80%;"> + <a style="cursor:pointer;" onclick="do_translation()">{'g002_translate'|@translate}</a> + </td> + </tr> + + </table> + + </fieldset> + + <fieldset> + <legend>{'g002_setting_randompic_aboutpicture'|@translate}</legend> + <table class="formclass"> + <tr> + <td>{'g002_setting_randompic_showname'|@translate}</td> + <td> + <select name="famm_randompicture_showname" id="iamm_randompicture_showname"> + {html_options values=$datas.show_values output=$datas.show_labels selected=$datas.showname_selected} + </select> + </td> + </tr> + + <tr> + <td>{'g002_setting_randompic_showcomment'|@translate}</td> + <td> + <select name="famm_randompicture_showcomment" id="iamm_randompicture_showcomment"> + {html_options values=$datas.show_values output=$datas.show_labels selected=$datas.showcomment_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>
\ No newline at end of file diff --git a/plugins/AMenuManager/admin/amm_sections.tpl b/plugins/AMenuManager/admin/amm_sections.tpl new file mode 100644 index 000000000..da132a622 --- /dev/null +++ b/plugins/AMenuManager/admin/amm_sections.tpl @@ -0,0 +1,58 @@ +{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> +{foreach from=$datas.LIST item=data} + {$data.separator} + {if $data.link!=''} + <span style="font-weight:normal"><a href="{$data.link}" title="{$data.label|@translate}"> + {/if} + {$data.label|@translate} + {if $data.link!=''} + </a></span> + {/if} +{/foreach} +</h3> + +<div id="isections"></div> + + +<script type="text/javascript"> + load_list('list', 0, 0); +</script>
\ No newline at end of file diff --git a/plugins/AMenuManager/admin/amm_sectionsmod_detail.tpl b/plugins/AMenuManager/admin/amm_sectionsmod_detail.tpl new file mode 100644 index 000000000..dcaf625f6 --- /dev/null +++ b/plugins/AMenuManager/admin/amm_sectionsmod_detail.tpl @@ -0,0 +1,17 @@ + +{if isset($datas.LIST) and count($datas.LIST)} + <table class="table2 littlefont"> + <tr class="throw"> + <th>{'g002_labelmenu'|@translate}</th> + <th>{'g002_visible'|@translate}</th> + </tr> + + {foreach from=$datas.LIST key=name item=data} + <tr> + <td>{$data.LABEL|@translate}</td> + <td style="text-align:center;"><a style="cursor:pointer;" onclick="load_list('showhide', '{$data.ID}', '')">{$data.VISIBLE|@translate}</a></td> + </tr> + {/foreach} + + </table> +{/if} diff --git a/plugins/AMenuManager/amm.sql b/plugins/AMenuManager/amm.sql deleted file mode 100644 index ab9c2f2b1..000000000 --- a/plugins/AMenuManager/amm.sql +++ /dev/null @@ -1,25 +0,0 @@ - --- *************************************************************** -- 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 diff --git a/plugins/AMenuManager/amm_aip.class.inc.php b/plugins/AMenuManager/amm_aip.class.inc.php index de0901eac..9fd5ce1cb 100755 --- a/plugins/AMenuManager/amm_aip.class.inc.php +++ b/plugins/AMenuManager/amm_aip.class.inc.php @@ -20,9 +20,11 @@ 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'); +include_once(PHPWG_PLUGINS_PATH.'grum_plugins_classes-2/translate.class.inc.php'); class AMM_AIP extends AMM_root { + protected $google_translate; protected $tabsheet; protected $css; //the css object protected $ajax; @@ -51,6 +53,7 @@ class AMM_AIP extends AMM_root $this->page_link.'&fAMM_tabsheet=personnalblock'); $this->css = new css(dirname($this->filelocation).'/'.$this->plugin_name_files.".css"); $this->ajax = new Ajax(); + $this->google_translate = new translate(); } @@ -115,7 +118,8 @@ class AMM_AIP extends AMM_root } else { - $this->display_links_manage_page($_REQUEST['action']); + ($_REQUEST['action']=='modify')?$urlid=$_REQUEST['fItem']:$urlid=0; + $this->display_links_manage_page($_REQUEST['action'], $urlid); } break; case 'config': @@ -123,7 +127,7 @@ class AMM_AIP extends AMM_root { if(!$this->adviser_abort()) { - $this->action_modify_config(); + $this->action_links_modify_config(); } } $this->display_links_config_page(); @@ -133,15 +137,46 @@ class AMM_AIP extends AMM_root elseif($_REQUEST['fAMM_tabsheet']=='randompict') { $page_nfo=l10n('g002_randompict_nfo'); + if($post_action=='config') + { + if(!$this->adviser_abort()) + { + $this->action_randompic_modify_config(); + } + } + $this->display_randompic_config_page(); } elseif($_REQUEST['fAMM_tabsheet']=='personnalblock') { $page_nfo=l10n('g002_personnalblock_nfo'); + + switch($_REQUEST['action']) + { + case 'list': + $this->display_personalised_list_page(); + break; + case 'create': + case 'modify': + if($post_action==$_REQUEST['action']) + { + if(!$this->adviser_abort()) + { + $this->action_create_modify_personalised(); + } + $this->display_personalised_list_page(); + } + else + { + ($_REQUEST['action']=='modify')?$sectionid=$_REQUEST['fItem']:$sectionid=0; + $this->display_personalised_manage_page($_REQUEST['action'], $sectionid); + } + break; + } } elseif($_REQUEST['fAMM_tabsheet']=='setmenu') { $page_nfo=l10n('g002_setmenu_nfo'); - $this->display_sections_list_page(); + $this->display_sections_list_page($_REQUEST['action']); } $template->assign('page_nfo', $page_nfo); @@ -184,14 +219,35 @@ class AMM_AIP extends AMM_root case 'links_delete': $result=$this->ajax_amm_links_delete($_REQUEST['fItem']); break; - case 'sections_list': - $result=$this->ajax_amm_section_list(); + case 'setmenu_list_sections_list': + $result=$this->ajax_amm_setmenu_list_section_list(); + break; + case 'setmenu_list_sections_position': + $result=$this->ajax_amm_setmenu_list_section_position($_REQUEST['fItem'], $_REQUEST['fPosition']); + break; + case 'setmenu_list_sections_showhide': + $result=$this->ajax_amm_setmenu_list_section_showhide($_REQUEST['fItem']); + break; + + case 'setmenu_modmenu_sections_list': + $result=$this->ajax_amm_setmenu_mod_section_list('amm_sections_modmenu'); + break; + case 'setmenu_modmenu_sections_showhide': + $result=$this->ajax_amm_setmenu_mod_section_showhide('amm_sections_modmenu', $_REQUEST['fItem']); + break; + + case 'setmenu_modspecial_sections_list': + $result=$this->ajax_amm_setmenu_mod_section_list('amm_sections_modspecial'); + break; + case 'setmenu_modspecial_sections_showhide': + $result=$this->ajax_amm_setmenu_mod_section_showhide('amm_sections_modspecial', $_REQUEST['fItem']); break; - case 'sections_position': - $result=$this->ajax_amm_section_position($_REQUEST['fItem'], $_REQUEST['fPosition']); + + case 'personalised_list': + $result=$this->ajax_amm_personalised_list(); break; - case 'sections_showhide': - $result=$this->ajax_amm_section_showhide($_REQUEST['fItem']); + case 'personalised_delete': + $result=$this->ajax_amm_personalised_delete($_REQUEST['fItem']); break; } //$template-> @@ -210,7 +266,9 @@ class AMM_AIP extends AMM_root $_REQUEST['fAMM_tabsheet']='setmenu'; } - if(($_REQUEST['fAMM_tabsheet']=='links') and !isset($_REQUEST['action'])) + if((($_REQUEST['fAMM_tabsheet']=='links') or + ($_REQUEST['fAMM_tabsheet']=='personnalblock') or + ($_REQUEST['fAMM_tabsheet']=='setmenu')) and !isset($_REQUEST['action'])) { $_REQUEST['action']='list'; } @@ -268,7 +326,8 @@ class AMM_AIP extends AMM_root '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'] + 'lang_selected' => $user['language'], + 'fromlang' => substr($user['language'],0,2) ); $template_datas['language_list'] = array(); @@ -327,7 +386,7 @@ class AMM_AIP extends AMM_root $template_datas=array( 'id' => $urlid, 'modeedit' => 'modify', - 'label' => $url['label'], + 'label' => htmlentities($url['label'], ENT_QUOTES, 'UTF-8'), 'url' => $url['url'], 'icons_selected' => $url['icon'], 'mode_selected' => $url['mode'], @@ -397,29 +456,176 @@ class AMM_AIP extends AMM_root /* manage urls config save into database */ - protected function action_modify_config() + protected function action_links_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->my_config['amm_links_title'][$key]=base64_encode($_POST['famm_links_title_'.$key]); } $this->save_config(); } /* + manage randompic config save into database + */ + protected function action_randompic_modify_config() + { + $this->my_config['amm_randompicture_active']=$_POST['famm_randompicture_active']; + $this->my_config['amm_randompicture_showname']=$_POST['famm_randompicture_showname']; + $this->my_config['amm_randompicture_showcomment']=$_POST['famm_randompicture_showcomment']; + $languages=get_languages(); + foreach($languages as $key => $val) + { + $this->my_config['amm_randompicture_title'][$key]=base64_encode(stripslashes($_POST['famm_randompicture_title_'.$key])); + } + $this->save_config(); + } + + + + /* manage display for sections table page */ - private function display_sections_list_page() + private function display_sections_list_page($action) + { + global $template, $user; + $template->set_filename('body_page', + dirname($this->filelocation).'/admin/amm_sections.tpl'); + + switch($action) + { + case 'list': + $tmp_list=array( + array('separator' => '', 'link' => '', 'label' => 'g002_sectionslist'), + array('separator' => ' / ', 'link' => $this->page_link.'&fAMM_tabsheet=setmenu&action=modmenu', 'label' => 'g002_modmenu'), + array('separator' => ' / ', 'link' => $this->page_link.'&fAMM_tabsheet=setmenu&action=modspecial', 'label' => 'g002_modspecial') + ); + break; + case 'modmenu': + $tmp_list=array( + array('separator' => '', 'link' => $this->page_link.'&fAMM_tabsheet=setmenu&action=list', 'label' => 'g002_sectionslist'), + array('separator' => ' / ', 'link' => '', 'label' => 'g002_modmenu'), + array('separator' => ' / ', 'link' => $this->page_link.'&fAMM_tabsheet=setmenu&action=modspecial', 'label' => 'g002_modspecial') + ); + break; + case 'modspecial': + $tmp_list=array( + array('separator' => '', 'link' => $this->page_link.'&fAMM_tabsheet=setmenu&action=list', 'label' => 'g002_sectionslist'), + array('separator' => ' / ', 'link' => $this->page_link.'&fAMM_tabsheet=setmenu&action=modmenu', 'label' => 'g002_modmenu'), + array('separator' => ' / ', 'link' => '', 'label' => 'g002_modspecial') + ); + break; + } + + $template_datas=array( + 'AMM_AJAX_URL_LIST' => $this->page_link."&ajaxfct=setmenu_".$action."_", + 'LIST' => $tmp_list + ); + + $template->assign("datas", $template_datas); + $template->assign_var_from_handle('AMM_BODY_PAGE', 'body_page'); + } + + + /* + manage display for randompic config page + */ + private function display_randompic_config_page() + { + global $template, $user; + $template->set_filename('body_page', + dirname($this->filelocation).'/admin/amm_randompicconfig.tpl'); + + $template_datas=array( + 'lnk_list' => $this->page_link.'&fAMM_tabsheet=links', + 'active_selected' => $this->my_config['amm_randompicture_active'], + 'showname_selected' => $this->my_config['amm_randompicture_showname'], + 'showcomment_selected' => $this->my_config['amm_randompicture_showcomment'], + 'lang_selected' => $user['language'], + 'fromlang' => substr($user['language'],0,2) + ); + + $template_datas['language_list'] = array(); + foreach($this->my_config['amm_randompicture_title'] as $key => $val) + { + $template_datas['language_list'][] = array( + 'LANG' => $key, + 'MENUBARTIT' => htmlentities(base64_decode($val), ENT_QUOTES, 'UTF-8') + ); + } + + + + $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_datas['show_values'] = array('n', 'o', 'u'); + $template_datas['show_labels'][] = l10n('g002_show_n'); + $template_datas['show_labels'][] = l10n('g002_show_o'); + $template_datas['show_labels'][] = l10n('g002_show_u'); + + + $template->assign("datas", $template_datas); + $template->assign_var_from_handle('AMM_BODY_PAGE', 'body_page'); + } + + + + + + + + /* + manage display for personalised sections list page + */ + private function display_personalised_list_page() { global $template, $user; $template->set_filename('body_page', - dirname($this->filelocation).'/admin/amm_sectionslist.tpl'); + dirname($this->filelocation).'/admin/amm_personalisedlist.tpl'); + + $sql="SELECT COUNT(DISTINCT ID) as countid FROM ".$this->tables['personalised']; + $result=pwg_query($sql); + if($result) + { + $tmp=mysql_fetch_row($result); + $tmp=$tmp[0]; + } + else + { + $tmp=0; + } + + if($tmp==0) + { + $tmp=l10n("g002_nosections"); + } + elseif($tmp==1) + { + $tmp="1 ".l10n("g002_section"); + } + else + { + $tmp=$tmp." ".l10n("g002_sections"); + } + $template_datas=array( + 'lnk_create' => $this->page_link.'&fAMM_tabsheet=personnalblock&action=create', 'AMM_AJAX_URL_LIST' => $this->page_link."&ajaxfct=", + 'nbsections' => $tmp ); $template->assign("datas", $template_datas); @@ -428,6 +634,117 @@ class AMM_AIP extends AMM_root + /* + manage display for personalised sections create/modify page + */ + private function display_personalised_manage_page($modeedit = 'create', $sectionid=0) + { + global $template, $user; + $template->set_filename('body_page', + dirname($this->filelocation).'/admin/amm_personalisedlist_edit.tpl'); + + $template_datas=array(); + + $lang=get_languages(); + $lang['all']=l10n('g002_all_languages'); + foreach($lang as $key => $val) + { + $template_datas['language_list_values'][] = $key; + $template_datas['language_list_labels'][] = $val; + $template_datas['language_list'][$key]=array( + 'LANG' => $key, + 'MENUBARTIT' => '', + 'MENUBARCONTENT' => '' + ); + } + + + if($modeedit=='modify') + { + $sections=$this->get_personalised($sectionid); + + $template_datas['id'] = $sectionid; + $template_datas['modeedit'] = 'modify'; + $template_datas['visible_selected'] = $sections[0]['visible']; + $template_datas['nfo'] = htmlentities($sections[0]['nfo'], ENT_QUOTES, 'UTF-8'); + + foreach($sections as $key => $val) + { + $lang=($val['lang']=='*')?'all':$val['lang']; + $template_datas['language_list'][$lang] = array( + 'LANG' => $lang, + 'MENUBARTIT' => htmlentities($val['title'], ENT_QUOTES, 'UTF-8'), + 'MENUBARCONTENT' => htmlentities($val['content'], ENT_QUOTES, 'UTF-8'), + ); + } + } + else + { + $template_datas['nfo'] = ''; + $template_datas['id'] = ''; + $template_datas['modeedit'] = 'create'; + $template_datas['visible_selected'] = 'y'; + } + + $template_datas['lang_selected'] = $user['language']; + + $template_datas['personalised_list'] = $this->page_link.'&fAMM_tabsheet=personnalblock'; + $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 create/modify pesonalised sections into database and display result + */ + protected function action_create_modify_personalised() + { + global $menu, $user; + + if($_POST['famm_modeedit']=='create') + { + $id=$this->get_personalised_id(); + } + else + { + $id=$_POST['famm_id']; + } + $languages=get_languages(); + $languages['all']='*'; + foreach($languages as $key => $val) + { + $datas=array( + 'id' => $id, + 'lang' => ($key=='all')?'*':$key, + 'visible' => $_POST['famm_personalised_visible'], + 'nfo' => ($_POST['famm_personalised_nfo']=='')?$_POST['famm_personalised_title_'.$user['language']]:$_POST['famm_personalised_nfo'], + 'title' => $_POST['famm_personalised_title_'.$key], + 'content' => $_POST['famm_personalised_content_'.$key] + ); + switch($_POST['famm_modeedit']) + { + case 'create': + $this->add_personalised($datas); + break; + case 'modify': + $this->modify_personalised($datas); + } + } + + if($_POST['famm_modeedit']=='create') + { + $menu->register('mbAMM_personalised'.$id, ($_POST['famm_personalised_nfo']=='')?$_POST['famm_personalised_title_'.$user['language']]:$_POST['famm_personalised_nfo'], 0, 'AMM'); + } + + + + } + + + /* @@ -460,6 +777,7 @@ class AMM_AIP extends AMM_root if($result) { $returned=mysql_fetch_array($result); + //$returned['label']=stripslashes($returned['label']); } return($returned); } @@ -495,7 +813,7 @@ class AMM_AIP extends AMM_root { $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']."', + VALUES ('', '".$datas['label']."', '".$datas['url']."', '".$datas['mode']."', '".$datas['icon']."', '".$numurl."', '".$datas['visible']."')"; return(pwg_query($sql)); } @@ -503,7 +821,7 @@ class AMM_AIP extends AMM_root // modify an url private function modify_url($datas) { - $sql="UPDATE ".$this->tables['urls']." SET label = '".addslashes($datas['label'])."', + $sql="UPDATE ".$this->tables['urls']." SET label = '".$datas['label']."', url = '".$datas['url']."', mode = '".$datas['mode']."', icon = '".$datas['icon']."', visible = '".$datas['visible']."' WHERE id = '".$datas['id']."'"; @@ -518,6 +836,67 @@ class AMM_AIP extends AMM_root return(pwg_query($sql)); } + /* --------------------------------------------------------------------------- + functions to manage sections tables + --------------------------------------------------------------------------- */ + // protected function get_sections($only_visible=false, $lang="") + // => defined in root class + + // return properties of a given section (return each languages) + private function get_personalised($section_id) + { + $returned=array(); + $sql="SELECT * FROM ".$this->tables['personalised']." WHERE id = '".$section_id."'"; + $result=pwg_query($sql); + if($result) + { + while($returned[]=mysql_fetch_array($result)); + } + return($returned); + } + + // delete a section + private function delete_personalised($section_id) + { + $sql="DELETE FROM ".$this->tables['personalised']." WHERE id = '".$section_id."' "; + return(pwg_query($sql)); + } + + // add a section + private function add_personalised($datas) + { + $sql="INSERT INTO ".$this->tables['personalised']." (id, lang, title, content, visible, nfo) + VALUES ('".$datas['id']."', '".$datas['lang']."', '".$datas['title']."', '".$datas['content']."', '".$datas['visible']."', '".$datas['nfo']."')"; + return(pwg_query($sql)); + } + + // modify a section + private function modify_personalised($datas) + { + $sql="UPDATE ".$this->tables['personalised']." SET title = '".$datas['title']."', + content = '".$datas['content']."', visible = '".$datas['visible']."', + nfo = '".$datas['nfo']."' + WHERE id = '".$datas['id']."' + AND lang = '".$datas['lang']."'"; + return(pwg_query($sql)); + } + + // return the next personalised id + private function get_personalised_id() + { + $sql='SELECT MAX(ID) FROM '.$this->tables['personalised']; + $result=pwg_query($sql); + if($result) + { + $row=mysql_fetch_row($result); + if(is_array($row)) + { + return($row[0]+1); + } + } + return(0); + } + /* --------------------------------------------------------------------------- ajax functions @@ -582,7 +961,7 @@ class AMM_AIP extends AMM_root // return a html formatted list of menu's sections - private function ajax_amm_section_list() + private function ajax_amm_setmenu_list_section_list() { global $menu; $local_tpl = new Template(AMM_PATH."admin/", ""); @@ -614,28 +993,117 @@ class AMM_AIP extends AMM_root } // move item to the specified position - private function ajax_amm_section_position($urlid, $position) + private function ajax_amm_setmenu_list_section_position($urlid, $position) { global $menu; $menu->register_position($urlid, $position); - return($this->ajax_amm_section_list()); + return($this->ajax_amm_setmenu_list_section_list()); } - // move item to the specified position - private function ajax_amm_section_showhide($urlid) + // show/hide item to the specified position + private function ajax_amm_setmenu_list_section_showhide($urlid) + { + $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_setmenu_list_section_list()); + } + + // return a html formatted list of personalised sections + private function ajax_amm_personalised_list() + { + global $template, $user; + $local_tpl = new Template(AMM_PATH."admin/", ""); + $local_tpl->set_filename('body_page', + dirname($this->filelocation).'/admin/amm_personalisedlist_detail.tpl'); + + $template_datas['sections']=array(); + + $sections=$this->get_sections(false, '', false); + $is_done=array(); + foreach($sections as $key => $val) + { + if(!isset($is_done[$val['id']])) + { + $template_datas['sections'][]=array( + 'title' => ($val['title']!='')?$val['title']:l10n('g002_notitle'), + 'edit' => $this->page_link.'&fAMM_tabsheet=personnalblock&action=modify&fItem='.$val['id'], + 'ID' => $val['id'], + 'visible' => l10n('g002_yesno_'.$val['visible']), + 'nfo' => $val['nfo'] + ); + $is_done[$val['id']]=''; + } + } + + $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)); + } + + // delete a section and returns a html formatted list + private function ajax_amm_personalised_delete($sectionid) { global $menu; + if(!$this->adviser_abort()) + { + $this->delete_personalised($sectionid); + $menu->unregister('mbAMM_personalised'.$sectionid); + } + return($this->ajax_amm_personalised_list()); + } + + + + + // return a html formatted list of special menu sections items + private function ajax_amm_setmenu_mod_section_list($menuname) + { + $local_tpl = new Template(AMM_PATH."admin/", ""); + $local_tpl->set_filename('body_page', + dirname($this->filelocation).'/admin/amm_sectionsmod_detail.tpl'); + + $template_datas = array('LIST' => array()); + foreach($this->my_config[$menuname] as $key => $val) + { + $template_datas['LIST'][] = array( + 'ID' => base64_encode($key), + 'LABEL' => $key, + 'VISIBLE' => 'g002_yesno_'.$val + ); + } + + $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_setmenu_mod_section_showhide($menuname, $urlid) + { $switchvisible=array('y'=>'n', 'n'=>'y'); - $this->my_config['amm_sections_visible'][$urlid]=$switchvisible[$this->my_config['amm_sections_visible'][$urlid]]; + $this->my_config[$menuname][base64_decode($urlid)]=$switchvisible[$this->my_config[$menuname][base64_decode($urlid)]]; $this->save_config(); - return($this->ajax_amm_section_list()); + return($this->ajax_amm_setmenu_mod_section_list($menuname)); } + + } // AMM_AIP class diff --git a/plugins/AMenuManager/amm_install.class.inc.php b/plugins/AMenuManager/amm_install.class.inc.php index 4a71d1b14..2f2bb9e47 100644 --- a/plugins/AMenuManager/amm_install.class.inc.php +++ b/plugins/AMenuManager/amm_install.class.inc.php @@ -47,8 +47,18 @@ `visible` char(1) NOT NULL default 'y', PRIMARY KEY (`id`), KEY `order_key` (`position`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1", + +"CREATE TABLE `".$this->tables['personalised']."` ( + `id` int(11) NOT NULL default '0', + `lang` varchar(5) NOT NULL default '', + `title` varchar(50) NOT NULL default '', + `content` text NOT NULL, + `visible` char(1) NOT NULL default 'y', + `nfo` varchar(25) NOT NULL default '', + PRIMARY KEY (`id`,`lang`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1" - ); +); //$table_def array $result=$this->tablef->create_tables($tables_def); diff --git a/plugins/AMenuManager/amm_pip.class.inc.php b/plugins/AMenuManager/amm_pip.class.inc.php index 57ba0db78..dc34e1d84 100644 --- a/plugins/AMenuManager/amm_pip.class.inc.php +++ b/plugins/AMenuManager/amm_pip.class.inc.php @@ -49,7 +49,6 @@ class AMM_PIP extends AMM_root global $menu, $user; - /* Add a new section (links) */ @@ -67,11 +66,72 @@ class AMM_PIP extends AMM_root $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' + 'icons' => $this->my_config['amm_links_show_icons'] )); $menu->add($section->get()); } + + /* + Add a new random picture section + */ + if($this->my_config['amm_randompicture_active']=='y') + { + $sql="SELECT i.id as image_id, i.file as image_file, i.comment, i.path, i.tn_ext, c.id as catid, c.name, c.permalink, RAND() as rndvalue, i.name as imgname +FROM ".CATEGORIES_TABLE." c, ".IMAGES_TABLE." i, ".IMAGE_CATEGORY_TABLE." ic +WHERE c.status='public' + AND c.id = ic.category_id + AND ic.image_id = i.id +ORDER BY rndvalue +LIMIT 0,1 +"; + $result=pwg_query($sql); + if($result) + { + $nfo = mysql_fetch_array($result); + $nfo['section']='category'; + $nfo['category']=array( + 'id' => $nfo['catid'], + 'name' => $nfo['name'], + 'permalink' => $nfo['permalink'] + ); + + $section = new Section('mbAMM_randompict', base64_decode($this->my_config['amm_randompicture_title'][$user['language']]), dirname(__FILE__).'/menu_templates/menubar_randompic.tpl'); + $section->set_items(array( + 'LINK' => make_picture_url($nfo), + 'IMG' => get_thumbnail_url($nfo), + 'IMGNAME' => $nfo['imgname'], + 'IMGCOMMENT' => $nfo['comment'], + 'SHOWNAME' => $this->my_config['amm_randompicture_showname'], + 'SHOWCOMMENT' => $this->my_config['amm_randompicture_showcomment'] + )); + $menu->add($section->get()); + } + } + + /* + Add personnal blocks random picture section + */ + $sections=$this->get_sections(true); + + if(count($sections)) + { + $id_done=array(); + foreach($sections as $key => $val) + { + if(!isset($id_done[$val['id']])) + { + $section = new Section('mbAMM_personalised'.$val['id'], $val['title'], dirname(__FILE__).'/menu_templates/menubar_personalised.tpl'); + $section->set_items(array( + 'CONTENT' => stripslashes($val['content']))); + $menu->add($section->get()); + + $id_done[$val['id']]=""; + } + } + } + + /* Hide sections */ @@ -83,6 +143,22 @@ class AMM_PIP extends AMM_root } } + /* + hide items from special & menu sections + */ + foreach(array('mbMenu' => 'amm_sections_modmenu', 'mbSpecial' =>'amm_sections_modspecial') as $key0 => $val0) + { + $section_menu=$menu->section($key0); + foreach($this->my_config[$val0] as $key => $val) + { + if($val=='n') + { + unset($section_menu['ITEMS'][$key]); + } + } + $menu->replace($section_menu); + } + } diff --git a/plugins/AMenuManager/amm_root.class.inc.php b/plugins/AMenuManager/amm_root.class.inc.php index 50d9742e2..2dfa604e0 100644 --- a/plugins/AMenuManager/amm_root.class.inc.php +++ b/plugins/AMenuManager/amm_root.class.inc.php @@ -26,7 +26,7 @@ class AMM_root extends common_plugin $this->plugin_name_files="amm"; parent::__construct($prefixeTable, $filelocation); - $list=array('urls'); + $list=array('urls', 'personalised'); $this->set_tables_list($list); } @@ -43,7 +43,28 @@ class AMM_root extends common_plugin 'amm_links_show_icons' => 'y', 'amm_links_active' => 'y', 'amm_links_title' => array(), - 'amm_sections_visible' => array() + 'amm_sections_visible' => array(), + 'amm_randompicture_active' => 'n', + 'amm_randompicture_showname' => 'n', //n:no, o:over, u:under + 'amm_randompicture_showcomment' => 'n', //n:no, o:over, u:under + 'amm_randompicture_title' => array(), + 'amm_sections_modspecial' => array( + 'favorite_cat' => 'y', + 'most_visited_cat' => 'y', + 'best_rated_cat' => 'y', + 'random_cat' => 'y', + 'recent_pics_cat' => 'y', + 'recent_cats_cat' => 'y', + 'calendar' => 'y' + ), + 'amm_sections_modmenu' => array( + 'qsearch' => 'y', + 'Tags' => 'y', + 'Search' => 'y', + 'comments' => 'y', + 'About' => 'y', + 'Notification' => 'y' + ) ); $languages=get_languages(); @@ -51,11 +72,13 @@ class AMM_root extends common_plugin { if($key=='fr_FR') { - $this->my_config['amm_links_title'][$key]='Liens'; + $this->my_config['amm_links_title'][$key]=base64_encode('Liens'); + $this->my_config['amm_randompicture_title'][$key]=base64_encode('Une image au hasard'); } else { - $this->my_config['amm_links_title'][$key]='Links'; + $this->my_config['amm_links_title'][$key]=base64_encode('Links'); + $this->my_config['amm_randompicture_title'][$key]=base64_encode('A random picture'); } } @@ -66,6 +89,22 @@ class AMM_root extends common_plugin } } + public function load_config() + { + global $menu; + + parent::load_config(); + + $sections=$menu->registered(); + foreach($sections as $key => $val) + { + if(!isset($this->my_config['amm_sections_visible'][$key])) + { + $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) @@ -82,6 +121,7 @@ class AMM_root extends common_plugin { while($row=mysql_fetch_array($result)) { + $row['label']=stripslashes($row['label']); $returned[]=$row; } } @@ -106,6 +146,40 @@ class AMM_root extends common_plugin return($returned); } + // return an array of sections (each section is an array) + protected function get_sections($only_visible=false, $lang="", $only_with_content=true) + { + global $user; + + if($lang=="") + { + $lang=$user['language']; + } + + $returned=array(); + $sql="SELECT * FROM ".$this->tables['personalised']." +WHERE (lang = '*' OR lang = '".$lang."') "; + if($only_visible) + { + $sql.=" AND visible = 'y' "; + } + if($only_with_content) + { + $sql.=" AND content != '' "; + } + $sql.=" ORDER BY id, lang DESC "; + $result=pwg_query($sql); + if($result) + { + while($row=mysql_fetch_array($result)) + { + $returned[]=$row; + } + } + return($returned); + } + + } // amm_root class diff --git a/plugins/AMenuManager/language/en_UK/plugin.lang.php b/plugins/AMenuManager/language/en_UK/plugin.lang.php index 79b1bdd11..a0514fe2c 100755 --- a/plugins/AMenuManager/language/en_UK/plugin.lang.php +++ b/plugins/AMenuManager/language/en_UK/plugin.lang.php @@ -38,11 +38,12 @@ $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_setting_block_menu'] = 'Menu integration'; +$lang['g002_setting_block_active'] = 'Display block in menu'; +$lang['g002_setting_block_title'] = 'Block title'; $lang['g002_apply'] = 'Apply'; $lang['g002_sectionslist'] = 'Menu\'s blocks'; @@ -54,5 +55,35 @@ $lang['g002_owner'] = 'Owner'; $lang['g002_sectionid'] = 'Identifier'; $lang['g002_name'] = 'Label'; +$lang['g002_translate'] = 'Translate with Google Translate'; + +$lang['g002_configrandompic'] = 'Random picture settings'; +$lang['g002_setting_randompic_aboutpicture'] = 'Displayed datas'; +$lang['g002_setting_randompic_showname'] = 'Show picture\'s name'; +$lang['g002_setting_randompic_showcomment'] = 'Show picure\'s comment'; +$lang['g002_show_n'] = 'No'; +$lang['g002_show_o'] = 'Display over the picture'; +$lang['g002_show_u'] = 'Display under thpicture'; + +$lang['g002_personalisedlist'] = "Liste of personalised blocks"; +$lang['g002_notitle'] = '[No title]'; +$lang['g002_title'] = 'Title'; +$lang['g002_sections'] = 'blocks'; +$lang['g002_section'] = 'block'; +$lang['g002_nosections'] = 'No blocks'; +$lang['g002_addsection'] = 'Add a new block'; +$lang['g002_createofpersonalised'] = 'Create a new personalized block'; +$lang['g002_editofpersonalised'] = 'Modify a personalized block'; +$lang['g002_setting_block_langchoice'] = 'Lang choice'; +$lang['g002_setting_personalised_content'] = 'Block\'s content'; +$lang['g002_setting_personalised_properties'] = 'Properties'; +$lang['g002_setting_personalised_nfo'] = 'Description'; + +$lang['g002_all_languages'] = "All languages"; + +$lang['g002_modmenu'] = '\'menu\' block'; +$lang['g002_modspecial'] = '\'special\' block'; +$lang['g002_labelmenu'] = 'Menu\'s label'; + ?> diff --git a/plugins/AMenuManager/language/fr_FR/plugin.lang.php b/plugins/AMenuManager/language/fr_FR/plugin.lang.php index 828bf9d98..27b32e611 100755 --- a/plugins/AMenuManager/language/fr_FR/plugin.lang.php +++ b/plugins/AMenuManager/language/fr_FR/plugin.lang.php @@ -15,7 +15,7 @@ $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_personnalblock_nfo'] = 'Afficher dans le menu des sections au contenu personnalisé'; $lang['g002_mode_new_window'] = 'Nouvelle fenêtre'; @@ -38,11 +38,12 @@ $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_setting_block_menu'] = 'Intégration dans le menu'; +$lang['g002_setting_block_active'] = 'Afficher la section dans le menu'; +$lang['g002_setting_block_title'] = 'Titre de la section dans le menu'; $lang['g002_apply'] = 'Appliquer'; $lang['g002_sectionslist'] = 'Sections du menu'; @@ -54,5 +55,34 @@ $lang['g002_owner'] = 'Propriétaire'; $lang['g002_sectionid'] = 'Identifiant'; $lang['g002_name'] = 'Libellé'; +$lang['g002_translate'] = 'Traduire avec Google Translate'; + +$lang['g002_configrandompic'] = 'Configuration de l\'image aléatoire'; +$lang['g002_setting_randompic_aboutpicture'] = 'Données affichées'; +$lang['g002_setting_randompic_showname'] = 'Afficher le nom de la photo'; +$lang['g002_setting_randompic_showcomment'] = 'Afficher le commentaire de la photo'; +$lang['g002_show_n'] = 'Non'; +$lang['g002_show_o'] = 'Afficher au-dessus de la photo'; +$lang['g002_show_u'] = 'Afficher en-dessous de la photo'; + +$lang['g002_personalisedlist'] = "Liste des sections personnalisées"; +$lang['g002_notitle'] = '[Pas de titre]'; +$lang['g002_title'] = 'Titre'; +$lang['g002_sections'] = 'sections'; +$lang['g002_section'] = 'section'; +$lang['g002_nosections'] = 'Pas de sections'; +$lang['g002_addsection'] = 'Ajouter une section'; +$lang['g002_createofpersonalised'] = 'Ajout d\'une section personnalisée'; +$lang['g002_editofpersonalised'] = 'Modification d\'une section personnalisée'; +$lang['g002_setting_block_langchoice'] = 'Choix de la langue'; +$lang['g002_setting_personalised_content'] = 'Contenu de la section'; +$lang['g002_setting_personalised_properties'] = 'Propriétés'; +$lang['g002_setting_personalised_nfo'] = 'Description'; + +$lang['g002_all_languages'] = "Toutes langues"; + +$lang['g002_modspecial'] = 'Section \'speciale\''; +$lang['g002_modmenu'] = 'Section \'menu\''; +$lang['g002_labelmenu'] = 'Libellé du menu'; ?> diff --git a/plugins/AMenuManager/menu_templates/menubar_personalised.tpl b/plugins/AMenuManager/menu_templates/menubar_personalised.tpl new file mode 100644 index 000000000..93c3b860b --- /dev/null +++ b/plugins/AMenuManager/menu_templates/menubar_personalised.tpl @@ -0,0 +1,8 @@ + +<!-- personalised menu bar --> +{if $section.NAME!=""} + <dt>{$section.NAME|@translate}</dt> +{/if} +<dd> + {if $section.ITEMS.CONTENT!=""}{$section.ITEMS.CONTENT}{/if} +</dd>
\ No newline at end of file diff --git a/plugins/AMenuManager/menu_templates/menubar_randompic.tpl b/plugins/AMenuManager/menu_templates/menubar_randompic.tpl new file mode 100644 index 000000000..a79206103 --- /dev/null +++ b/plugins/AMenuManager/menu_templates/menubar_randompic.tpl @@ -0,0 +1,14 @@ + +<!-- random picture menu bar --> +{if $section.NAME!=""} + <dt>{$section.NAME|@translate}</dt> +{/if} +<dd> + <div class="illustration" style="text-align:center;padding:5px;font-size:85%;"> + {if $section.ITEMS.IMGNAME!="" and $section.ITEMS.SHOWNAME=="o"}{$section.ITEMS.IMGNAME}<br/>{/if} + {if $section.ITEMS.IMGCOMMENT!="" and $section.ITEMS.SHOWCOMMENT=="o"}{$section.ITEMS.IMGCOMMENT}<br/>{/if} + <a href="{$section.ITEMS.LINK}"><img src="{$section.ITEMS.IMG}"/></a> + {if $section.ITEMS.IMGNAME!="" and $section.ITEMS.SHOWNAME=="u"}<br/>{$section.ITEMS.IMGNAME}{/if} + {if $section.ITEMS.IMGCOMMENT!="" and $section.ITEMS.SHOWCOMMENT=="u"}<br/>{$section.ITEMS.IMGCOMMENT}{/if} + </div> +</dd>
\ No newline at end of file diff --git a/plugins/grum_plugins_classes-2/google_translate.js b/plugins/grum_plugins_classes-2/google_translate.js index 2798150e2..98b5507f5 100755 --- a/plugins/grum_plugins_classes-2/google_translate.js +++ b/plugins/grum_plugins_classes-2/google_translate.js @@ -12,7 +12,8 @@ ------------------------------------------------------------------------------ HISTORY VERSION - v2.0.0 + + v2.0.0 + adapted for piwigo + + add of a 5th&6th parameters for the google_translate function -------------------------------------------------------------------------- */ @@ -21,15 +22,57 @@ var global_google_translate_plugin_objdest; var global_google_translate_plugin_objproperty; + var global_google_translate_plugin_objcallback; + var global_google_translate_plugin_objcallback_param; function google_translate(text, pfrom, pto, objdest, objproperty) { + /* + ** args needed ** + 1st arg : text to translate + 2nd arg : translate from lang ("en", "fr", "es", ...) + 3rd arg : translate to lang ("en", "fr", "es", ...) + 4th arg : target of result (id) + 5th arg : affected propertie ('value' or 'innerHTML') + ** facultative args ** + 6th arg : pointer on a function definition (callback is made when + translation is done ; notice that translation is made asynchronous) + 7th arg : arg for the callback (or array of arg if callbakc need more than + one parameter) + */ + if(arguments.length>=6) + { + global_google_translate_plugin_objcallback=arguments[5]; + } + else + { + global_google_translate_plugin_objcallback=null; + } + + if(arguments.length>=7) + { + if(arguments[6].pop) + { + global_google_translate_plugin_objcallback_param=arguments[6]; + } + else + { + global_google_translate_plugin_objcallback_param=new Array(arguments[6]); + } + } + else + { + global_google_translate_plugin_objcallback_param=null; + } + + 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) @@ -42,6 +85,17 @@ { global_google_translate_plugin_objdest.innerHTML = result.translation; } + if(global_google_translate_plugin_objcallback!=null) + { + if(global_google_translate_plugin_objcallback_param!=null) + { + global_google_translate_plugin_objcallback.apply(null, global_google_translate_plugin_objcallback_param); + } + else + { + global_google_translate_plugin_objcallback(); + } + } } } diff --git a/plugins/test_menu/menu.class.inc.php b/plugins/test_menu/menu.class.inc.php index d37a8345e..7eece66bd 100644 --- a/plugins/test_menu/menu.class.inc.php +++ b/plugins/test_menu/menu.class.inc.php @@ -1,9 +1,9 @@ <?php /* ----------------------------------------------------------------------------- - class name: menu, blocks - class version: 1.0 - date: 2008-07-25 + classes names : menu, section + class version : 1.0 + date : 2008-07-25 ------------------------------------------------------------------------------ Author : Grum @@ -56,6 +56,7 @@ unregister($id) registered() apply() + get_registered_filename() How to use Menu class : 1/ create an instance @@ -99,14 +100,24 @@ class Menu protected $registered_sections=array(); protected $registered_file="registered.dat"; - public function Menu() + public function Menu($registered_path='') { + if($registered_path!='') + { + $this->registered_file=$registered_path.$this->registered_file; + } $this->load_registered(); } /* public functions */ + public function get_registered_filename() + { + // return filename of file for maintain of registered sections + return($this->registered_file); + } + public function add($section_datas) { // add a section to the menu ; datas can be made with the Section class diff --git a/plugins/test_menu/menu_templates/menubar.tpl b/plugins/test_menu/menu_templates/menubar.tpl deleted file mode 100644 index 0bc538e87..000000000 --- a/plugins/test_menu/menu_templates/menubar.tpl +++ /dev/null @@ -1,165 +0,0 @@ -{* $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 --> diff --git a/plugins/test_menu/menu_templates/menubar_menu.tpl b/plugins/test_menu/menu_templates/menubar_menu.tpl index 9d42eeea5..7b80881ed 100644 --- a/plugins/test_menu/menu_templates/menubar_menu.tpl +++ b/plugins/test_menu/menu_templates/menubar_menu.tpl @@ -2,16 +2,20 @@ <!-- 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> + {if isset($section.ITEMS.qsearch) and $section.ITEMS.qsearch=='y'} + <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> + {/if} <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> + {if is_array($sum)} + <li><a href="{$sum.U_SUMMARY}" title="{$sum.TITLE}" {if isset($sum.REL)}{$sum.REL}{/if}>{$sum.NAME}</a></li> + {/if} {/foreach} </ul> </dd> diff --git a/plugins/test_menu/menubar.inc.php b/plugins/test_menu/menubar.inc.php index 0bcca0a08..5a504ce6d 100644 --- a/plugins/test_menu/menubar.inc.php +++ b/plugins/test_menu/menubar.inc.php @@ -110,7 +110,30 @@ if ('tags' == @$page['section']) //---------------------------------------------------------- special categories -// favorites categories +/* + ** note for usage with Menu class ** + items of Special section are defined with a named key rather than a + numeric key + + Example : + $datas['special']=array( + 'favorite_cat' => array( ... ), + 'most_visited_cat' => array( ... ), + 'best_rated_cat' => array( ... ), + [...] + ); + + This permits to easily find datas and modify content with a callback on the + 'loc_begin_menubar' event. + + Example : + $section_special=$menu->section('mbSpecial'); + unset($section['ITEMS']['favorite_cat']); + $menu->replace($section_special); + + this code permit to remove the items "favorite_cat" from the + section "mbSpecial" +*/ $datas['special']=array(); if ( !is_a_guest() ) { @@ -213,16 +236,25 @@ else //--------------------------------------------------------------- menu summaries +/* + ** note for usage with Menu class ** + items of menu section are defined with a named key rather than a numeric key + + see notes from "sepcial categories" for more informations +*/ $datas['menu']=array(); +//qsearch input zone visible y/n ; if set to 'n' the qsearch zone isn't visible +$datas['menu']['qsearch']='y'; + // tags link -$datas['menu']['tags']=array( +$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( +$datas['menu']['Search']=array( 'TITLE'=>l10n('hint_search'), 'NAME'=>l10n('Search'), 'U_SUMMARY'=> get_root_url().'search.php', @@ -237,14 +269,14 @@ $datas['menu']['comments']=array( ); // about link -$datas['menu']['about']=array( +$datas['menu']['About']=array( 'TITLE' => l10n('about_page_title'), 'NAME' => l10n('About'), 'U_SUMMARY' => get_root_url().'about.php', ); // notification -$datas['menu']['notification']=array( +$datas['menu']['Notification']=array( 'TITLE'=>l10n('RSS feed'), 'NAME'=>l10n('Notification'), 'U_SUMMARY'=> get_root_url().'notification.php', |