X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=plugins.php;h=bc26e5869f3ad76fa5f9577e1476d76d12c01a2f;hb=HEAD;hp=fce36a7e4297f289072128bbbcee1b50507a7aa4;hpb=873cee05ecd24aa9066b467b2c90132ee08a99a1;p=timetracker.git diff --git a/plugins.php b/plugins.php index fce36a7e..bc26e586 100644 --- a/plugins.php +++ b/plugins.php @@ -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');