diff --git a/src/mibew/libs/chat.php b/src/mibew/libs/chat.php index 6ab12c5f..ad9e7981 100644 --- a/src/mibew/libs/chat.php +++ b/src/mibew/libs/chat.php @@ -423,7 +423,7 @@ function setup_chatview(Thread $thread) { = $style_config['mail']['window_params']; // Load core style options - $style_config = get_core_style_config(); + $style_config = get_core_style_config(get_operator_pages_style()); $data['chat']['windowsParams']['history'] = $style_config['history']['window_params']; diff --git a/src/mibew/libs/classes/settings.php b/src/mibew/libs/classes/settings.php index 1cd92808..c4a759db 100644 --- a/src/mibew/libs/classes/settings.php +++ b/src/mibew/libs/classes/settings.php @@ -67,6 +67,7 @@ Class Settings { 'usernamepattern' => '{name}', 'chatstyle' => 'default', 'invitationstyle' => 'default', + 'operator_pages_style' => 'default', 'chattitle' => 'Live Support', 'geolink' => 'http://api.hostip.info/get_html.php?ip={ip}', 'geolinkparams' => 'width=440,height=100,toolbar=0,scrollbars=0,location=0,status=1,menubar=0,resizable=1', diff --git a/src/mibew/libs/common/configurations.php b/src/mibew/libs/common/configurations.php index b6d4af3c..829b95ea 100644 --- a/src/mibew/libs/common/configurations.php +++ b/src/mibew/libs/common/configurations.php @@ -34,12 +34,12 @@ function read_config_file($file) { * * @return array Configuration array */ -function get_core_style_config() { +function get_core_style_config($style) { // Get root dir of mibew messanger $base_path = realpath(dirname(dirname(dirname(__FILE__)))); // Load config - $config = read_config_file($base_path.'/styles/operator_pages/default/config.ini'); + $config = read_config_file($base_path.'/styles/operator_pages/' . $style . '/config.ini'); // Set default values $config = ($config === false) ? array() : $config; @@ -60,7 +60,8 @@ function get_core_style_config() { ), 'ban' => array( 'window_params' => '' - ) + ), + 'screenshots' => array() ); return $config; diff --git a/src/mibew/libs/common/request.php b/src/mibew/libs/common/request.php index 8f38f8c8..8012850f 100644 --- a/src/mibew/libs/common/request.php +++ b/src/mibew/libs/common/request.php @@ -85,4 +85,13 @@ function getchatstyle() return Settings::get('chatstyle'); } +/** + * Returns name of the current operator pages style + * + * @return string + */ +function get_operator_pages_style() { + return Settings::get('operator_pages_style'); +} + ?> \ No newline at end of file diff --git a/src/mibew/libs/settings.php b/src/mibew/libs/settings.php index 1943a401..c0831111 100644 --- a/src/mibew/libs/settings.php +++ b/src/mibew/libs/settings.php @@ -22,10 +22,11 @@ function setup_settings_tabs($active) getlocal("page_settings.tab.main") => $active != 0 ? "$mibewroot/operator/settings.php" : "", getlocal("page_settings.tab.features") => $active != 1 ? "$mibewroot/operator/features.php" : "", getlocal("page_settings.tab.performance") => $active != 2 ? "$mibewroot/operator/performance.php" : "", - getlocal("page_settings.tab.themes") => $active != 3 ? "$mibewroot/operator/themes.php" : "", + getlocal("page_settings.tab.operator_pages_themes") => $active != 3 ? "$mibewroot/operator/operator_pages_themes.php" : "", + getlocal("page_settings.tab.themes") => $active != 4 ? "$mibewroot/operator/themes.php" : "", ); if (Settings::get('enabletracking')) { - $page['tabs'][getlocal("page_settings.tab.invitationthemes")] = ($active != 4 ? "$mibewroot/operator/invitationthemes.php" : ""); + $page['tabs'][getlocal("page_settings.tab.invitationthemes")] = ($active != 5 ? "$mibewroot/operator/invitationthemes.php" : ""); } } diff --git a/src/mibew/libs/view.php b/src/mibew/libs/view.php index 67b52810..f4d0faad 100644 --- a/src/mibew/libs/view.php +++ b/src/mibew/libs/view.php @@ -16,31 +16,46 @@ */ require_once(dirname(__FILE__).'/common/response.php'); +require_once(dirname(__FILE__).'/common/request.php'); + /** * Renders a view for an operator page * - * At the moment all views are stored in /views folder. + * All views are stored in "styles/operator_pages/" folders. * * $view_name param should include neither full view's path nor its extension. * Just view name. For example, to render and output - * 'styles/operator_pages/default/agents.php' view one should use 'agents' as + * "styles/operator_pages/default/agents.php" view one should use "agents" as * the view name. * - * @param string $view_name Name of the view to render + * @param string $view_name Name of the view to render. + * @param string $style_name Name of the style from which a view should + * be rendered. If this param is empty the value from configurations will + * be used. */ -function render_view($view_name) { +function render_view($view_name, $style_name = NULL) { // Code of this function replaces code from the global scope. Thus we need // to import some variables to make them visible to required views. global $page, $mibewroot, $version, $errors; + if (empty($style_name)) { + if (installation_in_progress()) { + // We currently instal Mibew. Thus we cannot use Database and + // Settings classes. Just use "default" style for installation pages. + $style_name = 'default'; + } else { + $style_name = get_operator_pages_style(); + } + } + // Prepare to output html start_html_output(); // Build full view name. Remove '\' and '/' characters form the specified // view name $full_view_name = dirname(dirname(__FILE__)) . - '/styles/operator_pages/default/views/' . + '/styles/operator_pages/' . $style_name . '/views/' . str_replace("/\\", '', $view_name) . '.php'; // Load and execute the view diff --git a/src/mibew/locales/en/properties b/src/mibew/locales/en/properties index 70f09717..fc6351c2 100644 --- a/src/mibew/locales/en/properties +++ b/src/mibew/locales/en/properties @@ -418,6 +418,7 @@ page_settings.intro=Specify options affecting chat window and common system beha page_settings.tab.features=Optional Services page_settings.tab.main=General page_settings.tab.performance=Performance +page_settings.tab.operator_pages_themes=Operator pages themes preview page_settings.tab.themes=Chat themes preview page_settings.tab.invitationthemes=Invitation themes preview pending.errors.network=Network problems detected. Please refresh the page. @@ -559,6 +560,8 @@ settings.onehostconnections.description=0 allows any number of connections settings.onehostconnections=Max number of threads from one address settings.onlinetimeout.description=Set the number of seconds to show an operator as online. Default is 30 seconds. settings.onlinetimeout=Operator online time threshold +settings.operator_pages_style.description=A preview for each style is available here +settings.operator_pages_style=Select a style for your operator pages settings.popup_notification.description=Small dialog appears to attract your attention. settings.popup_notification=Enable "Popup dialog notification of the new visitor". settings.saved=Changes saved diff --git a/src/mibew/operator/invitationthemes.php b/src/mibew/operator/invitationthemes.php index cec06717..c76c509d 100644 --- a/src/mibew/operator/invitationthemes.php +++ b/src/mibew/operator/invitationthemes.php @@ -39,7 +39,7 @@ $page['availablePreviews'] = $stylelist; $page['operatorName'] = (empty($operator['vclocalname'])?$operator['vccommonname']:$operator['vclocalname']); prepare_menu($operator); -setup_settings_tabs(4); +setup_settings_tabs(5); render_view('invitation_themes'); ?> \ No newline at end of file diff --git a/src/mibew/operator/operator_pages_themes.php b/src/mibew/operator/operator_pages_themes.php new file mode 100644 index 00000000..613dd457 --- /dev/null +++ b/src/mibew/operator/operator_pages_themes.php @@ -0,0 +1,54 @@ + $desc) { + $screenshots[] = array( + 'name' => $name, + 'file' => $mibewroot . '/styles/operator_pages/' . $preview + . '/screenshots/' . $name . '.png', + 'description' => $desc + ); +} + +$page['formpreview'] = $preview; +$page['availablePreviews'] = $stylelist; +$page['screenshotsList'] = $screenshots; + +prepare_menu($operator); +setup_settings_tabs(3); +render_view('operator_pages_themes'); + +?> \ No newline at end of file diff --git a/src/mibew/operator/settings.php b/src/mibew/operator/settings.php index 49ff6a47..84036c1e 100644 --- a/src/mibew/operator/settings.php +++ b/src/mibew/operator/settings.php @@ -30,11 +30,22 @@ $page = array('agentId' => ''); $errors = array(); $stylelist = get_style_list(dirname(dirname(__FILE__)).'/styles/dialogs'); +$operator_pages_style_list = get_style_list(dirname(dirname(__FILE__)).'/styles/operator_pages'); $options = array( - 'email', 'title', 'logo', 'hosturl', 'usernamepattern', - 'chatstyle', 'chattitle', 'geolink', 'geolinkparams', - 'sendmessagekey', 'cron_key'); + 'email', + 'title', + 'logo', + 'hosturl', + 'usernamepattern', + 'operator_pages_style', + 'chatstyle', + 'chattitle', + 'geolink', + 'geolinkparams', + 'sendmessagekey', + 'cron_key' +); if (Settings::get('enabletracking')) { $options[] = 'invitationstyle'; @@ -63,6 +74,11 @@ if (isset($_POST['email']) && isset($_POST['title']) && isset($_POST['logo'])) { $params['chatstyle'] = $stylelist[0]; } + $params['operator_pages_style'] = verifyparam("operator_pages_style", "/^\w+$/", $params['operator_pages_style']); + if (!in_array($params['operator_pages_style'], $operator_pages_style_list)) { + $params['operator_pages_style'] = $operator_pages_style_list[0]; + } + if (Settings::get('enabletracking')) { $params['invitationstyle'] = verifyparam("invitationstyle", "/^\w+$/", $params['invitationstyle']); if (!in_array($params['invitationstyle'], $invitationstylelist)) { @@ -103,6 +119,8 @@ $page['formhosturl'] = topage($params['hosturl']); $page['formgeolink'] = topage($params['geolink']); $page['formgeolinkparams'] = topage($params['geolinkparams']); $page['formusernamepattern'] = topage($params['usernamepattern']); +$page['formoperatorpagesstyle'] = $params['operator_pages_style']; +$page['availableOperatorPagesStyles'] = $operator_pages_style_list; $page['formchatstyle'] = $params['chatstyle']; $page['formchattitle'] = topage($params['chattitle']); $page['formsendmessagekey'] = $params['sendmessagekey']; diff --git a/src/mibew/operator/themes.php b/src/mibew/operator/themes.php index fc9fe76c..48048d6e 100644 --- a/src/mibew/operator/themes.php +++ b/src/mibew/operator/themes.php @@ -52,7 +52,7 @@ $page['availablePreviews'] = $stylelist; $page['screenshotsList'] = $screenshots; prepare_menu($operator); -setup_settings_tabs(3); +setup_settings_tabs(4); render_view('themes'); ?> \ No newline at end of file diff --git a/src/mibew/operator/updates.php b/src/mibew/operator/updates.php index d33009af..13bc5723 100644 --- a/src/mibew/operator/updates.php +++ b/src/mibew/operator/updates.php @@ -42,7 +42,6 @@ foreach ($default_extensions as $ext) { } prepare_menu($operator); -setup_settings_tabs(3); render_view('updates'); ?> \ No newline at end of file diff --git a/src/mibew/operator/users.php b/src/mibew/operator/users.php index cd6f40df..7413958f 100644 --- a/src/mibew/operator/users.php +++ b/src/mibew/operator/users.php @@ -45,7 +45,7 @@ $style_config = get_dialogs_style_config(getchatstyle()); $page['chatStyles.chatWindowParams'] = $style_config['chat']['window_params']; // Load core style options -$style_config = get_core_style_config(); +$style_config = get_core_style_config(get_operator_pages_style()); $page['coreStyles.threadTag'] = $style_config['users']['thread_tag']; $page['coreStyles.visitorTag'] = $style_config['users']['visitor_tag']; $page['coreStyles.trackedUserWindowParams'] = $style_config['tracked']['user_window_params']; diff --git a/src/mibew/styles/operator_pages/default/config.ini b/src/mibew/styles/operator_pages/default/config.ini index 606968be..41a9a913 100644 --- a/src/mibew/styles/operator_pages/default/config.ini +++ b/src/mibew/styles/operator_pages/default/config.ini @@ -23,3 +23,10 @@ window_params = "toolbar=0,scrollbars=0,location=0,status=1,menubar=0,width=640, [ban] ; window_param use as param string in JavaScript window.open method window_params = "toolbar=0,scrollbars=0,location=0,status=1,menubar=0,width=720,height=480,resizable=1" + +; Screenshots section describe all screenshots shiped with style +; Params names should be equals to file names without extension. Pictures +; extension should be '.png' +; Params values should be equals to screenshot desription +[screenshots] +home = "Operator's home page" \ No newline at end of file diff --git a/src/mibew/styles/operator_pages/default/screenshots/home.png b/src/mibew/styles/operator_pages/default/screenshots/home.png new file mode 100644 index 00000000..c433ccd0 Binary files /dev/null and b/src/mibew/styles/operator_pages/default/screenshots/home.png differ diff --git a/src/mibew/styles/operator_pages/default/views/operator_pages_themes.php b/src/mibew/styles/operator_pages/default/views/operator_pages_themes.php new file mode 100644 index 00000000..38c317bf --- /dev/null +++ b/src/mibew/styles/operator_pages/default/views/operator_pages_themes.php @@ -0,0 +1,63 @@ + + + +
+
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+ +
+
+ <?php echo($screenshot['name']); ?> +
+
+ +
+ +
+
+
+ + \ No newline at end of file diff --git a/src/mibew/styles/operator_pages/default/views/settings.php b/src/mibew/styles/operator_pages/default/views/settings.php index 558802a3..6c5c1e93 100644 --- a/src/mibew/styles/operator_pages/default/views/settings.php +++ b/src/mibew/styles/operator_pages/default/views/settings.php @@ -122,6 +122,15 @@ require_once(dirname(__FILE__).'/inc_errors.php');
+
+ +
+ +
+ +
+
+