ILIAS  Release_4_4_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilObjFileAccessSettingsGUI.php
Go to the documentation of this file.
1 <?php
2 /*
3  +-----------------------------------------------------------------------------+
4  | ILIAS open source |
5  +-----------------------------------------------------------------------------+
6  | Copyright (c) 1998-2001 ILIAS open source, University of Cologne |
7  | |
8  | This program is free software; you can redistribute it and/or |
9  | modify it under the terms of the GNU General Public License |
10  | as published by the Free Software Foundation; either version 2 |
11  | of the License, or (at your option) any later version. |
12  | |
13  | This program is distributed in the hope that it will be useful, |
14  | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15  | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16  | GNU General Public License for more details. |
17  | |
18  | You should have received a copy of the GNU General Public License |
19  | along with this program; if not, write to the Free Software |
20  | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
21  +-----------------------------------------------------------------------------+
22 */
23 
37 include_once "./Services/Object/classes/class.ilObjectGUI.php";
38 
40 {
41  private $disk_quota_obj;
42 
47  function ilObjFileAccessSettingsGUI($a_data,$a_id,$a_call_by_reference)
48  {
49  global $tree;
50 
51  $this->type = "facs";
52  $this->ilObjectGUI($a_data,$a_id,$a_call_by_reference, false);
53  $this->folderSettings = new ilSetting('fold');
54 
55  // Load the disk quota settings object
56  require_once 'Services/WebDAV/classes/class.ilObjDiskQuotaSettings.php';
57  $this->disk_quota_obj = new ilObjDiskQuotaSettings($a_id, $a_call_by_reference);
58  $this->disk_quota_obj->read();
59  }
66  public function executeCommand()
67  {
68  global $rbacsystem,$ilErr,$ilAccess, $ilias, $lng;
69 
70  $next_class = $this->ctrl->getNextClass($this);
71  $cmd = $this->ctrl->getCmd();
72 
73  $this->prepareOutput();
74 
75  if(!$ilAccess->checkAccess('read','',$this->object->getRefId()))
76  {
77  $ilias->raiseError($lng->txt('no_permission'),$ilias->error_obj->MESSAGE);
78  }
79 
80  switch($next_class)
81  {
82  case 'ilpermissiongui':
83  $this->tabs_gui->setTabActive('perm_settings');
84  include_once("Services/AccessControl/classes/class.ilPermissionGUI.php");
85  $perm_gui =& new ilPermissionGUI($this);
86  $ret =& $this->ctrl->forwardCommand($perm_gui);
87  break;
88 
89  case 'ilfmsettingsgui':
90  $this->tabs_gui->setTabActive('fm_settings_tab');
91  include_once './Services/WebServices/FileManager/classes/class.ilFMSettingsGUI.php';
92  $fmg = new ilFMSettingsGUI($this);
93  $this->ctrl->forwardCommand($fmg);
94  break;
95 
96  default:
97  if(!$cmd || $cmd == 'view')
98  {
99  $cmd = "editDownloadingSettings";
100  }
101 
102  $this->$cmd();
103  break;
104  }
105  return true;
106  }
107 
114  public function getAdminTabs()
115  {
116  global $rbacsystem, $ilAccess;
117 
118  $GLOBALS['lng']->loadLanguageModule('fm');
119 
120  if ($rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
121  {
122  $this->tabs_gui->addTarget('downloading_settings',
123  $this->ctrl->getLinkTarget($this, "editDownloadingSettings"),
124  array("editDownloadingSettings", "view"));
125 
126  $this->tabs_gui->addTarget('upload_settings',
127  $this->ctrl->getLinkTarget($this, "editUploadSettings"),
128  array("editUploadSettings", "view"));
129 
130  $this->tabs_gui->addTarget('preview_settings',
131  $this->ctrl->getLinkTarget($this, "editPreviewSettings"),
132  array("editPreviewSettings", "view"));
133 
134  $this->tabs_gui->addTarget('webdav',
135  $this->ctrl->getLinkTarget($this, "editWebDAVSettings"),
136  array("editWebDAVSettings", "view"));
137 
138  $this->tabs_gui->addTarget(
139  'fm_settings_tab',
140  $this->ctrl->getLinkTargetByClass('ilFMSettingsGUI','settings'),
141  array(),
142  'ilfmsettingsgui'
143  );
144 
145  $this->tabs_gui->addTarget("disk_quota",
146  $this->ctrl->getLinkTarget($this, "editDiskQuotaSettings"),
147  array("editDiskQuota", "view"));
148  }
149  if ($rbacsystem->checkAccess('edit_permission',$this->object->getRefId()))
150  {
151  $this->tabs_gui->addTarget("perm_settings",
152  $this->ctrl->getLinkTargetByClass('ilpermissiongui',"perm"),
153  array(),'ilpermissiongui');
154  }
155  }
156 
160  public function editDownloadingSettings()
161  {
162  global $rbacsystem, $ilErr, $ilTabs;
163 
164  $this->tabs_gui->setTabActive('downloading_settings');
165 
166  if (! $rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
167  {
168  $ilErr->raiseError($lng->txt("no_permission"),$ilErr->WARNING);
169  }
170 
171  global $tpl, $ilCtrl, $lng, $tree, $settings;
172 
173  require_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
174  require_once("./Services/Form/classes/class.ilCheckboxInputGUI.php");
175  require_once("./Services/Form/classes/class.ilRadioGroupInputGUI.php");
176  require_once("./Services/Form/classes/class.ilRadioOption.php");
177  require_once("./Services/Form/classes/class.ilTextAreaInputGUI.php");
178 
179  $form = new ilPropertyFormGUI();
180  $form->setFormAction($ilCtrl->getFormAction($this));
181  $form->setTitle($lng->txt("settings"));
182 
183  // Backwards compatibility with ILIAS 3.9: Use the name of the
184  // uploaded file as the filename for the downloaded file instead
185  // of the title of the file object.
186  $dl_prop = new ilCheckboxInputGUI($lng->txt("download_with_uploaded_filename"), "download_with_uploaded_filename");
187  $dl_prop->setValue('1');
188  // default value should reflect previous behaviour (-> 0)
189  $dl_prop->setChecked($this->object->isDownloadWithUploadedFilename() == 1);
190  $dl_prop->setInfo($lng->txt('download_with_uploaded_filename_info'));
191  $form->addItem($dl_prop);
192 
193  // Show download action for folder
194  $dl_prop = new ilCheckboxInputGUI($lng->txt("enable_download_folder"), "enable_download_folder");
195  $dl_prop->setValue('1');
196  // default value should reflect previous behaviour (-> 0)
197  $dl_prop->setChecked($this->folderSettings->get("enable_download_folder", 0) == 1);
198  $dl_prop->setInfo($lng->txt('enable_download_folder_info'));
199  $form->addItem($dl_prop);
200 
201  // multi download
202  $dl_prop = new ilCheckboxInputGUI($lng->txt("enable_multi_download"), "enable_multi_download");
203  $dl_prop->setValue('1');
204  // default value should reflect previous behaviour (-> 0)
205  $dl_prop->setChecked($this->folderSettings->get("enable_multi_download", 0) == 1);
206  $dl_prop->setInfo($lng->txt('enable_multi_download_info'));
207  $form->addItem($dl_prop);
208 
209  // Inline file extensions
210  $tai_prop = new ilTextAreaInputGUI($lng->txt('inline_file_extensions'), 'inline_file_extensions');
211  $tai_prop->setValue($this->object->getInlineFileExtensions());
212  $tai_prop->setInfo($lng->txt('inline_file_extensions_info'));
213  $tai_prop->setCols(80);
214  $tai_prop->setRows(5);
215  $form->addItem($tai_prop);
216 
217 
218  // command buttons
219  $form->addCommandButton('saveDownloadingSettings', $lng->txt('save'));
220  $form->addCommandButton('view', $lng->txt('cancel'));
221 
222  $tpl->setContent($form->getHTML());
223  }
224 
228  public function saveDownloadingSettings()
229  {
230  global $rbacsystem, $ilErr, $ilCtrl, $lng;
231 
232  if (! $rbacsystem->checkAccess("write",$this->object->getRefId()))
233  {
234  $ilErr->raiseError($lng->txt("no_permission"),$ilErr->WARNING);
235  }
236 
237  $this->object->setDownloadWithUploadedFilename(ilUtil::stripSlashes($_POST['download_with_uploaded_filename']));
238  $this->object->setInlineFileExtensions(ilUtil::stripSlashes($_POST['inline_file_extensions']));
239  $this->object->update();
240 
241  $this->folderSettings->set("enable_download_folder", $_POST["enable_download_folder"] == 1);
242  $this->folderSettings->set("enable_multi_download", $_POST["enable_multi_download"] == 1);
243 
244  ilUtil::sendInfo($lng->txt('settings_saved'),true);
245  $ilCtrl->redirect($this, "editDownloadingSettings");
246  }
247 
251  public function editWebDAVSettings()
252  {
253  global $rbacsystem, $ilErr, $ilTabs;
254  global $tpl, $ilCtrl, $lng, $tree, $settings;
255 
256 
257  $this->tabs_gui->setTabActive('webdav');
258 
259  if (! $rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
260  {
261  $ilErr->raiseError($lng->txt("no_permission"),$ilErr->WARNING);
262  }
263 
264  require_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
265  require_once("./Services/Form/classes/class.ilCheckboxInputGUI.php");
266  require_once("./Services/Form/classes/class.ilRadioGroupInputGUI.php");
267  require_once("./Services/Form/classes/class.ilRadioOption.php");
268  require_once("./Services/Form/classes/class.ilTextAreaInputGUI.php");
269  require_once("./Services/WebDAV/classes/class.ilDAVServer.php");
270 
271  $form = new ilPropertyFormGUI();
272  $form->setFormAction($ilCtrl->getFormAction($this));
273  $form->setTitle($lng->txt("settings"));
274 
275  // Enable webdav
276  $ilDAVServer = ilDAVServer::getInstance();
277  $isPearAuthHTTPInstalled = @include_once("Auth/HTTP.php");
278  $cb_prop = new ilCheckboxInputGUI($lng->txt("enable_webdav"), "enable_webdav");
279  $cb_prop->setValue('1');
280  $cb_prop->setChecked($this->object->isWebdavEnabled() && $isPearAuthHTTPInstalled);
281  $cb_prop->setDisabled(! $isPearAuthHTTPInstalled);
282  $cb_prop->setInfo($isPearAuthHTTPInstalled ?
283  sprintf($lng->txt('enable_webdav_info'),$ilDAVServer->getMountURI($tree->getRootId(),0,null,null,true)) :
284  $lng->txt('webdav_pear_auth_http_needed')
285  );
286  $form->addItem($cb_prop);
287 
288  // Webdav help text
289  if ($isPearAuthHTTPInstalled)
290  {
291  $rgi_prop = new ilRadioGroupInputGUI($lng->txt('webfolder_instructions'), 'custom_webfolder_instructions_choice');
292  $rgi_prop->addOption(new ilRadioOption($lng->txt('use_default_instructions'), 'default'));
293  $rgi_prop->addOption(new ilRadioOption($lng->txt('use_customized_instructions'), 'custom'));
294  $rgi_prop->setValue($this->object->isCustomWebfolderInstructionsEnabled() ? 'custom':'default');
295  $rgi_prop->setDisabled(! $isPearAuthHTTPInstalled);
296  $form->addItem($rgi_prop);
297  $tai_prop = new ilTextAreaInputGUI('', 'custom_webfolder_instructions');
298  $tai_prop->setValue($this->object->getCustomWebfolderInstructions());
299  $tai_prop->setInfo($lng->txt("webfolder_instructions_info"));
300  $tai_prop->setCols(80);
301  $tai_prop->setRows(20);
302  $tai_prop->setDisabled(! $isPearAuthHTTPInstalled);
303  $form->addItem($tai_prop);
304  }
305 
306  // command buttons
307  $form->addCommandButton('saveWebDAVSettings', $lng->txt('save'));
308  $form->addCommandButton('view', $lng->txt('cancel'));
309 
310  $tpl->setContent($form->getHTML());
311  }
312 
316  public function saveWebDAVSettings()
317  {
318  global $rbacsystem, $ilErr, $ilCtrl, $lng;
319 
320  if (! $rbacsystem->checkAccess("write",$this->object->getRefId()))
321  {
322  $ilErr->raiseError($lng->txt("no_permission"),$ilErr->WARNING);
323  }
324 
325  $this->object->setWebdavEnabled($_POST['enable_webdav'] == '1');
326 // $this->object->setWebdavActionsVisible($_POST['webdav_actions_visible'] == '1');
327  $this->object->setCustomWebfolderInstructionsEnabled($_POST['custom_webfolder_instructions_choice']=='custom');
328  $this->object->setCustomWebfolderInstructions(ilUtil::stripSlashes($_POST['custom_webfolder_instructions'], false));
329  $this->object->update();
330 
331  ilUtil::sendInfo($lng->txt('settings_saved'),true);
332  $ilCtrl->redirect($this, "editWebDAVSettings");
333  }
334 
339  {
341  $this->tpl->setDescription($this->object->getDescription());
342  }
343 
344 
345  // DISK QUOTA --------------------------------------------------------------
349  function addDiskQuotaSubtabs($a_active_subtab)
350  {
351  global $ilCtrl, $ilTabs;
352 
353  include_once("./Services/COPage/classes/class.ilPageEditorSettings.php");
354 
355  $ilTabs->addSubTabTarget("settings",
356  $ilCtrl->getLinkTarget($this, "editDiskQuotaSettings"),
357  array("editDiskQuotaSettings"));
358 
359  require_once 'Services/WebDAV/classes/class.ilDiskQuotaActivationChecker.php';
361  {
362  $ilTabs->addSubTabTarget("disk_quota_report",
363  $ilCtrl->getLinkTarget($this, "viewDiskQuotaReport"),
364  array("viewDiskQuotaReport"));
365  }
366 
367  $ilTabs->addSubTabTarget("disk_quota_reminder_mail",
368  $ilCtrl->getLinkTarget($this, "editDiskQuotaMailTemplate"),
369  array("editDiskQuotaMailTemplate"));
370 
371  $ilTabs->setSubTabActive($a_active_subtab);
372  }
373 
374 
378  public function editDiskQuotaSettings()
379  {
380  global $rbacsystem, $ilErr, $ilSetting, $tpl, $lng, $ilCtrl;
381 
382 
383  if (! $rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
384  {
385  $ilErr->raiseError($lng->txt("no_permission"),$ilErr->WARNING);
386  }
387 
388  $this->tabs_gui->setTabActive('disk_quota');
389  $this->addDiskQuotaSubtabs('settings');
390 
391  require_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
392  require_once("./Services/Form/classes/class.ilCheckboxInputGUI.php");
393  require_once("./Services/Form/classes/class.ilRadioGroupInputGUI.php");
394  require_once("./Services/Form/classes/class.ilRadioOption.php");
395  require_once("./Services/Form/classes/class.ilTextAreaInputGUI.php");
396  require_once("./Services/WebDAV/classes/class.ilDAVServer.php");
397 
398  $lng->loadLanguageModule("file");
399 
400  $form = new ilPropertyFormGUI();
401  $form->setFormAction($ilCtrl->getFormAction($this));
402  $form->setTitle($lng->txt("settings"));
403 
404  include_once "Services/Administration/classes/class.ilAdministrationSettingsFormHandler.php";
407  $form,
408  $this
409  );
410 
411  /*
412  // command buttons
413  $form->addCommandButton('saveDiskQuotaSettings', $lng->txt('save'));
414  $form->addCommandButton('editDiskQuotaSettings', $lng->txt('cancel'));
415  */
416 
417  $tpl->setContent($form->getHTML());
418  }
419 
423  public function saveDiskQuotaSettings()
424  {
425  global $rbacsystem, $ilErr, $ilCtrl, $lng;
426 
427  if (! $rbacsystem->checkAccess("write",$this->object->getRefId()))
428  {
429  $ilErr->raiseError($lng->txt("no_permission"),$ilErr->WARNING);
430  }
431 
432  // ilUtil::sendInfo($lng->txt('settings_saved'),true);
433  $ilCtrl->redirect($this, "editDiskQuotaSettings");
434  }
435 
440  public function viewDiskQuotaReport()
441  {
442  global $rbacsystem, $ilErr, $ilSetting, $lng;
443 
444  if (! $rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
445  {
446  $ilErr->raiseError($lng->txt("no_permission"),$ilErr->WARNING);
447  }
448 
449  $this->tabs_gui->setTabActive('disk_quota');
450  $this->addDiskQuotaSubtabs('disk_quota_report');
451 
452  // nothing to do if disk quota is not active
453  require_once 'Services/WebDAV/classes/class.ilDiskQuotaActivationChecker.php';
455  {
456  return;
457  }
458 
459  // get the form
460  $this->tpl->addBlockfile('ADM_CONTENT','adm_content','tpl.disk_quota_report.html',
461  "Services/WebDAV");
462 
463  // get the date of the last update
464  require_once("./Services/WebDAV/classes/class.ilDiskQuotaChecker.php");
466  if ($last_update == null)
467  {
468  // nothing to do if disk usage report has not been run
469  $this->tpl->setVariable('LAST_UPDATE_TEXT',$lng->txt('disk_quota_report_not_run_yet'));
470  return;
471  }
472  else
473  {
474  $this->tpl->setVariable('LAST_UPDATE_TEXT',$lng->txt('last_update').': '.ilFormat::formatDate($last_update,'datetime',true));
475  }
476 
477  // Filter
478  $_SESSION['quota_usage_filter'] = isset($_POST['usage_filter']) ? $_POST['usage_filter'] : $_SESSION['quota_usage_filter'];
479  if ($_SESSION['quota_usage_filter'] == 0)
480  {
481  $_SESSION['quota_usage_filter'] = 4;
482  }
483  $_SESSION['quota_access_filter'] = isset($_POST['access_filter']) ? $_POST['access_filter'] : $_SESSION['quota_access_filter'];
484  if ($_SESSION['quota_access_filter'] == 0)
485  {
486  $_SESSION['quota_access_filter'] = 1;
487  }
488  $usage_action[1] = $lng->txt('all_users');
489  $usage_action[2] = $lng->txt('filter_users_without_disk_usage');
490  $usage_action[3] = $lng->txt('filter_users_with_disk_usage');
491  $usage_action[4] = $lng->txt('filter_users_with_exceeded_disk_quota');
492  $access_action[1] = $lng->txt('all_users');
493  $access_action[2] = $lng->txt('filter_users_with_access');
494  $access_action[3] = $lng->txt('filter_users_without_access');
495 
496  $select_usage_filter = ilUtil::formSelect($_SESSION['quota_usage_filter'],"usage_filter",$usage_action,false,true);
497  $select_access_filter = ilUtil::formSelect($_SESSION['quota_access_filter'],"access_filter",$access_action,false,true);
498 
499  $this->tpl->setCurrentBlock("filter");
500  $this->tpl->setVariable("FILTER_TXT_FILTER",$lng->txt('filter'));
501  $this->tpl->setVariable("SELECT_USAGE_FILTER",$select_usage_filter);
502  $this->tpl->setVariable("SELECT_ACCESS_FILTER",$select_access_filter);
503  $this->tpl->setVariable("FILTER_ACTION",$this->ctrl->getLinkTarget($this, 'viewDiskQuotaReport'));
504  $this->tpl->setVariable("FILTER_NAME",'view');
505  $this->tpl->setVariable("FILTER_VALUE",$lng->txt('apply_filter'));
506  $this->tpl->parseCurrentBlock();
507 
508  // load templates for table
509  $a_tpl = new ilTemplate('tpl.table.html',true,true);
510  $a_tpl->addBlockfile("TBL_CONTENT", "tbl_content", "tpl.obj_tbl_rows.html");
511 
512  // create table
513  require_once './Services/Table/classes/class.ilTableGUI.php';
514  $tbl = new ilTableGUI(0, false);
515 
516  // title & header columns
517  $header_vars = array('login','firstname','lastname','email','access_until','last_login','disk_quota','disk_usage', 'last_reminder');
518  $tbl->setHeaderNames(
519  array(
520  $lng->txt('login'),
521  $lng->txt('firstname'),
522  $lng->txt('lastname'),
523  $lng->txt('email'),
524  $lng->txt('access_until'),
525  $lng->txt('last_login'),
526  $lng->txt('disk_quota'),
527  $lng->txt('disk_usage'),
528  $lng->txt('last_reminder')
529  )
530  );
531  $tbl->setHeaderVars(
532  $header_vars,
533  $this->ctrl->getParameterArray($this,'viewDiskQuotaReport',false)
534  );
535 
536  $tbl->enable("numinfo_header");
537  $tbl->setFormName("cmd");
538  $tbl->setSelectAllCheckbox("id");
539 
540  // sorting
541  $tbl->setOrderColumn($_GET["sort_by"]);
542  $tbl->setOrderDirection($_GET["sort_order"]);
543 
544  // fetch the data
546  $_SESSION['quota_usage_filter'],
547  $_SESSION['quota_access_filter'],
548  $header_vars[$tbl->getOrderColumn()], $tbl->getOrderDirection());
549 
550  // paging
551  $tbl->setLimit($_GET["limit"]);
552  $tbl->setOffset($_GET["offset"]);
553  $tbl->setMaxCount(count($data));
554 
555  // footer
556  $tbl->setFooter("tblfooter",$lng->txt("previous"),$lng->txt("next"));
557 
558  // render table
559  $tbl->setTemplate($a_tpl);
560 
561  // render rows
562  $count = 0;
563  for ($i = $tbl->getOffset(); $i < count($data) && $i < $tbl->getOffset() + $tbl->getLimit(); $i++)
564  {
565  $row = $data[$i];
566 
567  // build columns
568  foreach ($header_vars as $key)
569  {
570  switch ($key)
571  {
572  case 'login' :
573  //build link
574  $this->ctrl->setParameterByClass("ilobjusergui", "ref_id", "7");
575  $this->ctrl->setParameterByClass("ilobjusergui", "obj_id", $row["usr_id"]);
576  $link = $this->ctrl->getLinkTargetByClass("ilobjusergui", "view");
577  $tbl_content_cell = '<a href="'.$link.'">'.htmlspecialchars($row[$key]).'</a>';
578  break;
579  case 'disk_quota' :
580  if ($row['role_id'] == SYSTEM_ROLE_ID)
581  {
582  $tbl_content_cell = "<span class=\"smallgreen\">".$lng->txt('access_unlimited').'</span>';
583  }
584  else
585  {
586  $tbl_content_cell = ilFormat::formatSize($row[$key],'short');
587  }
588  break;
589  case 'disk_usage' :
590  if ($row['last_update'] == null)
591  {
592  $tbl_content_cell = $lng->txt('unknown');
593  }
594  else if ($row['disk_usage'] > $row['disk_quota'])
595  {
596  $tbl_content_cell = "<span class=\"smallred\">".ilFormat::formatSize($row[$key],'short').'</span>';
597  }
598  else
599  {
600  $tbl_content_cell = ilFormat::formatSize($row[$key],'short');
601  }
602  break;
603  case 'access_until' :
604  if (! $row['active'])
605  {
606  $tbl_content_cell = "<span class=\"smallred\">".$lng->txt('inactive').'</span>';
607  }
608  else if ($row['time_limit_unlimited'])
609  {
610  $tbl_content_cell = "<span class=\"smallgreen\">".$lng->txt('access_unlimited').'</span>';
611  }
612  else if ($row['expired'])
613  {
614  $tbl_content_cell = "<span class=\"smallred\">".$lng->txt('access_expired').'</span>';
615  }
616  else
617  {
618  $tbl_content_cell = ilFormat::formatDate($row[$key]);
619  }
620  break;
621  case 'last_login' :
622  case 'last_reminder' :
623  if ($row[$key] == null)
624  {
625  $tbl_content_cell = $lng->txt('no_date');
626  }
627  else
628  {
629  $tbl_content_cell = ilFormat::formatDate($row[$key]);
630  }
631  break;
632  default :
633  $tbl_content_cell = htmlspecialchars($row[$key]);
634  }
635  /*
636  if (is_array($tbl_content_cell))
637  {
638  $tbl->tpl->setCurrentBlock("tbl_cell_subtitle");
639  $tbl->tpl->setVariable("TBL_CELL_SUBTITLE",$tbl_content_cell[1]);
640  $tbl->tpl->parseCurrentBlock();
641  $tbl_content_cell = "<b>".$tbl_content_cell[0]."</b>";
642  }*/
643 
644  $tbl->tpl->setCurrentBlock("tbl_content_cell");
645  $tbl->tpl->setVariable("TBL_CONTENT_CELL",$tbl_content_cell);
646 
647  $tbl->tpl->parseCurrentBlock();
648  }
649 
650  $tbl->tpl->setCurrentBlock("tbl_content_row");
651  $rowcolor = ilUtil::switchColor($count,"tblrow1","tblrow2");
652  $tbl->tpl->setVariable("ROWCOLOR", $rowcolor);
653  $tbl->tpl->parseCurrentBlock();
654 
655  $count++;
656  }
657  $tbl->render();
658 
659  // Add table to page
660  $this->tpl->setVariable("USER_TABLE",$a_tpl->get());
661  }
662 
666  public function editDiskQuotaMailTemplate()
667  {
668  global $rbacsystem, $ilErr, $ilSetting, $tpl, $lng, $ilCtrl;
669 
670  if (! $rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
671  {
672  $ilErr->raiseError($lng->txt("no_permission"),$ilErr->WARNING);
673  }
674 
675  $this->tabs_gui->setTabActive('disk_quota');
676  $this->addDiskQuotaSubtabs('disk_quota_reminder_mail');
677 
678  $this->tpl->addBlockFile('ADM_CONTENT','adm_content','tpl.disk_quota_reminder_mail.html',
679  "Services/WebDAV");
680  $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
681  $this->tpl->setVariable("IMG_MAIL", ilUtil::getImagePath("icon_mail.png"));
682 
683  $lng->loadLanguageModule("meta");
684  $lng->loadLanguageModule("mail");
685  $this->tpl->setVariable("TXT_NEW_USER_ACCOUNT_MAIL", $lng->txt("disk_quota_reminder_mail"));
686  $this->tpl->setVariable("TXT_NEW_USER_ACCOUNT_MAIL_DESC", $lng->txt("disk_quota_reminder_mail_desc"));
687 
688  // placeholder help text
689  $this->tpl->setVariable("TXT_USE_PLACEHOLDERS", $lng->txt("mail_nacc_use_placeholder"));
690  $this->tpl->setVariable("TXT_MAIL_SALUTATION", $lng->txt("mail_nacc_salutation"));
691  $this->tpl->setVariable("TXT_FIRST_NAME", $lng->txt("firstname"));
692  $this->tpl->setVariable("TXT_LAST_NAME", $lng->txt("lastname"));
693  $this->tpl->setVariable("TXT_EMAIL", $lng->txt("email"));
694  $this->tpl->setVariable("TXT_LOGIN", $lng->txt("mail_nacc_login"));
695  $this->tpl->setVariable("TXT_DISK_QUOTA", $lng->txt("disk_quota"));
696  $this->tpl->setVariable("TXT_DISK_USAGE", $lng->txt("disk_usage"));
697  $this->tpl->setVariable("TXT_DISK_USAGE_DETAILS", $lng->txt("disk_usage_details"));
698  $this->tpl->setVariable("TXT_ADMIN_MAIL", $lng->txt("mail_nacc_admin_mail"));
699  $this->tpl->setVariable("TXT_ILIAS_URL", $lng->txt("mail_nacc_ilias_url"));
700  $this->tpl->setVariable("TXT_CLIENT_NAME", $lng->txt("mail_nacc_client_name"));
701 
702  $langs = $lng->getInstalledLanguages();
703  foreach($langs as $lang_key)
704  {
705  $amail = $this->disk_quota_obj->_lookupReminderMailTemplate($lang_key);
706  $this->tpl->setCurrentBlock("mail_block");
707  $add = "";
708  if ($lang_key == $lng->getDefaultLanguage())
709  {
710  $add = " (".$lng->txt("default").")";
711  }
712  $this->tpl->setVariable("TXT_LANGUAGE",
713  $lng->txt("meta_l_".$lang_key).$add);
714  $this->tpl->setVariable("TXT_BODY", $lng->txt("message_content"));
715  $this->tpl->setVariable("TA_BODY", "body_".$lang_key);
716  $this->tpl->setVariable("VAL_BODY",
717  ilUtil::prepareFormOutput($amail["body"]));
718  $this->tpl->setVariable("TXT_SUBJECT", $lng->txt("subject"));
719  $this->tpl->setVariable("INPUT_SUBJECT", "subject_".$lang_key);
720  $this->tpl->setVariable("VAL_SUBJECT",
721  ilUtil::prepareFormOutput($amail["subject"]));
722  $this->tpl->setVariable("TXT_SAL_G", $lng->txt("mail_salutation_general"));
723  $this->tpl->setVariable("INPUT_SAL_G", "sal_g_".$lang_key);
724  $this->tpl->setVariable("VAL_SAL_G",
725  ilUtil::prepareFormOutput($amail["sal_g"]));
726  $this->tpl->setVariable("TXT_SAL_M", $lng->txt("mail_salutation_male"));
727  $this->tpl->setVariable("INPUT_SAL_M", "sal_m_".$lang_key);
728  $this->tpl->setVariable("VAL_SAL_M",
729  ilUtil::prepareFormOutput($amail["sal_m"]));
730  $this->tpl->setVariable("TXT_SAL_F", $lng->txt("mail_salutation_female"));
731  $this->tpl->setVariable("INPUT_SAL_F", "sal_f_".$lang_key);
732  $this->tpl->setVariable("VAL_SAL_F",
733  ilUtil::prepareFormOutput($amail["sal_f"]));
734  $this->tpl->parseCurrentBlock();
735  }
736  $this->tpl->setVariable("TXT_CANCEL", $lng->txt("cancel"));
737  $this->tpl->setVariable("TXT_SAVE", $lng->txt("save"));
738  }
740  {
741  $this->ctrl->redirect($this, "editDiskQuotaSettings");
742  }
743 
745  {
746  global $lng;
747 
748  ilUtil::sendSuccess($this->lng->txt("msg_obj_modified"), true);
749  $langs = $lng->getInstalledLanguages();
750  foreach($langs as $lang_key)
751  {
752  $this->disk_quota_obj->_writeReminderMailTemplate($lang_key,
753  ilUtil::stripSlashes($_POST["subject_".$lang_key]),
754  ilUtil::stripSlashes($_POST["sal_g_".$lang_key]),
755  ilUtil::stripSlashes($_POST["sal_f_".$lang_key]),
756  ilUtil::stripSlashes($_POST["sal_m_".$lang_key]),
757  ilUtil::stripSlashes($_POST["body_".$lang_key]));
758  }
759  $this->ctrl->redirect($this, "editDiskQuotaMailTemplate");
760  }
761 
765  private function initUploadSettingsForm()
766  {
767  global $ilCtrl, $lng;
768 
769  require_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
770  $form = new ilPropertyFormGUI();
771  $form->setFormAction($ilCtrl->getFormAction($this));
772  $form->setTitle($lng->txt("settings"));
773 
774  require_once("Services/FileUpload/classes/class.ilFileUploadSettings.php");
775 
776  // drag and drop file upload
777  $chk_enabled = new ilCheckboxInputGUI($lng->txt("enable_dnd_upload"), "enable_dnd_upload");
778  $chk_enabled->setValue('1');
779  $chk_enabled->setChecked(ilFileUploadSettings::isDragAndDropUploadEnabled());
780  $chk_enabled->setInfo($lng->txt('enable_dnd_upload_info'));
781  $form->addItem($chk_enabled);
782 
783  // drag and drop file upload in repository
784  $chk_repo = new ilCheckboxInputGUI($lng->txt("enable_repository_dnd_upload"), "enable_repository_dnd_upload");
785  $chk_repo->setValue('1');
787  $chk_repo->setInfo($lng->txt('enable_repository_dnd_upload_info'));
788  $chk_enabled->addSubItem($chk_repo);
789 
790  // concurrent uploads
791  $num_prop = new ilNumberInputGUI($lng->txt("concurrent_uploads"), "concurrent_uploads");
792  $num_prop->setDecimals(0);
793  $num_prop->setMinValue(1);
794  $num_prop->setMinvalueShouldBeGreater(false);
795  $num_prop->setMaxValue(ilFileUploadSettings::CONCURRENT_UPLOADS_MAX);
796  $num_prop->setMaxvalueShouldBeLess(false);
797  $num_prop->setMaxLength(5);
798  $num_prop->setSize(10);
799  $num_prop->setValue(ilFileUploadSettings::getConcurrentUploads());
800  $num_prop->setInfo($lng->txt('concurrent_uploads_info'));
801  $chk_enabled->addSubItem($num_prop);
802 
803  // file suffix replacement
804  $ti = new ilTextInputGUI($this->lng->txt("file_suffix_repl"), "suffix_repl_additional");
805  $ti->setMaxLength(200);
806  $ti->setSize(40);
807  $ti->setInfo($this->lng->txt("file_suffix_repl_info")." ".SUFFIX_REPL_DEFAULT);
808  $form->addItem($ti);
809 
810  // command buttons
811  $form->addCommandButton('saveUploadSettings', $lng->txt('save'));
812  $form->addCommandButton('view', $lng->txt('cancel'));
813 
814  return $form;
815  }
816 
820  public function editUploadSettings()
821  {
822  global $rbacsystem, $ilErr, $tpl, $lng, $ilSetting;
823 
824  $this->tabs_gui->setTabActive('upload_settings');
825 
826  if (!$rbacsystem->checkAccess("visible,read", $this->object->getRefId()))
827  {
828  $ilErr->raiseError($lng->txt("no_permission"),$ilErr->WARNING);
829  }
830 
831  // get form
832  $form = $this->initUploadSettingsForm();
833 
834  require_once("Services/FileUpload/classes/class.ilFileUploadSettings.php");
835 
836  // set current values
837  $val = array();
838  $val["enable_dnd_upload"] = ilFileUploadSettings::isDragAndDropUploadEnabled();
839  $val["enable_repository_dnd_upload"] = ilFileUploadSettings::isRepositoryDragAndDropUploadEnabled();
840  $val["concurrent_uploads"] = ilFileUploadSettings::getConcurrentUploads();
841  $val["suffix_repl_additional"] = $ilSetting->get("suffix_repl_additional");
842  $form->setValuesByArray($val);
843 
844  // set content
845  $tpl->setContent($form->getHTML());
846  }
847 
851  public function saveUploadSettings()
852  {
853  global $rbacsystem, $ilErr, $ilCtrl, $lng, $tpl, $ilSetting;
854 
855  if (!$rbacsystem->checkAccess("write",$this->object->getRefId()))
856  {
857  $ilErr->raiseError($lng->txt("no_permission"),$ilErr->WARNING);
858  }
859 
860  // get form
861  $form = $this->initUploadSettingsForm();
862  if ($form->checkInput())
863  {
864  require_once("Services/FileUpload/classes/class.ilFileUploadSettings.php");
866  ilFileUploadSettings::setRepositoryDragAndDropUploadEnabled($_POST["enable_repository_dnd_upload"] == 1);
867  ilFileUploadSettings::setConcurrentUploads($_POST["concurrent_uploads"]);
868 
869  // file suffic replacements
870  $ilSetting->set("suffix_repl_additional", $_POST["suffix_repl_additional"]);
871 
872  ilUtil::sendSuccess($lng->txt('settings_saved'), true);
873  $ilCtrl->redirect($this, "editUploadSettings");
874  }
875  else
876  {
877  $form->setValuesByPost();
878  $tpl->setContent($form->getHTML());
879  }
880  }
881 
885  private function initPreviewSettingsForm()
886  {
887  global $ilCtrl, $lng;
888 
889  require_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
890  $form = new ilPropertyFormGUI();
891  $form->setFormAction($ilCtrl->getFormAction($this));
892  $form->setTitle($lng->txt("settings"));
893 
894  require_once("Services/Preview/classes/class.ilPreviewSettings.php");
895 
896  // drag and drop file upload in repository
897  $chk_prop = new ilCheckboxInputGUI($lng->txt("enable_preview"), "enable_preview");
898  $chk_prop->setValue('1');
899  $chk_prop->setChecked(ilPreviewSettings::isPreviewEnabled());
900  $chk_prop->setInfo($lng->txt('enable_preview_info'));
901  $form->addItem($chk_prop);
902 
903  $num_prop = new ilNumberInputGUI($lng->txt("max_previews_per_object"), "max_previews_per_object");
904  $num_prop->setDecimals(0);
905  $num_prop->setMinValue(1);
906  $num_prop->setMinvalueShouldBeGreater(false);
907  $num_prop->setMaxValue(ilPreviewSettings::MAX_PREVIEWS_MAX);
908  $num_prop->setMaxvalueShouldBeLess(false);
909  $num_prop->setMaxLength(5);
910  $num_prop->setSize(10);
911  $num_prop->setValue(ilPreviewSettings::getMaximumPreviews());
912  $num_prop->setInfo($lng->txt('max_previews_per_object_info'));
913  $form->addItem($num_prop);
914 
915  // command buttons
916  $form->addCommandButton('savePreviewSettings', $lng->txt('save'));
917  $form->addCommandButton('view', $lng->txt('cancel'));
918 
919  return $form;
920  }
921 
925  public function editPreviewSettings()
926  {
927  global $rbacsystem, $ilErr, $tpl, $lng;
928 
929  $this->tabs_gui->setTabActive('preview_settings');
930 
931  if (!$rbacsystem->checkAccess("visible,read", $this->object->getRefId()))
932  {
933  $ilErr->raiseError($lng->txt("no_permission"),$ilErr->WARNING);
934  }
935 
936  // set warning if ghostscript not installed
937  if (!is_file(PATH_TO_GHOSTSCRIPT))
938  {
939  ilUtil::sendInfo($lng->txt("ghostscript_not_configured"));
940  }
941 
942  // get form
943  $form = $this->initPreviewSettingsForm();
944 
945  // set current values
946  require_once("Services/Preview/classes/class.ilPreviewSettings.php");
947 
948  $val = array();
949  $val["enable_preview"] = ilPreviewSettings::isPreviewEnabled();
950  $val["max_previews_per_object"] = ilPreviewSettings::getMaximumPreviews();
951  $form->setValuesByArray($val);
952 
953  $html = $form->getHTML();
954 
955  // build renderer HTML
956  require_once("Services/Preview/classes/class.ilRendererFactory.php");
957  require_once("Services/Preview/classes/class.ilRendererTableGUI.php");
958 
959  $renderers = ilRendererFactory::getRenderers();
960 
961  $table = new ilRendererTableGUI($this, array("editPreviewSettings", "view"));
962  $table->setMaxCount(sizeof($renderers));
963  $table->setData($renderers);
964 
965  $html .= "<br/>" . $table->getHTML();
966 
967  // set content
968  $tpl->setContent($html);
969  }
970 
974  public function savePreviewSettings()
975  {
976  global $rbacsystem, $ilErr, $ilCtrl, $tpl, $lng;
977 
978  $this->tabs_gui->setTabActive('preview_settings');
979 
980  if (!$rbacsystem->checkAccess("write",$this->object->getRefId()))
981  {
982  $ilErr->raiseError($lng->txt("no_permission"),$ilErr->WARNING);
983  }
984 
985  // get form
986  $form = $this->initPreviewSettingsForm();
987  if ($form->checkInput())
988  {
989  require_once("Services/Preview/classes/class.ilPreviewSettings.php");
990  ilPreviewSettings::setPreviewEnabled($_POST["enable_preview"] == 1);
991  ilPreviewSettings::setMaximumPreviews($_POST["max_previews_per_object"]);
992 
993  ilUtil::sendSuccess($lng->txt('settings_saved'), true);
994  $ilCtrl->redirect($this, "editPreviewSettings");
995  }
996  else
997  {
998  $form->setValuesByPost();
999  $tpl->setContent($form->getHTML());
1000  }
1001  }
1002 
1003  public function addToExternalSettingsForm($a_form_id)
1004  {
1005  global $ilSetting;
1006 
1007  switch($a_form_id)
1008  {
1010 
1011  $fields = array('file_suffix_repl' => $ilSetting->get("suffix_repl_additional"));
1012 
1013  return array(array("editUploadSettings", $fields));
1014  }
1015  }
1016 }
1017 
1018 ?>