Ejemplo n.º 1
0
 public function Step1()
 {
     Theme::Set('form_action', 'index.php?p=upgrade');
     // Check environment
     $config = new Config();
     $environment = $config->CheckEnvironment();
     $formFields = array();
     $formButtons = array();
     $formFields[] = FormManager::AddMessage(sprintf(__('First we need to re-check if your server meets %s\'s requirements. The CMS requirements may change from release to release. If this is the case there will be further information in the release notes.'), Theme::GetConfig('app_name')));
     $formFields[] = FormManager::AddRaw($environment);
     if ($config->EnvironmentFault()) {
         $formFields[] = FormManager::AddHidden('step', 1);
         $formButtons[] = FormManager::AddButton(__('Retest'));
     } else {
         if ($config->EnvironmentWarning()) {
             $formFields[] = FormManager::AddHidden('step', 2);
             $formButtons[] = FormManager::AddButton(__('Retest'), 'link', 'index.php?p=upgrade&step=1');
             $formButtons[] = FormManager::AddButton(__('Next'));
         } else {
             $formFields[] = FormManager::AddHidden('step', 2);
             $formButtons[] = FormManager::AddButton(__('Next'));
         }
     }
     // Return a rendered form
     Theme::Set('form_fields', $formFields);
     Theme::Set('form_buttons', $formButtons);
     return Theme::RenderReturn('form_render');
 }
Ejemplo n.º 2
0
<?php

/*
 * Xibo - Digital Signage - http://www.xibo.org.uk
 * Copyright (C) 2006-2015 Daniel Garner
 *
 * This file is part of Xibo.
 *
 * Xibo is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * any later version.
 *
 * Xibo 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 Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with Xibo.  If not, see <http://www.gnu.org/licenses/>.
 */
