diff --git a/plugins/update-check.user.js b/plugins/update-check.user.js index 29ea1a3a..f58cc1f3 100644 --- a/plugins/update-check.user.js +++ b/plugins/update-check.user.js @@ -71,15 +71,19 @@ window.plugin.updateCheck.versionDataCallback = function(data) { s.parentNode.removeChild(s); } - dialog({ - text: JSON.stringify(data,null,2), - title: 'debug version check', - width: 700 - }); - window.plugin.updateCheck.showReport(data); } +window.plugin.updateCheck.versionHTML = function(ver) { + var re = new RegExp ('^([0-9]+\\.[0-9]+\\.[0-9]+)(\\.2[0-9][0-9][0-9][01][0-9][0123][0-9]\\.[0-9]+)$'); + var match = ver.match(re); + if (match) { + return match[1]+''+match[2]+''; + } else { + return ver; + } +} + window.plugin.updateCheck.compareDetails = function(web_version, script_version) { // compare the local script version data with the website version data // and return an object with the results @@ -101,9 +105,27 @@ window.plugin.updateCheck.compareDetails = function(web_version, script_version) } + var webVerHTML = result.webVersion && window.plugin.updateCheck.versionHTML(result.webVersion); + var localVerHTML = result.localVersion && window.plugin.updateCheck.versionHTML(result.localVersion); + var webLinkInstallHTML = ''; + if (result.downloadUrl && result.webUrl) { + webLinkInstallHTML = 'web ' + + 'install'; + } + if (!result.localVersion) { - + result.html = 'version check failed '+webLinkInstallHTML; } else if (!result.webVersion) { + result.html = 'version check failed'; + } else if (result.upToDate) { + result.html = 'up to date'; + } else if (result.outOfDate) { + result.html = 'out of date '+webLinkInstallHTML; + } else if (result.localNewer) { + result.html = localVerHTML+' is newer than '+webVerHTML+'(?!)'; + } else { + console.warn ('Unknown case of version combinations!'); + result.html = 'version check failed(!?)'; } return result; @@ -111,7 +133,7 @@ window.plugin.updateCheck.compareDetails = function(web_version, script_version) window.plugin.updateCheck.showReport = function(data) { - var result = 'WORK IN PROGRESS - NOT YET FUNCTIONAL'; + var result = 'WORK IN PROGRESS'; if (data.error) { result += '
Error checking for updates
'+data.error+'
'; @@ -121,10 +143,8 @@ window.plugin.updateCheck.showReport = function(data) { } if (data.iitc && window.script_info) { - var compare = window.plugin.updateCheck.compareDetails(data.iitc, window.script_info); - - result += '
IITC Main script: '+JSON.stringify(compare)+'
'; + result += '
IITC Main script: '+compare.html+'
'; } else { if (!data.iitc) { @@ -135,11 +155,38 @@ window.plugin.updateCheck.showReport = function(data) { } } + if (data.plugins && window.bootPlugins) { + result += '
Plugins:
'; + } } dialog({ - width: 500, + width: 700, title: 'Update check', html: result }); diff --git a/website/versioncheck.php b/website/versioncheck.php index 479d371c..35e24574 100644 --- a/website/versioncheck.php +++ b/website/versioncheck.php @@ -82,7 +82,6 @@ else $data = json_encode ( $response ); -$data = indent($data); # send the response - allow either jsonp (using a 'callback' parameter), or regular json @@ -106,63 +105,3 @@ else } -// http://www.daveperrett.com/articles/2008/03/11/format-json-with-php/ -/** - * Indents a flat JSON string to make it more human-readable. - * - * @param string $json The original JSON string to process. - * - * @return string Indented version of the original JSON string. - */ -function indent($json) { - - $result = ''; - $pos = 0; - $strLen = strlen($json); - $indentStr = ' '; - $newLine = "\n"; - $prevChar = ''; - $outOfQuotes = true; - - for ($i=0; $i<=$strLen; $i++) { - - // Grab the next character in the string. - $char = substr($json, $i, 1); - - // Are we inside a quoted string? - if ($char == '"' && $prevChar != '\\') { - $outOfQuotes = !$outOfQuotes; - - // If this character is the end of an element, - // output a new line and indent the next line. - } else if(($char == '}' || $char == ']') && $outOfQuotes) { - $result .= $newLine; - $pos --; - for ($j=0; $j<$pos; $j++) { - $result .= $indentStr; - } - } - - // Add the character to the result string. - $result .= $char; - - // If the last character was the beginning of an element, - // output a new line and indent the next line. - if (($char == ',' || $char == '{' || $char == '[') && $outOfQuotes) { - $result .= $newLine; - if ($char == '{' || $char == '[') { - $pos ++; - } - - for ($j = 0; $j < $pos; $j++) { - $result .= $indentStr; - } - } - - $prevChar = $char; - } - - return $result; -} - -?>