From 391e064e67eaab5fb63ed568946af97b6a243fdd Mon Sep 17 00:00:00 2001
From: Robin Appelman <icewind1991@gmail.com>
Date: Tue, 23 Aug 2011 01:40:13 +0200
Subject: [PATCH] allow apps to register form for the settings and admin pages

---
 apps/user_ldap/appinfo/app.php  |  2 ++
 apps/user_ldap/settings.php     | 14 ++------------
 lib/app.php                     |  8 +++++++-
 settings/admin.php              | 27 +++++++++++++++++++++++++++
 settings/apps.php               |  1 +
 settings/help.php               |  5 +++++
 settings/js/apps.js             |  6 ++++++
 settings/js/personal.js         |  6 ++++++
 settings/js/users.js            |  6 ++++++
 settings/languageCodes.php      |  8 +++++++-
 settings/personal.php           |  7 ++++++-
 settings/settings.php           | 23 +++++++++++++++++++++++
 settings/templates/admin.php    |  9 +++++++++
 settings/templates/apps.php     |  6 ++++++
 settings/templates/help.php     |  6 ++++++
 settings/templates/personal.php |  6 ++++++
 settings/templates/settings.php |  9 +++++++++
 settings/templates/users.php    |  7 ++++++-
 settings/users.php              | 24 ++++--------------------
 19 files changed, 144 insertions(+), 36 deletions(-)
 create mode 100644 settings/admin.php
 create mode 100644 settings/settings.php
 create mode 100644 settings/templates/admin.php
 create mode 100644 settings/templates/settings.php

diff --git a/apps/user_ldap/appinfo/app.php b/apps/user_ldap/appinfo/app.php
index a6fca41501..7906241f79 100644
--- a/apps/user_ldap/appinfo/app.php
+++ b/apps/user_ldap/appinfo/app.php
@@ -23,6 +23,8 @@
 
 require_once('apps/user_ldap/user_ldap.php');
 
+OC_APP::registerAdmin('user_ldap','settings');
+
 // define LDAP_DEFAULT_PORT
 define("OC_USER_BACKEND_LDAP_DEFAULT_PORT", 389);
 
diff --git a/apps/user_ldap/settings.php b/apps/user_ldap/settings.php
index 696b95c37e..8dbd3c0462 100644
--- a/apps/user_ldap/settings.php
+++ b/apps/user_ldap/settings.php
@@ -20,14 +20,6 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  *
  */
-
-require_once('../../lib/base.php');
-
-if( !OC_User::isLoggedIn() || !OC_Group::inGroup( OC_User::getUser(), 'admin' )){
-	header( "Location: ".OC_Helper::linkTo( '', "index.php" ));
-	exit();
-}
-
 $params = array('ldap_host', 'ldap_port', 'ldap_dn', 'ldap_password', 'ldap_base', 'ldap_filter');
 
 foreach($params as $param){
@@ -35,11 +27,9 @@ foreach($params as $param){
 		OC_Appconfig::setValue('user_ldap', $param, $_POST[$param]);
 	}
 }
-OC_App::setActiveNavigationEntry( "user_ldap_settings" );
-
 
 // fill template
