Răsfoiți Sursa

Start to Steam Auto Update Functionality

own3mall 9 ani în urmă
părinte
comite
507346bec6

BIN
images/auto_update.png


+ 18 - 0
includes/functions.php

@@ -568,4 +568,22 @@ function getClientIPAddress(){
 		return $_SERVER['REMOTE_ADDR'];
 	}
 }
+
+function getOGPSiteURL(){
+	$url = '';
+	$scheme = ( isset($_SERVER['HTTPS']) and get_true_boolean($_SERVER['HTTPS']) ) ? "https://" : "http://";
+	$url .= $scheme . $_SERVER['HTTP_HOST'];
+	if(!empty($_SERVER['REQUEST_URI'])){
+		$lastSlash = strrpos($_SERVER['REQUEST_URI'], "/");
+		if($lastSlash !== false){
+			$url .= substr($_SERVER['REQUEST_URI'], 0, $lastSlash);
+		}
+	}	
+	
+	if(!empty($url)){
+		return $url;
+	}
+	
+	return false;
+}
 ?>

+ 9 - 0
includes/view.php

@@ -134,6 +134,12 @@ class OGPView {
 		// Include jQuery, jQuery UI, and our global CSS file in the header code
 		$this->header_code .= '<link rel="stylesheet" href="js/jquery/ui/jquery-ui.min.css">';
 		$this->header_code .= '<script type="text/javascript" src="js/jquery/jquery.min.js"></script><script type="text/javascript" src="js/jquery/ui/jquery-ui.min.js"></script>';
+		
+		// Include magnific popup
+		$this->header_code .= '<script type="text/javascript" src="js/magnific/magnific.js"></script>';
+		$this->header_code .= '<link rel="stylesheet" href="js/magnific/magnific.css">';
+		
+		// Include our global JS and CSS
 		$this->header_code .= '<script type="text/javascript" src="js/global.js"></script>';
 		$this->header_code .= '<link rel="stylesheet" href="css/global.css">';
 		
@@ -186,6 +192,9 @@ class OGPView {
         {
             $footer .= "<div class='footer center'>".get_lang('copyright')." &copy; <a href=\"http://www.opengamepanel.org\">Open Game Panel</a> " . date("Y") . " - ".get_lang('all_rights_reserved').".</div>";
         }
+        
+        // Add our magnific popup holder to the page (hidden element):
+        $footer .= '<div class="mangificWrapper hide"><div class="white-popup"><div class="magnificTitle"></div><div class="magnificSubTitle"></div><div class="magnificContentsDiv"></div><button title="Close (Esc)" type="button" class="mfp-close">&times;</button></div></div>';
 		
 		if (!isset($_GET['action']))
 		{

+ 60 - 0
js/global.js

@@ -6,6 +6,66 @@ function wireClicks(){
 	$("span.versionInfo").click(function(e){
 		handleVersionClick();
 	});
+	
+	$(".getAutoUpdateLink").click(function(e){
+		showSteamUpdateLink($(this));
+	});
+}
+
+function showSteamUpdateLink(elem){
+	$("div.mangificWrapper .magnificTitle").text($(elem).attr('autoupdatetext'));
+	$("div.mangificWrapper .magnificContentsDiv").html('<p>' + $(elem).attr('autoupdatehtml') + '</p><p><input class="updateLink" style="width: 75%;" type="text" value="' + $(elem).attr('autoupdatelink') + '"><button class="copyButton">' + $(elem).attr('copyme') + '</button>&nbsp; <span class="copyStatus"></span></p>');
+		
+	showPopup(function(){
+		$("input.updateLink").click(function(e){
+			$(this).select();
+		});
+		
+		$(".copyButton").click(function(e){
+			copyInput($("input.updateLink"), $("span.copyStatus"), elem);
+		});
+		
+		copyInput($("input.updateLink"), $("span.copyStatus"), elem);
+	});
+}
+
+function copyInput(input, resultArea, elemWithAttr){
+	$(input).select();
+	var successful = document.execCommand('copy');
+	var msg = successful ? 'successful' : 'unsuccessful';
+	logToConsole('Copying text command was ' + msg);
+	if(successful){
+		$(resultArea).text($(elemWithAttr).attr('copysuccess'));
+	}else{
+		$(resultArea).text($(elemWithAttr).attr('copyfail'));
+	}
+}
+
+function showPopup(onOpen, onClose){
+	$.magnificPopup.open({
+		items: {
+			src: $("div.mangificWrapper div.white-popup"),
+			type: 'inline'
+		},
+		callbacks: {
+			close: function() {
+				cleanupPopup();
+				if(!isUndefinedOrEmptyValue(onClose) && jQuery.isFunction(onClose)){
+					onClose();
+				}
+			},
+			open: function() {
+				if(!isUndefinedOrEmptyValue(onOpen) && jQuery.isFunction(onOpen)){
+					onOpen();
+				}
+			}
+		}
+	});
+}
+
+function cleanupPopup(){
+	$("div.mangificWrapper .magnificTitle").text('');
+	$("div.mangificWrapper .magnificContentsDiv").html('');
 }
 
 function handleVersionClick(){

+ 406 - 0
js/magnific/magnific.css

@@ -0,0 +1,406 @@
+/* Magnific Popup CSS */
+.mfp-bg {
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  z-index: 1042;
+  overflow: hidden;
+  position: fixed;
+  background: #0b0b0b;
+  opacity: 0.89;
+  filter: alpha(opacity=89); }
+
+.mfp-wrap {
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  z-index: 1043;
+  position: fixed;
+  outline: none !important;
+  -webkit-backface-visibility: hidden; }
+
+.mfp-container {
+  text-align: center;
+  position: absolute;
+  width: 100%;
+  height: 100%;
+  left: 0;
+  top: 0;
+  padding: 0 8px;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box; }
+
+.mfp-container:before {
+  content: '';
+  display: inline-block;
+  height: 100%;
+  vertical-align: middle; }
+
+.mfp-align-top .mfp-container:before {
+  display: none; }
+
+.mfp-content {
+  position: relative;
+  display: inline-block;
+  vertical-align: middle;
+  margin: 0 auto;
+  text-align: left;
+  z-index: 1045; }
+
+.mfp-inline-holder .mfp-content, .mfp-ajax-holder .mfp-content {
+  width: 50%;
+  cursor: auto;
+  margin-left:auto;
+  margin-right: auto; }
+
+.mfp-ajax-cur {
+  cursor: progress; }
+
+.mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close {
+  cursor: -moz-zoom-out;
+  cursor: -webkit-zoom-out;
+  cursor: zoom-out; }
+
+.mfp-zoom {
+  cursor: pointer;
+  cursor: -webkit-zoom-in;
+  cursor: -moz-zoom-in;
+  cursor: zoom-in; }
+
+.mfp-auto-cursor .mfp-content {
+  cursor: auto; }
+
+.mfp-close, .mfp-arrow, .mfp-preloader, .mfp-counter {
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  user-select: none; }
+
+.mfp-loading.mfp-figure {
+  display: none; }
+
+.mfp-hide {
+  display: none !important; }
+
+.mfp-preloader {
+  color: #cccccc;
+  position: absolute;
+  top: 50%;
+  width: auto;
+  text-align: center;
+  margin-top: -0.8em;
+  left: 8px;
+  right: 8px;
+  z-index: 1044; }
+  .mfp-preloader a {
+    color: #cccccc; }
+    .mfp-preloader a:hover {
+      color: white; }
+
+.mfp-s-ready .mfp-preloader {
+  display: none; }
+
+.mfp-s-error .mfp-content {
+  display: none; }
+
+button.mfp-close, button.mfp-arrow {
+  overflow: visible;
+  cursor: pointer;
+  background: transparent;
+  border: 0;
+  -webkit-appearance: none;
+  display: block;
+  outline: none;
+  padding: 0;
+  z-index: 1046;
+  -webkit-box-shadow: none;
+  box-shadow: none; }
+button::-moz-focus-inner {
+  padding: 0;
+  border: 0; }
+
+.mfp-close {
+  width: 44px;
+  height: 44px;
+  line-height: 44px;
+  position: absolute;
+  right: 0;
+  top: 0;
+  text-decoration: none;
+  text-align: center;
+  opacity: 1;
+  filter: alpha(opacity=100);
+  padding: 0 0 18px 10px;
+  color: white;
+  font-style: normal;
+  font-size: 32px;
+  font-family: Arial, Baskerville, monospace; }
+  .mfp-close:hover, .mfp-close:focus {
+    opacity: 1;
+    filter: alpha(opacity=100); }
+
+.mfp-close-btn-in .mfp-close {
+  color: #white; }
+
+.mfp-close-btn-in .mfp-close:hover{
+	background-color: #710b01;
+}
+
+.mfp-image-holder .mfp-close, .mfp-iframe-holder .mfp-close {
+  color: white;
+  right: -6px;
+  text-align: right;
+  padding-right: 6px;
+  width: 100%; }
+
+.mfp-counter {
+  position: absolute;
+  top: 0;
+  right: 0;
+  color: #cccccc;
+  font-size: 12px;
+  line-height: 18px; }
+
+.mfp-arrow {
+  position: absolute;
+  opacity: 0.65;
+  filter: alpha(opacity=65);
+  margin: 0;
+  top: 50%;
+  margin-top: -55px;
+  padding: 0;
+  width: 90px;
+  height: 110px;
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0); }
+  .mfp-arrow:active {
+    margin-top: -54px; }
+  .mfp-arrow:hover, .mfp-arrow:focus {
+    opacity: 1;
+    filter: alpha(opacity=100); }
+  .mfp-arrow:before, .mfp-arrow:after, .mfp-arrow .mfp-b, .mfp-arrow .mfp-a {
+    content: '';
+    display: block;
+    width: 0;
+    height: 0;
+    position: absolute;
+    left: 0;
+    top: 0;
+    margin-top: 35px;
+    margin-left: 35px;
+    border: medium inset transparent; }
+  .mfp-arrow:after, .mfp-arrow .mfp-a {
+    border-top-width: 13px;
+    border-bottom-width: 13px;
+    top: 8px; }
+  .mfp-arrow:before, .mfp-arrow .mfp-b {
+    border-top-width: 21px;
+    border-bottom-width: 21px;
+    opacity: 0.7; }
+
+.mfp-arrow-left {
+  left: 0; }
+  .mfp-arrow-left:after, .mfp-arrow-left .mfp-a {
+    border-right: 17px solid white;
+    margin-left: 31px; }
+  .mfp-arrow-left:before, .mfp-arrow-left .mfp-b {
+    margin-left: 25px;
+    border-right: 27px solid #3f3f3f; }
+
+.mfp-arrow-right {
+  right: 0; }
+  .mfp-arrow-right:after, .mfp-arrow-right .mfp-a {
+    border-left: 17px solid white;
+    margin-left: 39px; }
+  .mfp-arrow-right:before, .mfp-arrow-right .mfp-b {
+    border-left: 27px solid #3f3f3f; }
+
+.mfp-iframe-holder {
+  padding-top: 40px;
+  padding-bottom: 40px; }
+  .mfp-iframe-holder .mfp-content {
+    line-height: 0;
+    width: 100%;
+    max-width: 900px; }
+  .mfp-iframe-holder .mfp-close {
+    top: -40px; }
+
+.mfp-iframe-scaler {
+  width: 100%;
+  height: 0;
+  overflow: hidden;
+  padding-top: 56.25%; }
+  .mfp-iframe-scaler iframe {
+    position: absolute;
+    display: block;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
+    background: black; }
+
+/* Main image in popup */
+img.mfp-img {
+  width: auto;
+  max-width: 100%;
+  height: auto;
+  display: block;
+  line-height: 0;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  padding: 40px 0 40px;
+  margin: 0 auto; }
+
+/* The shadow behind the image */
+.mfp-figure {
+  line-height: 0; }
+  .mfp-figure:after {
+    content: '';
+    position: absolute;
+    left: 0;
+    top: 40px;
+    bottom: 40px;
+    display: block;
+    right: 0;
+    width: auto;
+    height: auto;
+    z-index: -1;
+    box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
+    background: #444444; }
+  .mfp-figure small {
+    color: #bdbdbd;
+    display: block;
+    font-size: 12px;
+    line-height: 14px; }
+  .mfp-figure figure {
+    margin: 0; }
+
+.mfp-bottom-bar {
+  margin-top: -36px;
+  position: absolute;
+  top: 100%;
+  left: 0;
+  width: 100%;
+  cursor: auto; }
+
+.mfp-title {
+  text-align: left;
+  line-height: 18px;
+  color: #f3f3f3;
+  word-wrap: break-word;
+  padding-right: 36px; }
+
+.mfp-image-holder .mfp-content {
+  max-width: 100%; }
+
+.mfp-gallery .mfp-image-holder .mfp-figure {
+  cursor: pointer; }
+
+@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) {
+  /**
+       * Remove all paddings around the image on small screen
+       */
+  .mfp-img-mobile .mfp-image-holder {
+    padding-left: 0;
+    padding-right: 0; }
+  .mfp-img-mobile img.mfp-img {
+    padding: 0; }
+  .mfp-img-mobile .mfp-figure:after {
+    top: 0;
+    bottom: 0; }
+  .mfp-img-mobile .mfp-figure small {
+    display: inline;
+    margin-left: 5px; }
+  .mfp-img-mobile .mfp-bottom-bar {
+    background: rgba(0, 0, 0, 0.6);
+    bottom: 0;
+    margin: 0;
+    top: auto;
+    padding: 3px 5px;
+    position: fixed;
+    -webkit-box-sizing: border-box;
+    -moz-box-sizing: border-box;
+    box-sizing: border-box; }
+    .mfp-img-mobile .mfp-bottom-bar:empty {
+      padding: 0; }
+  .mfp-img-mobile .mfp-counter {
+    right: 5px;
+    top: 3px; }
+  .mfp-img-mobile .mfp-close {
+    top: 0;
+    right: 0;
+    width: 35px;
+    height: 35px;
+    line-height: 35px;
+    background: rgba(0, 0, 0, 0.6);
+    position: fixed;
+    text-align: center;
+    padding: 0; } }
+
+@media all and (max-width: 900px) {
+  .mfp-arrow {
+    -webkit-transform: scale(0.75);
+    transform: scale(0.75); }
+  .mfp-arrow-left {
+    -webkit-transform-origin: 0;
+    transform-origin: 0; }
+  .mfp-arrow-right {
+    -webkit-transform-origin: 100%;
+    transform-origin: 100%; }
+  .mfp-container {
+    padding-left: 6px;
+    padding-right: 6px; } }
+
+.mfp-ie7 .mfp-img {
+  padding: 0; }
+.mfp-ie7 .mfp-bottom-bar {
+  width: 600px;
+  left: 50%;
+  margin-left: -300px;
+  margin-top: 5px;
+  padding-bottom: 5px; }
+.mfp-ie7 .mfp-container {
+  padding: 0; }
+.mfp-ie7 .mfp-content {
+  padding-top: 44px; }
+.mfp-ie7 .mfp-close {
+  top: 0;
+  right: 0;
+  padding-top: 0; }
+
+.magnificTitle{
+	background-color: #404040;
+	color: white;
+	font-family: 'arial'; 
+	font-weight: bold;
+	font-size: 22px;
+	padding-left: 10px;
+	height:34px;
+	line-height:34px;
+}
+.magnificSubTitle{
+	background-color: #404040;
+	color: white;
+	font-family: 'arial';
+	font-size:16px;
+	font-weight: bold;
+	padding-left: 10px;
+}
+
+.magnificContentsDiv{
+	overflow: auto;
+	padding-left: 10px;
+	text-align: left;
+}
+
+.magnificContentsDiv p{
+	text-align: left !important;
+}
+
+.white-popup{
+	background-color:white;
+	border: 10px solid #404040;
+}

Fișier diff suprimat deoarece este prea mare
+ 2 - 0
js/magnific/magnific.js


+ 7 - 1
lang/Portuguese/modules/gamemanager.php

@@ -186,4 +186,10 @@ define('view_player_commands', "View Player Commands");
 define('hide_player_commands', "Hide Player Commands");
 define('no_online_players', "There are no online players.");
 define('invalid_game_mod_id', "Invalid Game/Mod ID specified.");
-?>
+define('auto_update_title_popup', "Steam Auto Update Link");
+define('auto_update_popup_html', "<p>Use the link below to check and automatically update your game server via Steam if needed.&nbsp; You can query it using a cronjob or manually initiate the process.</p>");
+define('auto_update_copy_me', "Copy");
+define('auto_update_copy_me_success', "Copied!");
+define('auto_update_copy_me_fail', "Failed to copy. Please manually copy the link.");
+define('get_steam_autoupdate_api_link', "Auto Update Link");
+?>

+ 4 - 0
modules/gamemanager/server_monitor.php

@@ -380,6 +380,10 @@ function exec_ogp_module() {
 									"_".$server_home['port'].".submit()' ><img style='border:0;height:40px;vertical-align:middle;' src='" . check_theme_image("images/steam.png") . "' />".
 									"<br /><span style='font-weight:bold;'>". install_update_steam .
 									"</span></td></tr>\n</table>\n</form>";
+									
+						$manager .= "<table align='right' class='monitorbutton getAutoUpdateLink' copyfail='" . auto_update_copy_me_fail . "' copysuccess='" . auto_update_copy_me_success . "' autoupdatetext='" . auto_update_title_popup . "' autoupdatehtml='" . htmlentities(auto_update_popup_html) . "' copyme='" . auto_update_copy_me . "' autoupdatelink='" . getOGPSiteURL() . "/api.php?action=autoUpdateSteamHome&homeid=" . $server_home['home_id'] . "&controlpass=" . $server_home['control_password'] . "'>\n".
+									"<tr><td align='middle'><img style='border:0;height:40px;vertical-align:middle;' src='" . check_theme_image("images/auto_update.png") . "' />".
+									"<br /><span style='font-weight:bold;'>". get_steam_autoupdate_api_link . "</span></td></tr>\n</table>\n";
 					}
 					// In other cases manual update is provided.
 					else

Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff