Code

Added scalix to trunk.
authorhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Wed, 20 Jun 2007 08:06:25 +0000 (08:06 +0000)
committerhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Wed, 20 Jun 2007 08:06:25 +0000 (08:06 +0000)
Copy & Paste still missing

git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@6633 594d385d-05f5-0310-b6e9-bd551577e9d8

contrib/gosa.conf
html/images/scalix.png [new file with mode: 0644]
html/images/scalix16.png [new file with mode: 0644]
plugins/personal/scalix/class_scalixAccount.inc [new file with mode: 0644]
plugins/personal/scalix/generic.tpl [new file with mode: 0644]
plugins/personal/scalix/main.inc [new file with mode: 0644]

index a5287ab499ee761a21f48c0216106eca7dfb2695..31e579c7fea7bf0650b7391c852611ad29c9f434 100644 (file)
                                path="plugins/gofax/faxaccount" />
                        <plugin acl="default" class="phoneAccount" icon="phone.png"
                                path="plugins/gofon/phoneaccount" />
+<!--
+            <plugin acl="default" class="nagiosAccount" icon="monitoring.png"
+                path="plugins/personal/nagios" />
+-->
 <!-- 
             <plugin acl="default" class="nagiosAccount" icon="monitoring.png"
                 path="plugins/personal/nagios" /> 
                <tab class="connectivity" name="Connectivity" />
                <tab class="gofaxAccount" name="Fax" />
                <tab class="phoneAccount" name="Phone" />
