From 001982cac0c343f6405fa4191292e3f8efbd4df3 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Sun, 19 Jun 2011 15:43:10 +0200 Subject: [PATCH] Change logic in admin.php to load plugin settings form. Add statusnet settings form. --- addon/statusnet/admin.tpl | 16 +++++++++ addon/statusnet/statusnet.php | 64 ++++++++++++++++++++++++++++++++++- addon/twitter/twitter.php | 7 ++-- mod/admin.php | 13 ++++--- 4 files changed, 90 insertions(+), 10 deletions(-) create mode 100644 addon/statusnet/admin.tpl diff --git a/addon/statusnet/admin.tpl b/addon/statusnet/admin.tpl new file mode 100644 index 0000000000..b40adf35a7 --- /dev/null +++ b/addon/statusnet/admin.tpl @@ -0,0 +1,16 @@ +{{ for $sites as $s }} + {{ inc field_input.tpl with $field=$s.sitename }}{{ endinc }} + {{ inc field_input.tpl with $field=$s.apiurl }}{{ endinc }} + {{ inc field_input.tpl with $field=$s.secret }}{{ endinc }} + {{ inc field_input.tpl with $field=$s.key }}{{ endinc }} + {{ if $s.delete }} + {{ inc field_checkbox.tpl with $field=$s.delete }}{{ endinc }} +
+ {{ else }} +

Fill this form to add a new site

