From 7b38e5d7c73cb29a5b57bb36b9f22ce2672cb325 Mon Sep 17 00:00:00 2001
From: Robin Appelman
Date: Mon, 8 Aug 2011 23:32:54 +0200
Subject: [PATCH] apps can now add their own forms to the Personal page
---
apps/user_openid/appinfo/app.php | 2 ++
apps/user_openid/js/settings.js | 12 +++++++
apps/user_openid/settings.php | 10 ++++++
apps/user_openid/templates/settings.php | 6 ++++
lib/app.php | 47 +++++++++++++++++++++++++
settings/index.php | 8 ++---
settings/js/main.js | 11 ------
settings/templates/index.php | 14 +++-----
8 files changed, 85 insertions(+), 25 deletions(-)
create mode 100644 apps/user_openid/js/settings.js
create mode 100644 apps/user_openid/settings.php
create mode 100644 apps/user_openid/templates/settings.php
diff --git a/apps/user_openid/appinfo/app.php b/apps/user_openid/appinfo/app.php
index 93b178ac70..3cdf2664e8 100644
--- a/apps/user_openid/appinfo/app.php
+++ b/apps/user_openid/appinfo/app.php
@@ -19,6 +19,8 @@ if(strpos($_SERVER["REQUEST_URI"],'?') and !strpos($_SERVER["REQUEST_URI"],'='))
OC_Util::addHeader('link',array('rel'=>'openid.server', 'href'=>$urlBase.OC_Helper::linkTo( "user_openid", "user.php" ).'/'.$userName));
OC_Util::addHeader('link',array('rel'=>'openid.delegate', 'href'=>$urlBase.OC_Helper::linkTo( "user_openid", "user.php" ).'/'.$userName));
+OC_APP::registerPersonal('user_openid','settings');
+
require_once 'apps/user_openid/user_openid.php';
//active the openid backend
diff --git a/apps/user_openid/js/settings.js b/apps/user_openid/js/settings.js
new file mode 100644
index 0000000000..b85ce2d352
--- /dev/null
+++ b/apps/user_openid/js/settings.js
@@ -0,0 +1,12 @@
+$(document).ready(function(){
+ $('#openidform input').blur(function(event){
+ event.preventDefault();
+ var post = $( "#openidform" ).serialize();
+ $.post( 'ajax/openid.php', post, function(data){
+ if( data.status == "success" ){
+ }else{
+ alert('error while setting OpenID');
+ }
+ });
+ });
+});
diff --git a/apps/user_openid/settings.php b/apps/user_openid/settings.php
new file mode 100644
index 0000000000..d85eaebb5e
--- /dev/null
+++ b/apps/user_openid/settings.php
@@ -0,0 +1,10 @@
+assign('identity',$identity);
+
+OC_Util::addScript('user_openid','settings');
+
+return $tmpl->fetchPage();
+?>
\ No newline at end of file
diff --git a/apps/user_openid/templates/settings.php b/apps/user_openid/templates/settings.php
new file mode 100644
index 0000000000..fff1eff09e
--- /dev/null
+++ b/apps/user_openid/templates/settings.php
@@ -0,0 +1,6 @@
+
\ No newline at end of file
diff --git a/lib/app.php b/lib/app.php
index 51e86c847d..f1363c8af5 100644
--- a/lib/app.php
+++ b/lib/app.php
@@ -31,6 +31,9 @@ class OC_App{
static private $apps = array();
static private $activeapp = '';
static private $navigation = array();
+ static private $settingsForms = array();
+ static private $adminForms = array();
+ static private $personalForms = array();
/**
* @brief loads all apps
@@ -284,4 +287,48 @@ class OC_App{
return $topFolder;
}
}
+
+
+ /**
+ * get the forms for either settings, admin or personal
+ */
+ public static function getForms($type){
+ $forms=array();
+ switch($type){
+ case 'settings':
+ $source=self::$settingsForms;
+ break;
+ case 'admin':
+ $source=self::$adminForms;
+ break;
+ case 'personal':
+ $source=self::$personalForms;
+ break;
+ }
+ foreach($source as $form){
+ $forms[]=include $form;
+ }
+ return $forms;
+ }
+
+ /**
+ * register a settings form to be shown
+ */
+ public static function registerSettings($app,$page){
+ self::$settingsForms[]='apps/'.$app.'/'.$page.'.php';
+ }
+
+ /**
+ * register an admin form to be shown
+ */
+ public static function registerAdmin($app,$page){
+ self::$adminForms[]='apps/'.$app.'/'.$page.'.php';
+ }
+
+ /**
+ * register a personal form to be shown
+ */
+ public static function registerPersonal($app,$page){
+ self::$personalForms[]='apps/'.$app.'/'.$page.'.php';
+ }
}
diff --git a/settings/index.php b/settings/index.php
index 12f48f2383..60cfd19c3f 100644
--- a/settings/index.php
+++ b/settings/index.php
@@ -29,10 +29,10 @@ $tmpl->assign('usage',OC_Helper::humanFileSize($used));
$tmpl->assign('total_space',OC_Helper::humanFileSize($total));
$tmpl->assign('usage_relative',$relative);
$tmpl->assign('languages',$languages);
-$tmpl->assign('hasopenid',OC_App::isEnabled( 'user_openid' ));
-if(OC_App::isEnabled( 'user_openid' )){
- $identity=OC_Preferences::getValue(OC_User::getUser(),'user_openid','identity','');
- $tmpl->assign('identity',$identity);
+
+$forms=OC_App::getForms('personal');
+foreach($forms as $form){
+ $tmpl->append('forms',$form);
}
$tmpl->printPage();
diff --git a/settings/js/main.js b/settings/js/main.js
index e6ca30d0ce..f6b7eeb758 100644
--- a/settings/js/main.js
+++ b/settings/js/main.js
@@ -19,17 +19,6 @@ $(document).ready(function(){
return false;
});
- $('#openidform').submit(function(event){
- event.preventDefault();
- var post = $( "#openidform" ).serialize();
- $.post( 'ajax/openid.php', post, function(data){
- if( data.status == "success" ){
- }else{
- alert('error while setting OpenID');
- }
- });
- });
-
$("#languageinput").change( function(){
// Serialize the data
var post = $( "#languageinput" ).serialize();
diff --git a/settings/templates/index.php b/settings/templates/index.php
index 6e68cfa148..0b5a14626f 100644
--- a/settings/templates/index.php
+++ b/settings/templates/index.php
@@ -18,16 +18,6 @@
-
-
-
-
-
-
+
+