+<!--
+        <tab class="scalixAccount" name="Scalix" />
+-->
 <!--            
                <tab class="nagiosAccount" name="Nagios" /> 
 -->
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
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
diff --git a/plugins/personal/scalix/class_scalixAccount.inc b/plugins/personal/scalix/class_scalixAccount.inc
new file mode 100644 (file)
index 0000000..cc970d4
--- /dev/null
@@ -0,0 +1,471 @@
+<?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 $uid  ="";
+  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"){
+
+      /* Set user id */
+      if(isset($this->attrs['uid'][0])){
+        $this->uid = $this->attrs['uid'][0];
+      }
+       
+      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\">&nbsp;<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_disable_header(_("Remove scalix account"),
+            _("This account has scalix synchronization enabled. You can disable it by clicking below."));
+      } else {
+        $display= $this->show_enable_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'])){
+
+      /* Check write access */
+      if(!$this->acl_is_writeable("scalixEmailAddress")){
+        print_red(_("You are not allowed to modify alternate addresses"));
+      }else{
+
+        /* Check if given value is not empty */
+        if ($_POST['email_address'] != ""){
+          $valid= FALSE;
+
+          /* Valid mail address */
+          if( ($this->is_template && !is_email($_POST['email_address'], TRUE)) || 
+              (!$this->is_template && !is_email($_POST['email_address'])) ){
+            print_red (_("You're trying to add an invalid email address to the list of alternate addresses."));
+          }else{
+            $valid = TRUE;
+          }
+
+          /* Mail address already in use ? */
+          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(!$this->acl_is_writeable("scalixEmailAddress")){
+        print_red(_("You are not allowed to modify alternate addresses"));
+      }else{
+        if (count($_POST['emails_list'])){
+          $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", $this->getacl($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 ($this->acl_is_writeable($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 != '' && $this->acl_is_writeable("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;
+  }
+
+
+  function plInfo()
+  {
+    return (array(
+          "plDescription"     => _("Scalix account"),
+          "plSelfModify"      => TRUE,
+          "plDepends"         => array("user"),
+          "plPriority"        => 2,
+          "plSection"         => array("personal" => _("My account")),
+          "plCategory"        => array("users"),
+          "plOptions"         => array(),
+
+          "plProvidedAcls"  => 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"))
+
+            ));
+  }
+
+}
+
+// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
+?>
diff --git a/plugins/personal/scalix/generic.tpl b/plugins/personal/scalix/generic.tpl
new file mode 100644 (file)
index 0000000..e87795b
--- /dev/null
@@ -0,0 +1,127 @@
+<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" />&nbsp;{t}Generic{/t}</h2>
+   <table summary="">
+    <tr>
+     <td><label for="scalixMailnode">{t}Scalix mailnode{/t}</label>{$must}</td>
+     <td>
+{render acl=$scalixMailnodeACL}
+               <input id="scalixMailnode" name="scalixMailnode" size=35 maxlength=65 value="{$scalixMailnode}">
+{/render}
+        </td>
+    </tr>
+    <tr>
+     <td><label for="scalixMailboxClass">{t}Salix mailbox class{/t}</label></td>
+     <td>
+{render acl=$scalixMailboxClassACL}
+      <select size="1" id="scalixMailboxClass" name="scalixMailboxClass"  
+                       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>
+{/render}
+     </td>
+    </tr>
+    <tr>
+     <td><label for="scalixServerLanguage">{t}Scalix server language{/t}</label></td>
+     <td>
+{render acl=$scalixServerLanguageACL}
+      <select size="1" id="scalixServerLanguage" name="scalixServerLanguage" 
+                       title="{t}Message catalog language for client.{/t}">
+                   {html_options values=$serverLanguages output=$serverLanguages selected=$scalixServerLanguage}
+      </select>
+{/render}
+     </td>
+    </tr>
+   </table>
+   
+   <p class="seperator">&nbsp;</p>
+   
+   <table summary="">
+    <tr>
+     <td>
+{render acl=$scalixAdministratorACL}
+         <input type=checkbox name="scalixAdministrator" value="1" {$scalixAdministrator}
+          title="{t}Select for admin capability.{/t}"> {t}Scalix Administrator{/t}
+{/render}
+         <br>
+{render acl=$scalixMailboxAdministratorACL}
+         <input type=checkbox name="scalixMailboxAdministrator" value="1" {$scalixMailboxAdministrator}
+          title="{t}Select for mailbox admin capability.{/t}"> {t}Scalix Mailbox Administrator{/t}
+{/render}
+         <br>
+{render acl=$scalixHideUserEntryACL}
+         <input type=checkbox name="scalixHideUserEntry" value="1" {$scalixHideUserEntry}
+          title="{t}Hide user entry from addressbook.{/t}"> {t}Hide this user entry in Scalix{/t}
+{/render}
+         <br>
+   </table>
+   
+   <p class="seperator">&nbsp;</p>
+   
+   <table summary="">
+    <tr>
+     <td><label for="scalixLimitMailboxSize">{t}Limit mailbox size{/t}</label></td>
+     <td>
+{render acl=$scalixLimitMailboxSizeACL}
+               <input id="scalixLimitMailboxSize" name="scalixLimitMailboxSize" size=5 maxlength=10 value="{$scalixLimitMailboxSize}">&nbsp;{t}MB{/t}
+{/render}
+        </td>
+    </tr>
+    <tr>
+     <td >
+{render acl=$scalixLimitOutboundMailACL}
+         <input type=checkbox name="scalixLimitOutboundMail" value="1" {$scalixLimitOutboundMail}
+          title="{t}As sanction on mailbox quota overuse, stop user from sending mail.{/t}"> {t}Limit Outbound Mail{/t}
+{/render}
+         <br>
+{render acl=$scalixLimitInboundMailACL}
+         <input type=checkbox name="scalixLimitInboundMail" value="1" {$scalixLimitInboundMail}
+          title="{t}As sanction on mailbox quota overuse, stop user from receiving mail.{/t}"> {t}Limit Inbound Mail{/t}
+{/render}
+         <br>
+{render acl=$scalixLimitNotifyUserACL}
+         <input type=checkbox name="scalixLimitNotifyUser" value="1" {$scalixLimitNotifyUser}
+          title="{t}As sanction on mailbox quota overuse, notify the user by eMail.{/t}"> {t}Notify User{/t}
+{/render}
+         <br>
+     </td>
+    </tr>
+   </table>
+  </td>
+
+  <td style="border-left:1px solid #A0A0A0">
+   &nbsp;
+  </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>
+{render acl=$scalixEmailAddressACL}
+   <select id="emails_list" style="width:100%;height:100px;" name="emails_list[]" size="15"
+                multiple title="{t}List of scalix email addresses{/t}" >
+            {html_options values=$scalixEmailAddress output=$scalixEmailAddress}
+                       <option disabled>&nbsp;</option>
+   </select>
+{/render}
+   <br />
+{render acl=$scalixEmailAddressACL}
+   <input name="email_address" size="30" align="middle" maxlength="65" value="">
+{/render}
+{render acl=$scalixEmailAddressACL}
+   <input type=submit value="{t}Add{/t}" name="add_email">&nbsp;
+{/render}
+{render acl=$scalixEmailAddressACL}
+   <input type=submit value="{t}Delete{/t}" name="delete_email">
+{/render}
+  </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
new file mode 100644 (file)
index 0000000..d1b9e7b
--- /dev/null
@@ -0,0 +1,128 @@
+<?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);
+    $_SESSION['scalixAccount']->set_acl_base($ui->dn);
+    $_SESSION['scalixAccount']->set_acl_category("users");
+  }
+  $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;
+      $_SESSION['LOCK_VARS_TO_USE'] = array("/^edit$/","/^plug$/");
+      $lock_msg =  gen_locked_message ($username, $ui->dn);
+
+    }else{
+
+      /* Lock the current entry */
+      add_lock ($ui->dn, $ui->dn);
+      $_SESSION['dn']= $ui->dn;
+      $_SESSION['edit']= TRUE;
+    }
+  }
+
+  /* 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.= "&nbsp;";
+      $display.= "<input type=submit name=\"edit_cancel\" value=\""._("Cancel")."\">\n";
+      $info= "<img alt=\"\" align=\"middle\" src=\"".get_template_path('images/closedlock.png').
+             "\"> ".$ui->dn."&nbsp;";
+    } else {
+      $info= "<img alt=\"\" align=\"middle\" src=\"".get_template_path('images/openlock.png').
+             "\"> ".$ui->dn."&nbsp;";
+
+      if(preg_match("/w/",$ui->get_permissions($ui->dn,"users/scalix"))){
+        $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:
+?>