Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 1995

Přidáno uživatelem Michal Kliment před více než 11 roky(ů)

Opravy:
- fixes #627: Informace o zavislostech modulu

Zobrazit rozdíly:

freenetis/branches/1.1/application/controllers/js.php
$this->address_point_gps();
}
private function _js_settings_system()
{
$modules = array();
foreach (Settings_Controller::$modules as $module => $module_info)
{
foreach ($module_info['dependencies'] as $dependency)
{
$value = $module_info['name'];
$key = Settings_Controller::$modules[$dependency]['name'];
if (!isset($modules[$key]))
$modules[$key] = array();
$modules[$key][] = $value;
}
}
$this->views['settings_system'] = View::factory('js/settings_system');
$this->views['settings_system']->modules = $modules;
}
private function _js_transfers_payment_calculator($account_id = NULL)
{
$member_id = NULL;
freenetis/branches/1.1/application/controllers/settings.php
{
private $links;
/**
* Definitions of modules and their dependencies
*
* @author Michal Kliment
* @var array
*/
public static $modules = array
(
'allowed_subnets' => array
(
'name' => 'allowed_subnets_enabled',
'dependencies' => array('redirection')
),
'approval' => array
(
'name' => 'approval_enabled',
'dependencies' => array()
),
'connection_request' => array
(
'name' => 'connection_request_enable',
'dependencies' => array('networks'),
),
'email' => array
(
'name' => 'email_enabled',
'dependencies' => array()
),
'finance' => array
(
'name' => 'finance_enabled',
'dependencies' => array()
),
'forgotten_password' => array
(
'name' => 'forgotten_password',
'dependencies' => array('email')
),
'membership_interrupt' => array
(
'name' => 'membership_interrupt_enabled',
'dependencies' => array()
),
'monitoring' => array
(
'name' => 'monitoring_enabled',
'dependencies' => array('networks')
),
'networks' => array
(
'name' => 'networks_enabled',
'dependencies' => array()
),
'phone_invoices' => array
(
'name' => 'users_enabled',
'dependencies' => array()
),
'qos' => array
(
'name' => 'qos_enabled',
'dependencies' => array()
),
'redirection' => array
(
'name' => 'redirection_enabled',
'dependencies' => array('networks')
),
'self_registration' => array
(
'name' => 'self_registration',
'dependencies' => array()
),
'sms' => array
(
'name' => 'sms_enabled',
'dependencies' => array()
),
'ulogd' => array
(
'name' => 'ulogd_enabled',
'dependencies' => array('networks')
),
'users' => array
(
'name' => 'users_enabled',
'dependencies' => array()
),
'voip' => array
(
'name' => 'voip_enabled',
'dependencies' => array()
),
'works' => array
(
'name' => 'works_enabled',
'dependencies' => array('approval')
),
);
/**
* Test whether module is enabled
*
* @author Michal Kliment
* @param type $module
* @return type
* @throws Exception
*/
private static function isModuleEnabled($module)
{
if (isset(self::$modules[$module]['name']))
return Settings::get(self::$modules[$module]['name']);
else
throw new Exception('Unknown module: '.$module);
}
/**
* Disable given module
*
* @author Michal Kliment
* @param type $module
* @return type
* @throws Exception
*/
private static function disableModule($module)
{
if (isset(self::$modules[$module]['name']))
return Settings::set(self::$modules[$module]['name'], 0);
else
throw new Exception('Unknown module: '.$module);
}
/**
* Contruct of controller sets tabs names
......
$this->sections['users'] = __('Users');
// are finance enabled
if (Settings::get('finance_enabled'))
if (self::isModuleEnabled('finance'))
$this->sections['finance'] = __('Finance');
// is approval enabled
if (Settings::get('approval_enabled'))
if (self::isModuleEnabled('approval'))
$this->sections['approval'] = __('Approval');
// are networks enabled
if (Settings::get('networks_enabled'))
if (self::isModuleEnabled('networks'))
$this->sections['networks'] = __('Networks');
if (Settings::get('email_enabled'))
if (self::isModuleEnabled('email'))
$this->sections['email'] = __('Email');
// are SMS enabled
if (Settings::get('sms_enabled'))
if (self::isModuleEnabled('sms'))
$this->sections['sms'] = __('SMS');
// is voip enabled
if (Settings::get('voip_enabled'))
if (self::isModuleEnabled('voip'))
$this->sections['voip'] = __('VoIP');
$this->sections['notifications'] = __('Notifications');
// is QoS enabled
if (Settings::get('qos_enabled'))
if (self::isModuleEnabled('qos'))
$this->sections['qos'] = __('QoS');
// is monitoring enabled
if (Settings::get('monitoring_enabled'))
if (self::isModuleEnabled('monitoring'))
$this->sections['monitoring'] = __('Monitoring');
$this->sections['logging'] = __('Logging');
......
// creating of new forge
$this->form = new Forge('settings/system');
$this->form->set_attr('id', 'settings-system-form');
$this->form->group('System variables');
......
->options(arr::bool())
->default(Settings::get('grid_hide_on_first_load'))
->help('grid_hide_on_first_load');
$form_modules = array();
$this->form->group(__('Modules').' '.help::hint('modules'));;
$this->form->group(__('Modules').' '.help::hint('modules'));
// self-registration
$this->form->radio('self_registration')
$form_modules['self_registration'] = $this->form->radio('self_registration')
->label('Self-registration')
->options(arr::bool())
->default(Settings::get('self_registration'));
// connection requests
$this->form->radio('connection_request_enable')
$form_modules['connection_request'] = $this->form->radio('connection_request_enable')
->label('Connection requests')
->options(arr::bool())
->default(Settings::get('connection_request_enable'));
// forgotten password
$this->form->radio('forgotten_password')
$form_modules['forgotten_password'] = $this->form->radio('forgotten_password')
->label('Forgotten password')
->options(arr::bool())
->default(Settings::get('forgotten_password'));
// membership interrupts
$this->form->radio('membership_interrupt_enabled')
$form_modules['membership_interrupt'] = $this->form->radio('membership_interrupt_enabled')
->label('Membership interrupt')
->options(arr::bool())
->default(Settings::get('membership_interrupt_enabled'));
// finance
$this->form->radio('finance_enabled')
$form_modules['finance'] = $this->form->radio('finance_enabled')
->label('Finance')
->options(arr::bool())
->default(Settings::get('finance_enabled'));
// approval
$this->form->radio('approval_enabled')
$form_modules['approval'] = $this->form->radio('approval_enabled')
->label('Approval')
->options(arr::bool())
->default(Settings::get('approval_enabled'));
// Works
$this->form->radio('works_enabled')
$form_modules['works'] = $this->form->radio('works_enabled')
->label('Works')
->options(arr::bool())
->default(Settings::get('works_enabled'));
// Phone invoice
$this->form->radio('phone_invoices_enabled')
$form_modules['phone_invoices'] = $this->form->radio('phone_invoices_enabled')
->label('Phone invoices')
->options(arr::bool())
->default(Settings::get('phone_invoices_enabled'));
// e-mail
$this->form->radio('email_enabled')
$form_modules['email'] = $this->form->radio('email_enabled')
->label('E-mail')
->options(arr::bool())
->default(Settings::get('email_enabled'));
// SMS
$this->form->radio('sms_enabled')
$form_modules['sms'] = $this->form->radio('sms_enabled')
->label('SMS')
->options(arr::bool())
->default(Settings::get('sms_enabled'));
// VoIP
$this->form->radio('voip_enabled')
$form_modules['voip'] = $this->form->radio('voip_enabled')
->label('VoIP')
->options(arr::bool())
->default(Settings::get('voip_enabled'));
// Network
$this->form->radio('networks_enabled')
$form_modules['networks'] = $this->form->radio('networks_enabled')
->label('Networks')
->options(arr::bool())
->default(Settings::get('networks_enabled'));
// QoS
$this->form->radio('qos_enabled')
$form_modules['qos'] = $this->form->radio('qos_enabled')
->label('QoS')
->options(arr::bool())
->default(Settings::get('qos_enabled'));
// Monitoring
$this->form->radio('monitoring_enabled')
$form_modules['monitoring'] = $this->form->radio('monitoring_enabled')
->label('Monitoring')
->options(arr::bool())
->default(Settings::get('monitoring_enabled'));
// Redirection
$this->form->radio('redirection_enabled')
$form_modules['redirection'] = $this->form->radio('redirection_enabled')
->label('Redirection')
->options(arr::bool())
->default(Settings::get('redirection_enabled'));
// add info about modules dependencies
foreach ($form_modules as $module => $item)
{
// module have at least one dependency
if (count(self::$modules[$module]['dependencies']))
{
$form_modules[$module]->additional_info(
__('Require module') . ': <b>' .
implode(', ', array_map(
'__', self::$modules[$module]['dependencies'])
) . '</b>'
);
}
}
$this->form->group('Module settings');
......
$issaved = $issaved && Settings::set($name, $value);
}
// without networks disabled monitoring, ulogd, connection request and redirection
if (!Settings::get('networks_enabled'))
foreach (self::$modules as $module => $module_info)
{
Settings::set('monitoring_enabled', FALSE);
Settings::set('ulogd_enabled', FALSE);
Settings::set('connection_request_enable', FALSE);
Settings::set('redirection_enabled', FALSE);
foreach ($module_info['dependencies'] as $dependency)
{
if (self::isModuleEnabled($module) && !self::isModuleEnabled($dependency))
{
status::error(__('Cannot enable module %s, enabled module %s is required.', array($module, $dependency)));
self::disableModule($module);
break;
}
}
}
// without redirection allowed subnet cannot be enabled
if (!Settings::get('redirection_enabled'))
{
Settings::set('allowed_subnets_enabled', FALSE);
}
// without approval works cannot be enabled
if (!Settings::get('approval_enabled'))
{
Settings::set('works_enabled', FALSE);
}
// without email forgotten password cannot be enabled
if (!Settings::get('email_enabled'))
{
Settings::set('forgotten_password', FALSE);
}
if ($issaved)
// if all action were succesfull
{
freenetis/branches/1.1/application/i18n/cs_CZ/texts.php
'cannot connect to database' => 'Nelze se připojit k databázi',
'cannot delete, there are other records depending on this one' => 'Nelze smazat, na položce jsou závislé jiné záznamy',
'cannot edit, there are other records depending on this one' => 'Nelze upravit, na položce jsou závislé jiné záznamy',
'cannot enable module %s, enabled module %s is required' => 'Nelze povolit modul %s, je vyžadován povolený modul %s.',
'cannot delete group - it has at least one children group' => 'Nelze smazat skupinu - má alespoň jednu potomkovskou skupinu.',
'cannot delete group - this group is protected against deletion' => 'Nelze smazat skupinu - tato skupina je chráněná proti mazání.',
'cannot enable voip driver, allow `%s` rights for mysql user' => 'Nemohu povolit VoIP ovladač, povolte právo `%s` pro MySQL uživatele',
......
'request has been successfully updated' => 'Požadavek byl úspěšně aktualizován.',
'reguest is invalid or expired' => 'Žádost je neplatná nebo expirovala',
'requests' => 'Požadavky',
'require module' => 'Vyžaduje modul',
'require mysql %s and higher' => 'potřebuje MySQL ve verzi %s nebo vyšší',
'reset_filters' => 'Vynulování filtrů',
'resize' => 'Změnit velikost',
freenetis/branches/1.1/application/views/forge_template.php
echo $input->html();
echo $input->additional_info;
echo '<span class="additional-info">'.$input->additional_info.'</span>';
if (strstr($input->class, 'ajax'))
echo html::image(array('src'=>'media/images/icons/animations/ajax-loader.gif', 'id'=>'ajax_'.$input->name, 'class'=>'ajax-loader', 'style'=>'display:none;'));
freenetis/branches/1.1/application/views/js/settings_system.php
<?php
/**
* Settings system javascript view.
*/
// IDE complementation
if (FALSE): ?><script type="text/javascript"><?php endif
?>
var modules = {
<?php foreach ($modules as $module => $dependencies): ?>
'<?php echo $module ?>': [<?php echo "'".implode("', '", $dependencies)."'" ?>],
<?php endforeach ?>
}
$("input[type=radio]").live('change', function (){
var name = $(this).attr('name');
var value = parseInt($(this).val());
for (i in modules[name])
{
if (value)
{
$("input[name='"+modules[name][i]+"']").removeAttr('disabled');
$("input[name='"+modules[name][i]+"']:checked").parent().find('.additional-info').hide();
}
else
{
$("input[name='"+modules[name][i]+"']").attr('disabled', 'disabled');
$("input[name='"+modules[name][i]+"']:checked").parent().find('.additional-info').show();
}
}
});
$("input[type=radio]:checked").trigger('change');
freenetis/branches/1.1/media/css/style.css
padding-bottom: .5em;
}
#settings-system-form .additional-info {
color: red;
margin-left: 12px;
}

Také k dispozici: Unified diff