From e8ee6815b7a0fdf9b35c5a3ee8546c5c836b5815 Mon Sep 17 00:00:00 2001 From: Silvan Calarco Date: Mon, 27 Apr 2015 23:38:38 +0200 Subject: [PATCH] Complete webbuild integration in wordpress theme --- header-webbuild.php | 1 + scripts/webbuild/webbuild.js | 382 +++++++++++++++++++++++++++++++++++ webbuild.js.inc | 3 +- 3 files changed, 384 insertions(+), 2 deletions(-) create mode 100644 scripts/webbuild/webbuild.js diff --git a/header-webbuild.php b/header-webbuild.php index 3a62312..7c1a429 100644 --- a/header-webbuild.php +++ b/header-webbuild.php @@ -76,6 +76,7 @@ print '' . PHP_EOL; print '' . PHP_EOL; print '' . PHP_EOL; +print '' . PHP_EOL; $file = fopen(get_stylesheet_directory() . "/webbuild.js.inc", "r"); print fread($file, 20000); diff --git a/scripts/webbuild/webbuild.js b/scripts/webbuild/webbuild.js new file mode 100644 index 0000000..dd3263c --- /dev/null +++ b/scripts/webbuild/webbuild.js @@ -0,0 +1,382 @@ +function getUrlVars() { + var vars = {}; + var parts = window.location.href.replace(/[?&]+([^=&#]+)=([^&#]*)/gi, function(m,key,value) { + vars[key] = value; + }); + return vars; +} + +function getCheckedValuesByName(checkboxname) { + var e=document.getElementsByName(checkboxname); + var p=""; + + for (var j=0;j= len) return true; + return false; + return false; +} + +function suggestSpecName(url) { + var version=""; + var url=document.getElementById("speccreateurl").value; + if (url.indexOf('?') > 0) url=url.substring(0,url.indexOf('?')); + var specname=url.substring(url.lastIndexOf('/')+1); + var extension; + while (i=specname.lastIndexOf('.')) { + e=specname.substring(i); + if (e != ".tar" && e != ".gz" && e != ".zip" && e != ".bz2" && + e != ".xz" && e != ".tgz" && e != ".zip" && e != ".src" && + e != ".orig" && e != ".gem" ) break; + extension=specname.substring(i+1); + specname=specname.substring(0,i); + } + i=specname.lastIndexOf('_'); + e=specname.substring(i); + if (e == "_src" || e == "_orig") specname=specname.substring(0,i); + i=specname.lastIndexOf('-'); + e=specname.substring(i); + if (e == "-src" || e == "-orig") specname=specname.substring(0,i); + if (specname.lastIndexOf('-') > 0) { + version=specname.substring(specname.lastIndexOf('-')+1); + specname=specname.substring(0,specname.lastIndexOf('-')); + } else if (specname.lastIndexOf('_') > 0) { + version=specname.substring(specname.lastIndexOf('_')+1); + specname=specname.substring(0,specname.lastIndexOf('_')); + } + document.getElementById("speccreateurl").value=url; + if (url.search("cpan.org") >= 0) { + specname="perl-"+specname; + } else if (url.search("haskell.org") >= 0) { + specname="ghc-"+specname; + } else if (extension == "gem") { + specname="ruby-"+specname; + } else { + specname=specname.toLowerCase(); + } + if ((url.search("git://") >= 0) || (url.indexOf(".git", url.length - 4) != -1)) { + document.getElementById("speccreategitbranch").disabled=false; + } else { + document.getElementById("speccreategitbranch").disabled=true; + document.getElementById("speccreateversion").value=version; + } + if (url.indexOf(".git", url.length - 4) != -1) { + document.getElementById("speccreategitbranch").value="master"; + specname=specname.substring(0,specname.lastIndexOf('.git')); + } + document.getElementById("speccreatename").value=specname; + if (url) { + document.getElementById("speccreatename").disabled=false; + document.getElementById("speccreateversion").disabled=false; + document.getElementById("speccreatetype").disabled=false; + document.getElementById("speccreatebutton").disabled=false; + } else { + document.getElementById("speccreatename").disabled=true; + document.getElementById("speccreateversion").disabled=true; + document.getElementById("speccreatetype").disabled=true; + document.getElementById("speccreatebutton").disabled=true; + } + if (extension == "gem") { + for (var j=0;j= 0) { + for (var j=0;j= 0) || (specname.substring(0,2) == "py")) { + for (var j=0;j= 0) { + for (var j=0;j'); + if(data) + { + for(var i in data) + { + jQuery('').appendTo(form); + } + } + var oldElement = jQuery('#' + fileElementId); + var newElement = jQuery(oldElement).clone(); + jQuery(oldElement).attr('id', fileId); + jQuery(oldElement).before(newElement); + jQuery(oldElement).appendTo(form); + + + + //set attributes + jQuery(form).css('position', 'absolute'); + jQuery(form).css('top', '-1200px'); + jQuery(form).css('left', '-1200px'); + jQuery(form).appendTo('body'); + return form; + }, + + ajaxFileUpload: function(s) { + // TODO introduce global settings, allowing the client to modify them for all requests, not only timeout + s = jQuery.extend({}, jQuery.ajaxSettings, s); + var id = new Date().getTime() + var form = $.createUploadForm(id, s.fileElementId, (typeof(s.data)=='undefined'?false:s.data)); + var io = $.createUploadIframe(id, s.secureuri); + var frameId = 'jUploadFrame' + id; + var formId = 'jUploadForm' + id; + // Watch for a new set of requests + if ( s.global && ! jQuery.active++ ) + { + jQuery.event.trigger( "ajaxStart" ); + } + var requestDone = false; + // Create the request object + var xml = {} + if ( s.global ) + jQuery.event.trigger("ajaxSend", [xml, s]); + // Wait for a response to come back + var uploadCallback = function(isTimeout) + { + var io = document.getElementById(frameId); + try + { + if(io.contentWindow) + { + xml.responseText = io.contentWindow.document.body?io.contentWindow.document.body.innerHTML:null; + xml.responseXML = io.contentWindow.document.XMLDocument?io.contentWindow.document.XMLDocument:io.contentWindow.document; + + }else if(io.contentDocument) + { + xml.responseText = io.contentDocument.document.body?io.contentDocument.document.body.innerHTML:null; + xml.responseXML = io.contentDocument.document.XMLDocument?io.contentDocument.document.XMLDocument:io.contentDocument.document; + } + }catch(e) + { + $.handleError(s, xml, null, e); + } + if ( xml || isTimeout == "timeout") + { + requestDone = true; + var status; + try { + status = isTimeout != "timeout" ? "success" : "error"; + // Make sure that the request was successful or notmodified + if ( status != "error" ) + { + // process the data (runs the xml through httpData regardless of callback) + var data = $.uploadHttpData( xml, s.dataType ); + // If a local callback was specified, fire it and pass it the data + if ( s.success ) + s.success( data, status ); + + // Fire the global callback + if( s.global ) + jQuery.event.trigger( "ajaxSuccess", [xml, s] ); + } else + $.handleError(s, xml, status); + } catch(e) + { + status = "error"; + $.handleError(s, xml, status, e); + } + + // The request was completed + if( s.global ) + jQuery.event.trigger( "ajaxComplete", [xml, s] ); + + // Handle the global AJAX counter + if ( s.global && ! --jQuery.active ) + jQuery.event.trigger( "ajaxStop" ); + + // Process result + if ( s.complete ) + s.complete(xml, status); + + jQuery(io).unbind() + + setTimeout(function() + { try + { + jQuery(io).remove(); + jQuery(form).remove(); + + } catch(e) + { + $.handleError(s, xml, null, e); + } + + }, 100) + + xml = null + + } + } + // Timeout checker + if ( s.timeout > 0 ) + { + setTimeout(function(){ + // Check to see if the request is still happening + if( !requestDone ) uploadCallback( "timeout" ); + }, s.timeout); + } + try + { + + var form = jQuery('#' + formId); + jQuery(form).attr('action', s.url); + jQuery(form).attr('method', 'POST'); + jQuery(form).attr('target', frameId); + if(form.encoding) + { + jQuery(form).attr('encoding', 'multipart/form-data'); + } + else + { + jQuery(form).attr('enctype', 'multipart/form-data'); + } + jQuery(form).submit(); + + } catch(e) + { + $.handleError(s, xml, null, e); + } + + jQuery('#' + frameId).load(uploadCallback ); + return {abort: function () {}}; + + }, + + uploadHttpData: function( r, type ) { + var data = !type; + data = type == "xml" || data ? r.responseXML : r.responseText; + // If the type is "script", eval it in global context + if ( type == "script" ) + jQuery.globalEval( data ); + // Get the JavaScript object, if JSON is used. + if ( type == "json" ) + eval( "data = " + data ); + // evaluate scripts within html + if ( type == "html" ) + jQuery("
").html(data).evalScripts(); + + return data; + } +}) + +// end ajaxFileUpload diff --git a/webbuild.js.inc b/webbuild.js.inc index 7c8f1fb..eb848df 100644 --- a/webbuild.js.inc +++ b/webbuild.js.inc @@ -1,4 +1,3 @@ -