<?xml version="1.0"?><!-- generator="bbPress" -->

<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
>

<channel>
<title>MachForm Community Forums Topic: Mobile Safari</title>
<link>https://www.machform.com/forums/</link>
<description>MachForm Community Forums Topic: Mobile Safari</description>
<language>en</language>
<pubDate>Mon, 04 May 2026 01:30:19 +0000</pubDate>

<item>
<title>wbrookman on "Mobile Safari"</title>
<link>https://www.machform.com/forums/topic/mobile-safari-1#post-12901</link>
<pubDate>Tue, 15 Nov 2011 04:28:40 +0000</pubDate>
<dc:creator>wbrookman</dc:creator>
<guid isPermaLink="false">12901@https://www.machform.com/forums/</guid>
<description>&#60;p&#62;I am also looking for an answer to this
&#60;/p&#62;</description>
</item>
<item>
<title>genegor on "Mobile Safari"</title>
<link>https://www.machform.com/forums/topic/mobile-safari-1#post-12862</link>
<pubDate>Thu, 03 Nov 2011 09:23:06 +0000</pubDate>
<dc:creator>genegor</dc:creator>
<guid isPermaLink="false">12862@https://www.machform.com/forums/</guid>
<description>&#60;p&#62;I also need help with the picup.  I see there has been no response here. Still looking.
&#60;/p&#62;</description>
</item>
<item>
<title>TheInsideProject on "Mobile Safari"</title>
<link>https://www.machform.com/forums/topic/mobile-safari-1#post-10508</link>
<pubDate>Mon, 20 Sep 2010 06:34:30 +0000</pubDate>
<dc:creator>TheInsideProject</dc:creator>
<guid isPermaLink="false">10508@https://www.machform.com/forums/</guid>
<description>&#60;p&#62;I have this same issue and would love a resolution. If you can add this code in MachForm can be marketed at business that need forms for there out of office staff.&#60;/p&#62;
&#60;p&#62;Please help
&#60;/p&#62;</description>
</item>
<item>
<title>mbs on "Mobile Safari"</title>
<link>https://www.machform.com/forums/topic/mobile-safari-1#post-10505</link>
<pubDate>Sat, 18 Sep 2010 16:24:42 +0000</pubDate>
<dc:creator>mbs</dc:creator>
<guid isPermaLink="false">10505@https://www.machform.com/forums/</guid>
<description>&#60;p&#62;I use iPhone a lot and have several forms, however uploads are not directly allowed, I have found an app Picup that using javascript will convert the upload field on a machform to take a picture or send a picture from the camera roll. Hovever i am not sure where to put the code in machforms. Any help please. &#60;a href=&#34;http://picupapp.com/.&#34; rel=&#34;nofollow&#34;&#62;http://picupapp.com/.&#60;/a&#62; the picup.js file is this:&#60;/p&#62;
&#60;p&#62;/*&#60;br /&#62;
Picup helper&#60;br /&#62;
================&#60;/p&#62;
&#60;p&#62;About:&#60;br /&#62;
----------------&#60;br /&#62;
The Picup iPhone application allows webapps to request photos from the iPhone device,&#60;br /&#62;
in place of the traditional file input form field. Call Picup.convertFileInput for&#60;br /&#62;
each file input field that allows iPhone photo uploads. This function should be called&#60;br /&#62;
after the document has loaded, such as in an onLoad observer.&#60;/p&#62;
&#60;p&#62;NOTE: Make sure that the client browser is Mobile Safari before you replace the file inputs.&#60;/p&#62;
&#60;p&#62;Examples:&#60;br /&#62;
----------------&#60;br /&#62;
• Converting a file-upload field into a Picup button:&#60;/p&#62;
&#60;p&#62;    Picup.convertFileInput( fileInputField,  { 	'referrername' : escape('My Web App'),&#60;br /&#62;
                                             	'purpose'      : escape('Upload A Photo') });&#60;/p&#62;
&#60;p&#62;• Opening an existing upload in the Picup app:&#60;/p&#62;
&#60;p&#62;    Picup.openFileWithId('p12');                                            &#60;/p&#62;
&#60;p&#62;• Generating a Picup URL:&#60;/p&#62;
&#60;p&#62;    // URL to upload a photo:&#60;/p&#62;
&#60;p&#62;    Picup.urlForOptions('new', { 'referrername' : escape('My Web App'),&#60;br /&#62;
                                 'purpose'      : escape('Upload A Photo') });&#60;/p&#62;
&#60;p&#62;    // URL to view a photo:&#60;br /&#62;
    Picup.urlForOptions('view', { 'picID' : 'p12' });            &#60;/p&#62;
&#60;p&#62;• Defining a custom callback handler:&#60;/p&#62;
&#60;p&#62;    // To handle the return data from the Picup app, define the Picup.callbackHandler&#60;br /&#62;
    // function, which is passed a query string of return values.&#60;/p&#62;
&#60;p&#62;	// If Picup.callbackHandler is defined, the page will observe the location.hash.&#60;br /&#62;
	// If it changes (e.g. the callback URL returns control to the page that launched Picup),&#60;br /&#62;
	// Picup.callbackHandler will be called with an object containing key/value pairs of the&#60;br /&#62;
	// parameters.&#60;/p&#62;