-$tmpl = new OC_Template( 'user_ldap', 'settings', 'admin' );
+$tmpl = new OC_Template( 'user_ldap', 'settings');
 foreach($params as $param){
 		$value = OC_Appconfig::getValue('user_ldap', $param,'');
 		$tmpl->assign($param, $value);
@@ -48,4 +38,4 @@ foreach($params as $param){
 // ldap_port has a default value
 $tmpl->assign( 'ldap_port', OC_Appconfig::getValue('user_ldap', 'ldap_port', OC_USER_BACKEND_LDAP_DEFAULT_PORT));
 
-$tmpl->printPage();
+return $tmpl->fetchPage();
diff --git a/lib/app.php b/lib/app.php
index 2bbc160b26..61ea081c6f 100644
--- a/lib/app.php
+++ b/lib/app.php
@@ -208,8 +208,14 @@ class OC_App{
 		);
 		$settings=array(
 			array( "id" => "help", "order" => 1000, "href" => OC_Helper::linkTo( "settings", "help.php" ), "name" => $l->t("Help"), "icon" => OC_Helper::imagePath( "settings", "help.svg" )),
-			array( "id" => "settings", "order" => 1, "href" => OC_Helper::linkTo( "settings", "personal.php" ), "name" => $l->t("Personal"), "icon" => OC_Helper::imagePath( "settings", "personal.svg" ))
+			array( "id" => "personal", "order" => 1, "href" => OC_Helper::linkTo( "settings", "personal.php" ), "name" => $l->t("Personal"), "icon" => OC_Helper::imagePath( "settings", "personal.svg" ))
 		);
+		if(count(self::$settingsForms)>0){
+			$settings[]=array( "id" => "settings", "order" => 1000, "href" => OC_Helper::linkTo( "settings", "settings.php" ), "name" => $l->t("Settings"), "icon" => OC_Helper::imagePath( "settings", "settings.svg" ));
+		}
+		if(count(self::$adminForms)>0){
+			$admin[]=array( "id" => "admin", "order" => 1000, "href" => OC_Helper::linkTo( "settings", "admin.php" ), "name" => $l->t("Admin"), "icon" => OC_Helper::imagePath( "settings", "admin.svg" ));
+		}
 		if( OC_Group::inGroup( $_SESSION["user_id"], "admin" )){
 			$settings=array_merge($admin,$settings);
 		}
diff --git a/settings/admin.php b/settings/admin.php
new file mode 100644
index 0000000000..15559a150e
--- /dev/null
+++ b/settings/admin.php
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Copyright (c) 2011, Robin Appelman <icewind1991@gmail.com>
+ * This file is licensed under the Affero General Public License version 3 or later.
+ * See the COPYING-README file.
+ */
+
+require_once('../lib/base.php');
+if( !OC_User::isLoggedIn()){
+    header( "Location: ".OC_Helper::linkTo( "", "index.php" ));
+    exit();
+}
+if( !OC_User::isLoggedIn() || !OC_Group::inGroup( OC_User::getUser(), 'admin' )){
+	header( "Location: ".OC_Helper::linkTo( '', "index.php" ));
+	exit();
+}
+
+OC_Util::addStyle( "settings", "settings" );
+OC_App::setActiveNavigationEntry( "admin" );
+
+$tmpl = new OC_Template( 'settings', 'admin', 'user');
+$forms=OC_App::getForms('admin');
+$tmpl->assign('forms',array());
+foreach($forms as $form){
+	$tmpl->append('forms',$form);
+}
+$tmpl->printPage();
\ No newline at end of file
diff --git a/settings/apps.php b/settings/apps.php
index 05da425976..d5aafd628e 100644
--- a/settings/apps.php
+++ b/settings/apps.php
@@ -57,6 +57,7 @@ if(is_array($catagoryNames)){
 			'active'=>false,
 			'description'=>$app['description'],
 			'author'=>$app['personid'],
+			'licence'=>$app['license'],
 		);
 	}
 }
diff --git a/settings/help.php b/settings/help.php
index 39dd83acc7..f8a2f9b8bf 100644
--- a/settings/help.php
+++ b/settings/help.php
@@ -1,4 +1,9 @@
 <?php
