summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 75c2530)
raw | patch | inline | side by side (parent: 75c2530)
author | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Tue, 19 Jun 2007 12:29:47 +0000 (12:29 +0000) | ||
committer | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Tue, 19 Jun 2007 12:29:47 +0000 (12:29 +0000) |
git-svn-id: https://oss.gonicus.de/repositories/gosa/branches/2.5@6626 594d385d-05f5-0310-b6e9-bd551577e9d8
html/images/scalix.png | [new file with mode: 0644] | patch | blob |
html/images/scalix16.png | [new file with mode: 0644] | patch | blob |
plugins/admin/groups/acl_definition.inc | patch | blob | history | |
plugins/personal/scalix/class_scalixAccount.inc | [new file with mode: 0644] | patch | blob |
plugins/personal/scalix/generic.tpl | [new file with mode: 0644] | patch | blob |
plugins/personal/scalix/main.inc | [new file with mode: 0644] | patch | blob |
diff --git a/html/images/scalix.png b/html/images/scalix.png
new file mode 100644 (file)
index 0000000..649e7bf
Binary files /dev/null and b/html/images/scalix.png differ
index 0000000..649e7bf
Binary files /dev/null and b/html/images/scalix.png differ
diff --git a/html/images/scalix16.png b/html/images/scalix16.png
new file mode 100644 (file)
index 0000000..9ac5eed
Binary files /dev/null and b/html/images/scalix16.png differ
index 0000000..9ac5eed
Binary files /dev/null and b/html/images/scalix16.png differ
index 184f643895a7f37e2cde958e6e5d47874627a438..0bba710c6043c4567ac142d8c80fbf253a217359 100644 (file)
@@ -442,5 +442,18 @@ $ACLD['phonequeue'] = array( "create","goFonTimeOut","goFonMaxLen","goFonAnnounc
"telephoneNumber","goFonQueueLanguage","goFonQueueStrategy","goFonQueueAnnounceHoldtime","goFonQueueAnnounce","goFonDialOption","goFonQueueRetry");
$ACLD['goFonMacro'] =array("goFonMacro","edit","delete");
$ACLD['mailogroup'] = array("create");
+$ACLD['scalix'] = array(
+ "scalixMailnode" => _("Scalix Mail node"),
+ "scalixMailboxClass" => _("Mailbox class"),
+ "scalixServerLanguage" => _("Server language"),
+ "scalixAdministrator" => _("Administrator"),
+ "scalixMailboxAdministrator"=> _("Mailbox administrator"),
+ "scalixHideUserEntry" => _("Hide user entry in Scalix"),
+ "scalixLimitMailboxSize" => _("Mailbox size limitations"),
+ "scalixLimitOutboundMail" => _("Limit outbound"),
+ "scalixLimitInboundMail" => _("Limit inbound"),
+ "scalixLimitNotifyUser" => _("Notify user"),
+ "scalixEmailAddress" => _("Scalix email addresses"));
+
?>
diff --git a/plugins/personal/scalix/class_scalixAccount.inc b/plugins/personal/scalix/class_scalixAccount.inc
--- /dev/null
@@ -0,0 +1,429 @@
+<?php
+/*! \brief scalix plugin
+ \author Jörn Dreyer <gosa.jfd@butonic.de>,
+ based on work by Cajus Pollmeier <pollmeier@gonicus.de>
+ \version 0.01
+ \date 20.10.2006
+
+ This class provides the functionality to read and write all attributes
+ relevant for scalixAccounts from/to the LDAP. It does syntax checking
+ and displays the formulars required.
+ */
+
+class scalixAccount extends plugin
+{
+ /* Definitions */
+ var $plHeadline = "Scalix";
+ var $plDescription= "This does something";
+
+ /* CLI vars */
+ var $cli_summary = "Manage users scalix account";
+ var $cli_description= "Some longer text\nfor help";
+ var $cli_parameters = array("eins" => "Eins ist toll", "zwei" => "Zwei ist noch besser");
+
+ /* plugin specific values - scalixUserClass */
+ /* MUST */
+ var $scalixScalixObject= TRUE; //TRUE or FALSE
+ var $scalixMailnode= "";
+ /* INDIRECT MUST, scalix will complain if no email was specified */
+
+ /* MAY */
+ var $scalixAdministrator= FALSE;
+ var $scalixMailboxAdministrator = FALSE;
+ var $scalixServerLanguage= "";
+ var $scalixEmailAddress= array();
+ var $scalixLimitMailboxSize= "";
+ var $scalixLimitOutboundMail= FALSE;
+ var $scalixLimitInboundMail= FALSE;
+ var $scalixLimitNotifyUser= FALSE;
+ var $scalixHideUserEntry= FALSE;
+ var $scalixMailboxClass= "";
+
+ var $default_permissions= "none";
+ var $member_permissions= "post";
+ var $members= array();
+ var $admins= array();
+ var $vacations= array();
+ var $perms= array( "lrs" => "read", "lrsp" => "post", "lrsip" => "append",
+ "lrswipcd" => "write", "lrswipcda" => "all" );
+
+ /* attribute list for save action */
+ var $attributes= array("scalixMailnode", "scalixServerLanguage", "scalixLimitMailboxSize", "scalixMailboxClass");
+ var $fakeBooleanAttributes= array("scalixAdministrator", "scalixMailboxAdministrator", "scalixLimitOutboundMail", "scalixLimitInboundMail", "scalixLimitNotifyUser", "scalixHideUserEntry");
+ var $objectclasses= array("scalixUserClass");
+
+
+ /* constructor, if 'dn' is set, the node loads the given
+ 'dn' from LDAP */
+ function scalixAccount ($config, $dn= NULL)
+ {
+ /* dn shouldn't be NULL */
+ if($dn == NULL){
+ trigger_error("Initialising scalixAccount without valid dn.");
+ }
+
+ /* Load bases attributes */
+ plugin::plugin($config, $dn);
+
+ /* Load attributes */
+ if ($dn != "new"){
+
+ $this->uid = $this->attrs['uid'];
+
+ foreach ($this->fakeBooleanAttributes as $val){
+ if (isset($this->attrs["$val"][0])&&$this->attrs["$val"][0]=="TRUE"){
+ $this->$val = TRUE;
+ } else {
+ $this->$val = FALSE;
+ }
+ }
+
+ /* Load attributes containing arrays */
+ foreach (array("scalixEmailAddress") as $val){
+ if (isset($this->attrs["$val"]["count"])){
+ for ($i= 0; $i<$this->attrs["$val"]["count"]; $i++){
+ array_push($this->$val, $this->attrs["$val"][$i]);
+ }
+ }
+ }
+ }
+
+ /* Save initial account state */
+ $this->initially_was_account= $this->is_account;
+ }
+
+
+ function execute()
+ {
+ /* Call parent execute */
+ plugin::execute();
+
+ /* Load templating engine */
+ $smarty= get_smarty();
+ $display= "";
+
+ /* Do we need to flip is_account state? */
+ if (isset($_POST['modify_state'])){
+ $this->is_account= !$this->is_account;
+ }
+
+ /* Show main page */
+ $mailboxClasses = array("", "LIMITED", "FULL");
+ $serverLanguages= array("", "GERMAN", "ENGLISH");
+
+ /* Do we represent a valid account? */
+ if (!$this->is_account && $this->parent == NULL){
+ $display= "<img alt=\"\" src=\"images/stop.png\" align=\"middle\"> <b>".
+ _("This account has no scalix extensions.")."</b>";
+
+ $display.= back_to_main();
+ return ($display);
+ }
+
+ /* Show tab dialog headers */
+ if ($this->parent != NULL){
+ if ($this->is_account){
+ $display= $this->show_header(_("Remove scalix account"),
+ _("This account has scalix synchronization enabled. You can disable it by clicking below."));
+ } else {
+ $display= $this->show_header(_("Create scalix account"), _("This account has scalix synchronization disabled. You can enable it by clicking below."));
+ return ($display);
+ }
+ }
+
+ /* Trigger forward add dialog? */
+ if (isset($_POST['add_local_forwarder'])){
+ $this->forward_dialog= TRUE;
+ $this->dialog= TRUE;
+ }
+
+ /* Cancel forward add dialog? */
+ if (isset($_POST['add_locals_cancel'])){
+ $this->forward_dialog= FALSE;
+ $this->dialog= FALSE;
+ }
+
+ /* Add email addresses */
+ if (isset($_POST['add_email'])){
+ if ($_POST['email_address'] != "" &&
+ chkacl ($this->acl, "scalixEmailAddress") == ""){
+
+ $valid= FALSE;
+ if (!is_email($_POST['email_address'])){
+ if ($this->is_template){
+ if (!(is_email($_POST['email_address'], TRUE))){
+ print_red (_("You're trying to add an invalid email address to the list of alternate addresses."));
+ } else {
+ $valid= TRUE;
+ }
+ } else {
+ print_red (_("You're trying to add an invalid email address to the list of alternate addresses."));
+ }
+
+ } else {
+ $valid= TRUE;
+ }
+
+ if ($valid && ($user= $this->addEmail ($_POST['email_address'])) != ""){
+ $ui= get_userinfo();
+ if ($user != $ui->username){
+ print_red (_("The address you're trying to add is already used by user")." '$user'.");
+ }
+ }
+ }
+ }
+
+ /* Delete email addresses */
+ if (isset($_POST['delete_email']) && isset ($_POST['emails_list'])){
+ if (count($_POST['emails_list']) &&
+ chkacl ($this->acl, "scalixEmailAddress") == ""){
+
+ $this->delEmail ($_POST['emails_list']);
+ }
+ }
+
+ $smarty->assign("mailboxClasses", $mailboxClasses);
+ $smarty->assign("serverLanguages", $serverLanguages);
+ foreach(array("perms", "scalixScalixObject", "scalixMailnode", "scalixAdministrator", "scalixMailboxAdministrator",
+ "scalixServerLanguage", "scalixLimitMailboxSize", "scalixLimitOutboundMail", "scalixEmailAddress",
+ "scalixLimitInboundMail", "scalixLimitNotifyUser", "scalixHideUserEntry", "scalixMailboxClass") as $val){
+
+ $smarty->assign("$val", $this->$val);
+ $smarty->assign("$val"."ACL", chkacl($this->acl, "$val"));
+ }
+
+ /* Fill checkboxes */
+ if ($this->scalixAdministrator) {
+ $smarty->assign("scalixAdministrator", "checked");
+ } else {
+ $smarty->assign("scalixAdministrator", "");
+ }
+ if ($this->scalixMailboxAdministrator) {
+ $smarty->assign("scalixMailboxAdministrator", "checked");
+ } else {
+ $smarty->assign("scalixMailboxAdministrator", "");
+ }
+ if ($this->scalixLimitOutboundMail) {
+ $smarty->assign("scalixLimitOutboundMail", "checked");
+ } else {
+ $smarty->assign("scalixLimitOutboundMail", "");
+ }
+ if ($this->scalixLimitInboundMail) {
+ $smarty->assign("scalixLimitInboundMail", "checked");
+ } else {
+ $smarty->assign("scalixLimitInboundMail", "");
+ }
+ if ($this->scalixLimitNotifyUser) {
+ $smarty->assign("scalixLimitNotifyUser", "checked");
+ } else {
+ $smarty->assign("scalixLimitNotifyUser", "");
+ }
+ if ($this->scalixHideUserEntry) {
+ $smarty->assign("scalixHideUserEntry", "checked");
+ } else {
+ $smarty->assign("scalixHideUserEntry", "");
+ }
+
+ $display.= $smarty->fetch (get_template_path('generic.tpl', TRUE, dirname(__FILE__)));
+ return ($display);
+ }
+
+
+ /* remove object from parent */
+ function remove_from_parent()
+ {
+ /* Cancel if there's nothing to do here */
+ if (!$this->initially_was_account){
+ return;
+ }
+
+ /* include global link_info */
+ $ldap= $this->config->get_ldap_link();
+
+ /* Remove and write to LDAP */
+ plugin::remove_from_parent();
+
+ /* Zero arrays */
+ $this->attrs['scalixEmailAddress']= array();
+
+ /* Unset fake boolean attributes from entry */
+ foreach ($this->fakeBooleanAttributes as $val){
+ $this->attrs["$val"]= array();
+ }
+
+ /*unset scalixScalixObject*/
+ $this->attrs['scalixScalixObject']=array();
+
+ @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__,$this->attributes, "Save");
+ $ldap->cd($this->dn);
+ $ldap->modify($this->attrs);
+ show_ldap_error($ldap->get_error());
+
+ /* Optionally execute a command after we're done */
+ $this->handle_post_events("remove");
+ }
+
+
+ /* Save data to object */
+ function save_object()
+ {
+ if (isset($_POST['scalixTab'])){
+
+ /* Save ldap attributes */
+ plugin::save_object();
+
+ /* Save fakeBooleanAttributes*/
+ foreach ($this->fakeBooleanAttributes as $val){
+ if (chkacl ($this->acl, "$val") == "") {
+ if( isset ($_POST["$val"])) {
+ $data = TRUE;
+ } else {
+ $data = FALSE;
+ }
+ if ($this->$val != $data){
+ $this->is_modified= TRUE;
+ }
+
+ $this->$val= $data;
+ }
+ }
+ }
+ }
+
+
+ /* Save data to LDAP, depending on is_account we save or delete */
+ function save()
+ {
+ $ldap= $this->config->get_ldap_link();
+
+ /* Call parents save to prepare $this->attrs */
+ plugin::save();
+
+ /* Save arrays */
+ $this->attrs['scalixEmailAddress']= $this->scalixEmailAddress;
+
+ /* Save boolean vars ... the scalix schema expects them as strings */
+ $this->attrs['scalixScalixObject'] = $this->scalixScalixObject?"TRUE":"FALSE";
+ $this->attrs['scalixAdministrator'] = $this->scalixAdministrator?"TRUE":"FALSE";
+ $this->attrs['scalixMailboxAdministrator'] = $this->scalixMailboxAdministrator?"TRUE":"FALSE";
+ $this->attrs['scalixLimitOutboundMail'] = $this->scalixLimitOutboundMail?"TRUE":"FALSE";
+ $this->attrs['scalixLimitInboundMail'] = $this->scalixLimitInboundMail?"TRUE":"FALSE";
+ $this->attrs['scalixLimitNotifyUser'] = $this->scalixLimitNotifyUser?"TRUE":"FALSE";
+ $this->attrs['scalixHideUserEntry'] = $this->scalixHideUserEntry?"TRUE":"FALSE";
+
+ /* Remove Mailquota if = "" */
+ if((isset($this->attrs['scalixLimitMailboxSize']))&&($this->attrs['scalixLimitMailboxSize']=="")) {
+ $this->attrs['scalixLimitMailboxSize']=array();
+ }
+
+ /* Save data to LDAP */
+ $ldap->cd($this->dn);
+ $ldap->modify($this->attrs);
+ show_ldap_error($ldap->get_error());
+
+ /* Optionally execute a command after we're done */
+ if ($this->initially_was_account == $this->is_account){
+ if ($this->is_modified){
+ $this->handle_post_events("modify");
+ }
+ } else {
+ $this->handle_post_events("add");
+ }
+
+ }
+
+ /* Check formular input */
+ function check()
+ {
+ $ldap= $this->config->get_ldap_link();
+
+ $message= array();
+
+ if(empty($this->scalixMailnode)){
+ $message[]= _("There is no scalix mailnode specified.");
+ }
+ if(empty($this->scalixScalixObject)){
+ $message[]= _("scalixScalixObject must be set!");
+ }
+
+ $ldap->cd($this->config->current['BASE']);
+ foreach($this->scalixEmailAddress as $k => $mail) {
+ $ldap->search ("(&(!(objectClass=gosaUserTemplate))(objectClass=scalixUserClass)(|(scalixEmailAddress=".
+ $mail."))(!(uid=".$this->uid."))(!(cn=".$this->uid.")))", array("uid"));
+ if ($ldap->count() != 0){
+ $message[]= _("The email address '$mail' you've entered is already in use.");
+ }
+ }
+
+ /* Check quota */
+ if ($this->scalixLimitMailboxSize != '' && chkacl ($this->acl, "scalixLimitMailboxSize") == ""){
+ if (!is_numeric($this->scalixLimitMailboxSize)) {
+ $message[]= _("Value in 'Limit Mailbox size' is not valid.");
+ } else {
+ $this->scalixLimitMailboxSize= (int) $this->scalixLimitMailboxSize;
+ }
+ }
+
+ return ($message);
+ }
+
+ /* Adapt from template, using 'dn' */
+ function adapt_from_template($dn)
+ {
+ plugin::adapt_from_template($dn);
+
+ foreach (array("scalixEmailAddress") as $val){
+ $this->$val= array();
+ if (isset($this->attrs["$val"]["count"])){
+ for ($i= 0; $i<$this->attrs["$val"]["count"]; $i++){
+ $value= $this->attrs["$val"][$i];
+ foreach (array("sn", "givenName", "uid") as $repl){
+ if (preg_match("/%$repl/i", $value)){
+ $value= preg_replace ("/%$repl/i", $this->parent->$repl, $value);
+ }
+ }
+ array_push($this->$val, strtolower(rewrite($value)));
+ }
+ }
+ }
+ $this->mail= strtolower(rewrite($this->mail));
+ }
+
+ function addEmail($address)
+ {
+ $ldap= $this->config->get_ldap_link();
+
+ $address= strtolower($address);
+
+ /* Is this address already assigned in LDAP? */
+ $ldap->cd ($this->config->current['BASE']);
+ $ldap->search ("(&(objectClass=scalixUserClass)(|(scalixEmailAddress=$address)".
+ "(scalixEmailAddress=$address)))", array("uid"));
+
+ if ($ldap->count() > 0){
+ $attrs= $ldap->fetch ();
+ return ($attrs["uid"][0]);
+ }
+
+ /* Add to list of alternates */
+ if (!in_array($address, $this->scalixEmailAddress)){
+ $this->scalixEmailAddress[]= $address;
+ $this->is_modified= TRUE;
+ }
+
+ //sort ($this->scalixEmailAddress); //scalix makes the first email the destination, all others can receive
+ reset ($this->scalixEmailAddress);
+
+ return ("");
+ }
+
+
+ function delEmail($addresses)
+ {
+ $this->scalixEmailAddress= array_remove_entries ($addresses, $this->scalixEmailAddress);
+ $this->is_modified= TRUE;
+ }
+}
+
+// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
+?>
diff --git a/plugins/personal/scalix/generic.tpl b/plugins/personal/scalix/generic.tpl
--- /dev/null
@@ -0,0 +1,97 @@
+<table summary="" style="width:100%; vertical-align:top; text-align:left;" cellpadding="0" border="0">
+ <tr>
+ <td style="width:50%; vertical-align:top;">
+ <h2><img class="center" alt="" align="middle" src="images/rightarrow.png" /> {t}Generic{/t}</h2>
+ <table summary="">
+ <tr>
+ <td><label for="scalixMailnode">{t}Scalix Mailnode{/t}</label>{$must}</td>
+ <td><input id="scalixMailnode" name="scalixMailnode" size=35 maxlength=65 {$scalixMailnodeACL} value="{$scalixMailnode}"></td>
+ </tr>
+ <tr>
+ <td><label for="scalixMailboxClass">{t}scalixMailboxClass{/t}</label></td>
+ <td>
+ <select size="1" id="scalixMailboxClass" name="scalixMailboxClass" {$scalixMailboxClassACL}
+ title="{t}Limited users con not make use of the group calendar functionality in Scalix{/t}">
+ {html_options values=$mailboxClasses output=$mailboxClasses selected=$scalixMailboxClass}
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td><label for="scalixServerLanguage">{t}scalixServerLanguage{/t}</label></td>
+ <td>
+ <select size="1" id="scalixServerLanguage" name="scalixServerLanguage" {$scalixServerLanguageACL}
+ title="{t}TODO{/t}">
+ {html_options values=$serverLanguages output=$serverLanguages selected=$scalixServerLanguage}
+ </select>
+ </td>
+ </tr>
+ </table>
+
+ <p class="seperator"> </p>
+
+ <table summary="">
+ <tr>
+ <td>
+ <input type=checkbox name="scalixAdministrator" value="1" {$scalixAdministrator}
+ {$scalixAdministratorACL} title="{t}TODO{/t}"> {t}Scalix Administrator{/t}
+ <br>
+ <input type=checkbox name="scalixMailboxAdministrator" value="1" {$scalixMailboxAdministrator}
+ {$scalixMailboxAdministratorACL} title="{t}TODO{/t}"> {t}Scalix Mailbox Administrator{/t}
+ <br>
+ <input type=checkbox name="scalixHideUserEntry" value="1" {$scalixHideUserEntry}
+ {$scalixHideUserEntryACL} title="{t}TODO{/t}"> {t}hide this user entry in Scalix{/t}
+ <br>
+ </table>
+
+ <p class="seperator"> </p>
+
+ <table summary="">
+ <tr>
+ <td><label for="scalixLimitMailboxSize">{t}Limit Mailbox Size{/t}</label></td>
+ <td><input id="scalixLimitMailboxSize" name="scalixLimitMailboxSize" size=35 maxlength=65 {$scalixLimitMailboxSizeACL} value="{$scalixLimitMailboxSize}"></td>
+ </tr>
+ <tr>
+ <td >
+ <input type=checkbox name="scalixLimitOutboundMail" value="1" {$scalixLimitOutboundMail}
+ {$scalixLimitOutboundMailACL} title="{t}As Sanction on Mailbox quota overuse, stop user from sending mail.{/t}"> {t}Limit Outbound Mail{/t}
+ <br>
+ <input type=checkbox name="scalixLimitInboundMail" value="1" {$scalixLimitInboundMail}
+ {$scalixLimitInboundMailACL} title="{t}As Sanction on Mailbox quota overuse, stop user from receiving mail.{/t}"> {t}Limit Inbound Mail{/t}
+ <br>
+ <input type=checkbox name="scalixLimitNotifyUser" value="1" {$scalixLimitNotifyUser}
+ {$scalixLimitNotifyUserACL} title="{t}As Sanction on Mailbox quota overuse, notify the User by eMail.{/t}"> {t}Notify User{/t}
+ <br>
+ </td>
+ </tr>
+ </table>
+ </td>
+
+ <td style="border-left:1px solid #A0A0A0">
+
+ </td>
+
+ <td style="vertical-align:top;">
+ <h2><img class="center" alt="" align="middle" src="images/envelope.png" /><label for="emails_list"> {t}Scalix email addresses{/t}</label></h2>
+ <select id="emails_list" style="width:100%;height:100px;" name="emails_list[]" size="15"
+ multiple title="{t}List of scalix email addresses{/t}" {$scalixEmailAddressACL}>
+ {html_options values=$scalixEmailAddress output=$scalixEmailAddress}
+ <option disabled> </option>
+ </select>
+ <br />
+ <input name="email_address" size="30" align="middle" maxlength="65" {$scalixEmailAddressACL} value="">
+ <input type=submit value="{t}Add{/t}" name="add_email"
+ {$scalixEmailAddressACL}>
+ <input type=submit value="{t}Delete{/t}" name="delete_email"
+ {$scalixEmailAddressACL}>
+ </td>
+ </tr>
+</table>
+
+<input type="hidden" name="scalixTab" value="scalixTab">
+
+<!-- Place cursor -->
+<script language="JavaScript" type="text/javascript">
+ <!-- // First input field on page
+ document.mainform.scalixMailnode.focus();
+ -->
+</script>
diff --git a/plugins/personal/scalix/main.inc b/plugins/personal/scalix/main.inc
--- /dev/null
@@ -0,0 +1,133 @@
+<?php
+/*
+ This code is part of GOsa (https://gosa.gonicus.de)
+ Copyright (C) 2006 Jörn Dreyer, based on work by
+ Cajus Pollmeier
+
+ 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; either version 2 of the License, or
+ (at your option) any later version.
+
+ 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
+ */
+
+if (!$remove_lock){
+ /* Reset requested? */
+ if (isset($_POST['edit_cancel']) ||
+ (isset($_GET['reset']) && $_GET['reset'] == 1)){
+ del_lock ($ui->dn);
+ sess_del ('edit');
+ sess_del ('scalixAccount');
+ }
+
+ /* Create mail object on demand */
+ if (!isset($_SESSION['scalixAccount']) || (isset($_GET['reset']) && $_GET['reset'] == 1)){
+ $_SESSION['scalixAccount']= new scalixAccount ($config, $ui->dn);
+ }
+ $scalixAccount= $_SESSION['scalixAccount'];
+
+ /* save changes back to object */
+ if (isset ($_SESSION['edit'])){
+ $scalixAccount->save_object ();
+ }
+
+ /* Enter edit mode? */
+ if (isset($_POST['edit'])){
+
+ /* Check locking */
+ if (($username= get_lock($ui->dn)) != ""){
+ $_SESSION['back_plugin']= $plug;
+ gen_locked_message ($username, $ui->dn);
+ exit ();
+ }
+
+ /* Lock the current entry */
+ add_lock ($ui->dn, $ui->dn);
+ $_SESSION['dn']= $ui->dn;
+ $_SESSION['edit']= TRUE;
+ }
+
+ /* Adjust acl's to mode */
+ if (isset($_SESSION['edit'])){
+ $acl= get_permissions ($ui->dn, $ui->subtreeACL);
+ $scalixAccount->acl= get_module_permission($acl, "scalix", $ui->dn);
+ } else {
+ $acl= get_permissions ($ui->dn, $ui->subtreeACL);
+ $editacl= get_module_permission($acl, "scalix", $ui->dn);
+ $scalixAccount->acl= "#none#";
+ }
+
+ /* save changes to LDAP and disable edit mode */
+ if (isset($_POST['edit_finish'])){
+
+ /* Perform checks */
+ $message= $scalixAccount->check ();
+
+ /* No errors, save object */
+ if (count ($message) == 0){
+ $scalixAccount->save ();
+ gosa_log ("User/scalix object'".$ui->dn."' has been saved");
+ $scalixAccount->acl= "#none#";
+ del_lock ($ui->dn);
+ sess_del ('edit');
+
+ /* Store object */
+ $_SESSION['scalixAccount']= $scalixAccount;
+ } else {
+ /* Errors found, show message */
+ show_errors ($message);
+ }
+ }
+
+ /* Execute formular */
+ $display= $scalixAccount->execute ();
+
+ /* Store changes in session */
+ if (isset ($_SESSION['edit'])){
+ $_SESSION['scalixAccount']= $scalixAccount;
+ }
+
+ /* Show page footer depending on the mode */
+ if ($scalixAccount->is_account){
+
+ $display.= "<p class=\"plugbottom\">";
+
+ /* Are we in edit mode? */
+ if (isset($_SESSION['edit'])){
+ $display.= "<input type=submit name=\"edit_finish\" value=\""._("Save")."\">\n";
+ $display.= " ";
+ $display.= "<input type=submit name=\"edit_cancel\" value=\""._("Cancel")."\">\n";
+ $info= "<img alt=\"\" align=\"middle\" src=\"".get_template_path('images/closedlock.png').
+ "\"> ".$ui->dn." ";
+ } else {
+ $info= "<img alt=\"\" align=\"middle\" src=\"".get_template_path('images/openlock.png').
+ "\"> ".$ui->dn." ";
+ if (isset($editacl) && $editacl != "#none#"){
+ $info.= "<img alt=\"\" align=\"middle\" src=\"".get_template_path('images/lamp.png')."\"> ".
+ _("Click the 'Edit' button below to change informations in this dialog");
+
+ $display.= "<input type=submit name=\"edit\" value=\""._("Edit")."\">\n";
+ }
+ $display.= "<input type=\"hidden\" name=\"ignore\">\n";
+ }
+ $display.= "</p>\n";
+ }
+
+
+ $info= "";
+
+ /* Page header*/
+ $display= print_header(get_template_path('images/scalix.png'), _("User scalixsettings"), $info).$display;
+
+}
+
+// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
+?>