&#60;p&#62;    Picup.callbackHandler = function(data){&#60;br /&#62;
		for(var key in data){&#60;br /&#62;
			console.log(key + &#34; = &#34; + data[key]);&#60;br /&#62;
		}&#60;br /&#62;
    }&#60;/p&#62;
&#60;p&#62;Additional Notes:&#60;br /&#62;
----------------&#60;br /&#62;
If you have multiple file input fields that use Picup, the last input field that launched&#60;br /&#62;
the app will be referenced by Picup.activeFileInput. &#60;/p&#62;
&#60;p&#62;More info:&#60;br /&#62;
----------------&#60;br /&#62;
API documentation, with explainations of the possible options can be found at &#60;a href=&#34;http://picupapp.com&#34; rel=&#34;nofollow&#34;&#62;http://picupapp.com&#60;/a&#62;&#60;/p&#62;
&#60;p&#62;================&#60;br /&#62;
© William Lindmeier, 2010&#60;br /&#62;
&#60;a href=&#34;http://picupapp.com&#34; rel=&#34;nofollow&#34;&#62;http://picupapp.com&#60;/a&#62;&#60;/p&#62;
&#60;p&#62;*/&#60;/p&#62;
&#60;p&#62;var Picup = {&#60;/p&#62;
&#60;p&#62;    customURLScheme : 'fileupload://',&#60;br /&#62;
    windowname : 'fileupload',&#60;br /&#62;
    activeFileInput : null,&#60;br /&#62;
    currentHash : '',&#60;br /&#62;
    hashObserverId : null,&#60;/p&#62;
&#60;p&#62;	// Override this as a function to handle hash changes&#60;br /&#62;
    callbackHandler : null,&#60;/p&#62;
&#60;p&#62;    openFileWithId : function(picID){&#60;br /&#62;
        window.open(Picup.urlForOptions('view', {'picID' : picID}), Picup.windowname);&#60;br /&#62;
        return false;&#60;br /&#62;
    },&#60;/p&#62;
&#60;p&#62;    convertFileInput : function(inputOrInputId, options){&#60;br /&#62;
        var input = inputOrInputId;&#60;br /&#62;
        if(typeof(inputOrInputId) == 'string'){&#60;br /&#62;
           input = document.getElementById(inputOrInputId);&#60;br /&#62;
        }&#60;br /&#62;
    	input.type = 'button';&#60;br /&#62;
    	input.value = &#34;Choose Photo...&#34;;&#60;br /&#62;
    	input.picupOptions = options;&#60;br /&#62;
    	input.onclick = function(){&#60;br /&#62;
    	    Picup.activeFileInput = this;&#60;br /&#62;
    		window.open(Picup.urlForOptions('new', this.picupOptions), Picup.windowname);&#60;br /&#62;
    		// start the observer&#60;br /&#62;
    		if(Picup.callbackHandler){&#60;br /&#62;
	    		Picup.currentHash = window.location.hash;&#60;br /&#62;
	    		Picup.hashObserverId = setInterval('Picup.checkHash()', 500);&#60;br /&#62;
    		}&#60;br /&#62;
    	};&#60;br /&#62;
    	input.disabled = false;&#60;/p&#62;
&#60;p&#62;    	return false;&#60;br /&#62;
    },&#60;/p&#62;
&#60;p&#62;    checkHash : function(){&#60;br /&#62;
    	if(window.location.hash != Picup.currentHash){&#60;br /&#62;
    		// The hash has changed&#60;br /&#62;
    		clearInterval(Picup.hashObserverId);&#60;br /&#62;
    		Picup.currentHash = window.location.hash;&#60;/p&#62;
&#60;p&#62;	    	var hash = window.location.hash.replace(/^\#/, '');&#60;br /&#62;
    		var paramKVs = hash.split('&#38;#38;');&#60;br /&#62;
			var paramHash = {};&#60;br /&#62;
			var paramOutput = [];&#60;br /&#62;
			for(var p=0;p&#38;lt;paramKVs.length;p++){&#60;br /&#62;
				var kvp = paramKVs[p];&#60;br /&#62;
				// we only want to split on the first =, since data:URLs can have = in them&#60;br /&#62;
				var kv = kvp.replace('=', '&#38;#38;').split('&#38;#38;');&#60;br /&#62;
				paramHash[kv[0]] = kv[1];&#60;br /&#62;
			}&#60;br /&#62;
			Picup.callbackHandler(paramHash);&#60;br /&#62;
    	}&#60;br /&#62;
    },&#60;/p&#62;
&#60;p&#62;    urlForOptions : function(action, options){&#60;br /&#62;
	    var url = Picup.customURLScheme+action+'?';&#60;br /&#62;
    	var params = [];&#60;br /&#62;
    	for(var param in options){&#60;br /&#62;
    		params.push(param+'='+options[param]);&#60;br /&#62;
    	}&#60;br /&#62;
    	var uploadURL = url + params.join('&#38;#38;');&#60;br /&#62;
    	return uploadURL;&#60;br /&#62;
    },&#60;/p&#62;
&#60;p&#62;}; &#60;/p&#62;
&#60;p&#62;Thanks for the help
&#60;/p&#62;</description>
</item>

</channel>
</rss>
