First try with a GUI.
This commit is contained in:
parent
fb78c4431e
commit
ce625c324a
@ -1,10 +1,10 @@
|
|||||||
Name: nethserver-profilemgr
|
Name: nethserver-profilemgr
|
||||||
Summary: Utilities to help administrators manage user profiles.
|
Summary: Utilities to help administrators manage user profiles
|
||||||
Version: 0.9.9
|
Version: 1.0.0
|
||||||
Release: 1.ns6
|
Release: 1.ns6
|
||||||
URL: https://github.com/libreschool/nethserver-profilemgr
|
URL: https://git.sys42.eu/syntaxerrormmm/nethserver-profilemgr
|
||||||
License: GPLv3+
|
License: GPLv3+
|
||||||
Packager: Emiliano Vavassori <syntaxerrormmm@gmail.com>
|
Packager: "Emiliano Vavassori <syntaxerrormmm@gmail.com>"
|
||||||
Group: System Environment/Libraries
|
Group: System Environment/Libraries
|
||||||
BuildRoot: %{_tmppath}/%{name}-root
|
BuildRoot: %{_tmppath}/%{name}-root
|
||||||
BuildRequires: nethserver-devtools > 1.0.1
|
BuildRequires: nethserver-devtools > 1.0.1
|
||||||
@ -35,7 +35,9 @@ rm -rf %{buildroot}
|
|||||||
%defattr(0644,root,root,755)
|
%defattr(0644,root,root,755)
|
||||||
%doc README.md LICENSE.txt
|
%doc README.md LICENSE.txt
|
||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Jul 17 2018 Emiliano Vavassori <syntaxerrormmm@gmail.com> - 1.0.0-1.ns6
|
||||||
|
- First version with tentative GUI.
|
||||||
|
|
||||||
* Sun Mar 18 2018 Emiliano Vavassori <syntaxerrormmm@gmail.com> - 0.9.9-1
|
* Sun Mar 18 2018 Emiliano Vavassori <syntaxerrormmm@gmail.com> - 0.9.9-1
|
||||||
- First version, commands can be launched only in CLI mode via signal-event.
|
- First version, commands can be launched only in CLI mode via signal-event.
|
||||||
|
@ -0,0 +1,43 @@
|
|||||||
|
=========
|
||||||
|
Profiles
|
||||||
|
=========
|
||||||
|
|
||||||
|
This section of the management helps the administrator fixing some little
|
||||||
|
issues arising within the users' profile.
|
||||||
|
|
||||||
|
Actions
|
||||||
|
=======
|
||||||
|
|
||||||
|
Here's the actions you can apply on a single user profile. For best results,
|
||||||
|
the following actions should be applied when the user is not logged in for
|
||||||
|
best results.
|
||||||
|
|
||||||
|
Complete profile cleanup
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
If you want to restore the settings for a user to the default ones (just right
|
||||||
|
after the user was created inside the system) use this action.
|
||||||
|
|
||||||
|
**BE AWARE** that using this function will remove *all* the users' file, so if
|
||||||
|
you want to keep some of the files created by the user, you should back them
|
||||||
|
up or transfer them in other ways.
|
||||||
|
|
||||||
|
Cleanup GUI settings
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
Sometimes users will choose the wrong GUI settings, resulting in a crippled or
|
||||||
|
not working setup. This action will cleanup most of the graphics messes,
|
||||||
|
*maintaining* the users file.
|
||||||
|
|
||||||
|
Cleanup LibreOffice settings
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
Usually during LibreOffice upgrades (for example 5.x to 6.x branches) could
|
||||||
|
happen that LibreOffice interface will not work or LO application will not
|
||||||
|
appear on the desktop of the user: this action will cleanup all the settings
|
||||||
|
for LibreOffice which the user may have inadvertently set up and thus limiting
|
||||||
|
the correct work of LibreOffice.
|
||||||
|
|
||||||
|
**Be aware** that this action will remove all the user settings for
|
||||||
|
LibreOffice, so if the user had a specific dictionary (for example), you
|
||||||
|
should back it up before using this action.
|
@ -0,0 +1,44 @@
|
|||||||
|
========================
|
||||||
|
Gestione profili utente
|
||||||
|
========================
|
||||||
|
|
||||||
|
Questa sezione aiuta l'amministratore a risolvere alcuni piccoli problemi con
|
||||||
|
i profili degli utenti.
|
||||||
|
|
||||||
|
Operazioni
|
||||||
|
==========
|
||||||
|
|
||||||
|
Ecco la lista delle operazioni che possono essere svolte sul singolo profilo
|
||||||
|
utente. Per un risultato ottimale, dovrebbero essere applicate mentre l'utente
|
||||||
|
non è loggato al sistema.
|
||||||
|
|
||||||
|
Pulizia completa
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Se si vuole ripristinare le impostazioni di un utente a quelle di default
|
||||||
|
(come se l'utente fosse stato appena generato a sistema), si può utilizzare
|
||||||
|
questa operazione.
|
||||||
|
|
||||||
|
**ATTENZIONE**: questa operazione rimuoverà *tutti* i file dell'utente, quindi
|
||||||
|
se si vuole mantenere alcuni dei file creati dall'utente sarà necessario farne
|
||||||
|
una copia prima o trasferirli in altre maniere.
|
||||||
|
|
||||||
|
Pulizia imp. grafiche
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
A volte gli utenti scelgono impostazioni di interfaccia grafica sbagliate, che
|
||||||
|
risultano in un ambiente grafico non correttamente funzionante. Questa
|
||||||
|
operazione pulirà la maggior parte dei problemi dell'ambiente grafico.
|
||||||
|
|
||||||
|
Pulizia imp. LibreOffice
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
Durante gli aggiornamenti di LibreOffice (per esempio dalla 5.x alla 6.x)
|
||||||
|
potrebbe succedere che l'interfaccia di LibreOffice non funzioni correttamente
|
||||||
|
o non appaia. Questa operazione rimuove tutte le impostazioni che l'utente
|
||||||
|
potrebbe aver settato e che limitano il corretto funzionamento di LibreOffice.
|
||||||
|
|
||||||
|
**Fate attenzione** che la presente sezione rimuoverà tutte le impostazioni
|
||||||
|
utente di LibreOffice, per cui se l'utente ha, per esempio, un dizionario
|
||||||
|
personale, sarà necessario fare una copia dello stesso prima di lanciare
|
||||||
|
l'operazione.
|
@ -0,0 +1,16 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
$L['Profile_Title'] = 'User profiles';
|
||||||
|
$L['Key_label'] = 'User';
|
||||||
|
$L['FirstName_label'] = 'First Name';
|
||||||
|
$L['LastName_label'] = 'Last Name';
|
||||||
|
$L['Actions_label'] = 'Actions';
|
||||||
|
$L['all_label'] = "Complete profile cleanup";
|
||||||
|
$L['gui_label'] = "Cleanup GUI settings";
|
||||||
|
$L['libreoffice_label'] = "Cleanup LibreOffice settings";
|
||||||
|
#$L['Complete profile cleanup - `${0}`'] = '';
|
||||||
|
#$L['Proceed with the complete profile cleanup for user `${0}`?'] = "";
|
||||||
|
#$L['Cleanup GUI settings - `${0}`'] = "";
|
||||||
|
#$L['Proceed with the removal of GUI settings for user `${0}`?'] = "";
|
||||||
|
#$L['Cleanup of LibreOffice settings - `${0}`'] = "";
|
||||||
|
#$L['Proceed with the removal of LibreOffice settings for user `${0}`?'] = "";
|
@ -0,0 +1,16 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
$L['Profile_Title'] = 'Profili utente';
|
||||||
|
$L['Key_label'] = 'Utente';
|
||||||
|
$L['FirstName_label'] = 'Nome';
|
||||||
|
$L['LastName_label'] = 'Cognome';
|
||||||
|
$L['Actions_label'] = 'Operazione';
|
||||||
|
$L['all_label'] = "Pulizia completa";
|
||||||
|
$L['gui_label'] = "Pulizia imp. grafiche";
|
||||||
|
$L['libreoffice_label'] = "Pulizia imp. LibreOffice";
|
||||||
|
$L['Complete profile cleanup - `${0}`'] = 'Pulizia completa - `${0}`';
|
||||||
|
$L['Proceed with the complete profile cleanup for user `${0}`?'] = 'Procedere con la pulizia completa del profilo per l\'utente `${0}`?';
|
||||||
|
$L['Cleanup GUI settings - `${0}`'] = 'Pulizia imp. grafiche - `${0}`';
|
||||||
|
$L['Proceed with the removal of GUI settings for user `${0}`?'] = 'Procedere con la pulizia delle impostazioni grafiche del profilo dell\'utente `${0}`?';
|
||||||
|
$L['Cleanup of LibreOffice settings - `${0}`'] = 'Pulizia imp. LibreOffice - `${0}`';
|
||||||
|
$L['Proceed with the removal of LibreOffice settings for user `${0}`?'] = 'Procedere con la pulizia delle impostazioni di LibreOffice dell\'utente `${0}`?';
|
51
root/usr/share/nethesis/NethServer/Module/Profile.php
Normal file
51
root/usr/share/nethesis/NethServer/Module/Profile.php
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
<?php
|
||||||
|
namespace NethServer\Module;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2018 LibreSchool
|
||||||
|
*
|
||||||
|
* This script is part of the LibreSchool Project.
|
||||||
|
*
|
||||||
|
* This 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 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This project 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 LibreSchool stuff. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
class Profile extends \Nethgui\Controller\TableController
|
||||||
|
{
|
||||||
|
|
||||||
|
protected function initializeAttributes(\Nethgui\Module\ModuleAttributesInterface $base)
|
||||||
|
{
|
||||||
|
return \Nethgui\Module\CompositeModuleAttributesProvider::extendModuleAttributes($base, 'Management', 10)->extendFromComposite($this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function initialize()
|
||||||
|
{
|
||||||
|
$columns = array(
|
||||||
|
'Key',
|
||||||
|
'FirstName',
|
||||||
|
'LastName',
|
||||||
|
'Actions',
|
||||||
|
);
|
||||||
|
|
||||||
|
$this
|
||||||
|
->setTableAdapter($this->getPlatform()->getTableAdapter('accounts', 'user'))
|
||||||
|
->setColumns($columns)
|
||||||
|
->addTableAction(new \Nethgui\Controller\Table\Help('Help'))
|
||||||
|
->addRowAction(new Profile\Clean('all'))
|
||||||
|
->addRowAction(new Profile\Clean('gui'))
|
||||||
|
->addRowAction(new Profile\Clean('libreoffice'));
|
||||||
|
|
||||||
|
parent::initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
80
root/usr/share/nethesis/NethServer/Module/Profile/Clean.php
Normal file
80
root/usr/share/nethesis/NethServer/Module/Profile/Clean.php
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
<?php
|
||||||
|
namespace NethServer\Module\Profile;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2018 LibreSchool Project
|
||||||
|
*
|
||||||
|
* This script is part of the LibreSchool Project.
|
||||||
|
*
|
||||||
|
* This 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 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This software 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 LibreSchool stuff. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
use Nethgui\System\PlatformInterface as Validate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Manages profile
|
||||||
|
*
|
||||||
|
* Fires events
|
||||||
|
* - profile-clean
|
||||||
|
* - profile-gui-clean
|
||||||
|
* - profile-lo-clean
|
||||||
|
*/
|
||||||
|
class Clean extends \Nethgui\Controller\Table\AbstractAction
|
||||||
|
{
|
||||||
|
|
||||||
|
public function __construct($identifier = NULL)
|
||||||
|
{
|
||||||
|
if ($identifier !== 'all' && $identifier !== 'gui' && $identifier !== 'libreoffice') {
|
||||||
|
throw new \InvalidArgumentException(sprintf('%s: module identifier must be one of "all", "gui" or "libreoffice".', get_class($this)), 1325579395);
|
||||||
|
}
|
||||||
|
parent::__construct($identifier);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function bind(\Nethgui\Controller\RequestInterface $request)
|
||||||
|
{
|
||||||
|
$this->declareParameter('username', Validate::USERNAME);
|
||||||
|
|
||||||
|
parent::bind($request);
|
||||||
|
$username = \Nethgui\array_end($request->getPath());
|
||||||
|
|
||||||
|
if ( ! $username) {
|
||||||
|
throw new \Nethgui\Exception\HttpException('Not found', 404, 1322148400);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->parameters['username'] = $username;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function process()
|
||||||
|
{
|
||||||
|
if ( ! $this->getRequest()->isMutation()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$event = "libreoffice"; // it is the less impacting.
|
||||||
|
switch ($this->getIdentifier()) {
|
||||||
|
case "all":
|
||||||
|
$event = "profile-clean";
|
||||||
|
break;
|
||||||
|
case "gui":
|
||||||
|
$event = "profile-gui-clean";
|
||||||
|
break;
|
||||||
|
case "libreoffice":
|
||||||
|
$event = "profile-lo-clean";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->getPlatform()->signalEvent(sprintf("%s@post", $event), array($this->parameters['username']));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
<?php
|
||||||
|
$view->requireFlag($view::INSET_DIALOG);
|
||||||
|
|
||||||
|
switch ($view->getModule()->getIdentifier()) {
|
||||||
|
case "all":
|
||||||
|
$headerText = $T('Complete profile cleanup - `${0}`');
|
||||||
|
$panelText = $T('Proceed with the complete profile cleanup for user `${0}`?');
|
||||||
|
break;
|
||||||
|
case "gui":
|
||||||
|
$headerText = $T('Cleanup GUI settings - `${0}`');
|
||||||
|
$panelText = $T('Proceed with the removal of GUI settings for user `${0}`?');
|
||||||
|
break;
|
||||||
|
case "libreoffice":
|
||||||
|
$headerText = $T('Cleanup of LibreOffice settings - `${0}`');
|
||||||
|
$panelText = $T('Proceed with the removal of LibreOffice settings for user `${0}`?');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
echo $view->panel()
|
||||||
|
->insert($view->header('username')->setAttribute('template', $headerText))
|
||||||
|
->insert($view->textLabel('username')->setAttribute('template', $panelText))
|
||||||
|
;
|
||||||
|
|
||||||
|
echo $view->buttonList()
|
||||||
|
->insert($view->button('Yes', $view::BUTTON_SUBMIT))
|
||||||
|
->insert($view->button('No', $view::BUTTON_CANCEL)->setAttribute('value', $view['Cancel']))
|
||||||
|
;
|
Loading…
Reference in New Issue
Block a user