+/**
+ * Copyright (c) 2011, Frank Karlitschek karlitschek@kde.org
+ * This file is licensed under the Affero General Public License version 3 or later.
+ * See the COPYING-README file.
+ */
 
 require_once('../lib/base.php');
 if( !OC_User::isLoggedIn()){
diff --git a/settings/js/apps.js b/settings/js/apps.js
index 21b5d233f0..e2f882c6fe 100644
--- a/settings/js/apps.js
+++ b/settings/js/apps.js
@@ -1,3 +1,9 @@
+/**
+ * Copyright (c) 2011, Robin Appelman <icewind1991@gmail.com>
+ * This file is licensed under the Affero General Public License version 3 or later.
+ * See the COPYING-README file.
+ */
+
 $(document).ready(function(){
 	$('#leftcontent li').each(function(index,li){
 		var app=$.parseJSON($(this).children('span').text());
diff --git a/settings/js/personal.js b/settings/js/personal.js
index d16917d539..b814d436e7 100644
--- a/settings/js/personal.js
+++ b/settings/js/personal.js
@@ -1,3 +1,9 @@
+/**
+ * Copyright (c) 2011, Robin Appelman <icewind1991@gmail.com>
+ * This file is licensed under the Affero General Public License version 3 or later.
+ * See the COPYING-README file.
+ */
+
 $(document).ready(function(){
 	$("#passwordbutton").click( function(){
 		// Serialize the data
diff --git a/settings/js/users.js b/settings/js/users.js
index 0570263d30..c60fb32c40 100644
--- a/settings/js/users.js
+++ b/settings/js/users.js
@@ -1,3 +1,9 @@
+/**
+ * Copyright (c) 2011, Robin Appelman <icewind1991@gmail.com>
+ * This file is licensed under the Affero General Public License version 3 or later.
+ * See the COPYING-README file.
+ */
+
 $(document).ready(function(){
 	function applyMultiplySelect(element){
 		var checked=[];
diff --git a/settings/languageCodes.php b/settings/languageCodes.php
index 5a6c734cfa..088ba5f29c 100644
--- a/settings/languageCodes.php
+++ b/settings/languageCodes.php
@@ -1,4 +1,10 @@
-<?php return array(
+<?php /**
+ * Copyright (c) 2011, Robin Appelman <icewind1991@gmail.com>
+ * This file is licensed under the Affero General Public License version 3 or later.
+ * See the COPYING-README file.
+ */
+ 
+return array(
 'ab'=>'Abkhazian',
 'aa'=>'Afar',
 'af'=>'Afrikaans',
diff --git a/settings/personal.php b/settings/personal.php
index a31042bb53..e6d2d44db7 100644
--- a/settings/personal.php
+++ b/settings/personal.php
@@ -1,4 +1,9 @@
 <?php
+/**
+ * Copyright (c) 2011, Robin Appelman <icewind1991@gmail.com>
+ * This file is licensed under the Affero General Public License version 3 or later.
+ * See the COPYING-README file.
+ */
 
 require_once('../lib/base.php');
 if( !OC_User::isLoggedIn()){
@@ -9,7 +14,7 @@ if( !OC_User::isLoggedIn()){
 // Highlight navigation entry
 OC_Util::addScript( "settings", "personal" );
 OC_Util::addStyle( "settings", "settings" );
-OC_App::setActiveNavigationEntry( "settings" );
+OC_App::setActiveNavigationEntry( "personal" );
 
 // calculate the disc space
 $used=OC_Filesystem::filesize('/');
diff --git a/settings/settings.php b/settings/settings.php
new file mode 100644
index 0000000000..724cf63aaf
--- /dev/null
+++ b/settings/settings.php
@@ -0,0 +1,23 @@
+<?php
+/**
+ * Copyright (c) 2011, Robin Appelman <icewind1991@gmail.com>
+ * This file is licensed under the Affero General Public License version 3 or later.
+ * See the COPYING-README file.
+ */
+
+require_once('../lib/base.php');
+if( !OC_User::isLoggedIn()){
+    header( "Location: ".OC_Helper::linkTo( "", "index.php" ));
+    exit();
+}
+
+OC_Util::addStyle( "settings", "settings" );
+OC_App::setActiveNavigationEntry( "settings" );
+
+$tmpl = new OC_Template( 'settings', 'settings', 'user');
+$forms=OC_App::getForms('settings');
+$tmpl->assign('forms',array());
+foreach($forms as $form){
+	$tmpl->append('forms',$form);
+}
+$tmpl->printPage();
\ No newline at end of file
diff --git a/settings/templates/admin.php b/settings/templates/admin.php
new file mode 100644
index 0000000000..98acd541e3
--- /dev/null
+++ b/settings/templates/admin.php
@@ -0,0 +1,9 @@
+<?php /**
+ * Copyright (c) 2011, Robin Appelman <icewind1991@gmail.com>
+ * This file is licensed under the Affero General Public License version 3 or later.
+ * See the COPYING-README file.
+ */?>
+
+<?php foreach($_['forms'] as $form){
+	echo $form;
+};?>
\ No newline at end of file
diff --git a/settings/templates/apps.php b/settings/templates/apps.php
index d420b6ad0b..d8f3fb5e4f 100644
--- a/settings/templates/apps.php
+++ b/settings/templates/apps.php
@@ -1,3 +1,9 @@
+<?php /**
+ * Copyright (c) 2011, Robin Appelman <icewind1991@gmail.com>
+ * This file is licensed under the Affero General Public License version 3 or later.
+ * See the COPYING-README file.
+ */?>
+
 <div id="controls">
 	<a class="button" target="_blank" href="http://apps.owncloud.com/"><?php echo $l->t('Add your application');?></a>
 </div>
diff --git a/settings/templates/help.php b/settings/templates/help.php
index 8e54493764..4e3cdd7b90 100644
--- a/settings/templates/help.php
+++ b/settings/templates/help.php
@@ -1,3 +1,9 @@
+<?php /**
+ * Copyright (c) 2011, Frank Karlitschek karlitschek@kde.org
+ * This file is licensed under the Affero General Public License version 3 or later.
+ * See the COPYING-README file.
+ */?>
+
 <div id="controls">
 	<a class="button newquestion" href="http://apps.owncloud.com/knowledgebase/editquestion.php?action=new" target="_blank"><?php echo $l->t( 'Ask a question' ); ?></a>
 	<?php
diff --git a/settings/templates/personal.php b/settings/templates/personal.php
index a64dee1cb6..4629c93b90 100644
--- a/settings/templates/personal.php
+++ b/settings/templates/personal.php
@@ -1,3 +1,9 @@
+<?php /**
+ * Copyright (c) 2011, Robin Appelman <icewind1991@gmail.com>
+ * This file is licensed under the Affero General Public License version 3 or later.
+ * See the COPYING-README file.
+ */?>
+
 <div id="quota" class="personalblock"><div style="width:<?php echo $_['usage_relative'];?>%;">
 	<p><?php echo $l->t('You use');?> <strong><?php echo $_['usage'];?></strong> <?php echo $l->t('of the available');?> <strong><?php echo $_['total_space'];?></strong></p>
 </div></div>
diff --git a/settings/templates/settings.php b/settings/templates/settings.php
new file mode 100644
index 0000000000..98acd541e3
--- /dev/null
+++ b/settings/templates/settings.php
@@ -0,0 +1,9 @@
+<?php /**
+ * Copyright (c) 2011, Robin Appelman <icewind1991@gmail.com>
+ * This file is licensed under the Affero General Public License version 3 or later.
+ * See the COPYING-README file.
+ */?>
+
+<?php foreach($_['forms'] as $form){
+	echo $form;
+};?>
\ No newline at end of file
diff --git a/settings/templates/users.php b/settings/templates/users.php
index 244f363293..a97774cea0 100644
--- a/settings/templates/users.php
+++ b/settings/templates/users.php
@@ -1,4 +1,9 @@
-<?php
+<?php /**
+ * Copyright (c) 2011, Robin Appelman <icewind1991@gmail.com>
+ * This file is licensed under the Affero General Public License version 3 or later.
+ * See the COPYING-README file.
+ */
+
 $allGroups=array();
 foreach($_["groups"] as $group) {
 	$allGroups[]=$group['name'];
diff --git a/settings/users.php b/settings/users.php
index 8bf64e16ff..5aae4ce43e 100644
--- a/settings/users.php
+++ b/settings/users.php
@@ -1,25 +1,9 @@
 <?php
-
 /**
-* ownCloud
-*
-* @author Frank Karlitschek
-* @copyright 2010 Frank Karlitschek karlitschek@kde.org
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
-* License as published by the Free Software Foundation; either
-* version 3 of the License, or any later version.
-*
-* This library 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 AFFERO GENERAL PUBLIC LICENSE for more details.
-*
-* You should have received a copy of the GNU Affero General Public
-* License along with this library.  If not, see <http://www.gnu.org/licenses/>.
-*
-*/
+ * Copyright (c) 2011, Robin Appelman <icewind1991@gmail.com>
+ * This file is licensed under the Affero General Public License version 3 or later.
+ * See the COPYING-README file.
+ */
 
 require_once('../lib/base.php');
 if( !OC_User::isLoggedIn() || !OC_Group::inGroup( OC_User::getUser(), 'admin' )){
-- 
GitLab