From 7f2c61c7bde9443b3b6beffdc216fdd7b54b94b7 Mon Sep 17 00:00:00 2001 From: Jared Hancock <jared@osticket.com> Date: Thu, 5 Feb 2015 17:28:13 -0600 Subject: [PATCH] logo: Allow customized SCP logo --- assets/default/css/theme.css | 17 ++++++-- include/class.config.php | 10 +++++ include/class.file.php | 12 ++--- include/client/header.inc.php | 11 ++--- include/staff/header.inc.php | 5 ++- include/staff/login.tpl.php | 5 ++- include/staff/settings-pages.inc.php | 63 +++++++++++++++++++-------- scp/css/login.css | 19 +++++--- scp/css/scp.css | 19 ++++++-- scp/images/header-bg.png | Bin 296 -> 0 bytes scp/images/login-logo.png | Bin 11684 -> 0 bytes scp/logo.php | 35 +++++++++++++++ 12 files changed, 152 insertions(+), 44 deletions(-) delete mode 100644 scp/images/header-bg.png delete mode 100644 scp/images/login-logo.png create mode 100644 scp/logo.php diff --git a/assets/default/css/theme.css b/assets/default/css/theme.css index e50724e19..cac01b19b 100644 --- a/assets/default/css/theme.css +++ b/assets/default/css/theme.css @@ -300,9 +300,20 @@ body { height: 71px; padding: 0 20px; } -#header #logo { - width: 220px; - height: 71px; +#logo { + height: 100%; +} +#header #logo img { + max-height: 65px; + max-width: 380px; + width: auto; + height: auto; + vertical-align: middle; +} +.valign-helper { + height: 100%; + display: inline-block; + vertical-align: middle; } #header p { width: 400px; diff --git a/include/class.config.php b/include/class.config.php index 3683399be..e61c06814 100644 --- a/include/class.config.php +++ b/include/class.config.php @@ -1017,6 +1017,13 @@ class OsticketConfig extends Config { return $this->getLogoId('client'); } + function getStaffLogoId() { + return $this->getLogoId('staff'); + } + function getStaffLogo() { + return $this->getLogo('staff'); + } + function updatePagesSettings($vars, &$errors) { global $ost; @@ -1060,6 +1067,9 @@ class OsticketConfig extends Config { 'client_logo_id' => ( (is_numeric($vars['selected-logo']) && $vars['selected-logo']) ? $vars['selected-logo'] : false), + 'staff_logo_id' => ( + (is_numeric($vars['selected-logo-scp']) && $vars['selected-logo-scp']) + ? $vars['selected-logo-scp'] : false), )); } diff --git a/include/class.file.php b/include/class.file.php index 340f4a63d..99da8c53a 100644 --- a/include/class.file.php +++ b/include/class.file.php @@ -293,7 +293,7 @@ class AttachmentFile { } /* Function assumes the files types have been validated */ - function upload($file, $ft='T') { + function upload($file, $ft='T', $deduplicate=true) { if(!$file['name'] || $file['error'] || !is_uploaded_file($file['tmp_name'])) return false; @@ -309,10 +309,10 @@ class AttachmentFile { 'tmp_name'=>$file['tmp_name'], ); - return AttachmentFile::save($info, $ft); + return AttachmentFile::save($info, $ft, $deduplicate); } - function uploadLogo($file, &$error, $aspect_ratio=3) { + function uploadLogo($file, &$error, $aspect_ratio=2) { /* Borrowed in part from * http://salman-w.blogspot.com/2009/04/crop-to-fit-image-using-aspphp.html */ @@ -337,13 +337,13 @@ class AttachmentFile { $source_aspect_ratio = $source_width / $source_height; if ($source_aspect_ratio >= $aspect_ratio) - return self::upload($file, 'L'); + return self::upload($file, 'L', false); $error = __('Image is too square. Upload a wider image'); return false; } - function save(&$file, $ft='T') { + function save(&$file, $ft='T', $deduplicate=true) { if (isset($file['data'])) { // Allow a callback function to delay or avoid reading or @@ -365,7 +365,7 @@ class AttachmentFile { // If the record exists in the database already, a file with the // same hash and size is already on file -- just return its ID - if (list($id, $key) = db_fetch_row(db_query($sql, false))) { + if ($deduplicate && (list($id, $key) = db_fetch_row(db_query($sql, false)))) { $file['key'] = $key; return $id; } diff --git a/include/client/header.inc.php b/include/client/header.inc.php index 92e9dfe13..5d369f63e 100644 --- a/include/client/header.inc.php +++ b/include/client/header.inc.php @@ -51,11 +51,6 @@ if (($lang = Internationalization::getCurrentLanguage()) <body> <div id="container"> <div id="header"> - <a class="pull-left" id="logo" href="<?php echo ROOT_PATH; ?>index.php" - title="<?php echo __('Support Center'); ?>"><img src="<?php - echo ROOT_PATH; ?>logo.php" border=0 alt="<?php - echo $ost->getConfig()->getTitle(); ?>" - style="height: 5em"></a> <div class="pull-right flush-right"> <p> <?php @@ -95,6 +90,12 @@ if (($all_langs = Internationalization::availableLanguages()) } ?> </p> </div> + <a class="pull-left" id="logo" href="<?php echo ROOT_PATH; ?>index.php" + title="<?php echo __('Support Center'); ?>"> + <span class="valign-helper"></span> + <img src="<?php echo ROOT_PATH; ?>logo.php" border=0 alt="<?php + echo $ost->getConfig()->getTitle(); ?>"> + </a> </div> <div class="clear"></div> <?php diff --git a/include/staff/header.inc.php b/include/staff/header.inc.php index 60079586d..d1c885cf8 100644 --- a/include/staff/header.inc.php +++ b/include/staff/header.inc.php @@ -61,7 +61,6 @@ if (($lang = Internationalization::getCurrentLanguage()) echo sprintf('<div id="notice_bar">%s</div>', $ost->getNotice()); ?> <div id="header"> - <a href="index.php" class="no-pjax pull-left" id="logo">osTicket — <?php echo __('Customer Support System'); ?></a> <p id="info" class="pull-right"><?php echo sprintf(__('Welcome, %s.'), '<strong>'.$thisstaff->getFirstName().'</strong>'); ?> <?php if($thisstaff->isAdmin() && !defined('ADMINPAGE')) { ?> @@ -72,6 +71,10 @@ if (($lang = Internationalization::getCurrentLanguage()) | <a href="profile.php"><?php echo __('My Preferences'); ?></a> | <a href="logout.php?auth=<?php echo $ost->getLinkToken(); ?>" class="no-pjax"><?php echo __('Log Out'); ?></a> </p> + <a href="index.php" class="no-pjax" id="logo"> + <span class="valign-helper"></span> + <img src="logo.php" alt="osTicket — <?php echo __('Customer Support System'); ?>"/> + </a> </div> <div id="pjax-container" class="<?php if ($_POST) echo 'no-pjax'; ?>"> <?php } else { diff --git a/include/staff/login.tpl.php b/include/staff/login.tpl.php index eb2bf80d0..b8a4a8601 100644 --- a/include/staff/login.tpl.php +++ b/include/staff/login.tpl.php @@ -3,7 +3,10 @@ include_once(INCLUDE_DIR.'staff/login.header.php'); $info = ($_POST && $errors)?Format::htmlchars($_POST):array(); ?> <div id="loginBox"> - <h1 id="logo"><a href="index.php">osTicket :: <?php echo __('Staff Control Panel');?></a></h1> + <h1 id="logo"><a href="index.php"> + <span class="valign-helper"></span> + <img src="logo.php?login" alt="osTicket :: <?php echo __('Staff Control Panel');?>" /> + </a></h1> <h3><?php echo Format::htmlchars($msg); ?></h3> <div class="banner"><small><?php echo ($content) ? Format::display($content->getBody()) : ''; ?></small></div> <form action="login.php" method="post"> diff --git a/include/staff/settings-pages.inc.php b/include/staff/settings-pages.inc.php index 3bf1c7877..4d9910b4e 100644 --- a/include/staff/settings-pages.inc.php +++ b/include/staff/settings-pages.inc.php @@ -107,49 +107,74 @@ $pages = Page::getPages(); <tbody> <tr> <td colspan="2"> - <label style="display:block"> +<table style="width:100%"> + <thead><tr> + <th>Client</th> + <th>Staff</th> + <th>Logo</th> + </tr></thead> + <tbody> + <tr> + <td> <input type="radio" name="selected-logo" value="0" style="margin-left: 1em" <?php if (!$ost->getConfig()->getClientLogoId()) echo 'checked="checked"'; ?>/> - <img src="../assets/default/images/logo.png" + </td><td> + <input type="radio" name="selected-logo-scp" value="0" + style="margin-left: 1em" + <?php if (!$ost->getConfig()->getStaffLogoId()) + echo 'checked="checked"'; ?>/> + </td><td> + <img src="<?php echo ROOT_PATH; ?>assets/default/images/logo.png" alt="Default Logo" valign="middle" style="box-shadow: 0 0 0.5em rgba(0,0,0,0.5); margin: 0.5em; height: 5em; vertical-align: middle"/> - </label> - </td></tr> - <tr> - <th colspan="2"> - <em><?php echo __('Use a custom logo'); ?> <i class="help-tip icon-question-sign" href="#upload_a_new_logo"></i></em> - </th> + <img src="<?php echo ROOT_PATH; ?>scp/images/ost-logo.png" + alt="Default Logo" valign="middle" + style="box-shadow: 0 0 0.5em rgba(0,0,0,0.5); + margin: 0.5em; height: 5em; + vertical-align: middle"/> + </td> </tr> - <tr><td colspan="2"> - <?php - $current = $ost->getConfig()->getClientLogoId(); - foreach (AttachmentFile::allLogos() as $logo) { ?> - <div> - <label> + <tr><th colspan="3"> + <em><?php echo __('Use a custom logo'); ?> <i class="help-tip icon-question-sign" href="#upload_a_new_logo"></i></em> + </th></tr> + <?php + $current = $ost->getConfig()->getClientLogoId(); + $currentScp = $ost->getConfig()->getStaffLogoId(); + foreach (AttachmentFile::allLogos() as $logo) { ?> + <tr> + <td> <input type="radio" name="selected-logo" style="margin-left: 1em" value="<?php echo $logo->getId(); ?>" <?php if ($logo->getId() == $current) echo 'checked="checked"'; ?>/> + </td><td> + <input type="radio" name="selected-logo-scp" + style="margin-left: 1em" value="<?php + echo $logo->getId(); ?>" <?php + if ($logo->getId() == $currentScp) + echo 'checked="checked"'; ?>/> + </td><td> <img src="<?php echo $logo->getDownloadUrl(); ?>" alt="Custom Logo" valign="middle" style="box-shadow: 0 0 0.5em rgba(0,0,0,0.5); margin: 0.5em; height: 5em; vertical-align: middle;"/> - </label> - <?php if ($logo->getId() != $current) { ?> + <?php if ($logo->getId() != $current && $logo->getId() != $currentScp) { ?> <label> <input type="checkbox" name="delete-logo[]" value="<?php echo $logo->getId(); ?>"/> <?php echo __('Delete'); ?> </label> <?php } ?> - </div> - <?php } ?> - <br/> + </td> + </tr> +<?php } ?> + </tbody> +</table> <b><?php echo __('Upload a new logo'); ?>:</b> <input type="file" name="logo[]" size="30" value="" /> <font class="error"><br/><?php echo $errors['logo']; ?></font> diff --git a/scp/css/login.css b/scp/css/login.css index 99f8f1220..8998e3883 100644 --- a/scp/css/login.css +++ b/scp/css/login.css @@ -69,12 +69,21 @@ h1 { #logo a { display:block; - width:180px; - height:72px; text-decoration:none; - text-indent:-9999px; - background:url(../images/login-logo.png); - margin:0 auto 1em auto; + height: 100px; +} + +#logo a img { + max-height:72px; + max-width: 300px; + height: auto; + width: auto; + vertical-align: middle; +} +.valign-helper { + height: 100%; + display: inline-block; + vertical-align: middle; } h3 { diff --git a/scp/css/scp.css b/scp/css/scp.css index 2fe63818d..27599c269 100644 --- a/scp/css/scp.css +++ b/scp/css/scp.css @@ -100,12 +100,23 @@ div#header a { #logo { display:block; - width:190px; - height:76px; text-decoration:none; outline:none; - text-indent:-9999px; - background:url(../images/ost-logo.png) top left no-repeat; + height: 76px; + max-width: 400px; +} +#logo img { + max-height: 76px; + max-width: 300px; + height: auto; + width: auto; + padding-left: 10px; + vertical-align: middle; +} +.valign-helper { + height: 100%; + display: inline-block; + vertical-align: middle; } #header p { diff --git a/scp/images/header-bg.png b/scp/images/header-bg.png deleted file mode 100644 index dc3e1d5c51f1a9c7b58c5a5b8c423a0152c72767..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 296 zcmeAS@N?(olHy`uVBq!ia0y~yVDMpJVDRN&VqjosUMYH$fq{Xuz$3Dlfq`2Xgc%uT z&5>YWU|>mi^mSxl*w|O|J8&`s1A{`cN02WALzOB6LqjtI!_WT=3=J<C7)lKo7+xhX zFj&oCU=Yur6o1r>fq`M3r;B4q#jQ6tZwfXj@HjX!e~DL+FF6$0z?%_aeWUWBRC3S9 zl>bqhs`f@omy|!J?_s@}wbskY%1K7iON%ozMzMFbbpIqTt<3VRYQ5SjDogH$db*!j z{p4P>rw0tI7f@A10+;ux=l>9A;{2)pB#Qge4y~0-CQX=NzW$`;@<P*fUUeKdtNr_J g7#JA-|7T{H@y<rWRBZK01_lNOPgg&ebxsLQ0J_0mF8}}l diff --git a/scp/images/login-logo.png b/scp/images/login-logo.png deleted file mode 100644 index 6526ebe0a15f393382e0339b38cef8422d7ff471..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11684 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 B9ohf@ diff --git a/scp/logo.php b/scp/logo.php new file mode 100644 index 000000000..ab6bacdf5 --- /dev/null +++ b/scp/logo.php @@ -0,0 +1,35 @@ +<?php +/********************************************************************* + logo.php + + Simple logo to facilitate serving a customized client-side logo from + osTicet. The logo is configurable in Admin Panel -> Settings -> Pages + + Peter Rotich <peter@osticket.com> + Jared Hancock <jared@osticket.com> + Copyright (c) 2006-2013 osTicket + http://www.osticket.com + + Released under the GNU General Public License WITHOUT ANY WARRANTY. + See LICENSE.TXT for details. + + vim: expandtab sw=4 ts=4 sts=4: +**********************************************************************/ + +// Don't update the session for inline image fetches +if (!function_exists('noop')) { function noop() {} } +session_set_save_handler('noop','noop','noop','noop','noop','noop'); +define('DISABLE_SESSION', true); + +require_once('../main.inc.php'); + +if (($logo = $ost->getConfig()->getStaffLogo())) { + $logo->display(); +} else { + if (isset($_GET['login'])) + header('Location: images/login-logo.png'); + else + header('Location: images/ost-logo.png'); +} + +?> -- GitLab