defined('XIBO') or die("Sorry, you are not allowed to directly access this page.<br /> Please press the back button in your browser.");
// Client config
$CLIENT_CONFIG = array('windows' => array('synonym' => 'dotnetclient', 'tabs' => array(array('id' => 'general', 'name' => __('General')), array('id' => 'location', 'name' => __('Location')), array('id' => 'trouble', 'name' => __('Troubleshooting')), array('id' => 'advanced', 'name' => __('Advanced'))), 'settings' => array(array('name' => 'CollectInterval', 'tabId' => 'general', 'title' => __('Collection Interval (seconds)'), 'type' => _INT, 'fieldType' => 'number', 'default' => 900, 'helpText' => __('The number of seconds between connections to the CMS.'), 'validation' => 'numeric', 'enabled' => true, 'groupClass' => NULL), array('name' => 'DownloadStartWindow', 'tabId' => 'general', 'title' => __('Download Window Start Time'), 'type' => _STRING, 'fieldType' => 'timePicker', 'default' => 0, 'helpText' => __('The start of the time window to connect to the CMS and download updates.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'DownloadEndWindow', 'tabId' => 'general', 'title' => __('Download Window End Time'), 'type' => _STRING, 'fieldType' => 'timePicker', 'default' => 0, 'helpText' => __('The end of the time window to connect to the CMS and download updates.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'PowerpointEnabled', 'tabId' => 'general', 'title' => __('Enable PowerPoint?'), 'type' => _CHECKBOX, 'fieldType' => 'checkbox', 'default' => 0, 'helpText' => __('Should Microsoft PowerPoint be Enabled?'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'StatsEnabled', 'tabId' => 'general', 'title' => __('Enable stats reporting?'), 'type' => _CHECKBOX, 'fieldType' => 'checkbox', 'default' => 1, 'helpText' => __('Should the application send proof of play stats to the CMS.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'SizeX', 'tabId' => 'location', 'title' => __('Width'), 'type' => _DOUBLE, 'fieldType' => 'number', 'default' => '0', 'helpText' => __('The Width of the Display Window. 0 means full width.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'SizeY', 'tabId' => 'location', 'title' => __('Height'), 'type' => _DOUBLE, 'fieldType' => 'number', 'default' => '0', 'helpText' => __('The Height of the Display Window. 0 means full height.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'OffsetX', 'tabId' => 'location', 'title' => __('Left Coordinate'), 'type' => _DOUBLE, 'fieldType' => 'number', 'default' => '0', 'helpText' => __('The left pixel position the display window should be sized from.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'OffsetY', 'tabId' => 'location', 'title' => __('Top Coordinate'), 'type' => _DOUBLE, 'fieldType' => 'number', 'default' => '0', 'helpText' => __('The top pixel position the display window should be sized from.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'ShowInTaskbar', 'tabId' => 'advanced', 'title' => __('Show the icon in the task bar?'), 'type' => _CHECKBOX, 'fieldType' => 'checkbox', 'default' => 1, 'helpText' => __('Should the application icon be shown in the task bar?'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'ClientInfomationCtrlKey', 'tabId' => 'trouble', 'title' => __('CTRL Key required to access Client Information Screen?'), 'type' => _CHECKBOX, 'fieldType' => 'checkbox', 'default' => 0, 'helpText' => __('Should the client information screen require the CTRL key?'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'ClientInformationKeyCode', 'tabId' => 'trouble', 'title' => __('Key for Client Information Screen'), 'type' => _WORD, 'fieldType' => 'text', 'default' => 'I', 'helpText' => __('Which key should activate the client information screen? A single character.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'CursorStartPosition', 'tabId' => 'advanced', 'title' => __('Cursor Start Position'), 'type' => _STRING, 'fieldType' => 'dropdown', 'options' => array(array('id' => 'Top Left', 'value' => 'Top Left'), array('id' => 'Top Right', 'value' => 'Top Right'), array('id' => 'Bottom Left', 'value' => 'Bottom Left'), array('id' => 'Bottom Right', 'value' => 'Bottom Right')), 'default' => 'Bottom Right', 'helpText' => __('The position of the cursor when the client starts up.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'DoubleBuffering', 'tabId' => 'advanced', 'title' => __('Enable Double Buffering'), 'type' => _CHECKBOX, 'fieldType' => 'checkbox', 'default' => 1, 'helpText' => __('Double buffering helps smooth the playback but should be disabled if graphics errors occur'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'EmptyLayoutDuration', 'tabId' => 'advanced', 'title' => __('Duration for Empty Layouts'), 'type' => _INT, 'fieldType' => 'text', 'default' => 10, 'helpText' => __('If an empty layout is detected how long should it remain on screen. Must be greater then 1.'), 'validation' => 'number', 'enabled' => true, 'groupClass' => NULL), array('name' => 'EnableMouse', 'tabId' => 'advanced', 'title' => __('Enable Mouse'), 'type' => _CHECKBOX, 'fieldType' => 'checkbox', 'default' => 0, 'helpText' => __('Enable the mouse.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'EnableShellCommands', 'tabId' => 'advanced', 'title' => __('Enable Shell Commands'), 'type' => _CHECKBOX, 'fieldType' => 'checkbox', 'default' => 0, 'helpText' => __('Enable the Shell Command module.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'ExpireModifiedLayouts', 'tabId' => 'advanced', 'title' => __('Expire Modified Layouts'), 'type' => _CHECKBOX, 'fieldType' => 'checkbox', 'default' => 1, 'helpText' => __('Expire Modified Layouts immediately on change. This means a layout can be cut during playback if it receives an update from the CMS'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'LogLevel', 'tabId' => 'trouble', 'title' => __('Log Level'), 'type' => _WORD, 'fieldType' => 'dropdown', 'options' => array(array('id' => 'audit', 'value' => 'Audit'), array('id' => 'info', 'value' => 'Information'), array('id' => 'error', 'value' => 'Error'), array('id' => 'off', 'value' => 'Off')), 'default' => 'error', 'helpText' => __('The logging level that should be recorded by the Player.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'LogToDiskLocation', 'tabId' => 'trouble', 'title' => __('Log file path name.'), 'type' => _STRING, 'fieldType' => 'text', 'default' => '', 'helpText' => __('Create a log file on disk in this location. Please enter a fully qualified path.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'MaxConcurrentDownloads', 'tabId' => 'advanced', 'title' => __('Maximum concurrent downloads'), 'type' => _INT, 'fieldType' => 'text', 'default' => '2', 'helpText' => __('The maximum number of concurrent downloads the client will attempt.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'ShellCommandAllowList', 'tabId' => 'advanced', 'title' => __('Shell Command Allow List'), 'type' => _STRING, 'fieldType' => 'text', 'default' => '', 'helpText' => __('Which shell commands should the client execute?'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'UseCefWebBrowser', 'tabId' => 'advanced', 'title' => __('Use CEF as the Web Browser'), 'type' => _CHECKBOX, 'fieldType' => 'checkbox', 'default' => 0, 'helpText' => __('CEF is Chrome Embedded and offers up to date web rendering. If unselected the default Internet Explorer control will be used. The Player software will need to be restarted after making this change.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'SendCurrentLayoutAsStatusUpdate', 'tabId' => 'advanced', 'title' => __('Notify current layout'), 'type' => _CHECKBOX, 'fieldType' => 'checkbox', 'default' => 0, 'helpText' => __('When enabled the client will send the current layout to the CMS each time it changes. Warning: This is bandwidth intensive and should be disabled unless on a LAN.'), 'enabled' => Theme::GetConfig('client_sendCurrentLayoutAsStatusUpdate_enabled', true), 'groupClass' => NULL), array('name' => 'ScreenShotRequestInterval', 'tabId' => 'advanced', 'title' => __('Screen shot interval'), 'type' => _INT, 'fieldType' => 'number', 'default' => 0, 'helpText' => __('The duration between status screen shots in minutes. 0 to disable. Warning: This is bandwidth intensive.'), 'enabled' => Theme::GetConfig('client_screenShotRequestInterval_enabled', true), 'groupClass' => NULL), array('name' => 'MaxLogFileUploads', 'tabId' => 'advanced', 'title' => __('Limit the number of log files uploaded concurrently'), 'type' => _INT, 'fieldType' => 'number', 'default' => 3, 'helpText' => __('The number of log files to upload concurrently. The lower the number the longer it will take, but the better for memory usage.'), 'enabled' => true, 'groupClass' => NULL))), 'android' => array('synonym' => 'xiboforandroid', 'tabs' => array(array('id' => 'general', 'name' => __('General')), array('id' => 'location', 'name' => __('Location')), array('id' => 'trouble', 'name' => __('Troubleshooting')), array('id' => 'advanced', 'name' => __('Advanced'))), 'settings' => array(array('name' => 'emailAddress', 'tabId' => 'general', 'title' => __('Email Address'), 'type' => _STRING, 'fieldType' => 'text', 'default' => '', 'helpText' => __('The email address will be used to license this client. This is the email address you provided when you purchased the licence.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'settingsPassword', 'tabId' => 'general', 'title' => __('Password Protect Settings'), 'type' => _STRING, 'fieldType' => 'text', 'default' => '', 'helpText' => __('Provide a Password which will be required to access settings'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'collectInterval', 'tabId' => 'general', 'title' => __('Collect interval'), 'type' => _INT, 'fieldType' => 'dropdown', 'options' => array(array('id' => 60, 'value' => __('1 minute')), array('id' => 300, 'value' => __('5 minutes')), array('id' => 600, 'value' => __('10 minutes')), array('id' => 1800, 'value' => __('30 minutes')), array('id' => 3600, 'value' => __('1 hour')), array('id' => 14400, 'value' => __('4 hours')), array('id' => 43200, 'value' => __('12 hours'))), 'default' => 300, 'helpText' => __('How often should the Player check for new content.'), 'validation' => 'numeric', 'enabled' => true, 'groupClass' => NULL), array('name' => 'orientation', 'tabId' => 'location', 'title' => __('Orientation'), 'type' => _INT, 'fieldType' => 'dropdown', 'options' => array(array('id' => 0, 'value' => __('Landscape')), array('id' => 1, 'value' => __('Portrait')), array('id' => 8, 'value' => __('Reverse Landscape')), array('id' => 9, 'value' => __('Reverse Portrait'))), 'default' => 0, 'helpText' => __('Set the orientation of the device (portrait mode will only work if supported by the hardware) Application Restart Required.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'startOnBoot', 'tabId' => 'advanced', 'title' => __('Start during device start up?'), 'type' => _CHECKBOX, 'fieldType' => 'checkbox', 'default' => 1, 'helpText' => __('When the device starts and Android finishes loading, should the client start up and come to the foreground?'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'actionBarMode', 'tabId' => 'advanced', 'title' => __('Action Bar Mode'), 'type' => _INT, 'fieldType' => 'dropdown', 'options' => array(array('id' => 0, 'value' => 'Hide'), array('id' => 1, 'value' => 'Timed')), 'default' => 1, 'helpText' => __('How should the action bar behave?'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'actionBarDisplayDuration', 'tabId' => 'advanced', 'title' => __('Action Bar Display Duration'), 'type' => _INT, 'fieldType' => 'text', 'default' => 30, 'helpText' => __('How long should the Action Bar be shown for, in seconds?'), 'validation' => 'numeric', 'enabled' => true, 'groupClass' => NULL), array('name' => 'screenDimensions', 'tabId' => 'location', 'title' => __('Screen Dimensions'), 'type' => _STRING, 'fieldType' => 'text', 'default' => '', 'helpText' => __('Override the screen dimensions (left,top,width,height). Requires restart. Care should be taken to ensure these are within the actual screen size.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'autoRestart', 'tabId' => 'advanced', 'title' => __('Automatic Restart'), 'type' => _CHECKBOX, 'fieldType' => 'checkbox', 'default' => 1, 'helpText' => __('Automatically Restart the application if we detect it is not visible.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'startOnBootDelay', 'tabId' => 'advanced', 'title' => __('Start delay for device start up'), 'type' => _INT, 'fieldType' => 'text', 'default' => 60, 'helpText' => __('The number of seconds to wait before starting the application after the device has started. Minimum 10.'), 'validation' => 'numeric', 'enabled' => true, 'groupClass' => NULL), array('name' => 'blacklistVideo', 'tabId' => 'trouble', 'title' => __('Blacklist Videos?'), 'type' => _CHECKBOX, 'fieldType' => 'checkbox', 'default' => 1, 'helpText' => __('Should Videos we fail to play be blacklisted and no longer attempted?'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'storeHtmlOnInternal', 'tabId' => 'trouble', 'title' => __('Store HTML resources on the Internal Storage?'), 'type' => _CHECKBOX, 'fieldType' => 'checkbox', 'default' => 0, 'helpText' => __('Store all HTML resources on the Internal Storage? Should be selected if the device cannot display text, ticker, dataset media.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'useSurfaceVideoView', 'tabId' => 'trouble', 'title' => __('Use a SurfaceView for Video Rendering?'), 'type' => _CHECKBOX, 'fieldType' => 'checkbox', 'default' => 1, 'helpText' => __('If the device is having trouble playing video, it may be useful to switch to a Surface View for Video Rendering.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'sendCurrentLayoutAsStatusUpdate', 'tabId' => 'advanced', 'title' => __('Notify current layout'), 'type' => _CHECKBOX, 'fieldType' => 'checkbox', 'default' => 0, 'helpText' => __('When enabled the client will send the current layout to the CMS each time it changes. Warning: This is bandwidth intensive and should be disabled unless on a LAN.'), 'enabled' => Theme::GetConfig('client_sendCurrentLayoutAsStatusUpdate_enabled', true), 'groupClass' => NULL), array('name' => 'screenShotRequestInterval', 'tabId' => 'advanced', 'title' => __('Screen shot interval'), 'type' => _INT, 'fieldType' => 'number', 'default' => 0, 'helpText' => __('The duration between status screen shots in minutes. 0 to disable. Warning: This is bandwidth intensive.'), 'enabled' => Theme::GetConfig('client_screenShotRequestInterval_enabled', true), 'groupClass' => NULL), array('name' => 'expireModifiedLayouts', 'tabId' => 'advanced', 'title' => __('Expire Modified Layouts?'), 'type' => _CHECKBOX, 'fieldType' => 'checkbox', 'default' => 0, 'helpText' => __('Expire Modified Layouts immediately on change. This means a layout can be cut during playback if it receives an update from the CMS'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'screenShotIntent', 'tabId' => 'advanced', 'title' => __('Action for Screen Shot Intent'), 'type' => _STRING, 'fieldType' => 'text', 'default' => '', 'helpText' => __('The Intent Action to use for requesting a screen shot. Leave empty to natively create an image from the player screen content.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'updateStartWindow', 'tabId' => 'advanced', 'title' => __('Update Window Start Time'), 'type' => _STRING, 'fieldType' => 'timePicker', 'default' => 0, 'helpText' => __('The start of the time window to install application updates.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'updateEndWindow', 'tabId' => 'advanced', 'title' => __('Update Window End Time'), 'type' => _STRING, 'fieldType' => 'timePicker', 'default' => 0, 'helpText' => __('The end of the time window to install application updates.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'downloadStartWindow', 'tabId' => 'general', 'title' => __('Download Window Start Time'), 'type' => _STRING, 'fieldType' => 'timePicker', 'default' => 0, 'helpText' => __('The start of the time window to connect to the CMS and download updates.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'downloadEndWindow', 'tabId' => 'general', 'title' => __('Download Window End Time'), 'type' => _STRING, 'fieldType' => 'timePicker', 'default' => 0, 'helpText' => __('The end of the time window to connect to the CMS and download updates.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'webViewPluginState', 'tabId' => 'advanced', 'title' => __('WebView Plugin State'), 'type' => _STRING, 'fieldType' => 'dropdown', 'options' => array(array('id' => 'OFF', 'value' => __('Off')), array('id' => 'DEMAND', 'value' => __('On Demand')), array('id' => 'ON', 'value' => __('On'))), 'default' => 'DEMAND', 'helpText' => __('What plugin state should be used when starting a web view.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'timeSyncFromCms', 'tabId' => 'advanced', 'title' => __('Use CMS time?'), 'type' => _CHECKBOX, 'fieldType' => 'checkbox', 'default' => 0, 'helpText' => __('Set the device time using the CMS. Only available on rooted devices or system signed players.'), 'enabled' => true, 'groupClass' => NULL), array('name' => 'webCacheEnabled', 'tabId' => 'advanced', 'title' => __('Enable caching of Web Resources?'), 'type' => _CHECKBOX, 'fieldType' => 'checkbox', 'default' => 0, 'helpText' => __('The standard browser cache will be used - we recommend this is switched off unless specifically required. Effects Web Page and Embedded.'), 'enabled' => true, 'groupClass' => NULL))));
Ejemplo n.º 3
0
 *
 * Xibo 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 Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with Xibo.  If not, see <http://www.gnu.org/licenses/>.
 */
defined('XIBO') or die("Sorry, you are not allowed to directly access this page.<br /> Please press the back button in your browser.");
?>
<!DOCTYPE html>
<html lang="en">
	<head>
		<title><?php 
echo Theme::GetConfig('theme_title');
?>
</title>
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<link rel="shortcut icon" href="<?php 
echo Theme::ImageUrl('favicon.ico');
?>
" />

		<link href="theme/default/libraries/bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen">
		<link href="theme/default/libraries/bootstrap/css/bootstrap-responsive.min.css" rel="stylesheet">
		<link href="theme/default/libraries/bootstrap/css/bootstrap-datetimepicker.min.css" rel="stylesheet">
		<link href="theme/default/libraries/jquery/jquery.tablesorter.pager.css" rel="stylesheet">
		<link href="theme/default/libraries/jquery/jquery-ui/css/ui-lightness/jquery-ui-1.10.2.custom.min.css" rel="stylesheet">
		<link href="theme/default/libraries/jquery-file-upload/css/jquery.fileupload-ui.css" rel="stylesheet">
Ejemplo n.º 4
0
 public function Step8()
 {
     PDOConnect::init();
     // Define the VERSION
     Config::Version();
     Theme::Set('form_action', 'index.php?q=login');
     Theme::Set('about_url', 'index.php?p=index&q=About');
     Theme::Set('source_url', Theme::SourceLink());
     // Message (either from the URL or the session)
     Theme::Set('login_message', sprintf(__("%s was successfully installed. Please log-in with the user details you chose earlier."), Theme::GetConfig('app_name')));
     Theme::Render('login_page');
     // Install files
     Media::installAllModuleFiles();
     // Delete install
     if (!unlink('install.php')) {
         throw new Exception(__("Unable to delete install.php. Please ensure the webserver has permission to unlink this file and retry"));
     }
     exit;
 }
Ejemplo n.º 5
0
" target="_blank"><?php 
echo Theme::Translate('Read more');
?>
</a>
                        </div>
                    </div>
                </div>
                <div class="item">
                    <img src="theme/default/img/screenshots/calendar_screenshot.png" alt="Slide 3">
                    <div class="carousel-caption">
                        <h3><?php 
echo Theme::Translate('Schedule');
?>
</h3>
                        <p><?php 
echo Theme::Translate('Send something down to your display and watch %s come alive! Create events on Displays / Groups for Layouts / Campaigns, create repeat events and much more.', Theme::GetConfig('app_name'));
?>
</p>
                        <div class="btn-group">
                            <a class="btn btn-primary btn-lg" role="button" href="index.php?p=schedule"><?php 
echo Theme::Translate('Schedule Event');
?>
</a>
                            <a class="btn btn-default btn-lg" role="button" href="<?php 
echo HelpManager::Link('Schedule', 'General');
?>
" target="_blank"><?php 
echo Theme::Translate('Read more');
?>
</a>
                        </div>
Ejemplo n.º 6
0
?>
<br />
Copyright &copy 2006-2014 Daniel Garner, Alex Harrington, Spring Signage Ltd and 
the <a target="_blank"  href="https://launchpad.net/~xibo-developers/+members" title="Xibo Developers">Xibo Developers</a>.</p>
 
<p>Xibo is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
any later version. </p>
 
<p>Xibo 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 Affero General Public License for more details.</p>
 
<p>You should have received a copy of the GNU Affero General Public License
along with Xibo. If not, see <a target="_blank" href="http://opensource.org/licenses/AGPL-3.0">opensource.org/licenses/AGPL-3.0</a>. </p>

<h2>Source Code</h2>
<p>As an end user of the Xibo software you are entitled to download and view the source code. You may do 
	so from <a target="_blank"  id="source-link" href="<?php 
echo Theme::GetConfig('cms_source_url');
?>
">GitHub</a>.
	As a service provider you <strong>MUST</strong> provide your end users notification of and access to the source code.</p>

<h2>Third Party Licenses</h2>
<p>Xibo uses some third party libraries and tools - these are provided with the software under licences compatible with the AGPLv3. All licences for 
	third party libraries are included with that library and attributed in the code.</p>

<p>Xibo is supported and maintained by <a target="_blank"  href="http://springsignage.com/" title="Xibo Commercial Sponsor">Spring Signage Ltd</a>.</p>
Ejemplo n.º 7
0
" />
  </head>

	<body>

	    <div class="container">

			<form class="form-signin text-center" action="<?php 
echo Theme::Get('form_action');
?>
" method="post">
        <?php 
echo Theme::Get('form_meta');
?>
        <p><a href="<?php 
echo Theme::GetConfig('theme_url');
?>
"><img src='<?php 
echo Theme::ImageUrl('xibologo.png');
?>
'></a></p>

        <p><?php 
echo Theme::Translate('Please provide your credentials');
?>
</p>

        <input name="username" type="text" class="input-block-level" placeholder="<?php 
echo Theme::Translate('User');
?>
" autofocus>
Ejemplo n.º 8
0
    ?>
<div class="jumbotron">
        <div class="container">
        <h1><?php 
    echo Theme::Translate('Welcome to the %s Upgrade!', Theme::GetConfig('app_name'));
    ?>
</h1>
        <p><?php 
    echo sprintf(Theme::Translate('Thank you for upgrading %s. This upgrade wizard will take you through the %s upgrade process one step at a time. There are only 2 steps, the first one is below.'), Theme::GetConfig('app_name'), Theme::GetConfig('app_name'));
    ?>
</p>
        <p><?php 
    echo Theme::Translate('Please read through the release notes before you begin as they contain important information about this new release.');
    ?>
</p>
        <p><a class="btn btn-primary btn-lg" role="button" href="<?php 
    echo Theme::GetConfig('cms_release_notes_url');
    ?>
" target="_blank"><?php 
    echo sprintf(Theme::Translate('Release Notes %s'), '&raquo;');
    ?>
</a></p>
        </div>
</div>
<?php 
} else {
    ?>
<h1 class="page-header">Upgrade</h1>
<?php 
}
echo Theme::Get('page_content');
Ejemplo n.º 9
0
 function displayPage()
 {
     // Set up some suffixes
     $suffixes = array('bytes', 'k', 'M', 'G', 'T');
     // Get some data for a bandwidth chart
     try {
         $dbh = PDOConnect::init();
         $sth = $dbh->prepare('SELECT FROM_UNIXTIME(month) AS month, IFNULL(SUM(Size), 0) AS size FROM `bandwidth` WHERE month > :month GROUP BY FROM_UNIXTIME(month) ORDER BY MIN(month);');
         $sth->execute(array('month' => time() - 86400 * 365));
         $results = $sth->fetchAll();
         // Monthly bandwidth - optionally tested against limits
         $xmdsLimit = Config::GetSetting('MONTHLY_XMDS_TRANSFER_LIMIT_KB');
         $maxSize = 0;
         foreach ($results as $row) {
             $maxSize = $row['size'] > $maxSize ? $row['size'] : $maxSize;
         }
         // Decide what our units are going to be, based on the size
         $base = $maxSize == 0 ? 0 : floor(log($maxSize) / log(1024));
         if ($xmdsLimit > 0) {
             // Convert to appropriate size (xmds limit is in KB)
             $xmdsLimit = $xmdsLimit * 1024 / pow(1024, $base);
             Theme::Set('xmdsLimit', $xmdsLimit . ' ' . $suffixes[$base]);
         }
         $output = array();
         foreach ($results as $row) {
             $size = (double) $row['size'] / pow(1024, $base);
             $remaining = $xmdsLimit - $size;
             $output[] = array('label' => DateManager::getLocalDate(DateManager::getDateFromGregorianString($row['month']), 'F'), 'value' => round($size, 2), 'limit' => round($remaining, 2));
         }
         // What if we are empty?
         if (count($output) == 0) {
             $output[] = array('label' => DateManager::getLocalDate(null, 'F'), 'value' => 0, 'limit' => 0);
         }
         // Set the data
         Theme::Set('xmdsLimitSet', $xmdsLimit > 0);
         Theme::Set('bandwidthSuffix', $suffixes[$base]);
         Theme::Set('bandwidthWidget', json_encode($output));
         // We would also like a library usage pie chart!
         $libraryLimit = Config::GetSetting('LIBRARY_SIZE_LIMIT_KB');
         $libraryLimit = $libraryLimit * 1024;
         // Library Size in Bytes
         $sth = $dbh->prepare('SELECT IFNULL(SUM(FileSize), 0) AS SumSize, type FROM media GROUP BY type;');
         $sth->execute();
         $results = $sth->fetchAll();
         // Do we base the units on the maximum size or the library limit
         $maxSize = 0;
         if ($libraryLimit > 0) {
             $maxSize = $libraryLimit;
         } else {
             // Find the maximum sized chunk of the items in the library
             foreach ($results as $library) {
                 $maxSize = $library['SumSize'] > $maxSize ? $library['SumSize'] : $maxSize;
             }
         }
         // Decide what our units are going to be, based on the size
         $base = $maxSize == 0 ? 0 : floor(log($maxSize) / log(1024));
         $output = array();
         $totalSize = 0;
         foreach ($results as $library) {
             $output[] = array('value' => round((double) $library['SumSize'] / pow(1024, $base), 2), 'label' => ucfirst($library['type']));
             $totalSize = $totalSize + $library['SumSize'];
         }
         // Do we need to add the library remaining?
         if ($libraryLimit > 0) {
             $remaining = round(($libraryLimit - $totalSize) / pow(1024, $base), 2);
             $output[] = array('value' => $remaining, 'label' => __('Free'));
         }
         // What if we are empty?
         if (count($output) == 0) {
             $output[] = array('label' => __('Empty'), 'value' => 0);
         }
         Theme::Set('libraryLimitSet', $libraryLimit);
         Theme::Set('libraryLimit', round((double) $libraryLimit / pow(1024, $base), 2) . ' ' . $suffixes[$base]);
         Theme::Set('librarySize', Kit::formatBytes($totalSize, 1));
         Theme::Set('librarySuffix', $suffixes[$base]);
         Theme::Set('libraryWidget', json_encode($output));
         // Also a display widget
         $sort_order = array('display');
         $displays = $this->user->DisplayList($sort_order);
         $rows = array();
         if (is_array($displays) && count($displays) > 0) {
             // Output a table showing the displays
             foreach ($displays as $row) {
                 $row['mediainventorystatus'] = $row['mediainventorystatus'] == 1 ? 'success' : ($row['mediainventorystatus'] == 2 ? 'danger' : 'warning');
                 // Assign this to the table row
                 $rows[] = $row;
             }
         }
         Theme::Set('display-widget-rows', $rows);
         // Get a count of users
         $sth = $dbh->prepare('SELECT IFNULL(COUNT(*), 0) AS count_users FROM `user`');
         $sth->execute();
         Theme::Set('countUsers', $sth->fetchColumn(0));
         // Get a count of active layouts
         $sth = $dbh->prepare('SELECT IFNULL(COUNT(*), 0) AS count_scheduled FROM `schedule_detail` WHERE :now BETWEEN FromDT AND ToDT');
         $sth->execute(array('now' => time()));
         Theme::Set('nowShowing', $sth->fetchColumn(0));
         // Latest news
         if (Config::GetSetting('DASHBOARD_LATEST_NEWS_ENABLED') == 1) {
             // Make sure we have the cache location configured
             Kit::ClassLoader('file');
             $file = new File($this->db);
             File::EnsureLibraryExists();
             // Use SimplePie to get the feed
             include_once '3rdparty/simplepie/autoloader.php';
             $feed = new SimplePie();
             $feed->set_cache_location($file->GetLibraryCacheUri());
             $feed->set_feed_url(Theme::GetConfig('latest_news_url'));
             $feed->set_cache_duration(86400);
             $feed->handle_content_type();
             $feed->init();
             $latestNews = array();
             if ($feed->error()) {
                 Debug::LogEntry('audit', 'Feed Error: ' . $feed->error(), get_class(), __FUNCTION__);
             } else {
                 // Store our formatted items
                 foreach ($feed->get_items() as $item) {
                     $latestNews[] = array('title' => $item->get_title(), 'description' => $item->get_description(), 'link' => $item->get_link());
                 }
             }
             Theme::Set('latestNews', $latestNews);
         } else {
             Theme::Set('latestNews', array(array('title' => __('Latest news not enabled.'), 'description' => '', 'link' => '')));
         }
     } catch (Exception $e) {
         Debug::LogEntry('error', $e->getMessage());
         // Show the error in place of the bandwidth chart
         Theme::Set('widget-error', 'Unable to get widget details');
     }
     // Do we have an embedded widget?
     Theme::Set('embedded-widget', html_entity_decode(Config::GetSetting('EMBEDDED_STATUS_WIDGET')));
     // Render the Theme and output
     Theme::Render('status_dashboard');
 }