diff --git a/plugins/gofon/macro/class_gofonMacroManagement.inc b/plugins/gofon/macro/class_gofonMacroManagement.inc
index 24e34e856404197ba0c1fa2c14e0909198bd4697..131ae83c6dff7602831b48ee3f8615cbfcb1d390 100755 (executable)
/* Get global filter config */
if (!is_global("macrofilter")){
$base= get_base_from_people($ui->dn);
- $macrofilter= array("depselect" => $base, "regex" => "*");
+ $macrofilter= array("regex" => "*");
register_global("macrofilter", $macrofilter);
}
+
+ if(!isset($_SESSION['CurrentMainBase'])){
+ $_SESSION['CurrentMainBase'] = $base= get_base_from_people($ui->dn);
+ }
+
+ $acl= get_permissions ($ui->dn, $ui->subtreeACL);
+ $this->acl= get_module_permission($acl, "goFonMacro", $ui->dn);
}
function execute()
{
+ /* Call parent execute */
+ plugin::execute();
+
/* Save data */
$macrofilter= get_global("macrofilter");
- foreach( array("depselect", "regex") as $type){
+ foreach( array("regex") as $type){
if (isset($_POST[$type])){
$macrofilter[$type]= $_POST[$type];
}
if(isset($_GET['act'])&&($_GET['act']=="dep_open")){
$s_action="open";
$s_entry = base64_decode($_GET['dep_id']);
- $macrofilter['depselect']= "".$this->config->departments[trim($s_entry)];
+ $_SESSION['CurrentMainBase'] = $this->config->departments[trim($s_entry)];
+
}
/* Test Posts */
$s_entry = preg_replace("/_.$/","",$s_entry);
/* Department changed? */
- if(isset($_POST['depselect']) && $_POST['depselect']){
- $macrofilter['depselect']= $_POST['depselect'];
+ if(isset($_POST['CurrentMainBase']) && $_POST['CurrentMainBase']){
+ $_SESSION['CurrentMainBase']= $_POST['CurrentMainBase'];
}
/* Homebutton is posted */
if($s_action=="home"){
- $macrofilter['depselect']=(preg_replace("/^[^,]+,/","",$this->ui->dn));
- $macrofilter['depselect']=(preg_replace("/^[^,]+,/","",$macrofilter['depselect']));
+ $_SESSION['CurrentMainBase'] = preg_replace("/^[^,]+,/","",$this->ui->dn);
+ $_SESSION['CurrentMainBase'] = preg_replace("/^[^,]+,/","", $_SESSION['CurrentMainBase']);
}
if($s_action=="root"){
- $macrofilter['depselect']=($this->config->current['BASE']);
+ $_SESSION['CurrentMainBase'] = $this->config->current['BASE'] ;
}
/* If Backbutton is Posted */
if($s_action=="back"){
- $base_back = preg_replace("/^[^,]+,/","",$macrofilter['depselect']);
+ $base_back = preg_replace("/^[^,]+,/","", $_SESSION['CurrentMainBase']);
$base_back = convert_department_dn($base_back);
if(isset($this->config->departments[trim($base_back)])){
- $macrofilter['depselect']= $this->config->departments[trim($base_back)];
+ $_SESSION['CurrentMainBase'] = $this->config->departments[trim($base_back)];
}else{
- $macrofilter['depselect']= $this->config->departments["/"];
+ $_SESSION['CurrentMainBase'] = $this->config->departments["/"];
}
}
/* Create new usertab object */
$this->macrotabs= new macrotabs($this->config,$this->config->data['TABS']['MACROTABS'], $this->dn);
- $this->macrotabs->set_acl(array(':all'));
}
/* Cancel dialogs */
/* Finish mac edit is triggered by the tabulator dialog, so
the user wants to save edited data. Check and save at this
point. */
- if (isset($_POST['edit_finish'])){
+ if ((isset($_POST['edit_finish'])) && (isset($this->macrotabs->config))){
/* Check tabs, will feed message array */
$this->macrotabs->last= $this->macrotabs->current;
}
/* User wants to edit data? */
- if ($s_action=="edit"){
+ if (($s_action=="edit") && (!isset($this->macrotabs->config))){
/* Get 'dn' from posted 'macrolists', must be unique */
$this->dn= $this->macros[$s_entry]['dn'];
/* Lock the current entry, so everyone will get the
above dialog */
add_lock ($this->dn, $this->ui->dn);
-
- /* Set up the users ACL's for this 'dn' */
- $acl= get_permissions ($this->dn, $this->ui->subtreeACL);
-
/* Register macrotabs to trigger edit dialog */
$this->macrotabs= new macrotabs($this->config,
- $this->config->data['TABS']['MACROTABS'], $this->dn);
- $this->macrotabs->set_acl($acl);
+ $this->config->data['TABS']['MACROTABS'], $this->dn);
$_SESSION['objectinfo']= $this->dn;
}
/* Load permissions for selected 'dn' and check if
we're allowed to remove this 'dn' */
$acl= get_permissions ($this->dn, $this->ui->subtreeACL);
- $this->acl= get_module_permission($acl, "macro", $this->dn);
+ $this->acl= get_module_permission($acl, "goFonMacro", $this->dn);
if (chkacl($this->acl, "delete") == ""){
/* Check locking, save current plugin in 'back_plugin', so
}
/* Show tab dialog if object is present */
- if ($this->macrotabs){
+ if (($this->macrotabs) && (isset($this->macrotabs->config))){
$display= $this->macrotabs->execute();
/* Don't show buttons if tab dialog requests this */
if (!$this->macrotabs->by_object[$this->macrotabs->current]->dialog){
$display.= "<p style=\"text-align:right\">\n";
- $display.= "<input type=submit name=\"edit_finish\" value=\""._("Finish")."\">\n";
+ $display.= "<input type=\"submit\" name=\"edit_finish\" value=\""._("Save")."\">\n";
$display.= " \n";
- $display.= "<input type=submit name=\"edit_cancel\" value=\""._("Cancel")."\">\n";
+ $display.= "<input type=\"submit\" name=\"edit_cancel\" value=\""._("Cancel")."\">\n";
$display.= "</p>";
}
return ($display);
/* Prepare departments */
$options= "";
foreach ($this->config->idepartments as $key => $value){
- if ($macrofilter['depselect'] == $key){
- $options.= "<option selected value='$key'>$value</option>";
+ if ($_SESSION['CurrentMainBase'] == $key){
+ $options.= "<option selected='selected' value='$key'>$value</option>";
} else {
$options.= "<option value='$key'>$value</option>";
}
/* NEW LIST MANAGMENT */
$listhead = "<div style='background:#F0F0F9;padding:5px;'>".
- " <input type='image' align='middle' src='images/list_back.png' title='"._("Go up one department")."' alt='"._("Up")."' name='dep_back'> ".
- " <input type='image' src='images/list_root.png' align='middle' title='"._("Go to root department")."' name='dep_root' alt='"._("Root"). "'> ".
- " <input type='image' align='middle' src='images/list_home.png' title='"._("Go to users department")."' alt='"._("Home")."' name='dep_home'> ".
- " <img src='images/list_seperator.png' align='middle' alt='' height='16' width='1'> ".
- " <input type='image' align='middle' src='images/list_new_macro.png' title='"._("Create new phone macro")."' alt='"._("New")."' name='user_new'> ".
- " <img src='images/list_seperator.png' align='middle' alt='' height='16' width='1'> ".
- _("Current base")." <select name='depselect' onChange='mainform.submit()'>$options</select>".
- " <input type='image' src='images/list_submit.png' align='middle' title='"._("Submit department")."' name='submit_department' alt='"._("Submit")."'> ".
+ " <input class='center' type='image' src='images/list_root.png' align='middle' title='"._("Go to root department")."' name='dep_root' alt='"._("Root"). "'> ".
+ " <input class='center' type='image' align='middle' src='images/list_back.png' title='"._("Go up one department")."' alt='"._("Up")."' name='dep_back'> ".
+ " <input class='center' type='image' align='middle' src='images/list_home.png' title='"._("Go to users department")."' alt='"._("Home")."' name='dep_home'> ".
+ " <input class='center' type='image' src='images/list_reload.png' align='middle' title='"._("Reload list")."' name='submit_department' alt='"._("Submit")."'> ".
+ " <img class='center' src='images/list_seperator.png' align='middle' alt='' height='16' width='1'> ".
+ " <input class='center' type='image' align='middle' src='images/list_new_macro.png' title='"._("Create new phone macro")."' alt='"._("New")."' name='user_new'> ".
+ " <img class='center' src='images/list_seperator.png' align='middle' alt='' height='16' width='1'> ".
+ _("Base")." <select name='CurrentMainBase' onChange='mainform.submit()' class='center'>$options</select>".
+ " <input class='center' type='image' src='images/list_submit.png' align='middle' title='"._("Submit department")."' name='submit_department' alt='"._("Submit")."'> ".
"</div>";
/* Options */
- $action= "<input type='image' src='images/edit.png' alt='"._("edit")."' name='user_edit_%KEY%' title='"._("Edit user")."'>";
- $action.= "<input type='image' src='images/editdelete.png' alt='"._("delete")."' name='user_del_%KEY%' title='"._("Delete user")."'>";
+ $action= "<input class='center' type='image' src='images/edit.png' alt='"._("edit")."' name='user_edit_%KEY%' title='"._("Edit user")."'>";
+ $action.= "<input class='center' type='image' src='images/edittrash.png' alt='"._("delete")."' name='user_del_%KEY%' title='"._("Delete user")."'>";
$divlist = new divlist("macrotabs");
$divlist->SetHeader(array(
- array("string" => " "),
- array("string" => _("Username")." / "._("Department")),
- array("string" => _("Visible"), "attach" => "style='width:30px;'"),
- array("string" => _("Actions"), "attach" => "style='border:none'" )));
+ array("string" => " ", "attach" => "style='text-align:center;width:20px;'"),
+ array("string" => _("Username")." / "._("Department"), "attach" => "style=''"),
+ array("string" => _("Visible"), "attach" => "style='width:50px;'"),
+ array("string" => _("Actions"), "attach" => "style='width:60px;border-right:0px;text-align:right;'" )));
$divlist->SetSummary(_("This table displays all phone macros, in the selected tree."));
- $divlist->SetEntriesPerPage(20);
+ $divlist->SetEntriesPerPage(0);
// Defining Links
$linkopen = "<a href='?plug=".$_GET['plug']."&act=dep_open&dep_id=%s'>%s</a>";
foreach($this->departments as $key=> $val){
- $field1 = array("string" => "<img src='images/folder.png' alt='department'>");
- $field2 = array("string" => sprintf($linkopen,base64_encode($key),$val));
- $field3 = array("string" => " ");
- $field4 = array("string" => " ", "attach" => "style='border:none'");
+
+ if(!isset($this->config->departments[trim($key)])){
+ $this->config->departments[trim($key)]="";
+ }
+
+ $non_empty="";
+ $keys= str_replace("/","\/",$key);
+ foreach($this->config->departments as $keyd=>$vald ){
+ if(preg_match("/".$keys."\/.*/",$keyd)){
+ $non_empty="full";
+ }
+ }
+
+ $field1 = array("string" => "<img src='images/".$non_empty."folder.png' alt='department'>", "attach" => "style='text-align:center;width:20px;'");
+ $field2 = array("string" => sprintf($linkopen,base64_encode($key),$val), "attach" => "style=''");
+ $field3 = array("string" => " ", "attach" => "style='width:50px;'");
+ $field4 = array("string" => " ", "attach" => "style='width:60px;border-right:0px;text-align:right;'");
$divlist->AddEntry(array($field1,$field2,$field3,$field4));
}
// Pictures for Extensions
- $empty = "<img src='images/nothing.png' style='width:16px;height:16px;' alt=''>";
+ $empty = "<img class='center' src='images/nothing.png' style='width:16px;height:16px;' alt=''>";
// User and Template Images
- $macroimg = "<img src='images/list_macro.png' alt='"._("Macro")."' title='%s'>";
- $visible = "<img src='images/true.png' alt='"._("yes")."' title='"._("visible")."'>";
- $invisible = "<img src='images/false.png' alt='"._("no")."'title='"._("invisible")."'>";
+ $macroimg = "<img class='center' src='images/list_macro.png' alt='"._("Macro")."' title='%s'>";
+ $visible = "<img class='center' src='images/true.png' alt='"._("yes")."' title='"._("visible")."'>";
+ $invisible = "<img class='center' src='images/false.png' alt='"._("no")."'title='"._("invisible")."'>";
// Link for edit
$editlink = "<a href='?plug=".$_GET['plug']."&id=%s&act=edit_entry'>%s</a>";
$pic1 = $invisible;
}
- $field1 = array("string" => sprintf($macroimg,$val['dn']),"attach"=>"style='width:20px;align:middle;'");
- $field2 = array("string" => sprintf($editlink,$key,$display),"attach"=>"title='".$val['dn']."'");
- $field3 = array("string" => $pic1, "attach" => "style='width:20px;text-align:right;'");
- $field4 = array("string" => preg_replace("/%KEY%/", "$key", $action),"attach" => "style='border:none;text-align:right;width:48px'");
+ $field1 = array("string" => sprintf($macroimg,$val['dn']), "attach" => "style='text-align:center;width:20px;'");
+ $field2 = array("string" => sprintf($editlink,$key,$display), "attach" => "style='' title='dn: ".@LDAP::fix($val['dn'])."'");
+ $field3 = array("string" => $pic1, "attach" => "style='width:50px;'");
+ $field4 = array("string" => preg_replace("/%KEY%/", "$key", $action), "attach" => "style='width:60px;border-right:0px;text-align:right;'");
$divlist->AddEntry(array($field1,$field2,$field3,$field4));
}
$smarty->assign("infoimage", get_template_path('images/info.png'));
$smarty->assign("launchimage", get_template_path('images/launch.png'));
$smarty->assign("deplist", $this->config->idepartments);
- foreach( array("depselect", "regex") as $type){
+ foreach( array("regex") as $type){
$smarty->assign("$type", $macrofilter[$type]);
}
+ $smarty->assign("CurrentMainBase" , $_SESSION['CurrentMainBase']);
+
/* Extend if we are not using javascript */
$smarty->assign("apply", apply_filter());
$smarty->assign("alphabet", generate_alphabet());
$macrofilter= get_global('macrofilter');
/* Set base for all searches */
- $base= $macrofilter['depselect'];
+ $base= $_SESSION['CurrentMainBase'];
/* Regex filter? */
if ($macrofilter['regex'] != ""){
}
/* Generate macro list */
- $res= get_list($this->ui->subtreeACL, "(&(cn=$regex)(objectClass=goFonMacro))", TRUE, $base, array("*"), TRUE);
+ $res= get_list("(&(cn=$regex)(objectClass=goFonMacro))", $this->ui->subtreeACL,
+ "ou=macros,ou=asterisk,ou=configs,ou=systems,".$base, array("*"), GL_SIZELIMIT);
$this->macros= $res;
/* NEW LIST MANAGMENT
* We also need to search for the departments
* So we are able to navigate like in konquerer
*/
- $base2 = preg_replace("/ou=people,/i","",$base);
+ $peopleOU = get_people_ou();
+
+ if(empty($peopleOU)){
+ $base2 = $base;
+ }else{
+ $base2 = preg_replace("/".$peopleOU."/i","",$base);
+ }
- $res3 = get_list2($this->ui->subtreeACL, "(&(|(ou=$regex)(description=$regex))(objectClass=gosaDepartment))",
- TRUE, $base2, array("ou", "description"), TRUE);
+ $res3= get_list("(&(|(ou=$regex)(description=$regex))(objectClass=gosaDepartment))",
+ $this->ui->subtreeACL, $base2, array("ou", "description"), GL_SIZELIMIT | GL_CONVERT);
$this->departments= array();
$tmp = array();
}
ksort($tmp);
foreach($tmp as $value){
- if($value["description"][0]!=".."){
- $this->departments[$value['dn']]=convert_department_dn2($value['dn'])." - [".$value["description"][0]."]";
+ if(isset($value["description"][0])){
+ $this->departments[$value['dn']]= get_sub_department($value['dn'])." - [".$value["description"][0]."]";
}else{
- $this->departments[$value['dn']]=$value["description"][0];
+ $this->departments[$value['dn']]= get_sub_department($value['dn']);//$value["description"][0];
}
}