/** * Add javascript logout to the page if a timeout is set for the site. * @param I2CE_Page $page */ public function javascriptTimeout($page) { if (!$page->getUser()->logged_in()) { return; } $timeout = 0; I2CE::getConfig()->setIfIsSet($timeout, "/config/site/user_timeout"); I2CE::getConfig()->setIfIsSet($timeout, "/user_prefs/timeout/user_timeout"); if ($timeout && is_numeric($timeout) && $timeout > 0) { $timeout = $timeout * 1000; $message = "You have been logged out due to inactivity."; I2CE::getConfig()->setIfIsSet($message, "/config/site/user_timeout_message"); I2CE::getConfig()->setIfIsSet($message, "/user_prefs/timeout/user_timeout_message"); $logout = $page->getAccessedBaseURL() . "logout?message=" . urlencode($message); $js = <<<EOJS var auto_logout_timeout_id = 0; window.addEvent('domready', function() { autoLogoutResetTimeout(); document.addEvent('keypress', function(event) { autoLogoutResetTimeout(); } ); document.addEvent('mousemove', function(event) { autoLogoutResetTimeout(); } ); } ); function autoLogoutResetTimeout() { if ( auto_logout_timeout_id > 0 ) { clearTimeout( auto_logout_timeout_id ); } auto_logout_timeout_id = setTimeout( function() { window.location = "{$logout}"; }, {$timeout} ); } EOJS; $template = $page->getTemplate(); $template->addHeaderLink("mootools-core.js"); $template->addHeaderText($js, "script", true); } }
/** * Th constructor * @param I2CE_Page $page * @param string $action. What action to perform for this form browser. Valid options are 'showForm', 'editForm' and 'saveForm' * @param array $options. An associatve array. The following keys are recognized: * 'FBPrefix' => The prefix of all id's related to the formBrowser. If not set 'formBrowser' is used. * (This enables having ajax functionality for * multiple formBrowsers on the same page). */ public function __construct($page, $action = 'showForm', $options) { if (!array_key_exists('FBPrefix', $options) || $options['FBPrefix'] === null) { $options['FBPrefix'] = "formBrowser"; } $this->page = $page; $this->template = $page->getTemplate(); $this->formBrowserPrefix = $options['FBPrefix']; $this->action = $action; }
/** * Add alerts to the page * @param I2CE_Page $page */ public function add_alerts($page) { if (!$page instanceof I2CE_Page) { return; } $config = I2CE::getConfig()->traverse("/modules/UserAlerts/display"); $user = I2CE_FormFactory::instance()->createContainer("user|" . $page->getUser()->username); $alerts = $user->getChildIds("user_alert"); $alert_count = count($alerts); if ($alert_count == 0) { return; } $pend_where = array('operator' => 'FIELD_LIMIT', 'field' => 'time_ack', 'style' => 'null'); $pending = $user->getChildIds("user_alert", array(), $pend_where); $pend_count = count($pending); $append_id = 'sysUser'; $config->setIfIsSet($append_id, "append_id"); $append_tag = 'li'; $config->setIfIsSet($append_tag, "append_tag"); $append_before = true; $config->setIfIsSet($append_before, "append_before"); $pending_style = 'alerts_pending'; $config->setIfIsSet($pending_style, "pending_style"); $default_style = 'alerts_seen'; $config->setIfIsSet($default_style, "default_style"); $template_file = 'user_alert_link.html'; $config->setIfIsSet($template_file, "append_file"); if ($pend_count > 0) { $style = $pending_style; } else { $style = $default_style; } $template = $page->getTemplate(); $alert = $template->appendFileById($template_file, $append_tag, $append_id, $append_before); $alert->setAttribute("class", $style); $template->setDisplayDataImmediate("alert_pending_count", $pend_count, $alert); $template->setDisplayDataImmediate("alert_total_count", $alert_count, $alert); }