Implementation Details
12 min
in the sections below, we provide detailed information for each of the components of solution builder that includes items like installer, webpage, basic uploader, basicuploadskin x y z jar, launcher url protocol, and screenpal application installer support the screenpal installers for solution builder are modified versions of the standard screenpal installers they run silently with no need for customer interaction, except to dismiss a message at the end instructing them to go back to the client's webpage to continue these installers are provided by screenpal and the client's webpage, using the screenpal supplied basic uploader javascript, provides download links to them besides installing the screenpal application, the installers also register with the operating system a custom url protocol, such as screen recorder launcher jre19 //screenrecorder? when a browser on the operating system tries to open a url that begins with that prefix the operating system will run the screenpal application and pass it the url for screenpal to process screenpal extracts client information and customizations from the url and launches screenpal application with them webpage support the solution builder feature starts with the client's webpage clients install and customize the screenpal provided javascript code, referred to as the "basic uploader", on their website the basic uploader allows the client to set their customizations for detecting if screenpal is installed, setting the language and content of the messages displayed for status and errors, and launches screenpal with specified options the basic uploader allows the javascript to be altered to provide the client pre screenpal launch customizations the client customizations that apply to the screenpal launching are provided through the screenpal launcher url protocol specification additional client customizations that apply during screenpal execution are provided in a specified special downloaded jar file the launcher url protocol allows specifying which version of installed solution builder screenpal to launch, and passes it the desired list of jars that define the downloadable updated version of screenpal, options to customize the video uploading experience, and the special jar, "basicuploadskin x y z jar", which supplies the client's customized "appdisplay properties" that defines client customizations for screenpal runtime basic uploader the basic uploader is the screenpal provided javascript that clients install on their webpage and then customize it allows detecting that screenpal needs to be installed and offering a screenpal solution builder installer to download and run then the javascript allows launching screenpal with provided options and customization messages can be displayed for status and error, and can be customized by the client, including the locale language for example, an attempt to launch screenpal may time out and a failure message is then displayed on the webpage that can be a simple timeout value in the script, or an alternative method where the client's backend is sent updates and polling status clients may view the source code of the basic uploader by using the webbrowser's "view source" feature at https //screenpal com/api/example/basicuploader jre19 the javascript includes these "basicupload xxx" property customizations additionally, there is a "somlauncher" javascript object that provides interfaces to these same customizations customize display, status, and error messages specify the versions of mac and windows screenpal solution builder installers that are offered for download detect if screenpal is already installed set the partner id, site, and key specify where the jars are downloaded from specify which jars are passed to screenpal when it launches this established the "forced version" of screenpal app as well as provides the client's customizations in the "basicuploadskin x y z jar" specify client's api url callbacks for interactive video uploads to screenpal or the client's servers specify url to open on success resize video to specified max width when they are too large upload directly to amazon s3 storage show or hide optional ui components in screenpal upload ui allow or disallow ui navigation to editor or manager set the locale (which language to use ) launcher url protocol the basic uploader javascript launches screenpal by using a screenpal custom url protocol for example, screen recorder launcher jre19 //screenrecorder? here is an example screen recorder launcher jre19 //screenrecorder/?p=mydomain,mydomain com,xxwxfhke%2fqiavptnijwb6spa8ypxwnzdahru%2b7idw5pmb8%2bxdot%2bbzgiwnqhbg%3d%3d,1738281601\&jh=https%3a%2f%2ffiles3 screenpal com%2fjars\&jl=basicuploadskin1 0 6 jar,screencastomaticeditor 3 8 2 jar,appskin 3 8 2 jar,recorderskin 3 8 2 jar,appnative 3 8 2 jar,libresample4j 2016 jar,jl1 0 1 2017 jar,batik all 1 16 jar,xml apis 1 4 01 jar,xml apis ext 1 3 04 jar,xmlgraphics commons 2 7 jar\&rl=1704639171603\&al=true\&som encoder url=https%3a%2f%2ffiles3 screenpal com%2fjars%2fsom com os encoder v4 3 1 zip\&som encoder name=som com encoder 4 3 1\&basicupload site name=my%20domain\&basicupload request url=http%3a%2f%2fmydomain com%2ftest%2fbasicuploads3upload php%3fid%3dmyid\&basicupload success url=http%3a%2f%2fmydomain com%2ftest%2fbasicuploadsuccess php%3fid%3dmyid\&basicupload post maxwidth=1280\&basicupload post method=put\&basicupload post extraheaders 1=x amz acl%3apublic read\&basicupload panel message=click%20upload\&basicupload panel input title show=true\&basicupload panel input description show=true\&basicupload offer savevideo=false\&locale=en\&browser=chrome here is that same example but broken down by url parameters for easier viewing note that it supplies this particular client's customized "appdisplay properties" inside their "basicuploadskin 1 0 6 jar" jar screen recorder launcher jre19 //screenrecorder/ ?p=mydomain, mydomain com, xxwxfhke%2fqiavptnijwb6spa8ypxwnzdahru%2b7idw5pmb8%2bxdot%2bbzgiwnqhbg%3d%3d, 1738281601 \&jh=https%3a%2f%2ffiles3 screenpal com%2fjars \&jl= basicuploadskin1 0 6 jar, screencastomaticeditor 3 8 2 jar, appskin 3 8 2 jar, recorderskin 3 8 2 jar, appnative 3 8 2 jar, libresample4j 2016 jar, jl1 0 1 2017 jar, batik all 1 16 jar, xml apis 1 4 01 jar, xml apis ext 1 3 04 jar, xmlgraphics commons 2 7 jar \&rl=1704639171603 \&al=true \&som encoder url=https%3a%2f%2ffiles3 screenpal com%2fjars%2fsom com os encoder v4 3 1 zip \&som encoder name=som com encoder 4 3 1 \&basicupload site name=my%20domain \&basicupload request url=http%3a%2f%2fmydomain com%2ftest%2fbasicuploads3upload php%3fid%3dmyid \&basicupload success url=http%3a%2f%2fmydomain com%2ftest%2fbasicuploadsuccess php%3fid%3dmyid \&basicupload post maxwidth=1280 \&basicupload post method=put \&basicupload post extraheaders 1=x amz acl%3apublic read \&basicupload panel message=click%20upload \&basicupload panel input title show=true \&basicupload panel input description show=true \&basicupload offer savevideo=false \&locale=en \&browser=chrome here, we extract the jars from the example above to show what was sent for this solution builder client screencastomaticeditor 3 8 2 jar appskin 3 8 2 jar recorderskin 3 8 2 jar appnative 3 8 2 jar libresample4j 2016 jar jl1 0 1 2017 jar batik all 1 16 jar xml apis 1 4 01 jar xml apis ext 1 3 04 jar xmlgraphics commons 2 7 jar basicuploadskin1 0 6 jar here, we extract the "appdisplay properties" override properties passed down in the launch url \&som encoder url=https%3a%2f%2ffiles3 screenpal com%2fjars%2fsom com os encoder v4 3 1 zip \&som encoder name=som com encoder 4 3 1 \&basicupload site name=my%20domain \&basicupload request url=http%3a%2f%2fmydomain com%2ftest%2fbasicuploads3upload php%3fid%3dmyid \&basicupload success url=http%3a%2f%2fmydomain com%2ftest%2fbasicuploadsuccess php%3fid%3dmyid \&basicupload post maxwidth=1280 \&basicupload post method=put \&basicupload post extraheaders 1=x amz acl%3apublic read \&basicupload panel message=click%20upload \&basicupload panel input title show=true \&basicupload panel input description show=true \&basicupload offer savevideo=false basicuploadskin x y z jar screenpal uses java properties files, text files with "key=value" entries, to specify options and customizations at screenpal runtime the "appdisplay properties" file is the one that is for screenpal app it is delivered via a jar file, "somappskin x y z jar", such as "somappskin 3 8 2 jar" solution builder clients replace that with their own, so their customizations and options are used instead it is still the "appdisplay properties" file, but it has content customized by the client it is delivered via a jar file "basicuploadskin x y z jar", such as "basicuploadskin 1 0 6 jar" notice in the launcher url protocol section that screenpal is passed jars, but instead of passing "somappskin x y z jar", the client's "basicuploadskin x y z jar" is passed the properties in "appdisplay properties", such as "basicupload xxx=???" and "som xxx=???" are allowed to be altered by the client these changes allow for features such as conditionally perform screenpal actions enable/disable screenpal features show/hide screenpal ui customize screenpal ui components for example, customize how the upload ui panel looks like, which buttons it shows, specify the displayed text, allow/disallow navigating to the editor/manager, and etc screenpal support the screenpal app (including recorder, editor, manager, etc ) support solution builder clients by allowing them to choose options and customize some features and functionality these client choices are specified in the "appdisplay properties" text file that is stored inside the "basicuploadskin x y z jar" jar file, and passed to screenpal via the launcher url protocol during runtime, screenpal will read the client's customized properties and respond accordingly for example, screenpal shows the upload ui with their options and customizations custom uploader a solution builder client may also supply a "custom uploader", which is customized java ui in a reserved section of the screenpal upload ui panel for more information, see configure the custom uploader docid 8nh8n9zsb0jjiepyzqz1s here is a screeshot that shows the area where your custom java (not javascript) code implementation would appear if you are interested in creating a custom uploader, please contact sales with your request for "creating my own solution builder custom uploader" for more information also see screenpal solution builder docid\ ltr7jzr10hlde rpii2wj download and upload file hosting docid 1r74nlcdxxrn2dkqiekca migrating to a newer solution builder version docid\ xvajz4vnmw2lco ptyhp4