posaune
[timetracker.git] / plugins.php
index fce36a7..bc26e58 100644 (file)
@@ -36,11 +36,8 @@ if (!ttAccessAllowed('manage_features')) {
 }
 // End of access checks.
 
-$config = new ttConfigHelper($user->config);
-
-
 if ($request->isPost()) {
-  // Plugin checkboxes.
+  // Plugins that user wants to save for the current group.
   $cl_charts = $request->getParameter('charts');
   $cl_clients = $request->getParameter('clients');
   $cl_client_required = $request->getParameter('client_required');
@@ -54,12 +51,18 @@ if ($request->isPost()) {
   $cl_quotas = $request->getParameter('quotas');
   $cl_week_view = $request->getParameter('week_view');
   $cl_work_units = $request->getParameter('work_units');
+  $cl_approval = $request->getParameter('approval');
+  $cl_timesheets = $request->getParameter('timesheets');
+  $cl_templates = $request->getParameter('templates');
+  $cl_attachments = $request->getParameter('attachments');
+  $cl_work = $request->getParameter('work');
 } else {
-  // Which plugins do we have enabled?
-  $plugins = explode(',', $user->plugins);
+  // Note: we get here in get, and also in post when group changes.
+  // Which plugins do we have enabled in currently selected group?
+  $plugins = explode(',', $user->getPlugins());
   $cl_charts = in_array('ch', $plugins);
   $cl_clients = in_array('cl', $plugins);
-  $cl_client_required = in_array('cm', $plugins);
+  $cl_client_required = $user->isOptionEnabled('client_required');
   $cl_invoices = in_array('iv', $plugins);
   $cl_paid_status = in_array('ps', $plugins);
   $cl_custom_fields = in_array('cf', $plugins);
@@ -70,6 +73,11 @@ if ($request->isPost()) {
   $cl_quotas = in_array('mq', $plugins);
   $cl_week_view = in_array('wv', $plugins);
   $cl_work_units = in_array('wu', $plugins);
+  $cl_approval = in_array('ap', $plugins);
+  $cl_timesheets = in_array('ts', $plugins);
+  $cl_templates = in_array('tp', $plugins);
+  $cl_attachments = in_array('at', $plugins);
+  $cl_work = in_array('wk', $plugins);
 }
 
 $form = new Form('pluginsForm');
@@ -88,64 +96,73 @@ $form->addInput(array('type'=>'checkbox','name'=>'locking','value'=>$cl_locking,
 $form->addInput(array('type'=>'checkbox','name'=>'quotas','value'=>$cl_quotas,'onchange'=>'handlePluginCheckboxes()'));
 $form->addInput(array('type'=>'checkbox','name'=>'week_view','value'=>$cl_week_view,'onchange'=>'handlePluginCheckboxes()'));
 $form->addInput(array('type'=>'checkbox','name'=>'work_units','value'=>$cl_work_units,'onchange'=>'handlePluginCheckboxes()'));
+$form->addInput(array('type'=>'checkbox','name'=>'approval','value'=>$cl_approval));
+$form->addInput(array('type'=>'checkbox','name'=>'timesheets','value'=>$cl_timesheets));
+$form->addInput(array('type'=>'checkbox','name'=>'templates','value'=>$cl_templates,'onchange'=>'handlePluginCheckboxes()'));
+$form->addInput(array('type'=>'checkbox','name'=>'attachments','value'=>$cl_attachments,'onchange'=>'handlePluginCheckboxes()'));
+$form->addInput(array('type'=>'checkbox','name'=>'work','value'=>$cl_work,'onchange'=>'handlePluginCheckboxes()'));
 
+// Submit button.
 $form->addInput(array('type'=>'submit','name'=>'btn_save','value'=>$i18n->get('button.save')));
 
 if ($request->isPost()) {
+  // Note: we get here when the Save button is clicked.
+  // We update plugin list for the current group.
 
-  // Validate user input. Do we have to?
-
-  if ($err->no()) {
-    // Prepare plugins string.
-    if ($cl_charts)
-      $plugins .= ',ch';
-    if ($cl_clients)
-      $plugins .= ',cl';
-    if ($cl_client_required)
-      $plugins .= ',cm';
-    if ($cl_invoices)
-      $plugins .= ',iv';
-    if ($cl_paid_status)
-      $plugins .= ',ps';
-    if ($cl_custom_fields)
-      $plugins .= ',cf';
-    if ($cl_expenses)
-      $plugins .= ',ex';
-    if ($cl_tax_expenses)
-      $plugins .= ',et';
-    if ($cl_notifications)
-      $plugins .= ',no';
-    if ($cl_locking)
-      $plugins .= ',lk';
-    if ($cl_quotas)
-      $plugins .= ',mq';
-    if ($cl_week_view)
-      $plugins .= ',wv';
-    if ($cl_work_units)
-      $plugins .= ',wu';
-
-    // Recycle week view plugin options as they are not configured on this page.
-    $existing_plugins = explode(',', $user->plugins);
-    if (in_array('wvn', $existing_plugins))
-      $plugins .= ',wvn';
-    if (in_array('wvl', $existing_plugins))
-      $plugins .= ',wvl';
-    if (in_array('wvns', $existing_plugins))
-      $plugins .= ',wvns';
+  // Prepare plugins string.
+  if ($cl_charts)
+    $plugins .= ',ch';
+  if ($cl_clients)
+     $plugins .= ',cl';
+  if ($cl_invoices)
+    $plugins .= ',iv';
+  if ($cl_paid_status)
+    $plugins .= ',ps';
+  if ($cl_custom_fields)
+    $plugins .= ',cf';
+  if ($cl_expenses)
+    $plugins .= ',ex';
+  if ($cl_tax_expenses)
+    $plugins .= ',et';
+  if ($cl_notifications)
+    $plugins .= ',no';
+  if ($cl_locking)
+    $plugins .= ',lk';
+  if ($cl_quotas)
+    $plugins .= ',mq';
+  if ($cl_week_view)
+    $plugins .= ',wv';
+  if ($cl_work_units)
+    $plugins .= ',wu';
+  if ($cl_approval)
+    $plugins .= ',ap';
+  if ($cl_timesheets)
+    $plugins .= ',ts';
+  if ($cl_templates)
+    $plugins .= ',tp';
+  if ($cl_attachments)
+    $plugins .= ',at';
+  if ($cl_work)
+    $plugins .= ',wk';
+  $plugins = trim($plugins, ',');
 
-    $plugins = trim($plugins, ',');
+  // Prepare a new config string.
+  $user->setOption('client_required', $cl_client_required);
+  $user->setOption('tax_expenses', $cl_tax_expenses);
+  $config = $user->getConfig();
 
-    if ($user->updateGroup(array(
-      'plugins' => $plugins))) {
-      header('Location: time.php');
-      exit();
-    } else
-      $err->add($i18n->get('error.db'));
-  }
+  if ($user->updateGroup(array(
+    'plugins' => $plugins,
+    'config' => $config))) {
+    header('Location: success.php');
+    exit();
+  } else
+    $err->add($i18n->get('error.db'));
 } // isPost
 
 $smarty->assign('forms', array($form->getName()=>$form->toArray()));
 $smarty->assign('onload', 'onLoad="handlePluginCheckboxes();"');
-$smarty->assign('title', $i18n->get('form.group_edit.plugins')); // TODO: fix this in transl;ation files.
+$smarty->assign('user_exists', $user->exists());
+$smarty->assign('title', $i18n->get('title.plugins'));
 $smarty->assign('content_page_name', 'plugins.tpl');
 $smarty->display('index.tpl');