+ {{ endif }} + +{{ endfor }} + + +
diff --git a/addon/statusnet/statusnet.php b/addon/statusnet/statusnet.php index e24ebc1ee0..cb0f877646 100644 --- a/addon/statusnet/statusnet.php +++ b/addon/statusnet/statusnet.php @@ -59,7 +59,6 @@ function statusnet_install() { register_hook('plugin_settings_post', 'addon/statusnet/statusnet.php', 'statusnet_settings_post'); register_hook('post_local_end', 'addon/statusnet/statusnet.php', 'statusnet_post_hook'); register_hook('jot_networks', 'addon/statusnet/statusnet.php', 'statusnet_jot_nets'); - logger("installed statusnet"); } @@ -350,3 +349,66 @@ function statusnet_post_hook(&$a,&$b) { } } +function statusnet_plugin_admin_post(&$a){ + + $sites = array(); + + foreach($_POST['sitename'] as $id=>$sitename){ + $sitename=trim($sitename); + $apiurl=trim($_POST['apiurl'][$id]); + $secret=trim($_POST['secret'][$id]); + $key=trim($_POST['key'][$id]); + if ($sitename!="" && + $apiurl!="" && + $secret!="" && + $key!="" && + !x($_POST['delete'][$id])){ + + $sites[] = Array( + 'sitename' => $sitename, + 'apiurl' => $apiurl, + 'secret' => $secret, + 'key' => $key + ); + } + } + + $sites = set_config('statusnet','sites', $sites); + +} + +function statusnet_plugin_admin(&$a, &$o){ + + $sites = get_config('statusnet','sites'); + $sitesform=array(); + if (is_array($sites)){ + foreach($sites as $id=>$s){ + $sitesform[] = Array( + 'sitename' => Array("sitename[$id]", "Site name", $s['sitename'], ""), + 'apiurl' => Array("apiurl[$id]", "Api url", $s['apiurl'], ""), + 'secret' => Array("secret[$id]", "Secret", $s['secret'], ""), + 'key' => Array("key[$id]", "Key", $s['key'], ""), + 'delete' => Array("delete[$id]", "Delete", False , "Check to delete this preset"), + ); + } + } + /* empty form to add new site */ + $id++; + $sitesform[] = Array( + 'sitename' => Array("sitename[$id]", "Site name", "", ""), + 'apiurl' => Array("apiurl[$id]", "Api url", "", ""), + 'secret' => Array("secret[$id]", "Secret", "", ""), + 'key' => Array("key[$id]", "Key", "", ""), + ); + + + $t = file_get_contents( dirname(__file__). "/admin.tpl" ); + $o = replace_macros($t, array( + '$submit' => t('Submit'), + + '$sites' => $sitesform, + + )); + + +} diff --git a/addon/twitter/twitter.php b/addon/twitter/twitter.php index 3141cf0c94..aeb9cc9376 100644 --- a/addon/twitter/twitter.php +++ b/addon/twitter/twitter.php @@ -47,7 +47,6 @@ function twitter_install() { register_hook('plugin_settings_post', 'addon/twitter/twitter.php', 'twitter_settings_post'); register_hook('post_local_end', 'addon/twitter/twitter.php', 'twitter_post_hook'); register_hook('jot_networks', 'addon/twitter/twitter.php', 'twitter_jot_nets'); - register_hook('plugin_admin', 'addon/twitter/twitter.php', 'plugin_admin'); logger("installed twitter"); } @@ -57,7 +56,6 @@ function twitter_uninstall() { unregister_hook('plugin_settings_post', 'addon/twitter/twitter.php', 'twitter_settings_post'); unregister_hook('post_local_end', 'addon/twitter/twitter.php', 'twitter_post_hook'); unregister_hook('jot_networks', 'addon/twitter/twitter.php', 'twitter_jot_nets'); - unregister_hook('plugin_admin', 'addon/twitter/twitter.php', 'plugin_admin'); } function twitter_jot_nets(&$a,&$b) { @@ -242,14 +240,15 @@ function twitter_post_hook(&$a,&$b) { } } } -function plugin_admin_post(&$a){ + +function twitter_plugin_admin_post(&$a){ $consumerkey = ((x($_POST,'consumerkey')) ? notags(trim($_POST['consumerkey'])) : ''); $consumersecret = ((x($_POST,'consumersecret')) ? notags(trim($_POST['consumersecret'])): ''); set_config('twitter','consumerkey',$consumerkey); set_config('twitter','consumersecret',$consumersecret); info( t('Settings updated.'). EOL ); } -function plugin_admin(&$a, &$o){ +function twitter_plugin_admin(&$a, &$o){ $t = file_get_contents( dirname(__file__). "/admin.tpl" ); $o = replace_macros($t, array( '$submit' => t('Submit'), diff --git a/mod/admin.php b/mod/admin.php index 1ae0490e8d..df5b6600ab 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -29,8 +29,9 @@ function admin_post(&$a){ if ($a->argc > 2 && is_file("addon/".$a->argv[2]."/".$a->argv[2].".php")){ @include_once("addon/".$a->argv[2]."/".$a->argv[2].".php"); - if(function_exists('plugin_admin_post')) { - plugin_admin_post($a); + if(function_exists($a->argv[2].'_plugin_admin_post')) { + $func = $a->argv[2].'_plugin_admin_post'; + $func($a); } } goaway($a->get_baseurl() . '/admin/plugins/' . $a->argv[2] ); @@ -65,10 +66,10 @@ function admin_content(&$a) { /* get plugins admin page */ - $r = q("SELECT * FROM `hook` WHERE `hook`='plugin_admin'"); + $r = q("SELECT * FROM `addon` WHERE `plugin_admin`=1"); $aside['plugins_admin']=Array(); foreach ($r as $h){ - $plugin = explode("/",$h['file']); $plugin = $plugin[1]; + $plugin =$h['name']; $aside['plugins_admin'][] = Array($a->get_baseurl()."/admin/plugins/".$plugin, $plugin, "plugin"); // temp plugins with admin $a->plugins_admin[] = $plugin; @@ -526,7 +527,9 @@ function admin_page_plugins(&$a){ $admin_form=""; if (in_array($plugin, $a->plugins_admin)){ - call_hooks('plugin_admin', $admin_form); + @require_once("addon/$plugin/$plugin.php"); + $func = $plugin.'_plugin_admin'; + $func($a, $admin_form); } $t = get_markup_template("admin_plugins_details.tpl");